Spun out of BL-099’s research note (2026-09-03, docs/session-running-improvements.md) rather than folded into it – a different, smaller mechanism for the same underlying complaint. The standing predictive-drafting agent BL-099 originally floated (“draft 2-3 likely next-beat narrations ahead of the table reaching them”) was evaluated and not recommended: the concrete example that motivated it (Alora’s giants-item barter, Session 39/ADR-0087) turned on a detail generated live in an improvised conversation, which a speculative pre-drafting agent has no way to anticipate. Most speculative drafts for genuinely improvised moments would be wasted generation on paths not taken.
This is the smaller idea worth keeping: a short, pre-computed reference per NPC – speech patterns, current mood/goals, a couple of catchphrases – built once at session-prep time (/txt-session-build, alongside the existing lore-tab tagging) instead of re-derived from the full article every time that NPC needs a line live. Doesn’t predict what an NPC will say, only makes drafting how they’d say it faster and more consistent once a line is actually needed – a bounded latency win without the speculative-generation problem.
Update (2026-09-03, ADR-0091): scope reshaped. ADR-0091 established that production (not a local wiki page) is the live-session source of truth, pulled into a per-session lore cache (story/sessions/prep/session-NNN-lore-cache.md) at /txt-session-build time – already implemented. A voice sheet is now a natural extension of that same cache rather than a separate mechanism: add a short “how they’d say it” note (speech pattern, current mood, a catchphrase) per NPC section in the existing lore cache, generated at the same pull step. Not yet implemented – the cache mechanism it depends on is built, this is the remaining, now smaller, piece.