docs(adr): attribute ADR-0002's discarded alternative to the pre-registry v3.4 document - #9153
Open
os-steve wants to merge 1 commit into
Open
docs(adr): attribute ADR-0002's discarded alternative to the pre-registry v3.4 document#9153os-steve wants to merge 1 commit into
os-steve wants to merge 1 commit into
Conversation
…stry v3.4 document ADR-0002's Alternatives Considered #4 credited the rejection of "one global DB + tenant column" to "v3.4's ADR-0001". That number now resolves — but to `0001-withdrawn-metadata-service-architecture.md`, a record about how the `metadata` service is registered, which says nothing about tenancy or database topology. A wrong-but-resolving citation is worse than a dangling one: the anchor gate checks that a cited record exists, never that it says what the citer claims. Qualifies the sentence so the discarded alternative is attributed to the v3.4-era pre-registry document, reusing the vocabulary the ADR-0001 tombstone already uses for it, and links the tombstone section written for this exact reader. The historical rejection itself is preserved unchanged. Part of #7963 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XqDQYVU5smx29ts9pAErja
os-steve
marked this pull request as ready for review
August 16, 2026 15:33
This was referenced Aug 16, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #7963
One sentence in ADR-0002's Alternatives Considered list. No other line of the ADR, the tombstone, or any tooling is touched.
The change
docs/adr/0002-environment-database-isolation.md:122Before:
After:
The historical rejection — "was never on the table … already discarded" — is preserved word for word. Only its provenance is made honest.
Why this wording
Maintainer ruling of 2026-08-14 on #7963 (verbatim, untranslated: 「同意你的建议」) selected wording option 2 of the three the card offered: qualify the sentence so the discarded alternative is attributed to the pre-registry v3.4 document rather than a bare
ADR-0001. Option 1 (leave it) and option 3 (drop the citation) were both closed by that ruling, so the historical fact stays.The hazard is sharper today than when the card was filed. Since the ADR-0001 tombstone landed, a bare
ADR-0001does now point at a real file —0001-withdrawn-metadata-service-architecture.md, a record deciding how themetadataservice is registered, which says nothing about tenancy or database topology. That is a wrong-but-resolving citation, the most dangerous kind in this registry:check:adr-anchorsverifies that a cited record exists, never that it says what the citer claims, so no gate can catch it.The vocabulary is the tombstone's, not a new one.
0001-withdrawn-metadata-service-architecture.mdalready dissects this exact citation under "What ADR-0002 actually cites", and describes the cited artifact as "The v3.4-era 'ADR-0001'" and "a pre-registry document that this repository has never contained". Both phrases are reused verbatim here, so the two records describe one discrepancy in one set of terms — two records describing it in incompatible terms would be a worse defect than the one being fixed. The link closes the loop the tombstone was written for: it was authored for the reader arriving from ADR-0002, and until now ADR-0002 gave that reader no way to arrive.Verification
All gates run locally against the final commit
3b3bb0a0c, the tree this PR pushes.node scripts/check-adr-anchors.mjsOK … 25855 citation(s) across 3227 file(s) resolve— exit 0node scripts/check-adr-links.mjs544 relative link destination(s) under docs/adr/ resolve— exit 0node scripts/check-nul-bytes.mjsOK (scanned 5998 text file(s) … no raw ASCII control bytes)— exit 0The gate list was re-derived from the actual changed path (
node scripts/pm/dispatch-gates.mjs docs/adr/0002-environment-database-isolation.md) and matched;check-nul-byteswas added because any edit is in its surface.Reverse verification — both gates were proved to actually read this line, run from the committed state and restored byte-identically afterwards (
git hash-objectmatch,git status --porcelainempty):check-adr-anchorsgo red:ADR-9993 is cited by 1 file(s) but names no record under docs/adr/ — docs/adr/0002-environment-database-isolation.md.check-adr-linksgo red:docs/adr/0002-environment-database-isolation.md:122 -> … (missing).Both are the expected direction. The heading fragment itself is checked by no gate —
check-adr-linksstrips#fragmentdeliberately — so it was verified by hand against the tombstone's## What ADR-0002 actually citesheading.No changeset:
docs/adr/**is an internal decision record, published by no package, so this PR releases nothing. Labelledskip-changeset.ADR maintainer approvalcontext is RED here, by design — and is not being fixeddocs/adr/**is maintainer-merge territory with no size exemption (Prime Directive #14).check-adr-merge-approval.mjspasses only when an approving human review exists on the PR, which no agent seat can supply. Its red is therefore the gate working, and a green there would mean it had been subverted rather than satisfied. It is left red and untouched.Accordingly this PR is not merged, not queued, and has no auto-merge armed by any agent seat. It is flipped out of draft so a human can act on it — parking it as a draft would be the opposite of ready for the maintainer, not a safety measure.
Generated by Claude Code