Describe the two legs the gate section left out [#326] - #327
Merged
Merged
Conversation
CONTRIBUTING.md's section on what the gate runs and what each thing refuses
walked every leg but two. Neither the word coverage nor the word mutation
appeared anywhere in the file, and both legs landed on 2026-08-27:
grep -c -i 'coverage' CONTRIBUTING.md ; echo "exit=$?"
0
exit=1
grep -c -i 'mutation' CONTRIBUTING.md ; echo "exit=$?"
0
exit=1
coverage is the one that costs a contributor something. It triggers on
pull_request and on a push to main, its check verb judges rather than reports,
and a red one sent a reader to a document with nothing in it about what the
check wanted. The section's own opening sentence warns that its list goes stale
the day a check is added and hands over the command that exposes it, so the
omission stood beside its own diagnosis for twenty days while the document was
opened five times.
Both entries are written in the shape the others there are written in: what it
refuses, the register where there is one, and the script holding the rules and
the fixtures. Two things are deliberately not restated. The coverage bar is not
pasted here, because a number in a document drifts against the script that
declares it and this file already carries that rule. And neither entry claims
the leg does something this tree does not: coverage judges, mutation gates
nothing, and the second is a placement decided in #85 rather than a gap.
Adding mutation moves a count in the same section, which said three runs report
and refuse nothing. It says four now, and it says in the same breath that the
number is a hand count over the entries in this section which no command
derives - so it is right about what is described here and says nothing about
what the tree carries. That is the second time the number has moved for the
same reason, and the sentence now records both.
It was found by running the command the section already hands the reader and
comparing its output against the legs described below it. Nothing reported it,
and nothing in this tree compares the two, so the next leg that lands
unmentioned is refused by nothing.
flat=$(tr '\n' ' ' < CONTRIBUTING.md | tr -s ' ')
gh api repos/Flowfin/core/commits/main/check-runs --jq '.check_runs[].name' \
| sort -u \
| while read -r n; do printf '%s' "$flat" | grep -qF "$n" \
|| echo "NOT DESCRIBED: $n"; done
(no output)
The line wraps are collapsed first because a check-run name the document wraps
mid-name is not a missing entry, and reading the file without that step reports
"Scorecard analysis" as absent while it is there.
bash .github/doc-paths/doc-paths.sh check | tail -1
Every path these documents name resolves against the tracked set.
What this does not prevent: nothing in this tree compares the legs this document
describes against the legs the tree carries. Two landed unmentioned and stayed
that way for twenty days, and a third that lands tomorrow is refused by nothing.
This change writes the two entries and no check.
Closes #326
Signed-off-by: Nils Lehnen <30603423+iderex@users.noreply.github.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.
The issue this belongs to
Closes #326
What changed
CONTRIBUTING.md's## What the gate runs, and what each thing refusesgains an entry forcoverageand one formutation, written in the shape the other legs there are written in: what it refuses, the register where there is one, and the script that holds the rules and the fixtures that prove them.Adding
mutationmoves the counted sentence in the same section from three runs that report and refuse nothing to four, and that sentence now also says that the number is a hand count over the entries in this section which no command derives.What failure it prevents
Neither word appeared anywhere in the file.
coveragetriggers on every pull request and judges, so a contributor meeting a redcoveragehad nothing in the document to read about what it wanted - in the section whose whole subject is what each check refuses.The section opens by warning that its own list goes stale the day a check is added and hands the reader the command that exposes it. The omission therefore stood beside its own diagnosis. It was found by running that command and comparing its output against the legs described below it; nothing reported it.
Evidence
At the base,
f597da1aa1d6fb52084689cd34e03ed158ea2389, neither word was in the file:while both legs were in the tree with a workflow and a script beside it:
coverageis a check a pull request meets, and its own header says thecheckverb judges. Read from a clean checkout standing at that commit:mutationgates nothing, which is what the new entry says of it and what the script says of itself:When it drifted. Both legs landed on 2026-08-27 and the document was opened five times after that without either arriving:
At the head being pushed, every check-run name reporting on
mainappears in the file:The wraps are collapsed first because a check-run name the document wraps mid-name is not a missing entry. Without that step the same loop reports
Scorecard analysisas absent, and it is present at line 304 of the base.What a guard here refuses, and the proof it bites
This change adds and edits no guard. It is prose in one document, which is the subject of the section below.
What this does not cover
No mechanism. Nothing in this tree compares the legs this document describes against the legs the tree carries. That is what let two of them land unmentioned and stay that way for twenty days, and a third that lands tomorrow is refused by nothing. This change writes the two entries and no check, and the loop pasted above is a command somebody chose to run rather than anything the gate does.
The count in that section is still a hand count. It says so now, which is the honest version rather than the fixed one: whether a leg reports and refuses nothing is a property of a script, no reading of the tree derives it, and the number will move again the next time a leg of that kind arrives.
Whether
mutationbelongs in that count at all is a judgement about the sentence's subject. Its issue admitted either answer. This change takes the reading that a leg described in this section which gates nothing is a member, and a reader who disagrees is disagreeing with that sentence rather than with a measurement.The bar the coverage leg pins is deliberately not pasted into the document, so this change does not put a second copy of that number anywhere. Whether the bar, the pinned surface or the weekly cadence are the right ones is #84's and #85's and is not reopened here.
No code changed and no test was added, because what changed is prose and no code path. The rest of
CONTRIBUTING.mdis not audited: I compared the check-run names onmainagainst the legs the section describes and read no further than that section and the paragraph above it.Who has read it
Nobody other than me. There is no second reader on this board tonight, and the evidence above stands in place of one rather than the question being left open.