A GameFlow coordinator node (new main_scene) owns the Title → Creation → Shell sequence in one file: instantiate → inject → add_child, reusing the existing injection seam that change_scene_to_file cannot. Title becomes emit-only; the shell gains injected_log/injected_state seams and stops self-seeding on the real path (seed stays as the F6 fallback), so the created character's vitals, location, and opening narration are real. The ⛨ saga constraint is honored structurally: _show_creation and _start_campaign are separate, so the fourth entry path is an added arm, not surgery on existing edges. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
/docs — cross-cutting docs
Anything affecting both client and api, plus planning and roadmap. Side-specific docs live in /api/docs and /client/docs.
Put here:
roadmap.md— phases, POC scope, what's nexttraps.md— bugs we have already shipped, and the guards that catch them. Read before writing tests: every one of them passed a green suite.adr/— Architecture Decision Recordscanon-log.md— the cross-boundary contract (§11)- Shared contracts — canon log schema, tag syntax, retry policy (§11, §12)
- Anything spanning the HTTP boundary
The charter itself — CLAUDE.md — stays at the repo root. It is the source of truth; these docs elaborate, they do not override it.