Repository navigation
Count the ADRs and the runbooks, which nothing was counting (#72) - #389
Merged
Merged
Conversation
…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>
10 of 11 tasks
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.
What changed
check_counts()gains two patterns,facts()gains two counters, andREADME.md's ADR number goes from 23 to 27.Why
README.mdline 84 claims a number of ADRs and a number of runbooks. Neitherhad 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 thedrift can be watched arriving rather than found afterwards — and what it looks
like is the instructive part. Nothing about that change touches
README.md, orany 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 coverageADR-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.mdis where this repository claims its documents are checked againstthe 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
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/anddocs/roadmap.mdstay outsidePROSE. This counts thedirectory 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.
secrets/*.sops.yamlVerification
make validatepasses.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.
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.mdbumped — #387 adds twoADRs 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