From 4b203890882cf3e9a537ab8db9c1681c57ded12e Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 28 Aug 2026 08:37:36 +0000 Subject: [PATCH] =?UTF-8?q?fix(spec):=20the=20namespace=20tombstone=20stop?= =?UTF-8?q?s=20citing=20ADR-0006=20D4=20=E2=80=94=20a=20decision=20letter?= =?UTF-8?q?=20no=20version=20of=20that=20ADR=20declares?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Claude-Session: https://claude.ai/code/session_01MnijPVVDakqK2J335JoJtq --- .changeset/tombstone-citation-unwritten-decision.md | 5 +++++ packages/spec/src/data/object.zod.ts | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/tombstone-citation-unwritten-decision.md diff --git a/.changeset/tombstone-citation-unwritten-decision.md b/.changeset/tombstone-citation-unwritten-decision.md new file mode 100644 index 0000000000..3315d59611 --- /dev/null +++ b/.changeset/tombstone-citation-unwritten-decision.md @@ -0,0 +1,5 @@ +--- +'@objectstack/spec': patch +--- + +The `namespace` tombstone's rejection message no longer cites "ADR-0006 D4" — a decision letter no version of ADR-0006 declares. The retirement itself is unchanged and still enforced; the message keeps the fix (`name: "sys_user"`) and the #4001 parse-path history. The letter citation comes back when the retirement decision is actually written into an ADR. diff --git a/packages/spec/src/data/object.zod.ts b/packages/spec/src/data/object.zod.ts index 29ff73b851..b0531e63e1 100644 --- a/packages/spec/src/data/object.zod.ts +++ b/packages/spec/src/data/object.zod.ts @@ -1464,7 +1464,7 @@ const UNKNOWN_KEY_GUIDANCE: Record = { // Tombstones age out too: drop an entry ~two majors after the removal // (by then it's archaeology, not an upgrade; see CHANGELOG.md for history). namespace: - '`namespace` was retired in ADR-0006 D4 — the object `name` IS the canonical id ' + + '`namespace` was retired — the object `name` IS the canonical id ' + 'everywhere (API, ObjectQL, REST, SDK, DB table), so there is no separate namespace ' + 'to declare. Embed the module prefix in the name instead: `namespace: "sys", ' + 'name: "user"` becomes `name: "sys_user"`. Until #4001 closed this shape on the ' +