diff --git a/plans/0000-roadmap.md b/plans/0000-roadmap.md index 7c7db62..84e8963 100644 --- a/plans/0000-roadmap.md +++ b/plans/0000-roadmap.md @@ -88,7 +88,9 @@ the real design happens. The blurbs here stay deliberately loose. markdown into styled rows as it streams, committing each block as soon as it settles and holding back only the one still forming. *You can now: read the DM's words styled, not asterisked.* - ([0008](completed/0008-streaming-markdown.md)) + ([0008](completed/0008-streaming-markdown.md), and the scrollback + viewport it streams into: + [0006](completed/0006-stream-into-scrollback.md)) - [x] **Phase 7: Timekeeping and the campaign log.** Game time, a transcript of every turn, and a campaign log of events — the backbone that DM memory, player recall, and context stacking all sit on. The @@ -104,9 +106,23 @@ the real design happens. The blurbs here stay deliberately loose. player earns them. The campaign log and transcript fuel it all. *You can now: meet the innkeeper without being told she's a retired assassin.* ([0010](completed/0010-context-stack.md)) -- [ ] **Phase 9: Persistence.** Character sheet, world entities, session - state. *You can now: your character persists across sessions.* -- [ ] **Phase 10 and beyond: ideas that have to earn it.** Character +- [ ] **Phase 9: Session state and the context budget.** The missing + half of the context stack. A session-state domain holds the facts that + are only true right now: the current scene, the party, the NPCs in it, + and later the character's HP and spell slots. An entry's + `context: true` stays for what is always true; session state carries + what the moment makes true. The context stack reads it every turn + under a token budget, `recall` gets a result cap to match `lookup`'s, + and the conversation history gets a policy for growing old gracefully + instead of dying on a context-length error. *You can now: leave the + tavern, and the tavern leaves the prompt.* +- [ ] **Phase 10: Persistence.** Character sheet, world entities, and + worlds that live somewhere real on disk. This phase decides the world + root, the one-line decision three plans have stepped around. A fresh + session's first prompt carries a recap built from the campaign log, so + the DM comes back remembering the story and not just the clock. *You + can now: your character persists across sessions.* +- [ ] **Phase 11 and beyond: ideas that have to earn it.** Character creation, combat and initiative, background world motion, advancement, name generation, colors and theming (the styles all live in `markdown::style` waiting for it). Each one starts as a conversation, diff --git a/plans/rejected/0009-scenario-replay.md b/plans/rejected/0011-scenario-replay.md similarity index 97% rename from plans/rejected/0009-scenario-replay.md rename to plans/rejected/0011-scenario-replay.md index 19664c5..a92c0ee 100644 --- a/plans/rejected/0009-scenario-replay.md +++ b/plans/rejected/0011-scenario-replay.md @@ -1,4 +1,10 @@ -# 0009: Scenario replay +# 0011: Scenario replay + +> **Rejected 2026-08-02.** The picture this plan promises needs a font +> rasterizer, which is a whole sub-project, and the `TestBackend` +> character grid already lets a person or an agent read the screen. Kept +> on hand for the day replay earns it. This plan was written as 0009 and +> renumbered when timekeeping shipped under that number. ## What this is and why