Module: Rigor::CLI::CoverageMutation

Included in:
CoverageCommand
Defined in:
lib/rigor/cli/coverage_mutation.rb

Overview

ADR-63 Tier 2 + ADR-70 — the mutation-effectiveness and fused static∪dynamic protection paths, factored out of CoverageCommand to keep that command focused on dispatch. Mixed in, so each method runs in the command instance (using @out / @err / @argv / collect_paths / determine_protection_exit and the Protection + LanguageServer collaborators the command requires).

Constant Summary collapse

DISCOVERY_SEEDED_MUTATION_SITES =

ADR-50 § WD2 — the bleeding-edge feature id gating the Tier-2 discovery seed (#253). Named here rather than inlined at the call site: Rigor::Configuration#bleeding_edge_active? raises on an id absent from the registry, so the constant is the single place a rename has to reach.

"discovery-seeded-mutation-sites"
DEPENDENT_CLOSURE_KILL_ORACLE =

ADR-50 § WD2 — the bleeding-edge feature id gating the Tier-2 dependent-closure kill oracle (#254). Same reason as above for naming it here rather than inlining the string.

"dependent-closure-kill-oracle"
HARNESS_ERROR_WARN_FLOOR =

#264 — the "loud" threshold for a rescued-harness-failure count. Below it, a rescued mutant reads as the occasional transient this issue's harness_errors bucket exists to make VISIBLE, not to eliminate (see Protection::MutationScanner#classify); at or above it, the pattern looks less like noise and more like a harness defect worth stopping to investigate before trusting the ratio. Deliberately NOT the determine_protection_exit gate: a --threshold build is pinned to the killed/survived ratio today, and turning a harness-side symptom into a new way for that same command to exit non-zero would silently change semantics CI already depends on. A loud stderr warning (plus the unconditional JSON field) is the visibility this issue asks for without redefining what "the build is red" means.

3
MUTATION_BEHAVIOUR_FEATURES =

Issue #134 slice 2 — the bleeding-edge ids whose adoption changes what a Tier-2 measurement REPORTS, and which therefore enter the identity of anything cached about it (#255: a behaviour feature's id is part of the cache identity of everything it changes). Both are named above; this is the ordered set the cache key reads, so a feature added to Tier 2 later has exactly one place to register.

[DISCOVERY_SEEDED_MUTATION_SITES, DEPENDENT_CLOSURE_KILL_ORACLE].freeze