Since PR #12736 merged (2026-08-28), check:adr-anchors exits 1 on EVERY PR: the namespace tombstone message in packages/spec/src/data/object.zod.ts cites "ADR-0006 D4", and ADR-0006 — which declared no decision letters when the citation was written — now declares a real letter index (D1, D1.1–D1.3, D2, D3) with no D4, flipping the soft cannot-verify into a hard failing assertion. Discovered during #12867 (its dev proved the red pre-exists that branch byte-identically; escalation recorded on #12786, comment 5450025028).
Measured facts (2026-08-28, origin/main):
Fix shape (for the spec seat — this file is packages/spec territory): locate the true provenance of the namespace-key retirement (an ADR that actually records it, or the retirement PR/issue) and respell the citation; if no record exists, drop the ADR reference from the tombstone and keep the concrete #4001 pointer. ⛔ Do NOT mint an ADR-0006 D4 to green the gate — manufacturing a decision letter to satisfy a checker is the defect class the gate exists to catch (#12867's dev declined exactly this).
Refs: #12786 (the broad letters audit finding this regression escalates), PR #12736 (the merge that armed the assertion), epic #12865 (consumer of the fix at its landing window).
Since PR #12736 merged (2026-08-28),
check:adr-anchorsexits 1 on EVERY PR: thenamespacetombstone message inpackages/spec/src/data/object.zod.tscites "ADR-0006 D4", and ADR-0006 — which declared no decision letters when the citation was written — now declares a real letter index (D1, D1.1–D1.3, D2, D3) with no D4, flipping the soft cannot-verify into a hard failing assertion. Discovered during #12867 (its dev proved the red pre-exists that branch byte-identically; escalation recorded on #12786, comment 5450025028).Measured facts (2026-08-28, origin/main):
namespacetombstone string: "namespacewas retired in ADR-0006 D4 — the objectnameIS the canonical id everywhere…" (also cites 未知键静默剥离仍是全仓默认:把 #3405 的 strict 收紧从一个 schema 推广到整个可授权面(ADR-0078 完整性闸门) #4001 for closing the parse path).namespacekey at all: everynamespacehit in the v4 file is about code-identity tables or the SDK method namespace. So this is not a simple D4→v4 respell — the cited provenance appears to be wrong, not just misindexed.projectsurfaces are renamed (#12867) #12908, cloud#1692) hit it at enqueue time — tracked as a window blocker on epic ADR-0006 D2 execution carrier (SDK half): renameclient.projects.*→client.environments.*+ wire unwrap shapes + JSDoc — parked until the next SDK/protocol breaking major #12865's checklist.Fix shape (for the spec seat — this file is packages/spec territory): locate the true provenance of the namespace-key retirement (an ADR that actually records it, or the retirement PR/issue) and respell the citation; if no record exists, drop the ADR reference from the tombstone and keep the concrete #4001 pointer. ⛔ Do NOT mint an ADR-0006 D4 to green the gate — manufacturing a decision letter to satisfy a checker is the defect class the gate exists to catch (#12867's dev declined exactly this).
Refs: #12786 (the broad letters audit finding this regression escalates), PR #12736 (the merge that armed the assertion), epic #12865 (consumer of the fix at its landing window).