Skip to content

gates mutate: X of Y where X can exceed Y — four lines from a fix I shipped two passes ago - #3221

Merged
gHashTag merged 9 commits into
masterfrom
loop/x-of-y-where-x-exceeds-y
Sep 5, 2026
Merged

gHashTag merged 9 commits into
masterfrom
loop/x-of-y-where-x-exceeds-y

Conversation

@gHashTag

@gHashTag gHashTag commented Sep 5, 2026

Copy link
Copy Markdown
Collaborator

SKILL 542 fixed the denominator of tri gates mutate's equivalence report — claims_seen counted
every # mutant-equivalent: marker textually, including claims for which no mutant was ever built.
The numerator went untouched, four lines below, in the same println!. The units fan-out found it.

claims_seen += in_scope.len();          // distinct claim LINES, union over all directions
for (dir, _, _, survivors) in &scores { // ... once PER DIRECTION
    claims_broken.extend(contradicted_claims(..));
}
println!("{} of {} equivalence claim(s) CONTRADICTED:", claims_broken.len(), claims_seen);

"X of Y" is an inclusion statement, so both halves must count the same thing. They do not. A
claimed line that is a mutable site under two operators and dies under both contributes two rows
to a numerator whose denominator counted it once. Under --all the command can print 2 of 1.

Measured, not hypothesised

Of the eight markers in tools/, exactly one is a site in two directions:

marker line directions
gft_backprop_microcode.py 742 assert + boundary — assert _magsub(10240, 9217) == 9984

One in eight, on real data, reachable through a flag the command documents.

Fixed by counting each half in its own unit

1 of 8 equivalence claim(s) CONTRADICTED, in 2 (claim x operator) row(s):

The rows stay per direction — which operator killed a claim is the useful half: an assert mutant
dying says something different from a boundary mutant dying. What changes is that the ratio speaks
about claims, and the rows are counted as rows and labelled as such.

Half of a fix is not the fix

Two passes ago I corrected this function's denominator and wrote a skill section about it. The
numerator sat four lines below and I did not look at it. "The fix does not travel" has a shorter
form here: it did not travel four lines.

The mutant reverting the numerator to claims_broken.len() survived three fresh unit tests on
distinct_claims, and was killed only by a structural test reading the call site — the tenth pass in
a row where the wiring outlived the function.

743 crate tests. SKILL 580. Refs #3195

SKILL 542 fixed the DENOMINATOR of `tri gates mutate`'s equivalence
report -- claims_seen counted every marker textually, including claims no
mutant was built for. The numerator went untouched, four lines below, in
the same println. The units fan-out found it.

    claims_seen += in_scope.len();          // distinct claim LINES
    for (dir, _, _, survivors) in &scores { // ... once PER DIRECTION
        claims_broken.extend(contradicted_claims(..));
    }
    println!("{} of {} ...", claims_broken.len(), claims_seen);

"X of Y" is an inclusion statement and both halves must count the same
thing. A claimed line that is a mutable site under two operators and dies
under both contributes two rows to a numerator whose denominator counted
it once. Under --all the command can print "2 of 1".

Measured, not hypothesised: of the eight `# mutant-equivalent:` markers
in tools/, exactly ONE is a site in two directions --
gft_backprop_microcode.py:742, `assert _magsub(10240, 9217) == 9984`,
both an assert site and a boundary site.

Fixed by counting each half in its own unit rather than deleting a
number:

    1 of 8 equivalence claim(s) CONTRADICTED, in 2 (claim x operator) row(s):

The rows stay per direction, because which operator killed a claim is the
useful half: an assert mutant dying says something different from a
boundary mutant dying.

Tenth pass running that the wiring outlived the function. Three fresh
unit tests on distinct_claims all passed against a call site reverted to
claims_broken.len(); killed by a structural test reading it.

SKILL 580.

Refs #3195
@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-05 01:25:11 UTC

Summary

Status Count
Total Open PRs 14
PRs with Failing Checks 11
PRs with All Checks Green 3
READY 0
FAILING 11
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=9f4e7ae386ba != 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).

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-05 01:40:55 UTC

Summary

Status Count
Total Open PRs 13
PRs with Failing Checks 11
PRs with All Checks Green 2
READY 0
FAILING 11
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=9f4e7ae386ba != 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).

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-05 02:02:25 UTC

Summary

Status Count
Total Open PRs 16
PRs with Failing Checks 11
PRs with All Checks Green 5
READY 1
FAILING 11
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=9f4e7ae386ba != 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).

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-05 02:37:12 UTC

Summary

Status Count
Total Open PRs 17
PRs with Failing Checks 12
PRs with All Checks Green 5
READY 2
FAILING 12
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=9f4e7ae386ba != 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).

# Conflicts:
#	.claude/skills/ci-gates/SKILL.md
@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

1 similar comment
@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-05 02:51:54 UTC

Summary

Status Count
Total Open PRs 17
PRs with Failing Checks 13
PRs with All Checks Green 4
READY 1
FAILING 13
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=9f4e7ae386ba != 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).

# Conflicts:
#	.claude/skills/ci-gates/SKILL.md
@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-05 03:03:02 UTC

Summary

Status Count
Total Open PRs 17
PRs with Failing Checks 12
PRs with All Checks Green 5
READY 1
FAILING 12
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=9f4e7ae386ba != 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).

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-05 03:26:41 UTC

Summary

Status Count
Total Open PRs 19
PRs with Failing Checks 11
PRs with All Checks Green 8
READY 1
FAILING 11
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=2d58d9d3160d != 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).

@gHashTag
gHashTag merged commit 10889fc into master Sep 5, 2026
32 of 34 checks passed
@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@gHashTag
gHashTag deleted the loop/x-of-y-where-x-exceeds-y branch October 26, 2026 06:17
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.

1 participant