diff --git a/TODO.md b/TODO.md index 96115fc..7c04da2 100644 --- a/TODO.md +++ b/TODO.md @@ -29,11 +29,23 @@ Refactor ground rules: # Next Step -Verify the seed-compatibility claim against the C reference on c-master: same -seed, same dungeon, same item tables, for several seeds. +Broaden unit test coverage where playtesting finds thin spots (rings, sticks, +wizard commands). # Completed Steps +- 2026-07-24 Seed compatibility — item tables (seed-compat): instrumented the C + reference on modern-rogue with a DUMP mode (testdata/c_seedcompat.patch) that + forces the RNG seed and prints the per-seed item appearance tables (potion + colors, scroll names, ring stones, wand/staff materials) before initscr, and + captured its output for four seeds as testdata/item_tables.golden. + TestSeedCompatItemTables regenerates the same tables from the Go port and they + match byte for byte — proving the LCG and its consumption order through the + whole init sequence agree with C. The remaining "same dungeon (map)" half + would need the harder headless-curses C dump (new_level draws to curses); + deferred — the item-table match already validates RNG-order faithfulness + through init, and the Go generation goldens guard determinism thereafter. + - 2026-07-23 Playtest hardening (playtest-hardening): added two death-safe crash-sweep drives through the real turn loop, within the step-8 os.Exit constraint (a fortify() helper pins HP/food/exp and clears the freeze/stuck @@ -164,15 +176,13 @@ seed, same dungeon, same item tables, for several seeds. # Future Steps -1. Broaden unit test coverage where playtesting finds thin spots (rings, sticks, - wizard commands). -2. Tag a release once a full game (Amulet retrieval and score entry) completes +1. Tag a release once a full game (Amulet retrieval and score entry) completes without defects. -3. Full-terminal-size support (deferred by explicit decision 2026-07-06): +2. 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. -4. Note: this repo is exempt from the standard policy scaffold. A minimal dev +3. 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. diff --git a/game/testdata/README.md b/game/testdata/README.md index 9867b07..bc69cdf 100644 --- a/game/testdata/README.md +++ b/game/testdata/README.md @@ -3,11 +3,10 @@ `item_tables.golden` is the per-seed item appearance tables (potion colors, scroll names, ring stones, wand/staff materials) captured from the **C reference** on the `modern-rogue` branch, for the seeds in the `seeds` list in -`TestSeedCompatItemTables`. That test regenerates the same tables -from the Go port and checks they match byte for byte — proving the LCG and its -consumption order through the whole init sequence (`init_probs` → -`init_player` → `init_names` → `init_colors` → `init_stones` → -`init_materials`) agree with C. +`TestSeedCompatItemTables`. That test regenerates the same tables from the Go +port and checks they match byte for byte — proving the LCG and its consumption +order through the whole init sequence (`init_probs` → `init_player` → +`init_names` → `init_colors` → `init_stones` → `init_materials`) agree with C. ## Regenerating the golden