ADR: Adopt Stryker.NET for .NET mutation testing #51
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Decision to be made: Adopt a .NET mutation-testing tool to establish and enforce the repo-wide mutation-score baseline required by CLAUDE.md §5 (the ratchet) and §3 (Definition of Done).
Context / forces: CLAUDE.md §5 mandates Stryker.NET on every PR with a ratchet, and §3 lists "mutation (ratchet)" as a DoD gate for every slice. No baseline exists yet, so no slice can satisfy that DoD line. S-04b (#47) establishes it on the ACL — the first service with real branching logic (
OpenZaakGateway,ZgwTokenJWT minting,AclServicedefault-fill). Constraints: net10.0; xUnit;.slnxsolution format used repo-wide; reproducible/pinned tooling; runs undermake ciand a Gitea Actions job.Options considered:
Proposed option + why: Stryker.NET, pinned as a local dotnet tool (
.config/dotnet-tools.json) for reproducibility. It is the tool §5 already prescribes, integrates with the existing xUnit/dotnet testsetup, and emits a break-threshold the ratchet uses.Consequences: New dependency (
dotnet-stryker) + its tool graph. Establishes the first repo-wide baseline (captured as abreakthreshold); later slices ratchet it upward (§5). Adds amutationmake target + parallel CI job. Mutation runs are slower than unit tests but the ACL is small.Coupling rules touched (CLAUDE.md §8): none — tooling/CI only; no service boundary or ZGW/Flowable coupling affected.
Refs #47.
not referenced this issue2026-06-25 13:01:23 +00:00