amphro
Two related features that enable async and replayable play. ## Saved strategies When a player generates rules from a prompt, save them to D1 (`userId`, `prompt`, strategy JSON, `readback`, `simVersion`, `createdAt`). `SIM_VERSION` already exists in `GameResolution` — versioning is mostly wiring. ## Ghost battles (seed-tied matchmaking) A completed game has a `seed` + config + two strategies. Core insight: the seed determines the starting board, so replaying with a new strategy on the same seed is a genuine rematch on identical terrain. - [ ] Save full `GameResolution` (or at minimum seed + config + both strategies) per game - [ ] "Challenge this game" flow: creates a new game with that seed and one strategy pre-loaded as the opponent - [ ] Saved strategies browser: play against any saved strategy from any game Enables async multiplayer-style play without requiring both players online simultaneously.