Files
hq/00-META/checks
jschoubben e1febe8e0f Renumber the records 1 to 23
The consolidation left a sparse sequence -- 1, 4, 6, 7, 9, 10, 12, 15, 16, 18,
19, 25, 34, 35, 36, 37, 40, 42, 44, 45, 48, 49, 58 -- where the gaps were only
the archaeology of what used to be there.

Renumbered contiguously. Renames run in ascending order, so every target number
is already free and no two files ever collide.

The reference rewrite is one simultaneous pass rather than a sequence of
replacements. Numbers moved into slots other numbers were vacating -- the node
host went 37 to 16 while the lab went 16 to 9 -- so replacing one at a time
would have cascaded and silently pointed things at the wrong record.

Seven plain-text references survived the merges as prose rather than links,
naming records that no longer existed: the enrolment token, the link boundary,
what a declaration is, reachability, the repository structure. Each mapped to
the consolidated record that now holds it.

Verified rather than assumed: every [ADR NNNN](path) link now has matching text
and target, checked across the whole repository, and the checker passes.

Frontmatter `consolidates:` lists dropped -- they named records that are gone,
and each consolidated record already says in prose what it absorbed.
2026-08-28 23:28:34 +02:00
..
2026-08-28 23:28:34 +02:00

Checks

python3 00-META/checks/records.py

Non-zero exit on any problem, so it can be a gate rather than a report.

Why this exists. Until now nothing in this repository was verified by anything but reading, which is how a superseded decision stayed live in the constitution for days and in 01-to-be/README.md alongside it. Both were found by a person looking. how-we-build §5 says an unenforced rule is indistinguishable from a wrong one, and costs more, because people believe it — this repository was carrying several.

Every check here failed on something real before it passed. A check that has never failed is indistinguishable from one that cannot.

Check Asserts Found
links every relative link resolves — (run ad hoc during authoring; now permanent)
rests-on decisions: and extends: name records that exist and are accepted the class behind both incidents
live-citation a governing document citing a superseded record names its replacement in the same paragraph 01-to-be/README.md citing ADR 0017 as live guidance
supersession if A says it was superseded by B, B says it supersedes A ADR 0010 never declared that it superseded 0011
numbering the number in the filename is the number in the heading —

What is deliberately not checked

  • 02-DECISIONS/ and 01-RESEARCH/ may cite superseded records freely. A decision record discusses history; research records what was observed. Flagging those would produce noise on correct documents, and a check that cries wolf gets suppressed — which costs more than not having it.
  • 03-DESIGN/00-as-is/ may rest on a superseded record. It describes what runs, and what runs was built under whatever was decided at the time (ADR 0021: as-is describing a superseded decision is exactly what as-is is for).
  • Whether a citation's prose is still true. Only whether the record it points at is live. A document can cite an accepted record and describe it wrongly, and nothing here notices.

So "governing" means 00-META/ and 03-DESIGN/01-to-be/ — the documents that tell somebody what to do.

Adding a check

State what incident it would have caught, and make it fail before you make it pass. A check whose failure has never been observed is a guess about its own correctness.