feat(mutants): canonical cargo-mutants template + docs + schema fields (#185)#229
Open
feat(mutants): canonical cargo-mutants template + docs + schema fields (#185)#229
Conversation
First in-scope cut at the cargo-mutants generalization story (#185). - templates/cargo-mutants/{mutants.toml, mutants.yml, README.md} — reusable config + nightly + manual-dispatch GitHub Actions workflow, extracted from rivet's pre-push smoke profile. - docs/mutation-testing.md — pattern doc covering when to run, ASIL/DAL score targets (≥0.70 ASIL A → ≥0.90 ASIL D), mutants.toml skip patterns, per-function skip attributes, and how the new schema fields wire results back into rivet traceability. - schemas/score.yaml — `mutation-score-target` (number) on test-spec to declare the suite floor, `mutation-score` plus mutants-tested / killed / missed / timeout / unviable counts on test-exec to record measured runs. Verified: cargo test -p rivet-core --lib + integration suites green (857 + 5 + 4 tests). rivet validate diagnostics unchanged from origin/main (6 pre-existing errors in spar-external fixture, untouched here). Synthetic project that loads schemas: [common, score] accepts all new fields. Out of scope per the autonomous-run scoping confirmed in the issue's 2026-04-26 triage comment: - Cross-repo adoption issues for kiln/loom/gale/meld must be filed from a session with broader org access. - Dashboard view across repos depends on #188. Implements: REQ-010 Refs: #185
5 tasks
📐 Rivet artifact deltaNo artifact changes in this PR. Code-only changes (renderer, CLI wiring, tests) don't touch the artifact graph. |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #185
Summary
First in-scope cut at the cargo-mutants generalization story. Three deliverables, mapping 1:1 to the in-scope acceptance bullets confirmed in the 2026-04-26 triage comment on #185:
mutants.toml)templates/cargo-mutants/{mutants.toml, mutants.yml, README.md}docs/mutation-testing.md— when to run, ASIL/DAL score targets, marking unreachable mutantsdocs/mutation-testing.mdmutation_scoreon TEST-* artifactsschemas/score.yaml—mutation-score-targetontest-spec(suite floor) andmutation-score+ mutants-tested / killed / missed / timeout / unviable counts ontest-exec(measured run)What's in the template
mutants.toml—minimum_test_timeout=60,additional_cargo_test_args=["--lib"],exclude_globsfortarget/,vendor/,proofs/,verus/, fuzz targets, plus a starterskip_callslist (tracing::trace,tracing::debug).mutants.yml— nightly + manual-dispatch GitHub Actions workflow with a per-crate matrix, 90-min per-shard timeout, andmutants.out/artifact upload.README.md— quickstart for adopters, with the three operating modes (pre-commit off, pre-push smoke, CI nightly) called out explicitly.Score-target ladder (in
docs/mutation-testing.md)Recorded on artifacts via
mutation-score-target(target) andmutation-score(measured); the doc spells out the relation tomutants-tested / killed / missed / timeout / unviable.Out of scope
These bullets from #185 cannot be addressed from a session scoped to
pulseengine/rivet:kiln,loom,gale,meld— needs broader org access.The issue should remain open until those are filed if Closes #185 is treated as too aggressive; happy to re-tag as
Refs:instead.Verification
cargo test --release -p rivet-core --lib— 857 passed, 0 failed.cargo test --release -p rivet-core --test integration --test schema_agent_pipelines --test yaml_roundtrip— 14 passed, 0 failed.cargo fmt --all -- --check— clean.rivet validate— diagnostics identical toorigin/main(6 pre-existing errors in the spar-external fixture; unchanged here).schemas: [common, score]accepts bothmutation-score-target: 0.9ontest-specand the fullmutation-score+ counts block ontest-exec.Test plan
include_str!)Generated by Claude Code — issue-triage agent run 2026-04-27.
Generated by Claude Code