Skip to content

Commit a5d4e28

Browse files
claude[bot]claude
andauthored
docs(changeset): @objectstack/runtime carries NO boot-refusal row for the STACK_* codes now — correct the closing sentence of the stack-refusal-envelopes changeset (#16874)
The unconsumed changeset .changeset/stack-refusal-envelopes.md closed by claiming that @objectstack/runtime "carries one classification row per new code in the dispatcher error-code vocabulary". That sentence was true when it was written and is false against main today: the runtime vocabulary carries none of them. Measured on this tree, not inherited. Every reading below is a grep over packages/runtime/src/dispatcher-error-vocabulary.ts at blob ff83d65, which is byte-identical at this branch's base 12babac and at origin/main c930f85 (git rev-parse on both, not assumed). Exit codes captured before any pipe. grep -c "code: 'STACK_" -> 0 (exit 1) the false claim grep -c "verdict: 'boot-refusal'" -> 14 (exit 0) line 20's claim, still true grep -c "code: '" -> 84 (exit 0) population control The zero carries a positive control over the same file with the same tool: grep -c "STACK_" -> 1 (exit 0), the removal comment at line 302. So the zero is a reading and not a broken grep. Where the rows went, measured rather than recalled: commit abae16a deleted exactly seven of them -- grep -c "^- code: 'STACK_" over its patch for that file -> 7 -- in the same landing that registered the seven codes in ERROR_CODE_LEDGER, where they now sit at packages/spec/src/api/error-code-ledger.zod.ts lines 1045-1051 under the '@objectstack/spec' key. The gate's own header states the consequence: a registered code drops out of its scan, and a stamp site under packages/spec/src/ may be classified foreign-vocabulary or runtime-pinned "and NOTHING ELSE". Two things in the same file are deliberately unchanged, proven by hash rather than by inspection: line 20, "... one-row-per-refusal granularity (14 rows) ..." -- sha1 71192bf158de167ac2774c576a462350600d7fa8 before and after, cmp exit 0. It is the neighbouring sentence about the same fact family, and it is TRUE. the front matter, lines 1-4, including the "@objectstack/runtime": minor key -- sha1 c3e97c77ad1e4948e11906c233e2d326ffcf4003 before and after, cmp exit 0. One sentence, one file. The refusal table, the semver argument, the schema-arm reading and the "Not narrowed" paragraph are untouched. Claude-Session: https://claude.ai/code/session_016N6xmWt5hYm94ffVEwGH8x Co-authored-by: Claude <noreply@anthropic.com>
1 parent f570c28 commit a5d4e28

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

.changeset/stack-refusal-envelopes.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,4 @@ Not narrowed: `defineStack` accepts and refuses exactly the inputs it did before
2525

2626
**Why `minor`, not the `patch` the #14552 precedent took.** Six new `STACK_*` spellings ship in `packages/spec/dist/index.js` and `dist/index.mjs`; nothing reaches `.d.ts`, but once shipped a consumer's `catch (e) { switch (e.code) … }` depends on them and they cannot be renamed without breaking it. That is a purely additive widening of a published package's public surface, and the maintainer ruling of 2026-09-04 (decision batch #35, on #15294) requires at least `minor` for it: the commit type may raise a bump but never lower it below what the act requires, so a `fix(` that widens the surface is `minor`. The `patch` precedent is pre-rule; this level is required by that ruling, not chosen by taste.
2727

28-
`@objectstack/runtime` carries one classification row per new code in the dispatcher error-code vocabulary (`door: 'none'`, `verdict: 'boot-refusal'` — the measured verdict), which `pnpm check:dispatcher-error-vocabulary` enforces in both directions.
28+
`@objectstack/runtime` carried one classification row per new code in the dispatcher error-code vocabulary (`door: 'none'`, `verdict: 'boot-refusal'` — the measured verdict) when this changeset was written, and carries none now: the same #16449 (PR #16652) landing that registered the seven codes ratcheted all seven rows back out of `packages/runtime/src/dispatcher-error-vocabulary.ts`, because a registered code drops out of that gate's scan and the reachability each row recorded now lives on its ledger row. `pnpm check:dispatcher-error-vocabulary` still reconciles sites and rows in both directions, and under the same ruling it now refuses any verdict but `foreign-vocabulary` / `runtime-pinned` for a stamp site under `packages/spec/src/**` — so these seven cannot take a `boot-refusal` row again.

0 commit comments

Comments
 (0)