chore(sisyphus): Rule Variants Final Verification Wave — all reviewers APPROVE
Phase F Final Wave of the rule-variants epic.
F1 (Plan Compliance, oracle): APPROVE — bg_f2508b15
F2 (Code Quality, unspecified-high): APPROVE — bg_1101ecb3
F3 (Manual QA, orchestrator-direct): APPROVE — after agent hit
tool cap; 1651/1651 unit +
83/83 Playwright + 2/2
visual spot-checks
F4 (Scope Fidelity, deep): APPROVE — bg_77460b0f
Summary:
- 1651 unit tests (1417 baseline → +234 across 14 presets + 4 hooks
+ audits).
- 83/83 Playwright (80 → +3 rule-variants scenarios in F.4).
- 0 typecheck / lint errors.
- 4 new preset hooks shipped: getRoyalPieces, filterLegalMoves,
shouldAdvanceTurn (+ HalfMovesThisTurn fact), overridePieceMoves.
- 14 rule-variant presets shipped:
* Tier 1: knightmate-rules, double-move, monster-rules (scope-
flippable), first-promotion-wins.
* Tier 2 royal: coregal, dual-king, weak-dual-king.
* Tier 2 objective: suicide-chess, capture-all, extinction-chess.
* Tier 2 movement: berolina-pawns (scope-flippable),
berolina-pawns-2 (scope-flippable), bouncing-pieces,
bouncing-pieces-2.
- 1 new layout: dual-classic.
- Engine composition fix: onCheckGameResult 'ongoing' suppresses
defaults without short-circuiting later presets.
- UI: RulesDrawer category grouping + LayoutPicker suggested-rules
chips.
- Docs: PRESET-API.md + RULES.md galleries updated.
- Audits: incompatibleWith symmetry test + suggestedPresets
dangling-reference test — both green and runtime-enforced.
Deferred per-plan: Tier 3 royalty-transfer (requires mid-game state
toggle UX outside 'one move at a time'), berolina en-passant,
extinction-chess UI target cycling.
Plan: .sisyphus/plans/rule-variants-v2.md (all 31 tasks checked).