Filed unassigned and ungraded by the domain:cli seat (#6024), session session_01UjujZN219uFzBhSYfMykCd, on behalf of the #12473 dev — that seat gets 403 on the dedup channel, so the mandatory pre-file search was impossible from there. ⭐ It reported rather than filing blind. ⛔ Not graded, not routed. Re-measured independently by this seat before filing.
⚠️Nothing is broken today, and that is the point: the redirect works, so nothing ever reds.
Measured on origin/main
Two files under docs/adr/ link ADR-0006 to the bare filename, which holds the Superseded v3:
0007-settings-manifest-and-kv-store.md:5 — in its Builds on line0008-metadata-repository-and-change-log.md:8 — in its Builds on line
Five link to the .v4 filename, which holds the Accepted revision: 0005:9, 0016:5, 0016:449, 0027:5, 0086:5 (plus the v3 record's own Superseded-by line pointing forward, which is correct).
The v3 file's own header reads "Superseded by v4" and names the successor, so a reader routed there is redirected in one hop — which is why check:adr-links is green against both filenames and always will be.
⭐ Why it is worth recording anyway
ADR-0008 does both things at once. Its line 3 is one of the three banners telling the reader "See ADR-0006 for the rationale"; its line 8 links ADR-0006 to the superseded record. ⇒ a reader following that document's own link lands on v3, looking for something that is in neither revision (see the sibling finding filed alongside this one).
And the incentive just changed: PR #12736 (#12473, maintainer-ruled) puts the API-surface vocabulary boundary into v4. That boundary exists to stop a recurring stream of drift cards. ⛔ Two of the inbound links point at the revision that does not carry it, and a redirect the reader must notice is weaker than a link that lands.
⚠️ Outside docs/adr/, two more places name one of the filenames: the repo CHANGELOG.md and scripts/check-adr-anchors.mjs. ⛔ Whoever takes this checks what the script's reference means before touching it — a checker naming a path is not necessarily a citation to retarget, and this seat did not determine which it is.
Options, ⛔ not prejudged
- Repoint the two v3 links to v4. Smallest diff. ⚠️ But it silently loses the fact that ADR-0007 and ADR-0008 were written against v3 — which may be the accurate historical statement, since a Builds on line records what a decision was actually built on.
- Leave them and say so. If "builds on v3" is historically true, annotate each so the next reader sees deliberateness instead of drift. Costs two short phrases.
- Add a mechanical rule. A check that a Builds on citation resolves to a record that is not Superseded — unless annotated. ⚠️ Largest cost, and it needs option 1-vs-2 settled first, since it encodes the answer.
⭐ The question underneath is not cosmetic: should a citation name the revision that was true when it was written, or the one that is true now? The repo currently answers both ways in the same directory, which is why this is a finding rather than a typo.
Re-check
git grep -nE "\(\./0006-project-environment-split\.md\)" origin/main -- 'docs/adr/*.md'
git grep -nE "0006-project-environment-split\.v4\.md" origin/main -- 'docs/adr/*.md'
git show origin/main:docs/adr/0006-project-environment-split.md | sed -n '1,4p'
⛔ Reverse-check any zero against a term known present in the same population — and note the bare-filename pattern is a substring of the v4 one unless the closing paren is anchored, which is exactly the kind of overlap that has produced false readings in this lane.
Duplicate check
Searched this round. Nearest neighbour is #9072 (open, pm:queue, repo:cloud) — the same class, different subject: an ADR cited under two spellings, there across a repo boundary. ⛔ No open card covers ADR-0006's two filenames. ⚠️ Not exhaustively deduped outside domain:cli / domain:devx.
Refs
Filed unassigned and ungraded by the
domain:cliseat (#6024), sessionsession_01UjujZN219uFzBhSYfMykCd, on behalf of the #12473 dev — that seat gets 403 on the dedup channel, so the mandatory pre-file search was impossible from there. ⭐ It reported rather than filing blind. ⛔ Not graded, not routed. Re-measured independently by this seat before filing.Measured on
origin/mainTwo files under
docs/adr/link ADR-0006 to the bare filename, which holds the Superseded v3:0007-settings-manifest-and-kv-store.md:5— in its Builds on line0008-metadata-repository-and-change-log.md:8— in its Builds on lineFive link to the
.v4filename, which holds the Accepted revision:0005:9,0016:5,0016:449,0027:5,0086:5(plus the v3 record's own Superseded-by line pointing forward, which is correct).The v3 file's own header reads "Superseded by v4" and names the successor, so a reader routed there is redirected in one hop — which is why
check:adr-linksis green against both filenames and always will be.⭐ Why it is worth recording anyway
ADR-0008 does both things at once. Its line 3 is one of the three banners telling the reader "See ADR-0006 for the rationale"; its line 8 links ADR-0006 to the superseded record. ⇒ a reader following that document's own link lands on v3, looking for something that is in neither revision (see the sibling finding filed alongside this one).
And the incentive just changed: PR #12736 (#12473, maintainer-ruled) puts the API-surface vocabulary boundary into v4. That boundary exists to stop a recurring stream of drift cards. ⛔ Two of the inbound links point at the revision that does not carry it, and a redirect the reader must notice is weaker than a link that lands.
docs/adr/, two more places name one of the filenames: the repoCHANGELOG.mdandscripts/check-adr-anchors.mjs. ⛔ Whoever takes this checks what the script's reference means before touching it — a checker naming a path is not necessarily a citation to retarget, and this seat did not determine which it is.Options, ⛔ not prejudged
⭐ The question underneath is not cosmetic: should a citation name the revision that was true when it was written, or the one that is true now? The repo currently answers both ways in the same directory, which is why this is a finding rather than a typo.
Re-check
⛔ Reverse-check any zero against a term known present in the same population — and note the bare-filename pattern is a substring of the v4 one unless the closing paren is anchored, which is exactly the kind of overlap that has produced false readings in this lane.
Duplicate check
Searched this round. Nearest neighbour is #9072 (open,⚠️ Not exhaustively deduped outside
pm:queue,repo:cloud) — the same class, different subject: an ADR cited under two spellings, there across a repo boundary. ⛔ No open card covers ADR-0006's two filenames.domain:cli/domain:devx.Refs
project→environmentrename extend to the API surface —client.projects.*and theres.project/res.projectsresponse fields? #12473 / PR #12736 — puts the boundary into v4, which is what gives this teeth