# /client/docs Client-specific documentation. Scoped to the Godot project. Put here: - Scene tree / autoload structure - Input model — menu vs free-text boundary, which must be visible (§15) - Combat wiring — deterministic damage, per-encounter seeding (§10) - Canon log data structure and fact-harvesting (§11) - HTTP client + fallback-degradation handling (§13) Cross-cutting design (anything touching both client and api) goes in the root [`/docs`](../../docs), not here. ## Narrate live smoke (M2 client HTTP loop) The `narrate_harness` scene is a throwaway proof of the client → `/dm/narrate` loop. It is not the game UI. **Prereqs:** the proxy running and Ollama reachable. 1. Start the proxy: from `api/`, `uvicorn app.main:app --port 8000` (with the `.env` from `.env.example`; Ollama up at `OLLAMA_BASE_URL`). 2. In the Godot editor, open `res://scenes/narrate_harness.tscn` and run it (F6). 3. Click **Narrate this scene**. Expect grounded prose in the Narrator's voice (referencing Greywater / Brannoc / the washed-out bridge), tags stripped, and `facts harvested: N` with N ≥ 0. 4. **Degraded path:** stop the proxy and click again. Expect the authored fallback line and `(degraded)` in the status — never an error. Override the proxy URL with the `coc_rpg/proxy_base_url` project setting.