Two game storages can't share a name anymore
Card headway:gamedev/invite-picture-earth · commit 6a80381a00d9 · first card of the security-patrol-quote epic
A game names its own storage StoreName::game(n). The core accepts any name at or above GAME_BASE and has nothing to check it against: each storage keeps its name in its own header, and there's no registry. So two pools named game(2) both reserve space, both work, and both print a budget line reading game 2. The check has to happen on the game's side, over the list the game reports.
What the loop prints, before and after
stats(mv) → [Stats; 10], carve chained on in runA test over stats() never saw game 0. A pool that collided with the carve would have passed.
stats(mv, &field) → [Stats; 11], renderer chained afterShaded chips are what the test reads (game_index() is Some). Engine names are skipped because the graph reports two lines under the single name transform nodes on purpose.
Try a sabotage
These are the four that were run against the test. Pick one to see what the test sees.
What wasn't verified
The test only sees storages that are in stats(). A pool that was never added to stats() has no line, so it can collide without anything failing. Nothing forces every pool into stats() except the hand-typed [Stats; 11] width, which is one of the silent gaps the epic lists. pools! (wasp-trick-airport) is the card that closes that gap.
If catch-detail-true replaces the numeric names with inline text, this test's game_index() filter changes form. The duplicate check itself still applies to text names.