Skip to content

mutants-nightly has produced zero data in 87 runs: every leg dies in ~30s on a missing target/ parent, and the step exits 0 so it can never go red #424

Description

@FerroxLabs

The one instrument in this workspace that could mechanically detect a test which runs but cannot reach the defect it names has never emitted a single data point, and cannot report that it hasn't.

Measured

gh run list --workflow mutants-nightly.yml --limit 100 → 87 runs, conclusion success on all 87. Oldest 27133754825 (2026-06-08, the workflow's inception), newest 33599619308 (2026-09-02).

Newest run, all five legs, 27–38 seconds each, every one success:

mutants / wcore-config   success  06:36:45 → 06:37:13
mutants / wcore-agent    success  06:36:46 → 06:37:23
mutants / wcore-providers success 06:36:45 → 06:37:20
mutants / wcore-cli      success  06:36:46 → 06:37:18
mutants / wcore-cron     success  06:36:46 → 06:37:22

and every one of them died the same way:

Error: create output parent directory "target/mutants-wcore-config"
    No such file or directory (os error 2)

There is no cargo build and no mkdir -p target before cargo mutants --output target/..., so on a fresh runner the parent does not exist. cargo mutants exits non-zero, the step swallows it, and the job concludes success.

A real leg takes minutes and reports e.g. 54 mutants tested in 2m: 9 missed, 28 caught, 17 unviable. Thirty seconds is not a fast run; it is no run.

Why this is worth its own ticket

A gate that cannot fail is worth exactly as much as one that cannot pass. This one has read green 87 times, and anything built on top of it would be graded on a shrug. It was found while trying to answer "is mutation coverage already guarding the vacuous-by-data test class?" — the answer is no, and it never has been.

The two known-positive controls matter here: the only run that ever filed issues is 27133754825, and those issues (#1, #3, #5) read **Catch rate**: N/A%, **Summary**: no summary, none under Top surviving mutants. So even the run that produced output produced no data.

Acceptance

  • c1 RED ARM — the diagnosis reproduces before anything else counts. On a checkout with no target/ present, cargo mutants -p wcore-cron --no-shuffle --timeout 90 --output target/mutants-wcore-cron exits non-zero in under 60 seconds printing create output parent directory / No such file or directory (os error 2).
  • c2 THE FIX PRODUCES REAL DATA, read from the artifact, not the job log. After the fix, one workflow_dispatch run has a mutants / wcore-cron leg whose uploaded artifact contains a line matching ^[0-9]+ mutants tested in .
  • c3 THE LEG CAN NOW CONCLUDE failure. With the fix in place, a run in which cargo-mutants produces no summary line makes the job conclude failure. Demonstrated, not asserted — this is the half that stops it being unfalsifiable, and it is the half that has been missing for 87 runs.
  • c4 THE "no data ever" CLAIM CARRIES ITS CONTROL. Any scan asserting a log contains no summary line is run in the same invocation against a copy of that log with a real summary line inserted, and both arms reported: real logs → 0 hits, seeded copy → exactly 1 hit.
  • c5 SCOPE, RECORDED SO THE FIX IS NOT OVER-CLAIMED. The closing comment records the wcore-cron summary line from c2 verbatim as the first mutation-coverage baseline this repository has ever measured, and states that fixing the harness does not by itself establish coverage for any other crate.

Found while adjudicating whether the "vacuous-by-data test" class needed a ticket of its own. It does not — journal_envelope_roundtrip.rs already pins the float case with a 2048-value sweep whose assert names a dropped float_roundtrip feature. This is the real gap underneath that question.

Activity

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

    bugSomething isn't working

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions