From f671aa02fda424137c60bb5756e27e919026c733 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 19 Aug 2026 16:56:11 +0000 Subject: [PATCH] fix(runtime): restate pending-registration verdict doc comment in post-#9106 terms MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The `CodeVerdict.pending-registration` doc comment in dispatcher-error-vocabulary.ts said the verdict "reaches a wire `error.code` verbatim" and "the body cannot parse". Both clauses are false since #9106 narrowed the dispatcher door: the unregistered spelling now rides the wire's `declaredCode` instead of `error.code`, so the body parses; what an unswept producer loses instead is its semantic code, silently demoted off `error.code` until registered. The file's own module header and the gate script's header already say this — the verdict doc comment was the lone holdout, and it is the classification guide the next `unclassified-site` finding gets read against. Doc comment only. `verdict:` values, row data and the gate script are unchanged; check:dispatcher-error-vocabulary parses `verdict:` textually with comments masked, so no gate reads this prose and no behaviour moves. Fixes #9999 Claude-Session: https://claude.ai/code/session_019bmVFqoQPq63zhKrxdYG1r --- .changeset/pending-registration-verdict-doc.md | 7 +++++++ packages/runtime/src/dispatcher-error-vocabulary.ts | 7 +++++-- 2 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 .changeset/pending-registration-verdict-doc.md diff --git a/.changeset/pending-registration-verdict-doc.md b/.changeset/pending-registration-verdict-doc.md new file mode 100644 index 0000000000..b0880d90ab --- /dev/null +++ b/.changeset/pending-registration-verdict-doc.md @@ -0,0 +1,7 @@ +--- +'@objectstack/runtime': patch +--- + +Restate the `CodeVerdict.pending-registration` doc comment in `dispatcher-error-vocabulary.ts` in post-#9106 terms. + +The doc comment said the verdict "reaches a wire `error.code` verbatim" and "the body cannot parse" — both false since #9106 narrowed the dispatcher door: the unregistered spelling now rides the wire's `declaredCode` instead of `error.code`, so the body parses, and what an unswept producer loses instead is its semantic code, silently demoted off `error.code` until registered. The file's own module header and the gate script's header already said so; only the verdict doc comment was the holdout, and it is the classification guide a future `unclassified-site` finding gets picked from. Prose only — `verdict:` values, row data and the gate script are unchanged; `check:dispatcher-error-vocabulary` parses `verdict:` textually with comments masked, so no gate reads this text and no behaviour moves. diff --git a/packages/runtime/src/dispatcher-error-vocabulary.ts b/packages/runtime/src/dispatcher-error-vocabulary.ts index baffcaa8df..bc74ad1191 100644 --- a/packages/runtime/src/dispatcher-error-vocabulary.ts +++ b/packages/runtime/src/dispatcher-error-vocabulary.ts @@ -134,8 +134,11 @@ export type CodeDoor = 'dispatcher' | 'rest' | 'plugin-route' | 'none'; export type CodeVerdict = /** - * Reaches a wire `error.code` verbatim and the ledger does not know it. - * The body cannot parse. ⇒ #8846's registration input. + * Reaches a wire and the ledger does not know it. Since #9106 the door + * narrows — the unregistered spelling rides the wire's `declaredCode` + * instead of `error.code`, so the body now parses; the producer's + * semantic code is silently demoted off `error.code` until registered. + * ⇒ #8846's registration input. */ | 'pending-registration' /**