Accept a reviewed survivor
Accept a reviewed survivor to keep matching future plans from executing and reporting the same mutation again.
Accept a survivor
Section titled “Accept a survivor”Use the run and finding IDs returned by Radforge:
rad remote accept \ --run <run-id> \ --finding <finding-id> \ --reason equivalent \ --note "Both forms have the same observable behavior"--reason is required. Use a standard reason when it fits, or write a short
custom reason.
| Standard reason | Use it when |
|---|---|
equivalent |
The mutation cannot change observable behavior. |
not-required |
The changed behavior is intentionally outside the supported contract. |
covered-elsewhere |
Another test surface checks the behavior but is not run by this plan. |
accepted-risk |
The gap is understood and deliberately deferred or accepted. |
tool-limitation |
The generated mutation is not useful because of a tool limitation. |
--note is optional. Add one when a future reviewer would benefit from the
reasoning or a link to supporting evidence.
The command accepts only a survived-mutant finding. It rejects coverage gaps
and other result types. The command writes the decision to
radforge-waivers.json at the repository root.
Share the decision
Section titled “Share the decision”Commit radforge-waivers.json when the decision should apply to teammates, CI,
and agents:
git add radforge-waivers.jsongit commit -m "Accept reviewed mutation survivor"A matching plan carries the waiver into execution. Radforge emits a waived
outcome with the recorded reason and does not run the mutant. A waived mutant is
not a killed mutation or a cache hit.
Candidate matching is exact. When a source edit changes the candidate identity, Radforge runs the new candidate and asks you to review the new result instead of silently applying an uncertain waiver.
List active waivers
Section titled “List active waivers”rad waivers listrad waivers list --jsonDo not expire an accepted mutant only because time passed. Keep the active waiver while the same mutation candidate remains in the code.
Prune stale waivers
Section titled “Prune stale waivers”Create an unbudgeted rad plan or rad scope artifact that covers the source
files you intend to clean up. Do not use a budgeted plan or a changed-line plan,
because those plans intentionally omit live candidates. Preview the change
before applying it:
rad plan --target src/example.ts --json > plan.jsonrad waivers prune --artifact <plan.json> --jsonrad waivers prune --artifact <plan.json> --apply --jsonPruning removes a waiver only when its source file is covered by the supplied plan’s complete candidate scope and its exact candidate is absent. Waivers for source files outside the plan remain unchanged. The CLI rejects artifacts that do not declare a complete candidate scope. Run cleanup from the main branch with a plan that covers the intended scope.
The CLI does not try to prove that every fork, remote branch, or unpushed branch has stopped using the candidate. Those branches may not be visible locally. Git history retains removed waiver decisions, and an older branch retains the manifest version in its own history. If a rebase drops a waiver that old code still needs, Radforge reruns the mutant. That is safer than carrying an uncertain waiver forward.