docs(core): record unlimited stock recycling as an intentional rules decision #122

Merged
funman300 merged 1 commits from docs/recycle-rule-decision into master 2026-07-06 20:10:01 +00:00
Owner

Resolves #117 by documenting the current behaviour as deliberate rather than adding a hard pass limit (per discussion — a limit would invalidate the verified difficulty seed catalog and the winnable-deal solver, and mainstream digital solitaire allows unlimited Draw-1 redeals with score penalties).

Changes

  • ARCHITECTURE.md — new Rules decisions note in the solitaire_core section explaining the rule, why it's load-bearing, and where it's locked in.
  • GameState::draw() — doc comment points at the decision record so nobody "fixes" it casually.
  • New core test draw_one_recycling_is_unlimited_by_design — drives a Draw-1 game through 10+ recycles and asserts draw() is never rejected on pass count.
  • CHANGELOG.md — Unreleased entry noting this closes the last open finding from the June 500-game audit.

Verification

  • cargo clippy --workspace -- -D warnings clean
  • cargo test --workspace all passing (new test included)

Closes #117

🤖 Generated with Claude Code

Resolves #117 by **documenting** the current behaviour as deliberate rather than adding a hard pass limit (per discussion — a limit would invalidate the verified difficulty seed catalog and the winnable-deal solver, and mainstream digital solitaire allows unlimited Draw-1 redeals with score penalties). ## Changes - **ARCHITECTURE.md** — new *Rules decisions* note in the `solitaire_core` section explaining the rule, why it's load-bearing, and where it's locked in. - **`GameState::draw()`** — doc comment points at the decision record so nobody "fixes" it casually. - **New core test** `draw_one_recycling_is_unlimited_by_design` — drives a Draw-1 game through 10+ recycles and asserts `draw()` is never rejected on pass count. - **CHANGELOG.md** — Unreleased entry noting this closes the last open finding from the June 500-game audit. ## Verification - `cargo clippy --workspace -- -D warnings` clean - `cargo test --workspace` all passing (new test included) Closes #117 🤖 Generated with [Claude Code](https://claude.com/claude-code)
funman300 added 1 commit 2026-07-06 20:03:39 +00:00
Resolves the Draw-1 recycle question from the June 500-game audit:
unlimited recycling with upstream score penalties is deliberate,
matching mainstream digital solitaire rather than strict 3-pass
tournament rules. The difficulty seed catalog and the winnable-deal
solver are verified under this rule, so a hard pass limit must not be
introduced casually.

- ARCHITECTURE.md: new 'Rules decisions' note in the solitaire_core
  section
- GameState::draw() doc comment points at the decision record
- New lock-in test draw_one_recycling_is_unlimited_by_design asserts
  10+ recycles are never rejected

Closes #117

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
funman300 merged commit 331d932c4b into master 2026-07-06 20:10:01 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: funman300/Ferrous-Solitaire#122