Test suite: one home for every check, with coverage measured against the corpus it adopts - #505
Test suite: one home for every check, with coverage measured against the corpus it adopts#505m2ux wants to merge 3 commits into
Conversation
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Mike Clay <mike.clay@shielded.io>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Mike Clay <mike.clay@shielded.io>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Mike Clay <mike.clay@shielded.io>
|
Closing this: it was opened against a stale reading of The measurement that produced it came from a local What remains is a submodule pointer that is newer than the one on A pointer bump, if wanted, is better taken fresh against Nothing in the description should be read as a statement about this branch. The one claim in it that survives is about the corpus, and it is correct: the branch-as-step guard has a script and a test but no registry entry on |
Summary
This branch carries 21 commits of work that had accumulated on top of
mainwithout a pull request. It is being opened now because the next two pieces of work — the corpus defects in #491 and the test-location boundary in #497 — both touch the files this branch rewrites, and stacking on an unmerged branch is worse than landing it first.The work falls into four groups that share a branch rather than a subject.
What is in it
The test suite gets one home per check. Around 2,300 lines come out of
tests/and 2,150 go back. Setups that were repeated across files are named once; checks that had drifted into two places are reduced to one. Several e2e files retire entirely — the all-paths walk, the definition lint, the robot execution harness and the workflow e2e file — because what they measured is now measured in one place instead of four. The number of test files that read the real corpus drops from 29 to 20.Coverage moves to main and to request. A composite action now handles corpus checkout for every job that needs it, so the walk, the guards and the suite all resolve the corpus the same way. The coverage walk runs on a push to main and on explicit request, and a check verifies that the branch walked the same corpus its merge adopts — the pointer and the measurement can no longer come from different parents unnoticed.
Two guards join the canon set. One reports a set action that builds its value out of the variable it writes. The other measures the branch-as-step class in both directions. The first is registered and runs in the sweep; the second is not, and that is stated below rather than fixed here.
The server accounts for what a run cost. Usage is recorded per dispatch, a child run reports its cost or says it cannot be known, an unpublished progress mark becomes answerable after the fact, and a gate can name a decision its activity did not anticipate. The batch reading moves to where the worker reads it.
Known and not fixed here
The branch-as-step guard has a script and a test but no entry in the guard registry, so the sweep never runs it. Registering it reports 11 violations across 8 files in 5 workflows — all of them the same class, where an indented sub-bullet qualifying an instruction is read as a peer step once the leading whitespace is stripped. Those are corpus files, on the other branch, so the fix cannot land here.
This is finding 3 of #491. The corpus fixes land first, on the corpus branch; the registry entry follows on the code branch once the pointer moves. Registering it in this pull request would make the pull request red for a reason no change here can resolve.
Scope
Landing the work as it stands. No new behaviour is added by opening this.
Acceptance criteria
Non-goals
This does not register the branch-as-step guard, and does not touch the corpus. Both belong to #491.
It does not move any test to the corpus branch or retire the corpus-commit stamps. That is #497, and it stacks on this.