Repository navigation
test(claw): kill the real t27f_gate.t27 mutation survivors (#10740) - #10745
Merged
Merged
Conversation
Eleven tests against the 53 survivors of the t27f_gate sweep. 35 are now caught; the 18 left are equivalent (a loop bound one past an empty range, an equal value reassigned, a field bound that only an empty field reaches). Production code is unchanged. Resealed ClawT27fGate and the four seals that record t27f_gate.t27 as a dependency (ClawT27fGatePins, t27f deps_card, spec_deps, why_card), and regenerated gen/c/claw/t27f_gate.c, which carries the tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
gHashTag
enabled auto-merge (squash)
October 19, 2026 01:05
Contributor
gHashTag
added a commit
that referenced
this pull request
Oct 19, 2026
The deps_card seal conflicted because its closure holds claw/t27f_gate.t27, changed on master by #10745; the seal is re-saved on the lab in the next commit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
gHashTag
added a commit
that referenced
this pull request
Oct 19, 2026
…not refused (#10747) * t27f: deps card draws a long spec name abbreviated by a stated rule, not refused (Refs #10728) A shown name past 58 bytes keeps its first segment, `/...`, and the longest run of whole trailing segments that fits; when none fits, `...` and its last 55 bytes. Only drawn bytes are checked for quotability, and the text size follows the drawn length. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * t27f: deps card -- a 58-byte name is checked whole, the test that kills a `<` bound (Refs #10728) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * t27f: re-seal deps_card; skill records the long-name rule, its sweep and four lab traps (Refs #10728) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * t27f: re-seal deps_card on the merged closure (claw/t27f_gate changed in #10745) (Refs #10728) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
gHashTag
added a commit
that referenced
this pull request
Oct 19, 2026
…) (#10767) * t27f: deps card draws a long spec name abbreviated by a stated rule, not refused (Refs #10728) A shown name past 58 bytes keeps its first segment, `/...`, and the longest run of whole trailing segments that fits; when none fits, `...` and its last 55 bytes. Only drawn bytes are checked for quotability, and the text size follows the drawn length. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * t27f: deps card -- a 58-byte name is checked whole, the test that kills a `<` bound (Refs #10728) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * t27f: re-seal deps_card; skill records the long-name rule, its sweep and four lab traps (Refs #10728) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * t27f: re-seal deps_card on the merged closure (claw/t27f_gate changed in #10745) (Refs #10728) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * t27f: deps card bands show the most-imported neighbours first, ties in edge-list order (Closes #10762) Each band ranks its specs by how many distinct specs import them in the whole edge list; a repeated line counts once, equal scores keep the edge-list order, and the subtitle states the order. Counts and +N more are unchanged. The hidden-name check follows the ranking. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * t27f: deps card subtitle without a colon, which ffmpeg split the graph on; test every fixed text (Refs #10762) The render of the hub card failed: drawtext read the ':' in 'each band: most imported first' as an option separator and refused the graph. The tests compared the graph text, so they passed. dcard_text_ok now checks every fixed text the card draws. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * t27f: re-seal deps_card for the ranked bands; skill gets the ranking, its sweep and three lab traps (Refs #10762) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.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.
What
The mutation sweep of
specs/claw/t27f_gate.t27(#10740) left 53 of 180 mutants alive. This PR adds 11 tests and leaves the production code unchanged. Of the 53, 35 are now caught. The 18 still alive are equivalent: no input can tell them apart from the original.The new tests cover:
holdsnever reads past its range, and a spec_hash line that sayssaved=missingis not recorded.put_decimal(10)writes10.put_querykeepsa,z,A,Z,0,9and escapes the bytes just outside those ranges.-when there is no URL..t27, a one-letter line andspecs/.t27are not in scope. A set that is exactly full fails closed on the next seed or importer. An edge line with no tab adds nothing. The edge line after a skipped one is read from its first byte.The 18 equivalent survivors
<to<=on a line or byte loopholds,has_prefixandscope_specall answer false on it.f + k < tto<=inconsumer_indexf + k == t, which the extra byte breaks.>=to>on a missing tabp2 + 1top2 + 2c > worstto>=p3 > p2 + 1 + DIGEST_SHOWNto>=p2 < xto<=p > capto>=input_overflowcap.p1 + 1top1 + 2input_annotationp > sto>=scope_specon an empty range is false.<to<=in the invariantThe two survivors at line 632,
p < tto<=andandtoor, were caught by the edge line with no tab.Seals
claw_ClawT27fGate.t27f_gate.t27as a dependency:claw_ClawT27fGatePins,t27f_t27f_deps_card,t27f_t27f_spec_depsandt27f_t27f_why_card. Without that, their dependency hash would go stale.gen/c/claw/t27f_gate.c, because the generated C carries the tests.Verification (Railway lab, master 2845fee; #10744 since then touches none of these dependencies)
test-report: 39 of 39 tests pass with 0 vacuous passes, and the invariant is proved.seal --verify: 35 of 35, coveringspecs/claw/*.t27,specs/verified/gen_file_check.t27and the three t27f importers.gen-c: the other 6 committedgen/c/claw/*.cfiles are byte-identical.python3 tools/dupe_scan.py: "no new duplicate body"..trinity/seals/claw_*.jsonandt27f_*.json: 3 entries, all already listed in seal --verify never checks dependency hashes; 21 claw seals record stale ones #10727 and none from this PR:t27f_T27fHotcitesseal_identity.t27f_frame_cachecitesclaw/sarifandclaw/text.Closes #10740.
🤖 Generated with Claude Code