The one TODO item — a /kiosk endpoint whose state (fullscreen, which
mirror) any client can manipulate — becomes three phases, since it is
three workstreams:
- 07_kiosk_layout_state: the state on the server. `arrange` in, `layout`
out (staged/fullscreen/followers), Registry policy with a stale-staged
fallback on teardown, `GET /api/kiosk` for curl-level debugging.
- 08_kiosk_page: the wall made reusable (`static/wall.js`, behaviour-
preserving) and the chrome-free /kiosk page that arranges itself from
the state and publishes a local keypress back.
- 09_wall_remote_page: /remote, the controller you open on a phone —
shows no media and subscribes to nothing, proven by /api/streams'
watcher count — plus the security line and the kiosk box's new URL.
Locked anchors hold: no third role, state stays in memory (A7), Registry
stays pure (A8), no external assets (A10), no remote audio command
(SECURITY.md §4). PLAN.md untouched, per the user's decision, so its §7
roadmap table does not list 07-09.
LLM-Generated: true