Skip to content

claw: mutation sweep of check_state.t27 and merge_lane.t27, 15 real survivors #10724

Closed

Description

@gHashTag

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.t27 reads a PR's check rollup into pass / failing / pending / unreadable and a verdict.
  • specs/claw/merge_lane.t27 measures 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: PENDING and REQUESTED stop 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 -> + 2 in dashboard_failing: the second row loses its first byte, so a CONTEXT row is read as ONTEXT and counted failing.

merge_lane.t27:

  • 125, 217, 330 le > ls -> >=: a blank line becomes an unreadable row in ml_counts, my_counts and ms_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 -> < and return false -> return true: an empty event name is accepted.
  • 312 b >= 'a' -> > and b <= 'z' -> <: the letters a and z are refused in an event name. No test event contains an a (workflow_run, schedule and pull_request have none).

Equivalent (cannot change any output)

  • ls < n -> <= (check_state 135, 153; merge_lane 123, 215, 328): at ls == n, qc_line_end returns n, so the empty range is skipped.
  • check_state 155 le > ls -> >= in dashboard_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_class test 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.t27 or specs/claw/merge_lane.t27 listed above as a real survivor, when t27c test-report runs 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

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 --verify exits with exit 0 for 32 files.

Status

Done by PR #10726 (merged).

Activity

  1. added
    shape-refusedClosed by the issue-shape gate (specs/policy/issue_shape.t27); a passing edit reopens it
    on Oct 19, 2026
  2. github-actions commented on Oct 19, 2026

    @github-actions
    Contributor

    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.

    • missing: ## Boundary -- list every file this task may touch, one per line (- specs/x.t27); without it the Queen reserves nothing and no bee can take the issue
    • missing: ## User Scenarios -- at least one Given/When/Then scenario
    • missing: ## Requirements -- numbered obligations, FR-001: ... MUST ...
    • missing: ## Success Criteria -- an outcome a machine can settle: a number with a unit, a backticked file, exit 0, or a backticked command
  3. changed the title [-]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[/+] on Oct 19, 2026
  4. added a commit that references this issue on Oct 19, 2026
    a14dec4
  5. removed
    shape-refusedClosed by the issue-shape gate (specs/policy/issue_shape.t27); a passing edit reopens it
    on Oct 19, 2026
  6. github-actions commented on Oct 19, 2026

    @github-actions
    Contributor

    The shape check passes now (specs/policy/issue_shape.t27); reopened.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions