Spec: EvoBot round-end checkpointing — best-so-far per-enemy weights #92
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem Statement
Training matches run for hundreds or thousands of rounds, and they get interrupted — Ctrl-C, server shutdown, dropped connections. Today the bot writes weights only when a game ends cleanly, so an interrupt at round 600 throws away every generation since the match started. On top of that, the save was last-write-wins: a worse champion could silently clobber a better one on disk. The trainer loses hours of evolution and may not even notice the regression.
Solution
Weights are checkpointed at every round end, gated by best-so-far comparison, so an interrupted match never loses more than the round in flight and the file on disk always holds the best champion seen for that enemy. Files live beside the bot binary and are never corrupted by a mid-write kill.
User Stories
Implementation Decisions
Testing Decisions
Out of Scope
Further Notes
Provenance: every implementation decision above is a locked wayfinder decision — see map "EvoBot weight checkpointing: never lose the best per-enemy weights" and its closed children (what "better" means; which moments the platform actually delivers; final trigger/write-rules lock). Platform facts backing the trigger choice (round-ended delivered per-round to every participant including dead bots; aborts deliver nothing) were verified against Tank Royale protocol schemas and server source during research.
Superseded — dropping per-enemy weights, pivoting to global-only weights + improved GA/network.