Repository navigation
feat: record the ADR policy in ADR 0009 and check it (DOC-04, adr-lint) - #111
Merged
Merged
Conversation
Agents load ADRs as instructions and apply a superseded record as a current rule. ADR 0009 records that reasoning, the rejected lifecycle conventions and the trade-offs. The policy page links to it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
An ADR marked superseded, deprecated, rejected or obsolete is loaded by an agent as a current rule (root ADR 0009). DOC-04 now reads each numbered ADR for a status line or field, a `## Status` section, or a line that opens with "superseded by", "replaced by" or "deprecated by / in favour of". Any such tombstone is PARTIAL, with its file and line, even when the index lists every entry. A plain `Status: Accepted` is not flagged, and the word inside a sentence or table does not count. Ruleset 2026-11-10.5; no catalogue bump. One-defect fixture doc-04-adr-tombstone with its eval file, in-process tests, rubric, REQ-SH-019 line, changelog and audit master. Self-audit: DOC-04 PASS. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
dev/adr_lint.py fails when an ADR in any of the five ADR folders has a lifecycle field (Status, Date, Last reviewed, Deciders), a Lifecycle section, a retired-ADR marker (the audit's DOC-04 rule, loaded at run time so strict mypy stays on dev/), a missing or reordered template section, a title without its number, or no row in the root index. An index row to a missing ADR fails too. CI runs it in the static job. The policy page, ADR 0009 and the gate listings name it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Summary
Follow-up to #110: the ADR policy is now recorded and checked.
apply a superseded record as a current rule. It lists the rejected conventions (status lifecycle, archive
folder, status-only header, history section) and the trade-offs.
## Statussection, thatsays superseded, deprecated, rejected or obsolete, or a line that opens with "superseded by", "replaced by" or
"deprecated by / in favour of", is
PARTIALwith its file and line. A plainStatus: Acceptedis not flagged.Ruleset
2026-11-10.5; one-defect fixturedoc-04-adr-tombstonewith its eval file; in-process tests; rubric,REQ-SH-019 line, changelog and audit master. Self-audit: DOC-04 PASS.
make adr-lint(inmake checkand the CIstaticjob):dev/adr_lint.pyfails on a lifecycle field orsection, a retired-ADR marker (the same rule as DOC-04), a missing or reordered template section, a title
without its number, or an ADR with no row in the root index (and an index row to a missing ADR).
The CI job
staticis renamed to mention the ADR lint; onlyCI Gateis required, so merging is unaffected.Checks
make check,make security,make docs-lint(baseline 647),make commit-lint RANGE=origin/dev..HEAD: pass.🤖 Generated with Claude Code