1. Fix IndexError in current_player() when player leaves mid-game
- remove_player() now adjusts current_player_index after popping
- current_player() has safety bounds check as defensive fallback
2. Fix AssertionError in StaticFiles catching WebSocket upgrades
- Wrap static file mount to reject non-HTTP requests gracefully
- Starlette's StaticFiles asserts scope["type"] == "http"
Both crashes were observed in production on 2026-02-28 during a
multi-player session. The IndexError cascaded into reconnection
attempts that hit the StaticFiles assertion.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>