Skip to content

Document the fishing minigame and milestone system in README - #117

Merged
dmccoystephenson merged 1 commit into
mainfrom
feature/document-fishing-and-milestones
Jul 23, 2026
Merged

Document the fishing minigame and milestone system in README#117
dmccoystephenson merged 1 commit into
mainfrom
feature/document-fishing-and-milestones

Conversation

@dmccoystephenson

Copy link
Copy Markdown
Member

Summary

  • No open issues or PRs existed at triage time, and a full source sweep found no untested code, schema drift, or %d-on-float formatting bugs — the repo is in a clean, well-covered state (351 tests passing).
  • This cycle is a Stage A documentation accuracy sweep (per the dev-loop skill's fallback work mode): the README's Features section documents selling fish, housing, and investment properties, but never described the fishing minigame itself (reaction timing, rod-level window, time-of-day and weather yield modifiers, weighted species rarity) or the milestone/achievement system (src/achievements/achievements.py) — both fully implemented and tested, but entirely absent from player-facing docs.
  • Added two new Features subsections, Fishing and Milestones, matching the doc's existing tone and em-dash style. Every claim was verified against src/location/docks.py, src/fish/fish.py, and src/achievements/achievements.py before writing (e.g. the 10-energy-per-hour cost and 10-energy minimum to start match fish()'s hasEnergy/spendEnergy calls; the "announced once, even across reloads" claim matches getNewlyEarned's use of the persisted stats.earnedMilestones).
  • PLANNING.md's FISH LOADING BAIT PRICE BUG goal note was investigated but left untouched — no corresponding bug was found in priceForBait load/save/display code (schema, PlayerJsonReaderWriter, and shop display all use %.2f correctly), and the note isn't specific enough to act on without guessing; left as-is rather than fabricating a fix under a docs-only cycle.

Test plan

  • python3 -m compileall -q src
  • Full pytest suite (headless SDL drivers): 351 passed, 0 failed
  • Docs-only change — no code paths modified, so no regression risk

No tracking issue — gap found during this cycle's documentation sweep (Phase 2, Stage A).

The Features section covered selling fish, housing, and investments but
never described the actual fishing mechanic (reaction timing, rod level,
time-of-day/weather modifiers, species rarity) or the milestone/achievement
system, even though both are core, fully-implemented gameplay.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@dmccoystephenson

Copy link
Copy Markdown
Member Author

Self-review rubric:

  • Scope: PASS — only README.md is modified; the two new subsections are the sole change, no unrelated formatting/rename/comment churn.
  • Tests-new: N/A — docs-only change, no new public methods/functions to cover.
  • Tests-fix: N/A — not a bug fix.
  • Sibling structure: PASS — the Fishing and Milestones sections use the same ### Heading + single-paragraph pattern and em-dash style as every other Features subsection (verified against Home Ownership/Investment Properties immediately above).
  • Sibling renames: N/A — no identifiers renamed.
  • Docs: PASS — this PR is the doc fix. Full Phase 7 table checked: schemas/*.json unaffected (no persisted fields touched), PLANNING.md investigated (FISH LOADING BAIT PRICE BUG note left as-is — no corresponding bug found in priceForBait load/save/display path, and the note is too vague to act on without guessing), version.txt not bumped (docs-only, not release-worthy).
  • Issue resolution: N/A — no open issue existed for this gap; PR body states "No tracking issue — gap found during this cycle's documentation sweep."
  • CI: PASS — gh pr checks 117 green (test workflow passed).

Repo-specific rubric (all N/A — no source files changed in this PR):

  • Schema-sync: N/A
  • Money-format: N/A
  • Deterministic-tests: N/A
  • Headless-pygame: N/A
  • camelCase: N/A

Every factual claim in the new copy was traced to source before writing: energy cost/minimum from Docks.fish()'s hasEnergy/spendEnergy(10) calls, reaction-quality tiers and rod-level window from Docks.fish()/REACTION_BASE_WINDOW/ROD_WINDOW_STEP, time-of-day/weather modifiers from Docks.getTimeOfDayModifier/getWeatherModifier, species rarity from fish.FISH_TYPES, and the milestone "announced once, even across reloads" claim from achievements.getNewlyEarned's use of the persisted stats.earnedMilestones.

Summary: docs-only PR closing a real gap (two fully-implemented, tested gameplay systems — the fishing minigame and milestones — were undocumented in README's Features section). No code paths touched, so no regression risk; CI green.

@dmccoystephenson
dmccoystephenson merged commit abcea90 into main Jul 23, 2026
1 check passed
@dmccoystephenson
dmccoystephenson deleted the feature/document-fishing-and-milestones branch July 23, 2026 03:11
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