I3120 — A scheduled mutation run over the declared critical predicates records its survivors as evidence
Declare the critical predicates once in .ai/repo/ci (mesh trust and protocol, guard judge, evidence freshness, finish vacuous-verify, release compatibility). Run cargo-mutants over those files on a schedule or an offload host. Record the run (killed, survived, timeout per mutant) through the existing ledger path, and list the survivors in docs/COVERAGE.md's evidence section.
READY wave 0 · p2 · deep-work profile · parallel safe
Ready. Every dependency is done, so majordomus plan start I3120 will be accepted.
Objective
Declare the critical predicates once in .ai/repo/ci (mesh trust and protocol, guard judge, evidence freshness, finish vacuous-verify, release compatibility). Run cargo-mutants over those files on a schedule or an offload host. Record the run (killed, survived, timeout per mutant) through the existing ledger path, and list the survivors in docs/COVERAGE.md's evidence section.
Why
The owner asked for mutation testing of critical subsystems on 2026-09-11 (c113#16), 2026-09-16 (c158#10, \"coverage theatre\"), and again on 2026-10-17 (c293#2). docs/COVERAGE.md states that the gate does no mutation testing or fault injection. Proposed in ADR 0190 (Mutation testing is scheduled evidence over declared critical predicates, never a gate on every change) (proposed; it carries no authority until the owner accepts it). Sources: chatgpt-majordomus:c113#16, chatgpt-majordomus:c139#5, chatgpt-majordomus:c158#10, chatgpt-majordomus:c158#20, chatgpt-majordomus:c293#2, chatgpt-majordomus:c087#1.
Current state
No mutation tooling in the tree. Adversarial suites exist for the mesh (proptest in mesh/*).
Desired state
One scheduled job, its declaration in gates.yaml (not in every plan), and survivors visible with the revision.
Scope
- .ai/repo/ci/gates.yaml
- .github/workflows
- docs/COVERAGE.md
- docs/CLAIMS.yaml
- .ai/repo/project/intents
- scripts/ci/evidence-collect
- scripts/ci/claim-proof-check
- .ai/repo/evidence/ledger.json
- test/fixtures/coverage
- .ai/repo/adrs/0190-mutation-testing-is-scheduled-evidence-over-declared-critical-pr.md
Out of scope
- Blocking pull requests on mutation score
- Shell mutation
Dependencies
None. This issue is a root of the graph.
Acceptance criteria
- A recorded run on a named revision lists every mutant of the declared files with its outcome
- A deliberately weakened predicate in a fixture crate shows as a survivor
- docs/CLAIMS.yaml gains claim critical-predicates-are-mutated citing the mutation_run_recorded record, and intent criterion critical-predicates-mutated is rebound to that claim
- The mutation run is started by one command that .ai/repo/ci/gates.yaml declares; a hand run on an offload host records the same execution shape as the scheduled one
Validation
- scripts/ci/claim-proof-check
- majordomus plan validate
Evidence required
- mutation_run_recorded
Evidence
None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.
Timeline
- started
- —
- verified
- —
- completed
- —
Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.
Canonical record: .ai/repo/project/issues/I3120.yaml. Read it back with majordomus plan show I3120.