Skip to content

Count the ADRs and the runbooks, which nothing was counting (#72) - #389

Merged
Gerrrt merged 1 commit into
mainfrom
gerrrt/count-adrs-and-runbooks-72
Sep 8, 2026
Merged

Gerrrt merged 1 commit into
mainfrom
gerrrt/count-adrs-and-runbooks-72

Conversation

@Gerrrt

@Gerrrt Gerrrt commented Sep 8, 2026

Copy link
Copy Markdown
Owner

What changed

check_counts() gains two patterns, facts() gains two counters, and
README.md's ADR number goes from 23 to 27.

Why

README.md line 84 claims a number of ADRs and a number of runbooks. Neither
had a pattern, so neither was checked, and the ADR count had drifted by four —
0024 through 0027 landed and nothing failed, because "N ADRs" was a phrasing
nobody had thought of. That is the #72 defect sitting inside the file written to
prevent it, which is the second time that has happened here; #367 was the first,
and its own docstring says so.

The runbook count is correct, and is guarded anyway. That needs a reason,
because guarding a true number looks like work for its own sake:
#387 is in review and adds
docs/runbooks/build-the-lab-domain.md, which makes it wrong. So for once the
drift can be watched arriving rather than found afterwards — and what it looks
like is the instructive part. Nothing about that change touches README.md, or
any file a reviewer of that branch would think to reread. A directory gains a
file, and a sentence somewhere else quietly stops being true.

Deleting both numbers was the other answer

It nearly won, so the argument is in the file rather than only here. Every other
count in check_counts() is load-bearing — alert rules are the coverage
ADR-0007 explicitly trades away, Alloy agents say which hosts are observed, a
stale panel count broke a verification step inside a deploy runbook. An ADR
total says only how long the project has been running. Nothing reads it, nothing
branches on it, and removing it would have ended the obligation instead of
automating it.

It is guarded for what the sentence is doing rather than what it counts.
README.md is where this repository claims its documents are checked against
the things they describe, so a visibly wrong number there is a false claim about
the checking, not a stale fact about ADRs. And the precedent is settled: #72,
#81 and #367 were each answered by widening the patterns, and "delete the claim"
was available to all three.

Two scoping decisions worth stating

  • Superseded ADRs count. ADR-0002 and ADR-0013 are marked and not deleted,
    per ADR-0001's "the history of what was believed and when is the point" — so
    a count that skipped them would answer a different question from the one the
    README asks.
  • docs/adr/ and docs/roadmap.md stay outside PROSE. This counts the
    directory rather than reading the files, so historical counts in records are
    untouched, exactly as the module docstring requires.

Blast radius

CI only. No runtime change, no config change.

  • No change to network segmentation or firewall rules
  • No new port published to a VLAN that could not already reach the service
  • No credential added outside secrets/*.sops.yaml

Verification

  • make validate passes.
  • Mutation-tested, because the check passing proves nothing on its own —
    that is the whole lesson of the issues above. A wrong ADR digit, a wrong
    ADR count spelled out as a word, and a wrong runbook count across the line
    wrap the claim happens to be written on
    are each caught.
  • Negative controls: both counts spelled out correctly as words stay
    silent. Without these, a pattern that always fired would have "passed"
    every mutation above.

Merge ordering

This and #387 both touch these
numbers, and whichever lands second needs its README.md bumped — #387 adds two
ADRs and a runbook, taking the truth to 29 and 20.

That is not an awkwardness to work around; after this merges it is CI's job to
say so, which is the entire point of the change. Before this merges it is
nobody's, which is why the ADR count was wrong by four.

🤖 Generated with Claude Code

…ng (#72)

README.md claims a number of ADRs and a number of runbooks, and check_counts()
had a pattern for neither. The ADR count had drifted to twenty-three against
twenty-seven — four ADRs landed and nothing failed, because "N ADRs" was a
phrasing nobody had thought of. That is the #72 defect itself, sitting in the
file written to prevent it, which is the second time that has happened here
(#367 was the first, and its own docstring says so).

The runbook count is CORRECT, and is guarded anyway. That needs a reason,
because guarding a true number looks like work for its own sake: #265 is in
review and adds docs/runbooks/build-the-lab-domain.md, which makes it wrong. So
for once the drift can be watched arriving rather than found afterwards — and
what it will look like is instructive. Nothing about that change touches
README.md, or any file a reviewer of that branch would think to reread. A
directory gains a file, and a sentence somewhere else quietly stops being true.
An unguarded number that happens to be right is not a number anybody is keeping
right.

DELETING BOTH NUMBERS WAS THE OTHER ANSWER AND IT NEARLY WON, so the argument is
in the file rather than only here. Every other count in check_counts() is
load-bearing: alert rules are the coverage ADR-0007 explicitly trades away,
Alloy agents say which hosts are observed, a stale panel count broke a
verification step inside a deploy runbook. An ADR total says only how long the
project has been running — nothing reads it, nothing branches on it, and
removing it would have ended the obligation instead of automating it.

Guarded for what the sentence is doing rather than what it counts. README.md is
where this repository claims its documents are checked against the things they
describe, so a number that is visibly wrong there is a false claim about the
checking, not a stale fact about ADRs. The precedent is also settled: #72, #81
and #367 were each answered by widening the patterns, and "delete the claim" was
available to all three.

Superseded ADRs count. ADR-0002 and ADR-0013 are marked and not deleted, per
ADR-0001's "the history of what was believed and when is the point", so a count
that skipped them would answer a different question from the one the README
asks. docs/adr/ and docs/roadmap.md stay outside PROSE, so this counts the
directory rather than reading the files and historical counts there are
untouched.

Verified by mutation rather than by the check passing. A wrong ADR digit, a
wrong ADR count spelled as a word, and a wrong runbook count across the line
wrap the claim happens to be written on are each caught; both counts spelled
out correctly as words stay silent, which is the negative control that shows the
patterns compare rather than simply fire.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Gerrrt
Gerrrt merged commit 5ec6f6e into main Sep 8, 2026
3 checks passed
@Gerrrt
Gerrrt deleted the gerrrt/count-adrs-and-runbooks-72 branch September 8, 2026 01:21
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