679b25e2c7
During an all-in runout, dealRemainingBoard() dealt every remaining card without touching currentStreet, so a pre-flop all-in produced a terminal snapshot labelled PREFLOP carrying a five-card board. Setting currentStreet = RIVER would fix the label but leave a second problem: the board jumped from empty to complete in a single snapshot, so the UI could not animate the runout — the moment a poker table most needs to. Instead dealRemainingBoard() is now suspend and publishes each street as it lands, which keeps currentStreet honest as a consequence rather than as a special case. Each runout street also sweeps its betting into the pot via prepareRound(), matching the normal street transition. Verified by reverting: the board went 0 -> 5 with the terminal snapshot labelled PREFLOP, and three of the four new tests failed. Tests: 48 -> 52, green on jvmTest and testAndroidHostTest. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>