Skip to content

Keep text true after a first hire, a sold-off portfolio and an empty till - #255

Merged
dmccoystephenson merged 2 commits into
mainfrom
feature/first-hire-and-sold-off-record-text
Nov 5, 2026
Merged

dmccoystephenson merged 2 commits into
mainfrom
feature/first-hire-and-sold-off-record-text

Conversation

@dmccoystephenson

Copy link
Copy Markdown
Member

Summary

Four player-facing statements were found to be untrue or misleading in ordinary states, all in files already at 100% line coverage.

An existing assertion was changed: test_old_tom_crew_question_is_locked_until_someone_is_hired hires one villager and had pinned the plural bug. The plural wording stays covered by a new test with two hires.

Left unchanged, as noted on #253: sellFish stops at the first unaffordable fish, so cheaper fish can stay unsold while a few dollars remain in the budget.

No open issues were skipped: the backlog was empty at triage, so these were found by a fresh scan. No schemas/, reader/writer, save-manager or workflow path is touched, and option order is unchanged.

Test plan

  • python3 -m compileall -q src
  • Full suite under dummy SDL drivers: 1087 passed (1081 on main)
  • New regression tests stashed against the unfixed source: 6 cases failed, then passed with the fixes restored
  • Each symptom reproduced first on real Home, Shop, Tavern and Bank instances
  • CI green on the PR head

Closes #252
Closes #253
Closes #254

This PR description was drafted during a Gardener session (https://github.com/Stephenson-Software/gardener).

🤖 Generated with Claude Code


drafted by Claude on behalf of Daniel Stephenson

dmccoystephenson and others added 2 commits November 4, 2026 23:35
…till

The ledger's investment block was gated on owning a unit today, so selling
the last one erased the lifetime rental income, unlike the fleet and
business blocks beside it. It now follows the bought-one-ever stat.

Selling to a shop with no money left claimed a $0.00 sale. Old Tom spoke of
a single hire in the plural, and an existing test pinned that. Margaret
praised $0 in wages before the first payday; she now says the wages come
out of the purse, which is where they are drawn from.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@dmccoystephenson

Copy link
Copy Markdown
Member Author

Self-review rubric, scored on 801dbf3 against CI run 41981452273 (test and docker green, 1087 passed). One FAIL was fixed in the follow-up commit, which changes a comment only.

  • Scope: PASS — four src/location files and their test mirrors, each tied to Selling the last rental unit erases the rental record from the ledger #252, Shop reports "Sold fish for $0.00" when it could not buy anything #253 or Crew dialogue misreads a first hire: Old Tom's plurals for one hand, Margaret's $0 in wages #254.
  • Tests-new: PASS — no new public method was added; each changed branch has a test.
  • Tests-fix: PASS — with the src changes stashed, 6 cases failed (home 1, shop 1, bank 2, tavern 2), and all passed once restored. The plural tavern tests pass both ways by design, as guards on existing behaviour.
  • Sibling structure: PASS — tests follow the # prepare / # call / # check layout, and no new file was added.
  • Sibling renames: PASS — nothing was renamed.
  • Docs: PASS — no README edit is needed. README.md:162 already promises that the property part of the ledger appears once earned and that "a total you've built up stays on the ledger even after you've sold what earned it", so Selling the last rental unit erases the rental record from the ledger #252 brings the code back in line with the README. No schema or PLANNING claim covers these strings.
  • Issue resolution: PASS — all three named surfaces were changed, in both Old Tom branches and at both Margaret tier stages.
  • CI: PASS — green on 801dbf3; to be re-confirmed on the final head before merge.
  • Schema-sync: PASS — no persisted field changed.
  • Money-format: PASS — no money display was added; $%.2f remains in the changed Old Tom string.
  • Deterministic-tests: PASS — the new shop test sets the budget to 0, so no random sale price affects it.
  • Headless-pygame: PASS — no pygame path was touched.
  • camelCase: PASS — onlyOne.
  • Comment accuracy: FAIL, fixed — the src/location/bank.py comment assumed a pronoun for an NPC and claimed "the one time", which was not established. It was reworded.

Notes:

  • src/location/shop.py — black --check still fails on this file, but only on existing dialogue hunks outside this diff. They were left out of scope.
  • src/location/docks.py:299 — Sam's I've known every one of 'em has the same one-hand problem as Old Tom's line. It is outside the surface named by Crew dialogue misreads a first hire: Old Tom's plurals for one hand, Margaret's $0 in wages #254, so it is tracked separately rather than added here.
  • tests/location/test_tavern.py:604 — an existing assertion was deliberately changed because it pinned the plural bug; the plural wording stays covered by the new two-hire test.

This review was drafted during a Gardener session (https://github.com/Stephenson-Software/gardener). It is a self-review and not an independent one.


drafted by Claude on behalf of Daniel Stephenson

@dmccoystephenson
dmccoystephenson merged commit c0a39d8 into main Nov 5, 2026
2 checks passed
@dmccoystephenson
dmccoystephenson deleted the feature/first-hire-and-sold-off-record-text branch November 5, 2026 06:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant