clone

fifteen puzzle games for the terminal, with daily puzzles, weekly ladders and xp, built on bubble tea

refactor/root-tui-model
puzzletea / openspec / specs / rippleeffect / spec.md
spec.md 2.8K rendered
1## Purpose2Document the shipped Ripple Effect built-in game behavior.34## Requirements56### Requirement: Registry Metadata7Ripple Effect SHALL be registered as a built-in game with canonical description "Fill the cages with sequential numbers without violating ripple distance.", aliases `ripple`, variants `Ripple Effect (default 1500 Elo)`, and daily legacy modes `easy 6x6, medium 7x7, hard 8x8`.89#### Scenario: Resolve Ripple Effect10- **WHEN** the registry resolves the canonical name or any alias11- **THEN** it returns the Ripple Effect entry with help text, import behavior, variant metadata, and legacy mode compatibility1213### Requirement: Variant Elo Creation14Ripple Effect MUST support the current variant plus target Elo creation path, using the variant default Elo when no explicit target is supplied.1516#### Scenario: Spawn Ripple Effect by Elo17- **WHEN** the user selects the Ripple Effect variant and a target Elo from 0 through 300018- **THEN** PuzzleTea spawns a deterministic Ripple Effect puzzle and records target, actual, and confidence metadata when generation reports it1920### Requirement: Legacy Mode Compatibility21Ripple Effect SHALL preserve legacy named modes as compatibility presets that map to the Ripple Effect variant and preset Elo values: Mini 5x5 (400 Elo), Easy 6x6 (900 Elo), Medium 7x7 (1500 Elo), Hard 8x8 (2200 Elo), Expert 9x9 (2800 Elo).2223#### Scenario: Use legacy mode title24- **WHEN** the user supplies a legacy Ripple Effect mode title through CLI or deterministic daily metadata25- **THEN** PuzzleTea resolves it to the Ripple Effect variant and the registered preset Elo2627### Requirement: Puzzle Rules28The Ripple Effect runtime MUST let players place digits in rooms so each room contains each digit once and matching digits in any row or column are separated by more cells than the digit value.2930#### Scenario: Check solved state31- **WHEN** the player fills the board or word state32- **THEN** Ripple Effect reports solved only when all rule constraints are satisfied3334### Requirement: Save Load And Interaction35Ripple Effect SHALL serialize enough state for resume/import, reset to its initial puzzle, expose debug and full-help data, and support its shipped interaction model. Keyboard digit entry is required for rooms and cursor movement.3637#### Scenario: Resume saved Ripple Effect38- **WHEN** a saved Ripple Effect payload is imported39- **THEN** the restored game preserves givens, player entries, cursor/selection state where applicable, and solved-state behavior4041### Requirement: Print Export Support42The Ripple Effect print adapter SHALL render puzzle and solution data for JSONL-to-PDF workflows.4344#### Scenario: Export Ripple Effect45- **WHEN** Ripple Effect is included in a JSONL or PDF export flow46- **THEN** PuzzleTea follows the registered print support behavior for that game