Skip to content

chore(stryker): remove duplicate roslyn5_6 config and fix stale docs - #232

Merged
samtrion merged 1 commit into
mainfrom
docs/stryker-config-sprawl
Oct 29, 2026
Merged

samtrion merged 1 commit into
mainfrom
docs/stryker-config-sprawl

Conversation

@samtrion

@samtrion samtrion commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Problem

The repo carries four Stryker configs but CI (.github/workflows/mutation.yml, Mon/Thu cron and workflow_dispatch) only ever runs stryker-config.json.

  • stryker-config.roslyn5_6.json differs from stryker-config.json only in project-info.module (NetEvolve.Analyzer.Roslyn5_6 vs NetEvolve.Analyzer). CI reports the dashboard module NetEvolve.Analyzer, so the file is unused.
  • Analyzer.slnx lists three of the configs and omits stryker-config.json.
  • CLAUDE.md says the test projects target net8.0;net9.0;net10.0, maps net8.0 to Roslyn4_4, claims three mutation configs and says Roslyn4_7 is build-verified only. The test csprojs actually use $(_TestTargetFrameworks) (net6.0;net7.0;net8.0;net9.0;net10.0, plus net472;net48;net481 on Windows) and map net8.0 to 4_7, net9.0 to 4_14, net10.0 to 5_6 and every other TFM to 4_4.

Root cause

Config files and docs were not updated when the test csproj mapping changed. The reusable mutation workflow takes one config per run and no matrix was ever wired.

Change

  • Delete stryker-config.roslyn5_6.json; keep stryker-config.json (unsuffixed module name) as the 5_6 config.
  • Re-sync the Analyzer.slnx solution items (drop 5_6, add stryker-config.json).
  • Correct CLAUDE.md: test TFMs, TFM-to-variant mapping (all four variants are test-covered), and the mutation paragraph (CI mutates only stryker-config.json = Roslyn5_6; 4_4 and 4_14 configs are manual-only; no 4_7 config).

Not included: a CI matrix over variants or a new 4_7 config. The mutated source is identical across variants, so a matrix mostly multiplies runtime; that needs a separate decision.

Before / After

metric before after
stryker config files 4 (1 used by CI) 3 (1 used by CI)
mutation score (CI run) 59.95% 59.95%
mutants created 2110 2110
run duration n/a ~19 min
CLAUDE.md matches test csproj no yes

Risk / what this does not change

Docs and config hygiene only. The mutation score and the CI behaviour should not change, so the branch run is only a sanity check: run 40815471770 succeeded with identical numbers (docs/config change, no measurable effect expected). The only loss is any old manually reported NetEvolve.Analyzer.Roslyn5_6 dashboard history.

stryker-config.roslyn5_6.json was identical to stryker-config.json apart
from the dashboard module name; CI only ever runs stryker-config.json.
Remove it and re-sync the Analyzer.slnx solution items (which also
omitted stryker-config.json).

CLAUDE.md contradicted the test projects: they target
$(_TestTargetFrameworks) (net6.0..net10.0, plus classic TFMs on Windows)
and net8.0 maps to Roslyn4_7, net9.0 to 4_14, net10.0 to 5_6, everything
else to 4_4. All four variants are therefore test-covered. Document that
CI mutates only the 5_6 variant via stryker-config.json.
@codecov

codecov Bot commented Oct 29, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.72%. Comparing base (8c86c2b) to head (9b5be4e).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #232   +/-   ##
=======================================
  Coverage   94.72%   94.72%           
=======================================
  Files          48       48           
  Lines        2557     2557           
  Branches      449      449           
=======================================
  Hits         2422     2422           
  Misses         58       58           
  Partials       77       77           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@samtrion
samtrion merged commit 5dad2b9 into main Oct 29, 2026
9 checks passed
@samtrion
samtrion deleted the docs/stryker-config-sprawl branch October 29, 2026 15:45
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