diff --git a/TODO.md b/TODO.md index b1b2b62..704a64c 100644 --- a/TODO.md +++ b/TODO.md @@ -29,11 +29,24 @@ Refactor ground rules: # Next Step -Docs refresh: update ARCHITECTURE.md Part 2 and README.md for the post-refactor -names; add the C name → Go name rename table. +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. # Completed Steps +- 2026-07-23 Docs refresh (docs-refresh): rewrote ARCHITECTURE.md Part 2 (the + pre-implementation design sketch) to match the final code — current type/field + names (ObjectKind, DiceSpec, split o_arm, step-1 flag names, TrapCount, Level + list methods), the static tables now on the per-game gameData struct, the + daemon/effect handler tables, the MessageLine extraction, the Terminal + interface, the flat gob SaveState, and the New(Params) + os.Exit design. Added + §7.1, a C-name → Go-name rename table, and a README note on the make targets. + - 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 @@ -144,24 +157,17 @@ names; add the C name → Go name rename table. # Future Steps -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 +1. Verify the seed-compatibility claim against the C reference on c-master: same seed, same dungeon, same item tables, for several seeds. -3. Broaden unit test coverage where playtesting finds thin spots (rings, sticks, +2. Broaden unit test coverage where playtesting finds thin spots (rings, sticks, wizard commands). -4. Tag a release once a full game (Amulet retrieval and score entry) completes +3. Tag a release once a full game (Amulet retrieval and score entry) completes without defects. -5. Full-terminal-size support (deferred by explicit decision 2026-07-06): +4. 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. -6. Note: this repo is exempt from the standard policy scaffold. A minimal dev +5. 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.