You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Created by the triage seat (whole-repo Routine, fire 08:47Z) to execute the contract-first split of the maintainer's #8087 ruling. Unassigned. Not a claim.
Why this card exists
#8087 was ruled by the maintainer on 2026-08-12 18:23Z (verbatim: 「接受你的全部建议。」) — option B, delivered as a gate rather than a sweep, with option C (declaring the dispatcher's error.code deliberately open, amending ADR-0112 / ApiErrorSchema) explicitly rejected.
The ruled deliverable has two halves in two lanes, which is why it stalled rather than dispatching:
The domain:cli seat correctly refused to cross into packages/spec and reported the boundary rather than breaching it or sending a dev into a mid-implementation hard stop. Splitting a ruled card is a routing decision and therefore triage's production, so the split is made here rather than by that seat.
⛔ The ruling is not re-opened by this split. Option B stands, option C stays rejected, and neither half may re-litigate them.
Verified on origin/main @ 6b6b606 before creating this card
packages/spec/src/api/error-code-ledger.zod.tsexists and is the ledger's home — the lane boundary is real, not assumed.
Amending ApiErrorSchema or ADR-0112 in any way that loosens closure — that is the rejected option C.
⚠️ Two standing constraints this card inherits
packages/spec has exactly one owner. This card is the domain:spec seat's regardless of who needs it.
Registering a code WIDENS the accepted set.ErrorCode is StandardErrorCode ∪ ERROR_CODE_LEDGER and ApiErrorSchema.code parses against exactly that union, so this is the semantic face of packages/spec by the standing accept-surface test — ⚠️notspec-surface, and it carries the claude-fable-5 model floor for contract-accept-surface changes. The domain:cli seat identified both points correctly and they are ratified here.
Sequencing
Hard Blocked-by: #8087 — the set does not exist until the gate runs. ⛔ Do not attempt to pre-empt it by hand-registering the three historically-known codes (STORAGE_FAILURE, FLOW_FAILED, DUPLICATE); hand-registration in place of the gate's report is precisely the snapshot-instead-of-invariant shape the ruling rejected.
⚠️ Expect the gate's first run to name more than three. If the tail comes back large, the ruling's instruction is to report the number before registering it unexamined — that reporting obligation lands on this card, since this is where registration happens.
⏱️ Time-sensitivity, carried forward verbatim from the ruling
PR #8088's two-spelling workaround (code narrowed / declaredCode verbatim) plus its package-door-error-parity.test.ts pin is main's de-facto answer and accrues callers. Deferral converts the outcome into option C by default — the one option ruled inadmissible. The split exists to unblock this faster than a lane-boundary stall, ⛔ not to park it.
Related
#8087 (the ruled parent, domain:cli half) · #8211 (the consolidation question, in scope) · #8212 / PR #8088 · #4805 (ledger federation) · #7504 (ledger provenance) · #8239 (merged; the former collision)
Blocked-by: #8087
Created by the triage seat (whole-repo Routine, fire 08:47Z) to execute the contract-first split of the maintainer's #8087 ruling. Unassigned. Not a claim.
Why this card exists
#8087 was ruled by the maintainer on 2026-08-12 18:23Z (verbatim: 「接受你的全部建议。」) — option B, delivered as a gate rather than a sweep, with option C (declaring the dispatcher's
error.codedeliberately open, amending ADR-0112 /ApiErrorSchema) explicitly rejected.The ruled deliverable has two halves in two lanes, which is why it stalled rather than dispatching:
packages/runtime(+packages/types)domain:cli— stays on #8087packages/spec/src/api/error-code-ledger.zod.tsdomain:spec— this cardThe
domain:cliseat correctly refused to cross intopackages/specand reported the boundary rather than breaching it or sending a dev into a mid-implementation hard stop. Splitting a ruled card is a routing decision and therefore triage's production, so the split is made here rather than by that seat.⛔ The ruling is not re-opened by this split. Option B stands, option C stays rejected, and neither half may re-litigate them.
Verified on
origin/main@6b6b606before creating this cardpackages/spec/src/api/error-code-ledger.zod.tsexists and is the ledger's home — the lane boundary is real, not assumed.domain:cliseat flagged is GONE. Its note said PR fix(spec): MONGODB_MULTI_TENANT_UNSUPPORTED leaves the error-code ledger — a boot refusal never reaches a wire envelope (#8035) #8239 was "open against that exact ledger file"; fix(spec): MONGODB_MULTI_TENANT_UNSUPPORTED leaves the error-code ledger — a boot refusal never reaches a wire envelope (#8035) #8239 merged 2026-08-13 02:53Z. That was the stated scheduling obstacle and it no longer exists.CONFLICTis already registered (error-code-ledger.zod.ts:144,:602), landed by PR fix(rest): converge the record-sharing family onto the ADR-0112 D5 envelope (#8111) #8212. So the 20:35Z evidence comment on The dispatcher emits unregisterederror.codevalues verbatim — three suites pin bodies thatApiErrorSchemawould reject #8087 is now historical: that specific code is done. Do not re-register it, and do not treat the The dispatcher emits unregisterederror.codevalues verbatim — three suites pin bodies thatApiErrorSchemawould reject #8087 thread's mention of it as outstanding work.Scope
Register, in
ERROR_CODE_LEDGER, the set that #8087's gate reports as "merely unregistered", under owning packages per #7504 provenance.Explicitly in scope, per the ruling and the #8087 thread:
@objectstack/restregisters four generic synonyms the standard catalog already covers (CONFLICT,NOT_FOUND,FORBIDDEN,INTERNAL) — contract call, not a cleanup #8211 —CONFLICTvs the catalog'sRESOURCE_CONFLICT, plus the three sibling synonyms already in that block. Both the 20:35Z evidence comment and the escalation argued this is the same family and should be answered together. Now thatCONFLICTis registered, [finding]@objectstack/restregisters four generic synonyms the standard catalog already covers (CONFLICT,NOT_FOUND,FORBIDDEN,INTERNAL) — contract call, not a cleanup #8211 is the consolidation question left over, and this is its natural home.⛔ Out of scope:
packages/runtime/packages/types— that is The dispatcher emits unregisterederror.codevalues verbatim — three suites pin bodies thatApiErrorSchemawould reject #8087.error.codevalues verbatim — three suites pin bodies thatApiErrorSchemawould reject #8087's lane, not here.ApiErrorSchemaor ADR-0112 in any way that loosens closure — that is the rejected option C.packages/spechas exactly one owner. This card is thedomain:specseat's regardless of who needs it.ErrorCodeisStandardErrorCode ∪ ERROR_CODE_LEDGERandApiErrorSchema.codeparses against exactly that union, so this is the semantic face ofpackages/specby the standing accept-surface test —spec-surface, and it carries theclaude-fable-5model floor for contract-accept-surface changes. Thedomain:cliseat identified both points correctly and they are ratified here.Sequencing
Hard
Blocked-by: #8087— the set does not exist until the gate runs. ⛔ Do not attempt to pre-empt it by hand-registering the three historically-known codes (STORAGE_FAILURE,FLOW_FAILED,DUPLICATE); hand-registration in place of the gate's report is precisely the snapshot-instead-of-invariant shape the ruling rejected.⏱️ Time-sensitivity, carried forward verbatim from the ruling
PR #8088's two-spelling workaround (
codenarrowed /declaredCodeverbatim) plus itspackage-door-error-parity.test.tspin is main's de-facto answer and accrues callers. Deferral converts the outcome into option C by default — the one option ruled inadmissible. The split exists to unblock this faster than a lane-boundary stall, ⛔ not to park it.Related
#8087 (the ruled parent,
domain:clihalf) · #8211 (the consolidation question, in scope) · #8212 / PR #8088 · #4805 (ledger federation) · #7504 (ledger provenance) · #8239 (merged; the former collision)