# Issue #287 — Canonical round-flow backend artifact ## State-transition matrix | Trigger | From | To | Server-owned effect | |---|---|---|---| | `POST /lobby/sessions/{code}/rounds/start` | `lobby` | `lie` | Opretter `RoundConfig`, vælger/låser konkret `RoundQuestion`, eksponerer prompt + lie-deadline i samme svar | | Sidste gyldige `submit_lie` for aktivt spørgsmål | `lie` | `guess` | Dedupe/shuffle `correct_answer + lies`, persisterer `mixed_answers`, broadcaster `phase.guess_started` | | Sidste gyldige `submit_guess` for aktivt spørgsmål | `guess` | `reveal` | Beregner score deterministisk, persisterer `ScoreEvent` + opdaterede `Player.score`, returnerer canonical reveal payload | | Første canonical state-read efter resolved reveal (`session_detail`) | `reveal` | `scoreboard` | Promoverer scoreboard som state, broadcaster `phase.scoreboard`, eksponerer leaderboard + readiness | | `POST /lobby/sessions/{code}/next` | `scoreboard` | `lobby` | Increment round counter | | `POST /lobby/sessions/{code}/finish` | `scoreboard` | `finished` | Fryser slutresultat og returnerer final leaderboard | ## Flow-log (happy path) 1. Host starter runde med kategori. 2. Server vælger straks spørgsmål og går i `lie`. 3. Spillere sender løgne; sidste submission auto-advancer til `guess`. 4. Spillere sender gæt; sidste submission auto-advancer til `reveal` og scorer runden. 5. Næste `session_detail`-read promoverer resolved reveal til `scoreboard` uden host-knap. 6. Host kan nu kun vælge `next round` eller `finish game`.