Once stryker.config.ts exists and a baseline run completes, go through every surviving mutant: either the test suite is missing an assertion that should have caught it, or the mutated code path is genuinely dead and can be deleted. Don't chase 100% for its own sake where a mutant is equivalent, but a surviving mutant on a real branch (a swapped comparison in peer-id verification, an off-by-one in stale-agent cleanup timing, a dropped early return in delivery-status handling) is a real gap and gets a real test.
Target 80% mutation score on every file stryker.config.ts's mutate list currently names.
Scope changed after #97 split core/mesh-store.ts into ten collaborator files (agent-registry.ts, connection-approval.ts, delivery-engine.ts, federation-bridge.ts, mesh-store-shared.ts, peer-lifecycle.ts, room-lifecycle.ts, room-messaging.ts, room-protocol.ts, room-wire-extensions.ts), with mesh-store.ts itself reduced to a thin orchestrator. The branch-heavy, security-relevant logic this issue originally targeted in mesh-store.ts now lives across those files, so #98 expanded the mutation-testing CI matrix and stryker.config.ts's own mutate list to cover each of them individually. This Epic now tracks one Task per file, rather than the original two-file list.
Current status (measured against the real, current split):
| File |
Score |
Status |
identity.ts |
92.86% |
Done (PR #100) |
wire-mesh-transport.ts |
78.70% |
PR #101 merged, remaining gap tracked in #114 |
room-wire-extensions.ts |
100.00% |
Done, no work needed |
agent-registry.ts |
76.19% |
#104 |
room-protocol.ts |
69.57% |
#111 |
room-lifecycle.ts |
65.20% |
#109 |
peer-lifecycle.ts |
64.52% |
#108 |
mesh-store-shared.ts |
66.67% |
#113 |
mesh-store.ts |
60.19% |
#103 |
connection-approval.ts |
57.14% |
#105 |
delivery-engine.ts |
56.64% |
#106 |
room-messaging.ts |
55.71% |
#110 |
federation-bridge.ts |
49.02% |
#107 |
stale-agent-checker.ts |
45.65% |
#112 |
Once stryker.config.ts exists and a baseline run completes, go through every surviving mutant: either the test suite is missing an assertion that should have caught it, or the mutated code path is genuinely dead and can be deleted. Don't chase 100% for its own sake where a mutant is equivalent, but a surviving mutant on a real branch (a swapped comparison in peer-id verification, an off-by-one in stale-agent cleanup timing, a dropped early return in delivery-status handling) is a real gap and gets a real test.
Target 80% mutation score on every file
stryker.config.ts'smutatelist currently names.Scope changed after #97 split
core/mesh-store.tsinto ten collaborator files (agent-registry.ts,connection-approval.ts,delivery-engine.ts,federation-bridge.ts,mesh-store-shared.ts,peer-lifecycle.ts,room-lifecycle.ts,room-messaging.ts,room-protocol.ts,room-wire-extensions.ts), withmesh-store.tsitself reduced to a thin orchestrator. The branch-heavy, security-relevant logic this issue originally targeted inmesh-store.tsnow lives across those files, so #98 expanded the mutation-testing CI matrix andstryker.config.ts's ownmutatelist to cover each of them individually. This Epic now tracks one Task per file, rather than the original two-file list.Current status (measured against the real, current split):
identity.tswire-mesh-transport.tsroom-wire-extensions.tsagent-registry.tsroom-protocol.tsroom-lifecycle.tspeer-lifecycle.tsmesh-store-shared.tsmesh-store.tsconnection-approval.tsdelivery-engine.tsroom-messaging.tsfederation-bridge.tsstale-agent-checker.ts