Skip to main content

Mutation Sweep Baseline

The scheduled mutants workflow has been removed. Run mutation sweeps locally with the commands in CONTRIBUTING.md. A shard fails when a mutant it built and ran survived every test, because .cargo/mutants.toml admits no survivor baseline: the excluded and equivalent mutants are named there individually, with a line saying why, and everything else has to die.

The table records, per crate, the last scheduled run in which every shard of that crate passed. CI no longer updates these rows. They do not show the current mutation-test status.

Crate Last green sweep Run
audit never –
authz never –
broker never –
kraft-core never –
log never –
raft never –
throttle never –
verified never –

Archived workflow behavior

The notes below describe the removed workflow. It ran every Sunday at 07:00 UTC over the crates listed above, splitting each crate’s sweep across the shard width its BUILD.bazel declares.

How the table was maintained

The workflow’s report job rewrites the rows between the two comment markers above and commits the result to the default branch. Only the crates that were green in that run get a new date; every other row is carried across unchanged, so the file says when each crate last passed rather than only what the last run did. The crate list follows the workflow’s schedule matrix, so adding a crate there adds a row here on the next run.

The commit is best effort. The run’s GITHUB_TOKEN can push only where branch protection allows it, and a rejected push does not fail the sweep – a green sweep that could not write a file is still a green sweep. The job therefore also writes the same table to its step summary on every scheduled run, and that summary is the record whenever the commit did not land. If the dates below are stale while the workflow is green, the push is what is failing: the run’s summary carries a could not push warning, and the table in it is current.

Reading a red sweep

Every shard uploads its log as mutants-<crate>-<shard>, holding sweep.log – the whole shard, including the N mutants: C caught, M missed, U unviable line – and missed.txt, the MISSED lines alone. The artifact is what makes a survivor readable without rerunning a sweep that costs an hour of a runner. A survivor is either a test gap to close or an equivalent mutant, and an equivalent mutant goes in .cargo/mutants.toml with a line saying why it cannot be killed.

A red scheduled run comments on the open nightly-red issue, or opens one, the same way ci.yml reports its own scheduled lanes; the next all-green scheduled run closes it. The two workflows share that one issue, so a green ci.yml nightly can close an issue whose mutation half is still red, and the next Sunday’s sweep refiles it. This table is the record that does not reset: a crate whose sweep stays red simply stops getting a new date. CONTRIBUTING.md describes running one crate’s sweep locally.