From a7d27ef65fb976d5bd860dedccc56cce2a90d665 Mon Sep 17 00:00:00 2001 From: sneak Date: Thu, 23 Jul 2026 08:02:35 +0700 Subject: [PATCH] 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. --- TODO.md | 41 ++++++++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/TODO.md b/TODO.md index 0464d44..b1b2b62 100644 --- a/TODO.md +++ b/TODO.md @@ -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.