# Conflicts: # CHANGELOG.md # content/_meta/README.md # content/_meta/npc-authoring-style-guide.md # wiki/_templates/cultural-group.md # wiki/_templates/institution.md # wiki/_templates/star-system.md # wiki/characters/devra.md # wiki/characters/drin.md # wiki/characters/harek.md # wiki/characters/lera-sessik.md # wiki/characters/maret-korr.md # wiki/characters/naia-tamm.md # wiki/characters/nils-davan.md # wiki/characters/pell.md # wiki/characters/renn.md # wiki/characters/resha.md # wiki/characters/sabel.md # wiki/characters/sera-venn.md # wiki/characters/torek-lintar.md # wiki/characters/voss.md # wiki/star-systems/krenn/index.md
13 KiB
title, description, type, status, workshop, agent, round, created
| title | description | type | status | workshop | agent | round | created |
|---|---|---|---|---|---|---|---|
| Round 1 Notes | Compiled notes from round 1 divergent inventory across all seven participants | workshop | archived | llm-voice-pipeline | 1 | 2026-03-07 |
LLM Voice Pipeline Workshop — Round 1 Notes
Compiled by: Qatux (Documenter)
Round: 1 — Divergent Inventory
Date: 2026-03-07
Source files: *-round1.md (7 participants)
Overview
All seven participants completed independent domain inventories after reading the proposal (proposed-llm-voice.md), the generator spike, zone RON files, the Van Maanen's Star culture profile, and relevant D-records. The round produced strong convergence on direction and sharp, actionable disagreement on specific mechanisms — exactly what a divergent inventory round should produce.
Positions by Participant
| Participant | Domain | Option favored | Key condition |
|---|---|---|---|
| Gestalt | Systems design | Option 3 + hybrid | Two-track re-voicing; tells require locked semantic core |
| Tyre | Technical feasibility | Option 3 + hybrid fallback | Behaviors-first; llama-cpp-rs Q4; behaviors/dialogue scope TBD |
| Paula | Narrative quality | Option 3 mandatory hybrid | Tells must be first-class data model field, not editorial convention |
| Mellanie | Content authoring | Option 3 | Tell structural separation in RON schema is the one blocker |
| Ozzie | Player experience | Option 3, two non-negotiable preconditions | Base text elevation pass; tells locked (prefers base text passthrough) |
| Miri | World consistency | Option 3 + deep injectors | Proposal's Van Maanen's Star injector is wrong; needs token budget before committing |
| Troblum | Infrastructure | Option 3 conditionally viable | Minimum CPU spec must be defined; correct infrastructure choices required |
Summary: 7/7 participants favor Option 3 (LLM re-voicing) as the primary path. No participant endorsed hand-authored pools as the sole strategy or composable primitives as the rendering layer.
Consensus Points
These positions were reached independently by multiple participants and can be treated as round-1 consensus.
C-1: Option 3 (LLM re-voicing) is the correct direction
Unanimous. All seven participants concluded Option 3 is the only viable path to D-122 (all NPCs generated) at the culture and zone scale the game requires.
Rationale shared across participants: Hand-authored pools are O(R×Z×C) — impossible to staff at scale. Composable primitives produce hollow, assembled-feeling output. LLM re-voicing with base-text fallback is the only architecture that scales to the world while preserving content quality and respecting hardware constraints.
C-2: Tells must be protected from free re-voicing
Unanimous. Every participant flagged this independently. Tells are mechanical signals for the player's information asymmetry gameplay — they are not flavor text. Free re-voicing of tells would corrupt the signal, make tell literacy unteachable, and degrade the core mechanic (D-007, D-010).
The mechanism of protection is disputed (see Tension T-1), but the requirement itself is not.
C-3: Composable primitives are rejected as the rendering layer
Unanimous. Composable primitives may have value as an authoring scaffold (Gestalt), but they cannot serve as the runtime output layer. The quality the Sprint 25 spike established — "wipes grease on the thigh of her coveralls between jobs" — cannot be produced by grammar assembly. The specific, composed nature of authored behaviors is the content.
C-4: The proposal's Van Maanen's Star cultural injector example is wrong
Three participants (Paula, Miri, Mellanie) independently identified that the proposal's example injector — "Your speech is formal and avoids contractions" — is incorrect for Van Maanen's Star. Van Maanen's Star register is direct-informal, clipped, and working-class. Formal-without-contractions describes an entirely different culture. This error must be corrected before any spike validation can produce meaningful results.
C-5: Base-text-as-fallback architecture is sound
Unanimous. The proposal's design — base text as both LLM seed and graceful fallback for hardware-limited players — is correct. It solves content scaling, quality floor, hardware flexibility, and the AI-toggle player-choice problem simultaneously.
C-6: llama-cpp-rs with GGUF Q4 is the correct inference runtime
Tyre and Troblum independently reached the same conclusion. llama-cpp-rs with Q4_K_M quantization provides the best performance on minimum-spec CPU-only hardware. candle is 2-3× slower on CPU (Troblum) and has weaker quantization support (Tyre). burn is not production-viable. Q4 quantization is a hard requirement — FP16 and INT8 are not viable on 8GB shared RAM.
C-7: Cache-as-determinism model is correct
Tyre proposed; no dissent. LLM inference runs once at generation time per seed/culture/zone/NPC/behavior — result is cached. From that point, the cache lookup is deterministic. This satisfies D-010's determinism requirements without requiring LLM inference to be deterministic.
C-8: Separate thread pools required for world gen vs. inference
Tyre and Troblum independently recommended this. LLM inference and world generation both saturate memory bandwidth and L3 cache. Running them in the same thread pool produces contention and frame hitches. Thread pool isolation with inference at below-normal priority is the correct architecture.
C-9: ~90% of existing copy (#630) survives under Option 3
Mellanie. The zone RON behavior lines are already well-formed LLM seeds. Minor cleanup for culture-specific vocabulary (which should move to injectors) is the only authoring change. Existing specificity — the thing that makes the lines work — survives intact.
Key Tensions
T-1: Tell treatment mechanism (unresolved)
How exactly should tells be protected? Three distinct positions:
Gestalt — Locked semantic core: add semantic_core: Option<String> to the Tell struct. Re-voicing prompt for a tell includes an explicit constraint (PRESERVE: avoidance_behavior). This is constrained re-voicing, not free re-voicing. The model is doing localization, not creation. Tells get culture-voiced expression while the phenomenon is preserved.
Ozzie — Serve tells as base text (no re-voicing at all). Argues this may be a feature: culture-neutral base text stands out against the voiced ambient texture and makes tells MORE detectable and readable, not less. The contrast between voiced ambient and unvoiced tell highlights the tell.
Paula / Mellanie — The current NpcBlueprint has only observable_behaviors: Vec<String> — a flat list with no semantic distinction between tells and ambient behaviors. The protection question is moot until tells are a first-class field in the data model. Both treat this as their primary blocker.
For Round 2: This tension needs resolution. The architectural question is: (a) What data model change is required? (b) Do tells get constrained re-voicing or base-text passthrough?
T-2: Scope of re-voicing — behaviors first vs. dialogue first (unresolved)
Tyre — Start with observable behaviors only. Behaviors are short-form (5-15 words), simple prompt, a 2B model handles it cleanly. Dialogue requires conversation context, longer output, 3B+ models. Validate on the simpler case first.
Paula — Dialogue is the more appropriate primary target for LLM re-voicing. The dialogue system already has access tier and trust tier tags that handle information safety. Observable behaviors require per-line protection decisions; dialogue has structural protection already built in.
Both acknowledge the architecture supports both; this is a sequencing and spike-design question.
T-3: Composable primitives — artifact or reject?
Gestalt — Composable primitives are the right authoring scaffold: structure how authors specify behaviors (role action + cultural modifier + relationship context). This is the schema, not the rendering layer. Value preserved.
Paula / Mellanie / Ozzie — Less interest in preserving composable primitives as an output layer. The copy team works in voices, not grammars; the composition engine authoring paradigm doesn't map to their skill set. No explicit dissent to using it as schema, but not seen as essential.
For Round 2: Does the hybrid architecture need composable primitives as a schema layer? Or is the base-text + injector model sufficient without it?
T-4: Model quality vs. hardware feasibility tradeoff
Tyre — Gemma 2B Q4 is the primary candidate. Qwen2.5-1.5B as fallback. Good instruction following at 2B.
Miri — Skeptical that a 2B model can hold cultural philosophy (not just vocabulary) under prompt pressure. The Van Maanen's Star injector needs ~200-300 words to encode accurately; small models produce worse instruction following with longer prompts.
Troblum — Phi-3-mini is not "2B class" — it's 3.8B, and the proposal misclassifies it. At minimum-spec CPU-only inference, Phi-3-mini may never finish pre-voicing a zone. Minimum hardware CPU spec must be defined before any model recommendation is final.
Open Questions
| ID | Question | Raised by | Blocks |
|---|---|---|---|
| Q-R1-01 | Is the player's tell literacy model cross-NPC grammar or fresh-each-time? | Gestalt | Spike success criteria; tell re-voicing semantic family requirements |
| Q-R1-02 | Does re-voicing scope target observable behaviors only, or dialogue too? | Tyre | Model selection; prompt design; spike test plan |
| Q-R1-03 | Are tells a first-class protected field in NpcBlueprint, or editorial convention only? |
Paula, Mellanie, Ozzie (independent) | Tell protection architecture; implementation design |
| Q-R1-04 | What is the effective token budget for cultural injector clauses in the final prompt? | Miri | Injector depth feasibility; whether few-shot examples are needed |
| Q-R1-05 | What is the exact CPU specification for minimum-spec hardware? | Troblum | Model floor selection; queue scheduler design; Vulkan acceleration ROI |
Blockers Identified
B-1: Tell protection mechanism must be decided before implementation design begins
Paula, Mellanie, and Ozzie each identify tell-line structural separation as their primary blocker. Gestalt's semantic_core proposal is the most concrete answer on the table. This needs a decision before spike design. Affects: data model, cache format, injector prompt structure.
B-2: Minimum hardware CPU spec must be defined Troblum cannot sign off on any infrastructure feasibility assessment without this. The difference between a 2017 Core i3 and a 2022 Core i5 is 3× inference throughput — enough to determine whether the feature is functional on minimum spec at all. Affects: model selection, queue scheduling, Vulkan acceleration investment decision.
B-3: The Van Maanen's Star cultural injector must be rewritten before spike validation The proposal's example injector is factually wrong. Any spike test using it produces invalid quality assessments for Van Maanen's Star culture. Paula, Miri, and Mellanie all flag this. Mellanie is best positioned to write the replacement. This is a prerequisite for the spike, not a risk.
Implicit Decisions Surfaced
These positions were unanimous but not formally proposed as decisions. Flagging for Round 2 consideration.
IMP-1: Composable primitives as the primary rendering/output layer is rejected. (All 7 participants.)
IMP-2: LLM re-voicing (Option 3) with protected zones is the team's preferred direction. (All 7 participants favor; no dissent.)
IMP-3: Tell behaviors require architectural protection from general re-voicing. The mechanism is unresolved; the requirement is not. (All 7 participants.)
IMP-4: The existing zone RON base text quality is the reference bar — everything the pipeline produces is measured against the authored behavior lines. (Paula, Ozzie, Mellanie, Miri independently state this.)
Summary of Round 1
Round 1 produced unusually strong convergence on direction for a divergent inventory round. The team agrees on the destination (Option 3, LLM re-voicing, hybrid architecture) and disagrees productively on the mechanism (tell protection model, scope sequencing, injector depth).
The three prerequisites before Round 2 can produce implementable decisions:
- Tell data model decision — Is a
semantic_corefield or equivalent added to theTellstruct? This unlocks the entire tell-protection architecture debate. - Minimum hardware CPU spec — One number, from Jeroen or Tyre, unblocks Troblum's infrastructure design.
- Corrected Van Maanen's Star injector — Mellanie rewrites the Van Maanen's Star injector clauses (5-10 sentences) before the spike is designed. The existing culture RON
speechfields are useful source material but were not designed as LLM instructions.
The lore contamination risk (franchise bleed, anachronistic tech, social register drift) has been clearly taxonomized by Paula and Miri with concrete mitigation strategies. This is ready for Round 2 specification.
The base-text elevation question (Ozzie) is not a blocker but is a prerequisite for player experience quality. Current placeholder base texts ("tends crops in the field") must be elevated to "complete and spare" quality before the pipeline ships.
Qatux — 2026-03-07