Skip to content

Commit 966dd38

Browse files
committed
fix(runtime): keep the tracker id out of the vocabulary row's runtime string prose
check:doc-authoring reds on an internal issue id inside sibling-package string prose: a runtime string reaches operators who cannot resolve one. The anchor moves to the adjacent // comment, where the reader who CAN resolve it looks. Same edit in the changeset, which compiles into release notes. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0112hMx9hjJ9BgB28X97DS68
1 parent eeee851 commit 966dd38

2 files changed

Lines changed: 6 additions & 2 deletions

File tree

.changeset/registry-namespace-conflict-refusal-envelope.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@ Why it matters, measured rather than read: unlike its three install-time sibling
1414

1515
A refusal the platform decided is a client-side conflict was telling operators the server had broken, which invites a retry instead of a rename.
1616

17-
Not narrowed, not widened: no accept-set changes, no export changes, and no ledger registration. `NAMESPACE_CONFLICT` is not an `ErrorCode` member, so the door's #9106 narrowing demotes it off `error.code` onto the wire's open `declaredCode` sibling and `error.code` stays the closed member 422 derives.
17+
Not narrowed, not widened: no accept-set changes, no export changes, and no ledger registration. `NAMESPACE_CONFLICT` is not an `ErrorCode` member, so the door's narrowing demotes it off `error.code` onto the wire's open `declaredCode` sibling and `error.code` stays the closed member 422 derives.
1818

1919
`@objectstack/runtime` carries the classification row for the new code in the dispatcher error-code vocabulary (verdict `pending-registration`, door `dispatcher` — the measured verdict, not the expected one). That row is the input to a ledger-registration batch in the `packages/spec` lane; registering the code is what ratchets the row back out and what would let `error.code` carry the semantic spelling.

packages/runtime/src/dispatcher-error-vocabulary.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -577,6 +577,9 @@ export const UNREGISTERED_CODE_SITES: readonly UnregisteredCodeSite[] = [
577577
// it carried no `code` at all, so there was no stamp for any pattern to
578578
// match. #14474 gave it the ADR-0112 envelope its three install-time
579579
// siblings already carried, which is what put a site here to classify.
580+
// The door narrowing its `why` names is #9106's — the file header above
581+
// carries it. The anchor lives here rather than in the string, because a
582+
// runtime string reaches operators who cannot resolve a tracker id.
580583
{
581584
code: 'NAMESPACE_CONFLICT',
582585
file: 'packages/objectql/src/registry.ts',
@@ -597,7 +600,8 @@ export const UNREGISTERED_CODE_SITES: readonly UnregisteredCodeSite[] = [
597600
'read, so the caller\'s fallback stood. With the envelope the SAME request answers `422` and ' +
598601
'the body carries `declaredCode: NAMESPACE_CONFLICT` beside `code: VALIDATION_ERROR` (the ' +
599602
'member 422 derives through `standardErrorCodeForHttpStatus`, which does not name 422 and ' +
600-
'buckets it as a client error). That demote is the #9106 door narrowing, and it is exactly what ' +
603+
'buckets it as a client error). That demote is the door narrowing described in this file\'s ' +
604+
'header, and it is exactly what ' +
601605
'a `pending-registration` row records: the body PARSES, and what the producer loses instead is ' +
602606
'its semantic code, silently absent from `error.code` until a ledger row lands. ⛔ Registering ' +
603607
'it is the `packages/spec` lane\'s call and is NOT made here — this row is that batch\'s input, ' +

0 commit comments

Comments
 (0)