docs(roadmap): fill in sequencing — Narrator/Ollama pipeline next

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-09 15:56:42 -05:00
parent 1f39ec709e
commit b15e81e242

View File

@@ -22,13 +22,25 @@ Test that before building anything else. ~30 minutes of play.
AI-generated story skeletons · multiplayer (never) · mobile · credits/payments/auth · companions leaving · positional combat · more than three classes.
## Sequencing — TBD
## Sequencing
<!-- Fill in as phases are planned. Suggested spine:
1. Proxy skeleton + role endpoints + Ollama routing + logging
2. Canon log + one Narrator scene end-to-end (proves the loop)
3. One bounded NPC conversation (proves §6 — the core experiment)
4. Luck + Improviser + one shrine + one cursed item
5. Combat (deterministic, seeded) + the dungeon
6. Banter + humiliation log (proves the comedy loop)
-->
Status: ✅ done · ▶ next · ○ planned. Each item is its own spec → plan → implementation cycle.
### Foundations — contract + engines
-**Canon log + origin JSON-Schema contract**, api validation, unified 422 envelope (Plan A).
-**Client canon log engine** — typed GDScript model (invariants in the model), new-game construction (origin + world + creation → canon log), turn-to-turn maintenance mutators, pure `[FACT]`/`[MOVE]`/`[ADJUST_DISPOSITION]` tag extractor (Plan B).
### Proving the loop — the POC's one question
-**Narrator / Ollama pipeline (server)** — the shared server-side model-call pipeline (Ollama httpx client, role→model routing config, prompt loader + canon-log digest renderer, §10 call logging, single-retry → typed 502) wired through `/dm/narrate`. Non-streaming. Two phases: **(1) pipeline foundation**, **(2) Narrator online** (authored `narrator.md` body + gated live smoke). Server returns raw prose; the client extracts tags. The other four roles become thin drop-ins on this pipeline.
-**Client HTTP loop** — client posts its canon log to `/dm/narrate`, displays the prose, harvests `[FACT]` via its `TagExtractor` into its own log, and shows the degraded-DM authored fallback (§13) on any non-200. Closes the first end-to-end Narrator scene.
-**Bounded NPC conversation**`/npc/speak` with persona + `knowledge[]` + `available_moves[]`; client validates and applies moves, silently drops the invalid, keeps the prose (§6). **The core experiment.**
### Fills out the POC (charter §17)
-**Streaming** (§14) — server streams Ollama → client, landed with/after the client HTTP loop.
-**Adjudicator** (free text → legal action, strict JSON), **Improviser** (§7 sandbox, whitelisted changes), **Banter** (§9 humiliation log).
-**Luck fully wired** — drift events, one shrine, one cursed item.
-**Combat** — deterministic, seeded; the dungeon (three fights, one boss).
-**Authored fallback text** for every AI surface (§13).
### Deferred beyond POC
Replicate provider (prod) · auth · metering · credits/payments (§4) — retrofit onto the pipeline later, the game doesn't notice.