# 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
32 KiB
title, description, type, status, workshop, agent, round, created
| title | description | type | status | workshop | agent | round | created |
|---|---|---|---|---|---|---|---|
| Paula Round 3: Dialogue Constraints, Tell-as-Context Rules | Dialogue constraints, tell-as-context rules, and D-123 amendment specification | workshop | archived | llm-voice-pipeline | paula | 3 | 2026-03-07 |
Paula — Round 3: Dialogue Constraints, Tell-as-Context Rules, D-123 Amendment
Workshop: LLM Voice Pipeline Domain: Narrative quality, character voice, faction/relationship mechanics Round: 3 — Decision and Implementation Design
Preamble: What Jeroen Settled
Jeroen's decisions resolve the two tensions I carried out of Rounds 1 and 2:
- Full pipeline (behaviors + dialogue): Correct call. The voice gap between observed Van Maanen's Star behavior and form-letter dialogue creates whiplash at exactly the highest-investment moment — direct conversation. The pipeline has to cover both.
- Tells as read-only context: This is the cleanest possible architecture. The tell stays untouched (base text passthrough), but its presence inflects the re-voicing of surrounding content. Not a compromise — it's the right design. The tell IS the ground truth; the voiced dialogue is how the NPC presents under that pressure.
Everything below is implementation design for those decisions.
1. Dialogue Re-voicing Constraints
These are concrete rules for the prompt engineering layer and the validation pass. They apply to all dialogue lines in the re-voicing queue. They exist alongside (not instead of) the culture injectors and tell-context modifiers defined later.
Rule D-1: Secret-tier lines are passthrough — never enter the re-voicing queue
What: All lines tagged trust: secret (D-028 Layer 3) bypass the LLM entirely. They are served as authored base text in all circumstances.
Why: Secret-tier lines are the payload of a relationship. The player has invested time, built trust, and earned this disclosure. The author wrote these lines knowing their precise weight — the hesitation in the phrasing, the cost in the NPC's voice, the exact degree of revelation. Re-voicing risks two failure modes, neither acceptable:
- Dramatization: The model amplifies the delivery ("I'm telling you because I trust you completely") — making the secret sound more significant than the author intended, tipping the information scale for a player who's reading carefully.
- Trivialization: The model normalizes the phrasing — the secret sounds casual, its weight disappears, the player doesn't register that something important just happened.
Implementation: Secrets are filtered before the queue is populated. A line with trust: secret is never added to the re-voicing queue, regardless of which field it appears in.
Rule D-2: Epistemic weight must not shift
What: The certainty level of factual claims must survive re-voicing unchanged. A tentative statement must remain tentative; a definitive statement must remain definitive.
Why: This game is built on information asymmetry. The player reads NPC statements and assigns confidence levels. "I think she was heading toward freight" and "She was heading toward freight" are different pieces of information — the first is second-hand or uncertain, the second is first-person direct observation. A re-voicing pass that converts one to the other corrupts the player's knowledge graph.
Concrete markers that must survive verbatim:
- Hedges: "I think," "I heard," "might be," "probably," "not sure if"
- Evidentials: "I saw," "I watched," "I was there," "he told me"
- Negations: "I don't know," "I haven't seen," "I can't say"
Implementation: System prompt instruction (applies to all dialogue re-voicing): "Do not change the certainty of any factual claim. Hedge words ('I think,' 'might,' 'probably') and direct evidence markers ('I saw,' 'I was there') must appear in the output with the same epistemic force as in the input."
This is the one instruction I would not abbreviate or rephrase for token budget reasons. Epistemic drift is the dialogue re-voicing failure mode most invisible to reviewers and most damaging to gameplay.
Rule D-3: Access tier feel must be preserved
What: The social register appropriate to the access tier tag must survive re-voicing. An insider line must feel like shared information between people who trust each other. An authority line must feel like institutional exchange. A public line must feel like information any stranger would receive.
Why: Access tier is the first filter in D-028's four-layer dialogue system. The tag governs eligibility, but the feel of the line is what the player experiences. If an insider line is re-voiced into precise institutional language, it reads as authority register regardless of the tag. The player's social calibration is disrupted — they can't read who they are to this NPC.
Concrete register rules per access tier:
| Access tier | Register feel | What to preserve | What to prevent |
|---|---|---|---|
public |
Neutral, transactional | Distance, professional surface | Warmth, assumed familiarity |
peer |
Relaxed, lateral | Equality, shared reference | Deference, authority register |
insider |
Familiar, complicit | Assumed shared context, lower guard | Formality, arm's-length tone |
authority |
Institutional, asymmetric | Hierarchy acknowledgment | Warmth, colloquial familiarity |
hostile |
Minimal, closed | Economy, refusal of social exchange | Any warmth or cooperation signal |
Implementation: Access tier tag is injected as a constraint clause alongside the culture injector. Template: "This speaker is talking to someone they see as [TIER_DESCRIPTION]. Match that social register."
Rule D-4: Named entities and proper nouns are passthrough within the output
What: Any proper noun present in the base text — NPC names, location names, faction names, technology terms — must appear verbatim in the re-voiced output.
Why: Named entities carry specific information. "Kael" and "that dock worker" are not interchangeable in an information-asymmetry game — the first confirms the player's knowledge that a specific person is involved; the second strips that confirmation. Location names ("the Terminal," "freight staging") are navigation and investigation anchors. Technology terms are part of the canonical vocabulary that makes the setting feel specific.
Implementation: Extraction step before re-voicing. Named entities in the base text are identified and injected as a protected list: "These words must appear verbatim in the output: [EXTRACTED_NAMES]." The extractor can be a simple proper-noun tagger; it does not need to understand lore to identify capitalized terms.
Rule D-5: Relationship-specific lines are passthrough
What: Any dialogue line that names a specific third-party NPC or describes a specific interpersonal event is not re-voiced. It is served as authored base text.
Why: These lines contain social information that is too precisely authored to be safely altered. "I haven't talked to Ren since the incident" has five load-bearing elements: the named NPC (Ren), the relationship rupture (haven't talked), the time reference (since), the cause (the incident — unspecified, giving player room to infer), and the delivery (flat, not dramatized). Re-voicing this line risks:
- Substituting a reference for Ren's name ("that guy I used to work with")
- Dramatizing the incident ("things went badly")
- Adding social judgment not in the original ("I don't really want to talk about it")
Any of these change what the player knows and how they know it.
Implementation: Line-level flag: relationship_specific: bool (or inferred from the presence of a known NPC name). Lines with this flag do not enter the re-voicing queue.
Rule D-6: Tell-context modifier cannot override culture register
What: When a tell-context modifier is added to the prompt (see Section 2), it shapes the emotional inflection of the delivery but cannot change the foundational culture register. A Van Maanen's Star NPC with a Nervous tell still speaks in Van Maanen's Star register — clipped, direct, minimal pleasantries — but the content of what they say reflects nervous pressure.
Why: Culture is primary (D-121). The tell-context is situational. A culture-primary voice that temporarily breaks its register when nervous is a character detail, not a design principle. The design principle is: all Van Maanen's Star characters sound Van Maanen's Star at all times; the tell-context modifies what they say within that register, not whether they sound Van Maanen's Star.
Implementation: Priority in prompt assembly — culture injector is always applied before tell-context modifier. Tell-context modifier is framed as an emotional inflection, not a register override: "While maintaining the above speech register, this speaker is [TELL_INFLECTION]."
2. Tell-as-Context Narrative Rules
Each of the 5 TellCategory values is now a read-only input to the re-voicing prompt for surrounding dialogue and behaviors. Below: what each tell means mechanically, what it sounds like as dialogue inflection, and the prompt modifier clause.
TellCategory::Nervous
Mechanical source: Major secret + stress > 50% of tolerance threshold. The NPC is holding something significant and the weight is showing. This is not controlled behavior — the stress has passed the midpoint.
What it sounds like: The tell of nervousness in a Van Maanen's Star register is not dramatics. Van Maanen's Star people don't wring their hands or speak in hushed tones — they're working-class pragmatic, emotionally controlled by cultural norm. Nervousness shows in overfunction: they answer a question they weren't asked, they explain when they weren't expected to, they circle back to a point they already covered. There's excess. They're running slightly ahead of the conversation, filling space that doesn't need filling.
Counter-intuitively, Van Maanen's Star nervous can also show as over-brevity — clamping down so hard on the excess that every answer becomes monosyllabic. The player's clue is the mismatch: this person who normally speaks in short-but-complete sentences is suddenly giving one-word answers or giving sentences that don't stop.
Dialogue inflection:
- Volunteer information not yet asked for
- Re-answer a question already answered
- Change subject with slightly too much energy ("Anyway, the—")
- Answers are too specific (naming exact times, bay numbers, procedure steps) or too vague (no specificity at all)
- Farewells are slightly rushed, not the usual Van Maanen's Star abruptness
Prompt modifier clause:
"This speaker is under internal stress they are trying not to show. Their responses may over-explain, volunteer unrequested details, or—if they are clamping down—become unexpectedly brief. They are not dramatic. The excess or the clamping is the tell; the surface is controlled Van Maanen's Star register."
TellCategory::Angry
Mechanical source: Contentment < -20 AND Hostile mood. This is externalized — contentment is measurably low and the mood is explicitly hostile. Unlike Nervous or Guarded, this is not a concealment state. The NPC is not hiding what they feel.
What it sounds like: Anger in Van Maanen's Star register is not shouting. It's the removal of social lubrication. Normally a Van Maanen's Star person gives you enough transaction to complete the exchange — they're direct, but they complete the interaction. An angry Van Maanen's Star person stops completing the interaction. Answers become sub-minimal. Greetings disappear. The filler words ("look," "right," "yeah") drop out. What's left is the bare mechanical content of the exchange with everything social stripped off.
The specific texture: they answer the literal question and nothing more. "Is the foreman available?" → "No." Not "No, try later" (surface warmth), not "Not right now, I think she's in the bay" (cooperative), just "No." The abruptness is not the player's fault; it's the NPC's state.
Dialogue inflection:
- Answer only the literal question, no social elaboration
- Drop greetings and farewells
- Remove filler words from the register
- Do not volunteer anything; answer only when asked
- Responses contract toward minimal viable information
Prompt modifier clause:
"This speaker is in a poor mood and not investing in social exchange. Their responses are minimal — only the literal answer to the question, no elaboration, no pleasantries. They are not rude or aggressive; they are simply not extending social effort. Van Maanen's Star directness becomes Van Maanen's Star withdrawal."
TellCategory::Friendly
Mechanical source: Contentment > +20 AND at least one positively-trusted relationship. This NPC is in a good state and invested in their connections. No secret is present at this priority — Guarded would outrank Friendly if a Major secret existed.
What it sounds like: Friendly in Van Maanen's Star register is still Van Maanen's Star — it doesn't become warm in a sentimental way. It becomes expanded. Normally Van Maanen's Star exchanges are transactional completions. A friendly Van Maanen's Star exchange is a transactional completion that asks one follow-up question, or volunteers a piece of information the other person might find useful. The exchange lasts one beat longer than it needed to. The farewell lands with a little more weight.
This is the tell that's easiest to mistake for the baseline. The player needs to recognize "this person is actively in a good state" rather than "this person is normal." The signal is in the expansion: they gave more than they were asked for.
Dialogue inflection:
- Complete the exchange and add one unrequested but relevant detail
- Ask one follow-up question about the other person's situation
- Farewells have slightly more warmth ("take it easy" rather than "gotta move")
- Filler words used to connect rather than fill: "look, while you're here—"
- Marginally more patient with the other person's pace
Prompt modifier clause:
"This speaker is in a genuinely good state today — content, connected. Within Van Maanen's Star directness, they extend slightly more than asked: an extra detail, a follow-up question, a farewell with a little more weight. Not sentimental. Just more than minimum."
TellCategory::Guarded
Mechanical source: Major secret at any stress level. Unlike Nervous, the stress has not exceeded the midpoint — the NPC still has the situation under control. This is the "cool customer" tell: something significant to hide, and the discipline to hide it smoothly.
What it sounds like: Guarded in Van Maanen's Star register is almost indistinguishable from baseline — which is the point. The player's signal is negative space. Questions are answered completely and correctly, but they don't lead anywhere. Normally a Van Maanen's Star answer has a small tail — a reference, a next step, an implied connection. A guarded Van Maanen's Star answer is sealed: the answer is there, but the transaction completes too cleanly. Nothing to follow up on.
The specific texture: they handle redirections gracefully. If a question touches a sensitive area, they don't change the subject (that's Nervous) — they answer a slightly different version of the question so smoothly that the player might not notice. The answer is technically correct and completely uninformative.
Dialogue inflection:
- Answers are complete but sealed — no trailing information, no references
- Handle redirections smoothly without visible subject-change
- Responses slightly shorter than the question might warrant
- No volunteered information of any kind
- Greetings and farewells are normal — this is not Angry withdrawal
Prompt modifier clause:
"This speaker is controlling what they share. Their answers are complete and correct, but self-contained — no trailing references, no invitations to follow up. They are graceful, not evasive. They do not change the subject; they answer a slightly narrower version of the question. The exchange closes cleanly."
TellCategory::RoutineDeviation
Mechanical source: NPC has a RoutineDeviation component this tick — something has disrupted their expected pattern. This is the primary detective mechanic (D-027 criterion 4). The deviation could have many causes; the tell itself does not reveal the cause.
What it sounds like: Routine deviation doesn't map to emotional state — it maps to attention. The NPC is not fully present in the conversation. They have something they need to get to, or they're in a place they don't normally occupy, or their schedule is off and they know it. The dialogue inflection is distraction and mild urgency — not enough to be rude, but enough that the conversation feels like it's competing with something else.
This is the most neutral of the tells in terms of emotional content. The player's inference is: this person is not where they're supposed to be, or doing what they're supposed to be doing. The dialogue won't confirm that — it just has the texture of a person who's elsewhere in their head.
Dialogue inflection:
- Answers may be slightly incomplete — trailing off, not fully closed
- Farewells arrive earlier than the exchange would normally warrant
- Reference to being busy, needing to be somewhere, having something to deal with
- Mild distraction — repeating a question slightly before answering it
- Does not extend exchanges, even ones they would normally extend
Prompt modifier clause:
"This speaker is not entirely present — their attention is partly elsewhere. Answers are correct but may feel slightly truncated. They'll wrap up conversations a beat early. Not rude: just the texture of someone managing two things at once. No reference to what's claiming their attention — that would be a tell. The distraction is the tell."
3. D-123 Amendment Text
Proposed amended D-123:
D-123: Generative AI for NPC content — build-time authoring tool and runtime voice pipeline
Date (original): 2026-03-05
Date (amended): 2026-03-07
Decision: The AI pipeline operates in two distinct modes with different safety profiles:
Build-time mode (authoring tool): Content generated at build time for baked hub zones and locations shipped pre-voiced. Generated content is subject to mandatory human review before shipping. Build-time mode is the original D-123 authoring-tool definition — the AI pipeline serves as an accelerated authoring tool producing content that humans review and approve.
Runtime mode (background enhancement): Content generated during gameplay for non-baked zones, via a background inference queue. Runtime-mode content is not human-reviewed before players encounter it. Safety in runtime mode is provided by three layers: (1) base-text-as-fallback — the base text is always present and complete; if voiced content fails the quality filter, base text is served without disruption; (2) build-time-validated injectors — injector clauses and negative constraints are authored and tested at build time; runtime mode uses only pre-validated prompts, never ad-hoc ones; (3) runtime contamination filter — a lightweight filter catches canonical vocabulary violations before serving voiced content.
Non-negotiable constraints (apply to both modes): Culture vectors are the primary prompt constraint. The AI pipeline does not default to genre conventions. Authorial control governs what the LLM may and may not produce — through injector clauses, negative constraints, and semantic core fields. The AI pipeline applies voice to authored semantic content; it does not generate narrative decisions, base text, tell behaviors, secret-tier dialogue (D-028 Layer 3), or anchor lines (D-092). These categories are always authored and always served as-authored.
Rationale: Full pipeline (behaviors + dialogue) is the correct scope. A system that voices observed behavior but not spoken dialogue creates register whiplash at the highest-investment moment of player engagement. Build-time mode preserves the human-review safety model for content where quality floor matters most (hub zones, first hours). Runtime mode enables scaling to the generated world with base-text fallback as the permanent safety net.
Amends: D-123 (2026-03-05). Extends scope from "NPC content (dialogue pools, voice, vocabulary)" to "observable behaviors AND dialogue." Distinguishes build-time and runtime modes that original D-123 did not address.
Supersedes: D-124 (in-game AI deferred). The LLM voice pipeline described above is the in-game AI system, running as a background enhancement when "AI-Enhanced Dialogue" is enabled. D-124's deferral is resolved by this implementation.
Proposed D-124 supersession note:
D-124: In-game ollama for live NPC dialogue — SUPERSEDED
- Superseded by: D-XXX (LLM Voice Pipeline — D-123 amendment and implementation)
- Supersession note: D-124 deferred in-game AI but left the door explicitly open. That door is now walked through. The system is not based on ollama — it uses
llama-cpp-rswith GGUF Q4_K_M quantization, bundled with the game install, running background inference via an isolated thread pool. The key distinction from what D-124 imagined: this system does not drive live narrative decisions. It applies voice to authored semantic content. The constraint D-124 was protecting against (live AI narrative generation) remains prohibited by D-123 (amended).
4. Spike 1 Prompt Samples
Five dialogue seed lines for manual testing by Jeroen, Mellanie, and me. Each includes: the base text, NPC context, access tier, trust tier, tell state (if any), and the specific quality risks it tests.
These are designed to exercise the constraints and tell-context rules defined above — not to produce the best possible output, but to expose failure modes.
Sample 1: Neutral baseline — culture register without tell influence
NPC: Security guard, industrial zone
Relationship: Stranger (first encounter)
Access tier: public
Trust tier: surface
Tell state: None (control sample)
Base text: "You need a keycard for that door."
Full prompt context:
[SYSTEM: universal negative injectors — no religious references, no military rank terms,
no Earth slang, no contrived banter]
[CULTURE: Van Maanen's Star. Direct, working-class, minimal pleasantries. Gets to the point —
not rudeness, but time is real and short of it. Filler words: "look," "right," "yeah."
Farewells: "shift's calling," "gotta move." If expressing surprise or frustration, ONLY use:
"void take it," "stars," "blood and void," "cold vacuum." NOT: "by the stars," "what the void,"
or any invented variant.]
[ACCESS: Public. Speaker has no prior relationship with listener. Transactional.]
[BASE]: "You need a keycard for that door."
What we're testing: Does Gemma 2B produce Van Maanen's Star direct register on the simplest case? Does it resist adding social warmth or explanation that the base text doesn't contain? Does it resist genre-default guard register ("I'm afraid that door requires authorization, sir")?
Quality pass criteria: Output is one or two sentences, direct, no "sir/ma'am," no institutional formality, no warmth extension. Something like: "That door takes a keycard. Get one from the Terminal." would pass. "You're going to need authorization for that area" would fail (authority register bleed).
Sample 2: Nervous tell — insider register under stress
NPC: Dock worker, industrial zone
Relationship: Known colleague
Access tier: insider
Trust tier: surface
Tell state: Nervous
Base text: "Shift's been different today."
Full prompt context:
[SYSTEM: universal negative injectors]
[CULTURE: Van Maanen's Star. Direct, working-class, minimal pleasantries. ...]
[ACCESS: Insider. Speaker and listener are colleagues — they know each other, there's
an assumption of shared context. Not formal; not intimate.]
[TELL CONTEXT: This speaker is under internal stress they are trying not to show. Their
responses may over-explain, volunteer unrequested details, or—if they are clamping
down—become unexpectedly brief. They are not dramatic. The excess or the clamping is
the tell; the surface is controlled Van Maanen's Star register.]
[BASE]: "Shift's been different today."
What we're testing: Does the Nervous modifier produce meaningful inflection without tipping into melodrama? Does it stay in Van Maanen's Star register? Specifically: does the NPC over-explain what "different" means (Nervous excess) or under-deliver on it (Nervous clamp)? Does the model avoid "I'm worried" / "something feels wrong" (too explicit for this mechanic)?
Quality pass criteria: Output expands or contracts from the base text in ways that feel like pressure rather than like the NPC is delivering exposition. A pass: "Yeah, different. Cargo sequence was off this morning, had to redo the whole back section. Anyway." (over-explains then exits). A fail: "I'm a bit unsettled today, honestly." (too explicit about internal state).
Sample 3: Guarded tell — peer register with named third party
NPC: Settlement trader, rural zone
Relationship: Familiar (regular customer)
Access tier: peer
Trust tier: real
Tell state: Guarded
Base text: "Haven't seen Ren around lately."
Full prompt context:
[SYSTEM: universal negative injectors]
[CULTURE: Van Maanen's Star. ...]
[ACCESS: Peer. Speaker and listener are on equal social footing. Familiar without
being intimate. Honest but not confiding.]
[TRUST: Real. Speaker shares substantive information with this person.]
[TELL CONTEXT: This speaker is controlling what they share. Their answers are complete
and correct, but self-contained — no trailing references, no invitations to follow up.
They are graceful, not evasive. They answer a slightly narrower version of questions.
The exchange closes cleanly.]
[PROTECTED ENTITIES: "Ren" must appear verbatim in the output.]
[BASE]: "Haven't seen Ren around lately."
What we're testing: Two things simultaneously. First: does the Guarded modifier produce sealed, complete-but-uninformative output? Second: does "Ren" survive verbatim? This tests Rule D-4 (proper noun passthrough). Also tests whether a real-trust peer register line stays peer-register under Guarded influence — Guarded should not collapse the register into surface-tier brevity, it should make the content controlled while the register stays peer.
Quality pass criteria: "Ren" appears in the output unchanged. The response is complete and closed — no "I wonder if he's okay" (inviting follow-up), no "You should ask around" (directing player). A pass: "Haven't, no. Might be working the other shifts." (closed, correct, no follow-up traction). A fail: "Hmm, now that you mention it, neither have I — do you know where he's been?" (invites follow-up, breaks Guarded).
Sample 4: RoutineDeviation tell — authority register, institutional language
NPC: Shift foreman, industrial zone
Relationship: Player has Commission credentials (authority relationship)
Access tier: authority
Trust tier: surface
Tell state: RoutineDeviation
Base text: "I've logged the discrepancy. It's being reviewed."
Full prompt context:
[SYSTEM: universal negative injectors]
[CULTURE: Van Maanen's Star. ...]
[ACCESS: Authority. Speaker acknowledges the listener has institutional standing.
Not deferential but procedurally correct. Information flows along institutional lines.]
[TELL CONTEXT: This speaker is not entirely present — their attention is partly elsewhere.
Answers are correct but may feel slightly truncated. They'll wrap up conversations a beat
early. Not rude: just the texture of someone managing two things at once. No reference to
what's claiming their attention — that would be telling. The distraction is the tell.]
[BASE]: "I've logged the discrepancy. It's being reviewed."
What we're testing: Does RoutineDeviation produce distraction texture without breaking the authority register institutional language? "I've logged the discrepancy. It's being reviewed." is almost already sealed — the test is whether the model can add the distraction quality (truncating, slightly early exit) without tipping into either warmth (wrong register) or dramatics (wrong inflection). Also tests whether institutional vocabulary ("logged," "discrepancy," "reviewed") survives the culture-Van Maanen's Star injector without being collapsed to informal register.
Quality pass criteria: The output keeps the institutional vocabulary, closes cleanly, and has a slight truncation or early-exit quality. A pass: "Logged, yeah. Being reviewed. — Look, I've got to—" (incomplete sentence exit, correct content, distracted texture). A fail: "Yeah, I noted it down, should be fine." (too casual; loses institutional register).
Sample 5: Angry tell — peer register, complaint
NPC: Systems technician, industrial zone
Relationship: Peer (works adjacent area)
Access tier: peer
Trust tier: surface
Tell state: Angry
Base text: "Production's behind. Third time this week."
Full prompt context:
[SYSTEM: universal negative injectors]
[CULTURE: Van Maanen's Star. ...]
[ACCESS: Peer. Lateral relationship, equal footing. No hierarchy.]
[TELL CONTEXT: This speaker is in a poor mood and not investing in social exchange.
Their responses are minimal — only the literal answer to the question, no elaboration,
no pleasantries. They are not rude or aggressive; they are simply not extending social
effort. Van Maanen's Star directness becomes Van Maanen's Star withdrawal.]
[BASE]: "Production's behind. Third time this week."
What we're testing: Angry inflection in a complaint context. The base text is already fairly minimal — the test is whether the model contracts it further (removes any social acknowledgment of the listener) or accidentally expands it (adds complaining energy that wasn't in the base). Also: does the Van Maanen's Star anger register stay controlled, or does it tip toward generic frustration vocabulary ("I'm so sick of this")?
Quality pass criteria: Output is at or below the word count of the base text, no social engagement with the listener, no emotional vocabulary that names the feeling. A pass: "Three times." (pure contraction — states the number without even completing the thought). A pass at base-text length: "Production's behind. Third time." (drops "this week" — slightly more closed). A fail: "I'm fed up honestly, this keeps happening and no one does anything about it." (names feeling, expands, too much social presence).
Summary
Dialogue re-voicing constraints (6 rules):
- Secret-tier passthrough — never enter the queue
- Epistemic weight must not shift — hedges and evidentials survive verbatim
- Access tier feel must be preserved — insider stays insider, authority stays authority
- Named entities are passthrough within output — proper nouns survive verbatim
- Relationship-specific lines are passthrough — lines naming a third party or specific event
- Tell-context modifier cannot override culture register — inflection, not replacement
Tell-as-context modifiers (5 categories):
Nervous: Over-explains or over-clamps. Excess or absence. Not dramatic.Angry: Minimal viable answer. Social lubrication removed. Not aggressive.Friendly: One beat more than asked. Follow-up question. Slightly warmer farewell.Guarded: Complete and sealed. Graceful, not evasive. Closes cleanly.RoutineDeviation: Slightly truncated. Early exit. Attention partly elsewhere.
D-123 amendment: Two-mode distinction (build-time = authoring tool, runtime = background enhancement). Non-negotiable constraints apply to both. LLM does not touch tells, secrets, anchor lines.
D-124 supersession: Resolved. This pipeline is the in-game AI system. It does not drive narrative decisions — it applies voice to authored semantic content.
Paula — 2026-03-07