The creation screen is done — 302 client tests (up from the 250 baseline), content build green. Also flips the M3 Title screen from planned to done: it shipped in a77bf03/f071392 and the roadmap never caught up, which would have misled M4-c into thinking it must build one. Adds six new trap species to docs/traps.md from this milestone's review passes: substring-collision assertions, a BBCode wrapper masking an empty ContentDB, a test asserting the script's own loop bound, a trivially-true gating fixture, assertions already true before the action under test ran, an "iterates everything" guard that checked three hardcoded pairs, a node-type sweep that missed RichTextLabel, tests that called handlers instead of pressing nodes, GUT silently skipping an unparseable class_name test file at the old count, and a test that can hang instead of fail. Also documents the new client-docs convention: clickable cards are Buttons with mouse_filter = 2 on every child, and pressed on a toggle_mode Button is the chosen state. Human F6 confirmation of the rendered screen against the mock is still outstanding and is not claimed here.
/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.