`fight` gets a voice, and the plan gets written down master
sound routed through state, not side effects. the sim records what it wants heard into a bitmask cleared at the top of every step; only the leading frame plays it. that's the street fighter x tekken bug avoided by construction — a rewound frame that no longer lands a hit un-schedules its own sound. there's a spec for the real ggpo case: predict the defender idle and it's a hit, correct the input on rollback and the same frame becomes a block. docs/rollback-netcode.md holds the whole picture — what ac gives us (a 120hz fixed timestep), what it costs us (input lands a frame late), why geckos isn't p2p, the determinism rules, and how a synctest can pass vacuously. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>