Scaffold project and author 14-phase roadmap
Browser co-op kitchen game: FastAPI + native WebSockets, server-authoritative 20 Hz simulation, in-memory anonymous lobbies, data-driven YAML levels, Canvas 2D vanilla ES-module client with locally authored SVG art and no external CDNs. .agents/PLAN.md records the LOCKED decisions; .agents/user_stories/ holds the 12 flow contracts; .agents/phases/todo/ breaks them into 14 sequential, test-gated phases (71 task files), each leaving the app launchable and the suite green. LLM-Generated: true
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
# US-03 — Ready up and start from the lobby
|
||||
|
||||
**As a** host,
|
||||
**I want to** pick the level and start once everyone is ready,
|
||||
**so that** the group begins together on the same kitchen.
|
||||
|
||||
## Acceptance criteria
|
||||
1. The lobby lists every seat: name, ready state, host crown, connection state.
|
||||
2. Any player can toggle *Ready*; the host can pick any **unlocked** level from a
|
||||
list showing name, target score, time limit, and difficulty pips.
|
||||
3. *Start* is enabled for the host when ≥ 1 non-host player is ready (or the host is
|
||||
alone — solo play is allowed).
|
||||
4. Starting begins a 3-2-1 `countdown` shown identically on all clients, then the
|
||||
first `snap` arrives.
|
||||
5. Non-host players cannot start or change level; the attempt shows a disabled control
|
||||
(no console errors, no silent failure).
|
||||
6. If the host leaves in `LOBBY`, host status transfers to the lowest occupied seat;
|
||||
in `PLAYING` the round continues.
|
||||
7. Someone leaving during `COUNTDOWN` cancels the countdown back to `LOBBY`.
|
||||
8. Starting creates a round record in the in-memory session store.
|
||||
|
||||
## E2E suite
|
||||
`tests/e2e/test_us03_ready_and_start.py` — two contexts: ready toggles visible to
|
||||
both, non-host start rejected, countdown then both screens show the kitchen.
|
||||
|
||||
## Phases
|
||||
`05_anonymous_lobbies_and_room_lifecycle`, `06_realtime_websocket_protocol`,
|
||||
`07_canvas_client_and_hud`
|
||||
Reference in New Issue
Block a user