Rotate TODO to docs-refresh step (step 8 done)

Step 8 complete: New(Params) constructor and os.Exit game-over. The
77-column wrap sweep was dropped per sneak. Docs refresh is now Next
Step.
This commit is contained in:
2026-07-23 08:02:35 +07:00
parent 194ce1dd16
commit a7d27ef65f

41
TODO.md
View File

@@ -29,12 +29,23 @@ Refactor ground rules:
# Next Step
Refactor step 8: constructor and style pass per the house styleguide —
game.New(game.Params{...}) replacing NewGame(Config); replace the gameEnd panic
unwind with error-based turn results where feasible; 77-column wrap sweep.
Docs refresh: update ARCHITECTURE.md Part 2 and README.md for the post-refactor
names; add the C name → Go name rename table.
# Completed Steps
- 2026-07-23 Refactor step 8 (refactor/constructor-style): constructor and exit
pass. NewGame(Config) → New(Params) and Restore takes Params, so the package's
primary type gets the canonical New() constructor with a named-field Params
struct (styleguide 139/159). The gameEnd panic unwind is gone: one game run is
one process, so myExit restores the terminal (new Terminal.Fini) and calls
os.Exit(0), and Run() no longer returns; the four Run()-to-completion tests
were reworked/dropped since death (combat or starvation) now exits the process
(TestScoreRendersList and TestRunDownStairs preserve what is still drivable;
save/restore stays covered by TestSaveRestoreRoundTrip). The 77-column wrap
sweep was dropped per sneak (2026-07-23): line lengths left as-is (lll caps at
88 and passes).
- 2026-07-07 Refactor step 7 (refactor/effects-dispatch): effects dispatch
tables plus a full decomposition sweep — the quaff / readScroll / doZap
switches, the attack monster-power switch, the be_trapped switch, the daemon
@@ -133,24 +144,24 @@ unwind with error-based turn results where feasible; 77-column wrap sweep.
# Future Steps
1. Docs refresh: update ARCHITECTURE.md Part 2 and README.md for the
post-refactor names; add the C name → Go name rename table.
2. Playtest hardening pass: play several full games with the tcell binary and
extend run_test.go to script a deeper multi-level playthrough (descend past
level 5, use potions, scrolls, zapping, save/restore). Fix any panics,
message mismatches, or divergences from the C behavior that this uncovers,
with regression tests.
3. Verify the seed-compatibility claim against the C reference on c-master: same
1. Playtest hardening pass: play several full games with the tcell binary and
extend run_test.go to drive a deeper multi-level playthrough (descend past
level 5, use potions, scrolls, zapping, save/restore). Note: game-over now
exits the process (step 8), so scripted drives must stay bounded and avoid
death/quit/save-command; exercise the exit paths (death display, 'S' save)
another way if needed. Fix any panics, message mismatches, or divergences
from the C behavior that this uncovers, with regression tests.
2. Verify the seed-compatibility claim against the C reference on c-master: same
seed, same dungeon, same item tables, for several seeds.
4. Broaden unit test coverage where playtesting finds thin spots (rings, sticks,
3. Broaden unit test coverage where playtesting finds thin spots (rings, sticks,
wizard commands).
5. Tag a release once a full game (Amulet retrieval and score entry) completes
4. Tag a release once a full game (Amulet retrieval and score entry) completes
without defects.
6. Full-terminal-size support (deferred by explicit decision 2026-07-06):
5. Full-terminal-size support (deferred by explicit decision 2026-07-06):
per-game dungeon dimensions instead of the 80x24 constants; open design
questions are resize policy, gameplay tuning at larger sizes, and a --classic
80x24 mode.
7. Note: this repo is exempt from the standard policy scaffold. A minimal dev
6. Note: this repo is exempt from the standard policy scaffold. A minimal dev
Makefile (fmt/fmt-check/lint/test/check targets) exists per sneak's
2026-07-07 request, but do not add a Dockerfile, CI config, or
REPO_POLICIES.md.