Count what the boundary record grounds from the blocks, rather than in the line that prints the bound - #433
Merged
iderex merged 1 commit intoSep 17, 2026
Conversation
…n the line that prints the bound The `invariants` run prints, beside every verdict, that the boundary itself is not read "although three rules above are grounded in the record that draws it". Four blocks carry `grounds: docs/decisions/0003-what-the-core-does-not-do.md`, and four did on the day that line landed with #77 on 2026-08-26: `no-text-output` was grounded there from #82 the day before and holds no list of names. So the count and the sentence after it are about two different sets - what the record grounds, and which rules hold a list - and the line stated the first while meaning the second. The count is deleted rather than corrected. The run already prints each block's `grounds` line in its own first section, so the number is derived by the reader from the same output, and a number typed here goes stale the next time a rule lands with that record behind it. The three the sentence is about are the three holding a list of names, that is unchanged, and so is the bound the line exists for: a green run is not a run that found the boundary uncrossed. `docs/gate-parity.md` carried the same count in its `opengrep.yml` row, in a clause that landed one commit ago. It read "the three grounded in 0003", which is a count of what that record grounds. It now names the three that hold such a list, and records what it said. What failure it prevents: a reader sizing a green run from the accounting line and taking a count of which rules rest on the boundary record from a number that has never agreed with the register it counts. It was wrong on its first run and printed with every verdict after it, which is the shape `.github/targets/targets` records of itself in its own header, arriving in the accounting line rather than in a reason. What was wrong, and how it was found: a count typed into a printed line, read against the `grounds` fields of the blocks the same run prints. No block changes. No rule, pattern, path, subject or fixture is touched, and the set the run judges is what it was. `.github/invariants/invariants.sh check` and `.github/doc-paths/doc-paths.sh check` each exit 0, and `cargo build --locked --all-targets` and `cargo test --locked` are green at this commit. `.github/shell-analysis/shell-analysis.sh` was NOT run here: `shellcheck` is not on this machine and the script says so rather than passing. The gate runs that leg. Closes #432 Signed-off-by: Nils Lehnen <30603423+iderex@users.noreply.github.com>
iderex
deleted the
count-what-the-boundary-record-grounds-from-the-blocks
branch
September 17, 2026 22:31
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.
The issue this belongs to
Closes #432
What changed
The
invariantsrun prints, beside every verdict, that the boundary itself is notread "although three rules above are grounded in the record that draws it". That
clause counted the rules the boundary record grounds and the register holds four.
The count is deleted rather than corrected, because the run already prints each
block's
groundsline in its own first section, and the sentence now says what itwas about: three of the rules above hold a list of what has been named.
docs/gate-parity.mdcarried the same count in theopengrep.ymlrow, in a clausethat landed one commit ago as "the three grounded in 0003". It names the three that
hold such a list now, and records what it said.
No block changes. No rule, pattern, path, subject or fixture is touched.
What failure it prevents
A reader sizing a green run from the accounting line, and taking from it a count of
which rules rest on the boundary record that has never agreed with the register it
counts. The line is the bound
satisfiedis worth in the parity register: therules hold names rather than purposes, so a green run is not a run that found the
boundary uncrossed. That bound is unchanged. What was wrong beside it is a number
that was wrong on its first run and printed with every verdict after it - the shape
.github/targets/targetsalready records of itself in its own header, arriving inthe accounting line rather than in a reason.
It was found by reading the run's own output against the
groundsfields of theblocks the same run prints.
Evidence
Read at the commit being pushed,
b0d86ec567b695c2c5ce3bab4d3496b78dfe6291, exceptwhere a command names another.
The count, against the register
Four. The fourth is
no-text-output, which holds no list of names, so the countand the sentence after it are about two different sets.
It was four on the day the line landed
What the run prints now
The legs run here
Both exited 0.
What a guard here refuses, and the proof it bites
Nothing here adds or edits a guard. The change is to a printed accounting line and
to a comment above it. Every rule block, pattern, path, subject and fixture is
byte-identical, which is what the diff above shows: the only file under
.github/invariants/that changes is the loader, and the change is inside thesection that runs after the verdict.
What this does not cover
.github/shell-analysis/shell-analysis.shwas NOT run on this machine.shellcheckis not installed here and the script reports that rather thanpassing. The leg on the gate is what judges this change's shell, and no local run
stands in for it.
CONTRIBUTING.mdsays five and theregister's own header names three of them by id. Both read correctly against the
blocks and neither is re-opened.
no-text-outputbelongs among the name-list rules. Its pattern is aset of macro names somebody wrote down, and this tree's own reading puts it
outside that family. The subject here is a count of what the record grounds,
which is a different field.
touched, and the set the run judges is what it was.
number typed into a printed line against the register it counts, and this adds no
rule.
waitingverdict. The rowtouched here reads
satisfied, and the decision Eight parity rows wait on a register that closed with every entry answered #377 holds is not reached.Who has read it
Nobody other than the author has read this change. There is no second reader on
this board tonight, and the evidence above stands in place of one: the defect was
found by running the check and reading its output against the register it counts,
and the repair is readable in the same output.