Skip to content

a-test-fails-when-the-code-is-wrong — The suites that guard critical predicates are shown to fail when those predicates are wrong

Declared critical predicates carry a scheduled mutation run with published survivors, and the compatibility analyzer's algebraic invariants are property tests.

PLANNED 0 of 3 issues done

ready
3
blocked
0
active
0
verify
0
done
0
cancelled
0

Problem

docs/COVERAGE.md (\"What this is not, yet\") states that coverage proves a line ran, not that a test would fail if the line were wrong. No mutation run exists (no cargo-mutants anywhere in the tree), and the release compatibility analyzer (src/release/compat.rs, 33 tests) has no property test, while 8 other modules use proptest. 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:c111#6.

Outcome

Declared critical predicates carry a scheduled mutation run with published survivors, and the compatibility analyzer's algebraic invariants are property tests.

Current state

Verified on master 707a04c on 2026-10-18. proptest is a dev-dependency (Cargo.toml:87), used in mesh/cooperation, mesh/journal, mesh/protocol, mesh/state, deploy, served, integration and economics/stats. There is no mutation tooling.

Desired state

I3120 and I3121 land. docs/COVERAGE.md names which subsystems are mutation-tested and how often.

Scope

  • apps/majordomus-cli/src/release/compat.rs
  • .github/workflows
  • .ai/repo/ci/gates.yaml
  • docs/COVERAGE.md

Out of scope

  • A blocking mutation gate on every pull request
  • Mutation of shell libraries

Acceptance criteria

  • A mutation run over the declared critical modules is recorded on a named revision and its survivors are listed
  • Compatibility properties hold under proptest in the lib suite

Validation

  • majordomus plan validate

Risks

  • A mutation run is expensive on the one-at-a-time CI pool (memory: ci-pool-runs-one-validate-at-a-time); schedule it outside the validate pool or offload it.

Issues

Each one is an execution contract with its own acceptance criteria, validation command and required evidence. The wave column is the layer of the dependency graph it sits in.

issuestatuswavedepends ontitle
I3120 READY 0 — A scheduled mutation run over the declared critical predicates records its survivors as evidence
I3121 READY 0 — The release compatibility analyzer's invariants hold under property tests
I3309 READY 0 — A fix finishes completed only with a named regression case that fails on the task's base and passes on its head

The graph

a-test-fails-when-the-code-is-wrong dependency graphfrom .ai/repo/project
flowchart LR
    I3120["I3120<br/>A scheduled mutation run over the declared critical predicates records its survivors as evidence"]:::ready
    I3121["I3121<br/>The release compatibility analyzer's invariants hold under property tests"]:::ready
    I3309["I3309<br/>A fix finishes completed only with a named regression case that fails on the task's base and passes on its head"]:::ready
    classDef done stroke:#16a34a,fill:#dcfce7,color:#14532d,stroke-width:2px
    classDef active stroke:#2563eb,fill:#eff6ff,color:#1e3a8a,stroke-width:2px
    classDef verify stroke:#7c3aed,fill:#f5f3ff,color:#4c1d95,stroke-width:2px
    classDef ready stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
    classDef planned stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
    classDef blocked stroke:#b45309,fill:#fffbeb,color:#78350f,stroke-width:2px
    classDef cancelled stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2px
    classDef superseded stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2px

Canonical record: .ai/repo/project/milestones/a-test-fails-when-the-code-is-wrong.yaml. Read it back with majordomus plan show a-test-fails-when-the-code-is-wrong.

Searches the titles and descriptions of every page this site publishes.