Skip to content

feat(decision-records): warn when a living doc cites a superseded record - #14

Merged
trungfinity merged 1 commit into
mainfrom
feat/decision-records-stale-citations
Sep 7, 2026
Merged

trungfinity merged 1 commit into
mainfrom
feat/decision-records-stale-citations

Conversation

@trungfinity

Copy link
Copy Markdown
Contributor

What

S3, the last of the convention refresh: the one integrity check nothing off the shelf provides — Doorstop-style suspect links, adapted to this convention.

The warning

Supersession retires a record, but nothing used to re-read the docs citing it: a rulebook resting on 0007 kept resting on it after 0019 replaced it. check (and build) now print a WARN naming the successor for every cite of a superseded record in a living doc — body refs bare or linked, plus front-matter relates_to.

It warns and never fails: a mention can be deliberately historical, and only a human can tell. Two exemptions keep it quiet exactly where citing a retired record is correct: archived records (frozen history) are not swept, and the record that supersedes an old one may of course name it.

Sign-off notes

references/promotion.md gains a Sign-off section: every name in a promoted record's deciders approves the promotion PR before merge (socially enforced, or mechanically via CODEOWNERS on docs/decisions/ + required approvals — the tool cannot see PR state). For ratification-grade promotions, an optional signed tag per decider (git tag -s) makes "who signed exactly which text" cryptographically verifiable long after the PR page.

Verification

109 tests pass (4 new: warn with successor named, relates_to warns, superseding record exempt, archived records not swept — with the living record that cites both retired records shown warning in the same run). validate_skills.py and pre-commit run --all-files clean.

Supersession retires a record, but nothing re-read the docs that cite
it: a rulebook resting on 0007 kept resting on it after 0019 replaced
it, silently. check (and build) now print a WARN naming the successor
for every cite of a superseded record found in a living doc — body
refs, bare or linked, plus front-matter relates_to.

A warning and never a failure, because a mention can be deliberately
historical. Two exemptions keep it quiet where citing is right:
archived records are frozen history and cite what they like, and the
record that supersedes an old one may of course name it.

Also documents sign-off in references/promotion.md: every name in a
promoted record's deciders approves the promotion PR (enforced
socially or via CODEOWNERS + required approvals — the tool cannot see
PR state), and a ratification-grade promotion can add one signed tag
per decider, making "who signed exactly this text" verifiable long
after the PR page.
@trungfinity
trungfinity merged commit 6e95c15 into main Sep 7, 2026
10 checks passed
@trungfinity
trungfinity deleted the feat/decision-records-stale-citations branch September 7, 2026 16:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant