Watchdog class with 4 Vitest tests (27 total now), wired into ctx.heartbeat in the runner. One watchdog per room with a 60s timeout; firing logs an error, marks the room's dashboard tile as errored, and triggers the abort signal so the scenario unwinds. Watchdogs are explicitly stopped in the runner's finally block so pending timers don't keep the node process alive on exit. Also fixes a multi-game bug discovered during stress scenario verification: after a game ends sessions stay parked on the game_over screen, which hides the lobby and makes a subsequent #create-room-btn click time out. runOneMultiplayerGame now navigates every session to / before each game — localStorage auth persists so nothing re-logs in. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1.0 KiB
1.0 KiB