Skip to content

Walk the mutation ratchet back down: 210 → 0 (the ground lost while #381's gate was blind) #382

Description

@avrabe

Follow-up to #381.

#381 fixes the Mutation Testing gate to read the path cargo-mutants actually
writes, and re-baselines MAX_MISSED from 142 to the measured 210.

That is a raise, and it should be uncomfortable. It is honest only because 142
was never in force — the gate read a non-existent path for four months, so no
value it held was ever enforced. 210 is the first number this gate has ever
actually checked against. But the direction of travel is wrong and this issue
exists so that is not quietly accepted.

Measured baseline

main @ cd4d429, run 30563879100, artifact mutants-report:

outcome count
missed (survived) 210
caught 603
unviable 793
timeout 2
total mutants 1608

Against 813 viable mutants (caught + missed), that is a 74.2% kill rate.

History

  • 5d6d98a (2026-03-22): "Current survivors: 142 (down from 220)." — hand-measured.
  • today: 210.

The ratchet was written to walk 142 → 0. Unenforced, it drifted 142 → 210.

Work

Walk MAX_MISSED back down, lowering the constant with each batch of tests so
the ratchet can never re-loosen:

  • 210 → 142 (recover the ground lost while the gate was blind)
  • 142 → 100
  • 100 → 50
  • 50 → 0

mutants-out/mutants.out/missed.txt in the job artifact lists every survivor
with file, line, and the exact mutation, so each step is a concrete work-list
rather than an aspiration. The 793 unviable mutants are also worth a look — an
unviable mutant is one whose mutated form does not compile, which is usually
fine but can also indicate a mutation operator that never meaningfully applies to
this crate.

Do not raise this number again. If a change would push survivors above the
threshold, the change needs tests, not a bigger constant.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions