Uh oh!
There was an error while loading. Please reload this page.
fix(spec): namespace tombstone stops citing ADR-0006 D4 — unblocks the merge queue's check-adr-anchors red - #12917
Conversation
…ion letter no version of that ADR declares check-adr-anchors' letter validation (landed via #12785) now reads ADR-0006's declared letters, and the 2026-08-28 v4 addendum (#12736, direct-merged) minted D1-D3 for the API-surface boundary record — making the ancient D4 citation in this tombstone (from #4522) mechanically unresolvable. Every merge-queue build since 07:49Z fails on it, so the whole queue is stalled. The retirement is real and stays enforced; the citation was always a phantom (no version of ADR-0006 ever declared a D4 or decided object naming). Per the gate's own remedy order this is case (c): a real but unwritten decision needs an ADR, not a citation — the false letter is dropped now, the message keeps the fix (name: "sys_user") and the #4001 history, and a follow-up card asks for the decision to be written so the citation can return. Verified: check-adr-anchors --self-test 106/106 EXIT=0 (was 1 failure on the pristine tree, reproduced first), live run EXIT=0, vitest object.test.ts 185/185 (the tombstone pin asserts substrings this change keeps). Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MnijPVVDakqK2J335JoJtq
📓 Docs Drift CheckNothing in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 1 changed package(s)), so this run has no opinion about the docs. What this run could not see
Coarse fallback — 126 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
os-elon
left a comment
There was a problem hiding this comment.
Approved on the maintainer's direct order (director seat, session session_016SG9S6V15MqeAgkehDcTwk; live PM chat, 2026-08-28, verbatim and untranslated):
分诊、最快解法:合掉 #12917(它就是正解,别造第二个)
Independent verification by this seat before approving: reproduced the same root cause independently (the phantom ADR-0006 D4 letter became checkable the moment ac35e2a2 gave ADR-0006 its first declared letters; git log -S 'D4' -- 'docs/adr/0006*' is empty — no version ever declared one); this diff is the gate's own remedy, one string + a patch changeset, no schema shape moved, and the PR-leg Lint & Repo Gates (which contains the exact failing check-adr-anchors step) is green on this tree. A competing dispatch for the same fix (#12922) was stopped before it produced any edits or PR — no second fix exists.
Arming auto-merge next; this PR's queue group contains the fix, so it passes the wedged gate and un-wedges the queue by landing.
Generated by Claude Code
Uh oh!
There was an error while loading. Please reload this page.
Freshness merge only — no content change of this branch's own. Picks up PR #12917, which stopped packages/spec's namespace tombstone citing the phantom ADR-0006 D4 and so clears the pre-existing check-adr-anchors red that this branch's older base still carried. A workflow rerun could not clear it: a rerun reuses the original merge snapshot, so a new commit on a fresher base is the only thing that moves it.
Main is red and the whole merge queue is stalled on it — every
merge_groupbuild since ~07:49Z failsLint & Type Checkatcheck-adr-anchors:Observed dequeues: #12895 (CI_FAILURE, 08:29Z), plus failing queue builds for pr-12897 / pr-12901 / pr-12905 in the same window.
Root cause — two landings that never met in CI
live-decision-letters-are-green-today) landed incheck-adr-anchorsvia tooling(check-adr-anchors): verify a citedDknames a real decision of the cited ADR #12785.projectdeliberately #12736) minted### D1 / D2 / D3headings for the API-surface boundary record — the FIRST decision letters any version of ADR-0006 ever declared. It is a governeddocs/adr/**surface, so it was human-direct-merged (bypass) at 07:49Z — skipping merge-time re-validation, which is precisely the one gap the bypass path has.ADR-0006 D4citation in thenamespacetombstone (added by feat(spec)!: ObjectSchema 在 parse 路径上收紧,而不只是 create() —— #1535 的奠基例子一直是活的(#4001 批 3a) #4522) became mechanically unresolvable. No version of ADR-0006 ever declared a D4 or decided object naming — the citation was always a phantom; it just had nothing to contradict it until today.The fix — the gate's own remedy, case (c)
The retirement is real and stays enforced. This PR drops only the false letter citation from the tombstone string — the message keeps the actionable fix (
name: "sys_user") and the #4001 parse-path history. One string, plus a patch changeset for@objectstack/spec(the string is a shipped rejection message).Deliberately NOT in this diff (follow-up card filed): the sibling spelling in
translation.zod.ts:362and theobject.test.ts:1573test title (neither is in the gate's scanned population — the gate names exactly 1 file), CHANGELOG history (never edited), and writing the actual ADR decision so the citation can return.Verification
aef1b7e64(= current main):check-adr-anchors --self-test→ 1 failure of 106, EXIT=1, same rendering as the queue logs.✓ check-adr-anchors --self-test: 106 assertions …EXIT=0; live run EXIT=0.vitest run src/data/object.test.ts→ 185/185 pass — the tombstone pin asserts the`namespace`andname: "sys_user"substrings, both kept.Generated by Claude Code