Skip to content

claw: table checks take their table so a test can show they fail; auto-rows check covers row 21 - #10687

Merged
gHashTag merged 1 commit into
masterfrom
claw-recipes-surface-mutants
Oct 18, 2026
Merged

gHashTag merged 1 commit into
masterfrom
claw-recipes-surface-mutants

Conversation

@gHashTag

Copy link
Copy Markdown
Owner

What

The mutation sweep of #10673 left 41 survivors in specs/claw/recipes.t27 and specs/claw/github_surface.t27. 17 of them are inside the tables' prose strings. The other 24 came from one cause: the table checks only ever read the constant tables, which are correct, so they could never fail under test.

Change Mutants it kills
rows_filled(g, k, t, c, cl, cmd); every_row_filled() wraps it. Test: one empty cell per column, and an OWNER row with a command recipes return false to return true on gate, kind, tool, condition and the OWNER-command check
kinds_unique_in(xs, n); all_kinds_unique(n) wraps it. Test: a repeat at rows 4-5 and at rows 20-21 i + 1 to i + 2, inner j < n to <=, and the return false on a match
auto_rows_carry(cl, cmd), bound fixed from 0..21 to 0..22. Test: AUTO row 21 with no command the return false, and 0..22 back to 0..21
github_surface rows_filled, surfaces_unique_in, levels_fit_grant, same pattern. Test: a level of 3 on a planned row, on a refused row, and on the owner-only row with and without the yes 4 return false on the filled check, the uniqueness pair, the grant return false, and > to >= at an equal grant
row_zero_answers_its_own_lookups r < 0 to r <= 0 in class_of, tool_of, cond_of, gate_of

The public names keep their signatures. gates.t27 and gates_pins.t27 pass unchanged (20 and 5 tests). []const str slices do not lower in t27c, so the parameters are fixed-size arrays ([22]str, [27]u8). A lab probe showed these work in both t27c and t27b.

Verification (Railway lab)

  • t27c test-report: recipes 16 tests, 16 pass; github_surface 18 tests, 18 pass. 0 vacuous passes in both.
  • t27b: the same 16 and 18 tests pass.
  • I re-ran 27 mutants on the new code lines: 24 caught, 3 equivalent:
    • cmd_of r < 0 to r <= 0: row 0 is OWNER, so its command is already "".
    • Both outer while (i < n) to <=: at i == n the inner loop starts at n + 1 and never runs.
  • seal --save for both specs, then seal --verify on all 31 claw specs: 31 match, 0 differ.

Closes #10686

🤖 Generated with Claude Code

…to-rows check covers row 21

every_row_filled, all_kinds_unique, all_surfaces_unique, auto_rows_carry_their_brief
and plan_fits_grant only read constant, correct tables, so their return-false branches
were dead under test and 24 mutants survived. Each check now takes its table as a
fixed-size array parameter; the public names wrap the constant tables. New tests hand
in a copy with one hole, one repeated row, or one level past the grant.

auto_rows_carry_their_brief looped 0..21 over 22 rows: row 21 was never checked.

Re-run on the new code lines: 24 of 27 mutants caught, 3 equivalent.

Closes #10686

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@gHashTag
gHashTag enabled auto-merge (squash) October 18, 2026 22:12
@gHashTag
gHashTag merged commit eeb1969 into master Oct 18, 2026
34 of 35 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-10-18 22:17:19 UTC

Summary

Status Count
Total Open PRs 50
PRs with Failing Checks 45
PRs with All Checks Green 5
READY 3
FAILING 45
PENDING 0
NO CHECKS YET 0

These columns do not partition: 3 + 45 + 0 + 0 = 48, and there are 50 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=fad12492937a != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

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.

claw: recipes and github_surface table checks can never fail; auto-rows check skips row 21

1 participant