Repository navigation
claw: mutation sweep of check_state.t27 and merge_lane.t27, 15 real survivors #10724
Copy link
Copy link
Closed
Description
What
A mutation sweep of two TRI CLAW law specs (mutgen.sh operators, t27c test-report per mutant on the Railway lab):
specs/claw/check_state.t27reads a PR's check rollup into pass / failing / pending / unreadable and a verdict.specs/claw/merge_lane.t27measures the auto-merger: lane state, yield and its share of the queue.
| Spec | Mutants | Caught | Real survivors | Equivalent |
|---|---|---|---|---|
| check_state.t27 | 40 | 33 | 3 | 3 + 1 in a test helper |
| merge_lane.t27 | 92 | 74 | 12 | 6 |
Real survivors (a test is missing)
check_state.t27:
- 70
or->and:PENDINGandREQUESTEDstop being wait statuses. No test reads either one. - 139
rows < CHECK_MAX_ROWS-><=: the 1024-row cap has no test at all. - 158
ls = le + 1->+ 2indashboard_failing: the second row loses its first byte, so aCONTEXTrow is read asONTEXTand counted failing.
merge_lane.t27:
- 125, 217, 330
le > ls->>=: a blank line becomes an unreadable row inml_counts,my_countsandms_counts. - 128, 219, 332
rows < ML_MAX_ROWS-><=: none of the three 4096-row caps has a test. - 130
age >= 0->>: an open run of age 0 becomes unreadable. - 229
nl > 0->>=: an empty run with no missing label is counted as label-only. - 308
e <= s-><andreturn false->return true: an empty event name is accepted. - 312
b >= 'a'->>andb <= 'z'-><: the lettersaandzare refused in an event name. No test event contains ana(workflow_run,scheduleandpull_requesthave none).
Equivalent (cannot change any output)
ls < n-><=(check_state 135, 153; merge_lane 123, 215, 328): atls == n,qc_line_endreturnsn, so the empty range is skipped.- check_state 155
le > ls->>=indashboard_failing: an empty range never splits, so it is not counted either way. - merge_lane 134
>->>=on the oldest age: an equal age writes the same value. - merge_lane 173, 274
rows > 0->>=: with no rows, the verdict from all-zero counts is already idle and none. - check_state 205: the
t_classtest helper.
Also in this change
#10722: the CR tests in both specs wrote "\r", which is a backslash and an r in a t27 literal. The tests now write the byte 13 and assert that it is there.
Boundary
- specs/claw/check_state.t27
- specs/claw/merge_lane.t27
- .trinity/seals/claw_ClawCheckState.json
- .trinity/seals/claw_ClawMergeLane.json
User Scenarios
- Given a mutant of
specs/claw/check_state.t27orspecs/claw/merge_lane.t27listed above as a real survivor, when t27ctest-reportruns on it, then at least one test fails. - Given an equivalent mutant, when it survives, then this issue records why it cannot change any output.
Requirements
- FR-001: Production code MUST stay unchanged; only tests are added.
- FR-002: Each of the 15 real survivors MUST be caught after the change.
- FR-003: The carriage-return tests MUST write the byte 13 and assert that it is present (TRI CLAW: two claw tests write CR as "\r" in a literal, which is a backslash and r #10722).
Success Criteria
- check_state reports 17 tests passed and merge_lane 30 tests passed under t27c and t27b.
- The full re-sweep catches 36 of 40 and 86 of 92 mutants.
seal --verifyexits withexit 0for 32 files.
Status
Done by PR #10726 (merged).
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity
github-actions commentedon Oct 19, 2026
Closed by the issue-shape gate (specs/policy/issue_shape.t27, #7498): an issue must have the template's sections. Edit the body; an edit that passes reopens it.
- specs/x.t27); without it the Queen reserves nothing and no bee can take the issueFR-001: ... MUST ...exit 0, or a backticked command[-]claw: mutation sweep of check_state.t27 and merge_lane.t27, 16 real survivors[/-][+]claw: mutation sweep of check_state.t27 and merge_lane.t27, 15 real survivors[/+]test(claw): kill the real check_state.t27 and merge_lane.t27 mutation…
github-actions commentedon Oct 19, 2026
The shape check passes now (specs/policy/issue_shape.t27); reopened.