Repository navigation
feat(claw): lab_receipt, lab_disk, red_origin and mut_known -- four gates for lab checks, red checks and mutation sweeps - #10885
Merged
Merged
Conversation
…h applied and the report ran specs/claw/lab_receipt.t27 (ClawLabReceipt) judges one hand-run lab check: applied files must equal the diff's file count, and the t27c test-report must carry tests, FAIL and vacuous counts with tests > 0 and both others 0. Anything else holds, with one reason. The case is tick 38, where a failed git apply still printed seals 33 of 33 on master's files. t27c 18/18, 0 vacuous; t27b 18/18; 28/28 mutants caught; sealed. Refs #10810 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
specs/claw/lab_disk.t27 (ClawLabDisk) reads df -Pk text for one mount: under 1 GiB free holds, under 5 GiB or under 10% free warns, a mount df does not list or a line with no readable size holds. The case is the t27c lab's /data at 0 KB free of 47.7 GB on 2026-10-19. t27c 18/18, 0 vacuous; t27b 18/18; 49/50 mutants caught (the survivor is equivalent); sealed. Refs #10813 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…aster's When Auto-fix reports a failing check, red_origin reads the PR's changed paths, the paths the failing log names, the paths master changed since the PR's base, and master's state on the same check, and says own, inherited or unknown. PR #10797 had four reds and none was its own; each took a log read and a git log by hand, and a literal "fix and push" would have put other lanes' files into the PR. t27c 18/18 with 0 vacuous, t27b 18/18, mutants 28/30 caught (two loop bounds are equivalent), gen-c ok, sealed. Lines are tagged O, apart from required_red.t27's R. Closes #10821 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…, not line number A survivor argued equivalent in an issue was named by its line number, and the first edit above it moved the number (red_origin: 76/97, then 79/100). mut_known keys a known survivor by its sweep line minus the line number, reads a sweep against the list and returns pass or hold: silent, unreadable, harness (NOAPPLY), new, prune or pass. KNOWN_CLAW carries red_origin's two, lab_disk's one and this module's own five keys. Its own sweep passes on its own list, and the drift case held live: a header line moved all seven survivors down one line and every one still matched. Lab: t27c 24/24 (0 vacuous), t27b 24/24, gen-c rc=0, sweep 104 of 111 caught (7 equivalent, all known), seal --verify 38/38, dupe scan clean. Closes #10835 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…alents to the known list KNOWN_CLAW grows from 8 to 22 keys: ten ledger_union keys (eleven survivors, #10787) and four social_visuals keys (#10773), taken from their sweeps on the Railway lab on 2026-10-19. A new test reads the eighteen lines of those two sweeps (fifteen SURVIVED, three TIMEOUT) and passes them with no new survivor; a negative control shows a key cut at 90 characters keeps its trailing space. sweep_line now takes the counts, not a reason, so it is no longer a byte copy of lab_disk's disk_line (the duplicate-body scan caught it). Lab: t27c 26/26 (0 vacuous), t27b 26/26, gen-c rc=0, sweep 104/111 with the seven survivors all on the list, seal --verify 38/38, dupe scan ok. Refs #10835, #10787, #10773. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s no known entry The lab sweep mutates trailing // comment text as well as code, and two of social_visuals' four survivors (#10773) changed only a comment. A new class C_COMMENT passes such a survivor without a list entry. A line is a comment edit when its <from> text appears after the first " :: ", every match starts after the //, and no quote byte comes before the //. When in doubt the line stays new. The two social_visuals comment keys leave KNOWN_CLAW; five in_comment loop-guard keys join it, each argued in the doc comment, for 25 keys. Negative controls keep new: code before the //, a quote, a string, a <from> the cut hid, an edit of or across the //, an empty <from>, no separator, no bracket. A CAUGHT line in a comment stays CAUGHT. Lab: t27c 28/28 (0 vacuous), t27b 28/28, gen-c rc=0, sweep 140/152 with all twelve survivors on the list, seal --verify 38/38, dupe scan ok. Refs #10846, #10835, #10773. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
gHashTag
enabled auto-merge (squash)
October 19, 2026 05:37
Contributor
This was referenced Oct 19, 2026
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.
What
Four new claw gates in one PR, so they cost the queue one run set. Two of them are for hand-run Railway lab checks, the third triages a failing PR check, and the fourth reads a mutation sweep against the argued-equivalent list. None of them changes production code.
lab_receipt (#10810): is a lab check evidence about the patch?
specs/claw/lab_receipt.t27(moduleClawLabReceipt) judges one hand-run lab check and returns pass or hold, with a reason: not applied, silent, empty, red or vacuous. The case is the 2026-10-19 lab apply that changed nothing, while the checks after it still printed green on master's files.test-report: 18 of 18 tests pass, 0 vacuous.lab_disk (#10813): does the lab volume have room?
specs/claw/lab_disk.t27(moduleClawLabDisk) readsdf -Pktext for one mount and returns go, warn or hold:nodefs.available<10%.dfdoes not list, or a line with no readable size, holds.The case is the t27c lab's
/data, with 0 KB free of 47.7 GB.test-report: 18 of 18 tests pass, 0 vacuous.red_origin (#10821): whose red is it?
specs/claw/red_origin.t27(moduleClawRedOrigin) reads four inputs: the PR's changed paths, the paths a failing log names, the paths master changed since the PR's base, and master's state on the same check. It returns own, inherited or unknown, with a reason:The cases are #10797's four reds, none of them its own.
test-report: 18 of 18 tests pass, 0 vacuous.mut_known (#10835): is a surviving mutant one we already argued?
specs/claw/mut_known.t27(moduleClawMutKnown) keys an argued-equivalent survivor by its sweep line minus the line number, so the key still matches after lines above it move. It reads a sweep and returns pass or hold, with a reason: silent, unreadable, harness (NOAPPLY), new, prune or pass. The case is red_origin's two survivors: first reported at lines 76 and 97, then at 79 and 100 after a header edit.The sweep mutates trailing
//comment text as well as code. A survivor that can only have edited a comment is classedcommentand passes without a list entry (#10846). A line is a comment edit when all of these hold:<from>text appears in the source text;//;//.When in doubt, the line stays new. Negative controls keep it new for:
//;<from>that the cut hid;//;<from>, no separator, or no bracket.KNOWN_CLAWholds 25 keys:A test passes those two sweeps' 18 lines with no new survivor: 13 known, 2 comment edits and 3 TIMEOUT.
Measured:
test-report: 28 of 28 tests pass, 0 vacuous.Wiring the verdict into the sweep script itself needs foreign code, so it is parked in #10838.
Seals and rows
claw_ClawLabReceipt,claw_ClawLabDisk,claw_ClawRedOriginandclaw_ClawMutKnown, each with closuretext.t27.docs/reports/t27b_expectations.jsonanddocs/claw/README.md.Verification (Railway lab, one tree with #10797's changes and all four specs)
seal --verify: 38 of 38 overspecs/claw/*.t27.t27c gen-c: exit 0 for all four.Closes #10810.
Closes #10813.
Closes #10821.
Closes #10835.
Closes #10846.
🤖 Generated with Claude Code