Skip to content

Give the five names with no verdict one, in the parity document (#26) - #140

Merged
iderex merged 1 commit into
mainfrom
parity/a-verdict-for-what-the-target-has-no-equivalent-for
Aug 16, 2026
Merged

Give the five names with no verdict one, in the parity document (#26)#140
iderex merged 1 commit into
mainfrom
parity/a-verdict-for-what-the-target-has-no-equivalent-for

Conversation

@iderex

@iderex iderex commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Closes nothing. Issue #26 stays open, and this lands one of the two changes that
comment names as owed before the required set can be assembled at all.

What was wrong

The first clause of #26's done-condition assembles the required set from
docs/quality-parity.md. Five check names this tree declares appear nowhere in
that document, in no row and in no sentence:

git grep -h -E '\{Name: "(test \(|vet"|required contexts")' origin/main \
  -- internal/contexts/contexts.go | sed 's/^[[:space:]]*//'
{Name: "test (linux/amd64)", Why: theSetIsEmpty, Until: "#26"},
{Name: "test (windows/amd64)", Why: theSetIsEmpty, Until: "#26"},
{Name: "test (darwin/arm64)", Why: theSetIsEmpty, Until: "#26"},
{Name: "vet", Why: theSetIsEmpty, Until: "#26"},
{Name: "required contexts", Why: theSetIsEmpty, Until: "#26"},
git grep -n -E 'test \(|`vet`|required contexts' origin/main \
  -- docs/quality-parity.md ; echo "exit=$?"
exit=1

A declared name the document gives no verdict to can be read as kept or as
dropped with equal justice, and the two readings produce different gates. So
the clause has no single answer to be measured against until each of the five
carries one.

What this changes

One section of one document. Each of the five now says kept or dropped and why,
in the same terms the table above it uses, under
## What this board adds that the target does not have, which is where the
names the target has no counterpart for already live.

The suite entries are kept because the three platforms record
docs/decisions/0012-the-supported-platforms.md picks are picked for case
folding, path separators and line endings, which are the defects of a runner
that reads a checkout, and a build entry that compiled says nothing about them.
vet is kept at a smaller cost, one job over the module rather than three
entries on three machines. required contexts is kept because its subject is
the gate rather than the tree, and it is missing from the table only because it
landed after the walk the table is built on.

The measurements

The target requires nothing that runs a suite and nothing that vets:

gh api repos/Flowfin/jellyfin-plugin-sso/rules/branches/main \
  --jq '.[] | select(.type=="required_status_checks")
        | .parameters.required_status_checks[].context' \
  | grep -E '^(test|vet)' ; echo "exit=$?"
exit=1

required contexts is younger than the walk the table records, which read a
ruleset as it answered on 2026-08-10:

git log -1 --format='%h %ad %s' --date=short --diff-filter=A \
  -- .github/workflows/contexts.yml
2b954f5 2026-08-12 Refuse a required context and a check name that disagree (#71)

Run at 29b7019, the head of this branch, over the whole tree:

go build ./... && go test ./... 2>&1 | grep -v '^ok\|no test files' ; echo "exit=$?"
exit=1

go test ./internal/prose -run 'TestThisRepositorySatisfiesTheProseFormat' \
  -count=1 -v 2>&1 | sed -n '/examined/,/refused/p'
        examined ../..
        31 prose files read, and testdata is not read
        0 refused

go run ./cmd/lab check .
examined .
1 experiment directory walked, 1 record read
18 decision records read
0 refused

The lab check output above has the line naming the moment the run read cut
from it, because that line moves on every run and quoting it here would date
this body rather than the tree.

The means

Markdown in an existing document, because the artefact is a verdict a reader
follows from the table to the reason, and the document is the place the
done-condition of #26 names. No language, runtime or dependency is added.

What this does not do

It does not assemble the required set and it does not touch the ruleset. It
also moves no state in internal/contexts/contexts.go: a kept name leaves the
deliberate-absence list by entering the ruleset, which is what those five
entries already say, so a verdict of kept is the state they already carry.

The other change #26 needs before the set is assembled is unaffected by this
one, and neither of them is the settings change the done-condition ends on.

The reading

There is no second reader on this board tonight, so nothing below has been read
by anybody but its author. The commands above are quoted in place of one, with
their output, so the claims in this body can be re-run rather than taken.

Signed-off-by: Nils Lehnen 30603423+iderex@users.noreply.github.com

The required set issue #26 assembles is taken from this document, and five check
names this tree declares had no row and no sentence anywhere in it: the three
platform suite entries, `vet`, and `required contexts`. A declared name the
document gives no verdict to reads as kept or as dropped with equal justice, so
the two readings produce two different gates and the first clause of that
issue's done-condition has no single answer to be measured against. This is the
change that has to be made before the set is assembled rather than after it.

All five are kept and belong in the required set, each with its reason written
where the table's reasons are. The suite entries are kept because the three
platforms record `0012` picks are picked for filesystem case folding, path
separators and line endings, which are the defects a runner that reads a
checkout has and which a build entry that compiled says nothing about. `vet` is
kept at a smaller cost, one job over the module rather than three entries on
three machines. `required contexts` is kept because its subject is the gate
rather than the tree, and it is absent from the table only because it landed two
days after the walk the table is built on.

Measured rather than reasoned about. The target requires nothing that runs a
suite and nothing that vets, which the quoted command shows returning no line,
and the commit that added the workflow behind `required contexts` is quoted with
its date.

No state in `internal/contexts/contexts.go` moves. A kept name is retired from
the deliberate-absence list by entering the ruleset, which is what those entries
already say, so a verdict of kept is the state they already carry.

Signed-off-by: Nils Lehnen <30603423+iderex@users.noreply.github.com>
@iderex
iderex merged commit d645d4e into main Aug 16, 2026
25 checks passed
@iderex
iderex deleted the parity/a-verdict-for-what-the-target-has-no-equivalent-for branch August 18, 2026 14:44
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