Skip to content

ci: add recurring mutation testing with a triage report - #73

Merged
featurecreep-automerge[bot] merged 2 commits into
developfrom
ci/mutation-testing
Oct 25, 2026
Merged

featurecreep-automerge[bot] merged 2 commits into
developfrom
ci/mutation-testing

Conversation

@featurecreep-cron

Copy link
Copy Markdown
Owner

Adds mutation.yml: mutmut 3.8.0 over src/secretscreen, on push to main when src/ or tests/ change, monthly on the 1st, on dispatch, and on PRs that change the mutation tooling.

Informational, not a gate. It uploads mutation-report/:

  • summary.json: counts, score, per-file breakdown
  • survivors.md: every unkilled mutant with its diff, grouped by file and function

.github/scripts/mutation_report.py builds both in one process. mutmut show takes about 2s per survivor, so it can't produce this at scale. The script reads mutmut internals, which is why mutmut is pinned in the workflow.

tests/test_architecture.py is excluded from mutation runs only. It reads the package source, which under mutmut is the instrumented copy that imports mutmut. Being static, it couldn't kill a mutant anyway.

Local baseline at 0d2cca8: 2600 mutants, 1785 killed, 815 survived (68.7%), 5.5 min on 4 workers. A threshold gets decided after the first triage pass.

🤖 Generated with Claude Code

mutmut over the whole package, on main when src/ or tests/ change and
monthly. Informational: the uploaded report lists every unkilled mutant
with its diff so survivors can be triaged without a rerun. No threshold
until the first report has been read.

Local baseline at 0d2cca8: 2600 mutants, 1785 killed, 815 survived
(68.7%), 5.5 min on 4 workers.
@featurecreep-automerge
featurecreep-automerge Bot merged commit 1a33609 into develop Oct 25, 2026
10 checks passed
@codecov

codecov Bot commented Oct 25, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant