Real token streaming to hide the ~2s call (§14). Proxy emits its own minimal NDJSON (delta/done/error); /dm/narrate becomes a 200 stream (422 stays sync, model errors become an in-stream frame). Client reworks to an HTTPClient poll-loop StreamTransport behind a testable seam; hold-back tag filter; keep-partial mid-stream degrade; folds in the HttpTransport timeout fix. Narrator first; NPC fast-follow. 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 nextadr/— Architecture Decision Records- 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.