- Round-trip: every command verb serialize->parse->re-serialize is identical;
malformed input is rejected.
- Equivalence: add a long ~2400-tick run through waves/combat that records,
reads back, and replays to a byte-identical final state with no desync
(alongside the existing short scenario).
- Desync detection: corrupting one recorded checksum makes ReplayPlayer report
the exact desync tick.
- Reset boundary: a Reset drained through CommandManager rolls the recorder to
a new file named by the new seed.
- Polish: the end-of-replay / desync overlay dims the world behind the message.
Record + playback is now functionally complete and covered by headless tests.
Full suite green (354 cases / 3418 assertions).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DUsFgd2Ga6pmLz8giS8WUn