Skip to content

chore: update coverage stats and badges#13

Merged
matthewevans merged 1 commit into
mainfrom
chore/update-coverage-badges
Apr 8, 2026
Merged

chore: update coverage stats and badges#13
matthewevans merged 1 commit into
mainfrom
chore/update-coverage-badges

Conversation

@matthewevans

Copy link
Copy Markdown
Member

Automated update of README coverage badges from latest card data.

@matthewevans
matthewevans enabled auto-merge (squash) April 8, 2026 15:50
@matthewevans
matthewevans merged commit 0175261 into main Apr 8, 2026
2 checks passed
@matthewevans
matthewevans deleted the chore/update-coverage-badges branch April 8, 2026 15:59
lgray added a commit to lgray/phase that referenced this pull request Jul 14, 2026
…lt is Off, not On

combo-plan-author caught it, and it is textbook Appendix-B: I grepped
LoopDetectionMode::On, read the line numbers, and INFERRED 'production default'
WITHOUT reading the surrounding context. Both citations are #[cfg(test)] fixtures:
match_config.rs:60-61 is '#[cfg(test)] mod tests', and session.rs:1601 is
fn loop_detection_config_persists_across_bo3_rebuild().

THE SHIPPED DEFAULT IS Off. match_config.rs:27, verbatim: 'Default Off = exact
pre-detector behavior (opt-in invariant, issue phase-rs#4603)', enforced at the wire layer
by #[serde(default, skip_serializing_if = LoopDetectionMode::is_off)].

THE USER'S DIRECTIVE IS UNAFFECTED -- only my rationale was wrong, and the true one
is stronger. Off is the shipped default and must stay (phase-rs#4603). But when a user OPTS
IN today they face a confusing THREE-way choice: Off / On (auto-win only, NO OFFERS
-- a crippled half-detector) / Interactive (auto-win + offers). On is strictly
dominated by Interactive and adds nothing. So 'trap them into the detector' means:
once you opt in, you get the FULL detector, not a half one. The toggle becomes an
honest binary -- Off (pre-feature) / On (the full detector).

Re-measured blast radius: 18 On sites (not 16 -- the earlier count omitted the two in
the definition file). TWO predicates, not one: samples() (:5819) AND is_on() (:5804);
is_on() has ZERO production callers -- all six sites are tests -- which SIMPLIFIES the
collapse. WinKind has SIX variants, not five: I omitted ImmediateWin (loop_check.rs:98,
CR 104.2), and C5 v2's lifetime-to-claim mapping must classify all six.

Assisted-by: ClaudeCode:claude-opus-4.8
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