docs(design): add smuggler voice card and moral arc spec

Wave 4 deliverable for #382 (subsumes #310):
- Voice card: register parameters, 5 anchors, 4 anti-patterns, paired
  comparison examples, display constraints, authoring checklist
- Moral arc: 4 phases (Comfort→Doubt→Reckoning→Compromise), FactId
  gates, monologue trigger rules, Kael intersection mapping

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-12 18:12:31 +01:00
co-authored by Claude Opus 4.6
parent d9448b5af0
commit d06c0e0f4e
2 changed files with 664 additions and 0 deletions
+369
View File
@@ -0,0 +1,369 @@
# Smuggler Moral Arc Spec
**v0.1 Content Design Document** | Ticket: #382 | Subsumes: #310 (Character voice speech patterns)
---
## 1. Purpose
This document specifies the smuggler's 4-phase moral trajectory through the v0.1 vertical slice. The arc is tracked via the `moral_weight` role-perspective key in `EntityKnowledge.known_attributes` and is driven by authored content triggers, not emergent calculation.
The moral arc answers the smuggler's central question: **"Am I responsible for what happens to the people around me?"** The detective's arc (unspecified here) would answer a different question -- "Am I justified in what I'm doing to solve this case?" Only the smuggler's arc is defined in this document.
**Relationship to the dual-lens system:** The smuggler's moral arc creates the emotional engine that drives monologue voice shifts, NPC interaction tone changes, and player decision framing. It is the content-side complement to the tag-based dialogue system defined in the [Dual Lens Authoring Guide](dual-lens-authoring-guide.md). Where the authoring guide defines *how* content is selected and displayed, this document defines *what emotional trajectory* that content traces.
**Key design principles:**
- `moral_weight` is a **content key, not a schema key** -- it lives in `EntityKnowledge`, updated by authored content triggers, not calculated by the server
- The arc is **authored, not emergent** -- specific FactIds gate specific transitions
- Phase transitions are **irreversible** within a playthrough
- The smuggler's moral arc is **personal** (complicity, loyalty, consequences) while the detective's would be **institutional** (duty, jurisdiction, compromise)
---
## 2. The 4 Phases
### Phase 1: Comfort
**Emotional state:** Pragmatic rationalization. The operation is manageable. The money helps. The people are fine. "This is a service. Nobody's getting hurt."
**`moral_weight` value range:** `innocent` to `peripheral`
At session start, the smuggler's `moral_weight` assessments of NPCs cluster in the comfortable end: Naia is `innocent`, Kael is `willing` (fully aware participant, no guilt needed), Voss is `complicit` (chose this, not the smuggler's problem), Drin is `peripheral` (barely on the radar). The smuggler is not interrogating these assessments. They are background assumptions.
**Observable behavioral shifts:**
- Monologue is matter-of-fact, operationally confident
- NPC observations are fond or neutral -- no anxiety coloring
- Operational thinking dominates: schedules, windows, routes
- Self-reference is minimal -- the smuggler is not thinking about herself
**Transition trigger:** The smuggler encounters evidence that the operation has a human cost she had not been weighing. Specific gates:
- `smuggler.sees.naia_worry` -- Naia Tamm's visible stress about Kael's late nights
- `smuggler.notices.maret_anxiety` -- Maret's nervous glances at the manifest screen
- `smuggler.hears.pell_fear` -- Pell's voice shaking during a routine ring check-in
Any one of these FactIds, once confirmed, opens the gate to Doubt. The first one observed is sufficient.
**Example monologue lines:**
> *"Transition's in twenty. Voss kept the window clean. Another smooth run."*
> *"Kael's got it handled. He always does. Good partner to have on the dock."*
**Key NPC interactions:**
- **Kael:** Warm, reliable, no subtext. Phase 1 is the baseline the player will miss when it's gone.
- **Voss:** Functional annoyance. The smuggler sees Voss as a tool, not a person with stakes.
- **Naia Tamm:** Background warmth. The smuggler knows Naia through Kael but is not yet thinking about what the operation means for her.
---
### Phase 2: Doubt
**Emotional state:** Questions the rationalization. "Nobody's getting hurt -- except everyone adjacent to this." The smuggler begins noticing the human cost she previously filtered out.
**`moral_weight` value range:** `peripheral` to `complicit`
The smuggler's assessments start shifting. Naia's `moral_weight` stays `innocent`, but the smuggler now *feels* that innocence as an accusation. Maret might shift from `peripheral` to `complicit` in the smuggler's eyes -- not because Maret has done anything wrong, but because the smuggler is now aware that Maret is being forced to file clean reports on dirty manifests. The smuggler's own complicity becomes visible through the lens of other people's discomfort.
**Observable behavioral shifts:**
- Monologue gains reflective undertones -- pauses, qualifications, second thoughts
- Observations of NPCs pick up emotional subtext that was invisible in Phase 1
- Operational confidence wavers -- the smuggler starts noticing risk she used to dismiss
- Self-reference increases slightly: physical sensation of unease ("tight feeling in my chest," "couldn't eat this morning")
**Transition trigger:** A specific harm becomes undeniable. The smuggler sees a direct consequence of the operation on someone she cares about. Specific gates:
- `smuggler.witnesses.kael_stress` -- Kael's behavioral tells escalate beyond "distracted" to visibly frightened
- `smuggler.learns.naia_confided_sera` -- The smuggler discovers (through observation or dialogue) that Naia has been confiding in Sera about Kael
- `smuggler.sees.drin_breaking` -- Drin's inspection compromises become visible as human suffering, not just operational risk
Any one of these FactIds, once confirmed, opens the gate to Reckoning.
**Example monologue lines:**
> *"Naia was at the bar again tonight. Waiting for Kael. She looked... tired. Does she know? No. But she feels it."*
> *"Maret double-checked the manifest before she filed it. She used to just sign. Now she reads every line. That's on us."*
**Key NPC interactions:**
- **Kael:** The smuggler starts reading Kael's stress not as operational friction but as personal cost. "Kael's distracted" becomes "Kael's scared."
- **Naia Tamm:** The smuggler begins avoiding Naia. Not out of guilt exactly -- out of the pre-guilt awareness that guilt is coming.
- **Pell:** If the smuggler has observed Pell's fear, Pell becomes a mirror: "That could be me. That could be any of us."
---
### Phase 3: Reckoning
**Emotional state:** Cannot rationalize. The smuggler must choose: continue, reform, or exit. A specific harm has materialized -- someone the smuggler cares about has been damaged by the operation, and the smuggler's actions contributed.
**`moral_weight` value range:** `complicit` to `compromised`
The smuggler's assessments are now sharp-edged. Kael is no longer `willing` (comfortable participant) but `compromised` (trapped). Naia's `innocent` status now reads as indictment. The smuggler's own position is `complicit` at minimum -- the question is whether it crosses to `compromised`.
**Observable behavioral shifts:**
- Monologue is conflicted and sharp -- fragments hit harder, pauses are loaded
- The smuggler's voice loses its operational ease; confidence is replaced by urgency
- NPC observations are filtered through moral cost: "Is this my fault?"
- Operational thinking shifts from "is this safe?" to "is this right?"
- Self-reference spikes: the smuggler can no longer avoid herself
**Transition trigger:** The smuggler makes a definitive choice about the situation. This is a player decision, not an automatic transition. Specific gates:
- `smuggler.decides.triangle1_path` -- The player commits to a path in the Triangle 1 escalation fork (back Voss, back Nils, or stay neutral)
- `smuggler.confronts.kael` -- The smuggler directly addresses Kael about the unauthorized contact
- `smuggler.decides.pell_fate` -- If Pell's wavering comes to a head, the smuggler chooses to support, report, or abandon Pell
The transition to Compromise is gated by one of these decisions being made. The smuggler must act, not just observe.
**Example monologue lines:**
> *"I told Kael to push back on Nils. Now Nils is angry, and Kael's the one standing in front of it. I did that."*
> *"Two years I told myself it was just containers. It was never just containers. It was Kael, and Naia, and Maret, and Drin, and everyone who has to live in the wake of what we move."*
**Key NPC interactions:**
- **Kael:** THE FRIEND contradiction is at peak intensity. The smuggler's moral reckoning and Kael's trust erosion are the same events seen from different angles (see Section 5 below).
- **Naia Tamm:** If the smuggler encounters Naia during Reckoning, the monologue fires guilt-loaded lines. Naia's presence is an accusation without words.
- **Voss:** The smuggler may see Voss not as a tool anymore but as another person trapped. Or may see Voss as the reason the trap exists. Depends on the player's path.
---
### Phase 4: Compromise
**Emotional state:** Whatever the player decided, the cost is visible. The question becomes: "Can I live with it?" Some damage is done. Some relationships are changed. The smuggler settles into a new moral equilibrium that is heavier than the old one.
**`moral_weight` value range:** `compromised` to `willing`
This is the final assessment. The smuggler knows what she is now. The `moral_weight` of specific NPCs may shift based on the player's choices -- Kael might move from `compromised` back to `willing` if the smuggler helped him, or to `innocent` (victim) if the smuggler reported him. The smuggler's own moral position is whatever she chose, and the monologue reflects the weight of it.
**Observable behavioral shifts:**
- Monologue is quiet and weighted -- fewer fragments, more silence between thoughts
- The operational ease of Phase 1 is gone permanently; the smuggler works with awareness now
- NPC observations carry the full history: every warm interaction is filtered through knowledge of cost
- Self-reference is present but controlled: the smuggler has made peace or is learning to
**Transition trigger:** None. This is the final phase of v0.1. The arc does not resolve -- it settles. The 30-minute session ends with the smuggler carrying whatever she chose.
**Example monologue lines:**
> *"Kael's at the dock. Same jokes. Same routine. I know what it costs now. Both of us do."*
> *"The freight bay hums the way it always has. Recycled air, cargo lubricant. It used to smell like home. Now it smells like what I chose."*
**Key NPC interactions:**
- **Kael:** Post-confrontation equilibrium. If the smuggler chose understanding (Path A), Kael is cautious but present. If betrayal (Path B), Kael is hostile or absent. If observation (Path C), the tension simmers.
- **Naia Tamm:** The smuggler's guilt about Naia crystallizes. Naia is still innocent. The smuggler is not.
- **The operation:** Every container, every manifest, every shift transition now carries the weight of awareness. The smuggler can still do the job. But the job is different now.
---
## 3. FactId Integration
These are the smuggler-specific FactIds that track moral arc progression. They are the information states that gate phase transitions. FactIds are populated by the knowledge graph when the smuggler observes, learns, or decides specific things.
### Phase 1 -> Phase 2 Gates (Comfort -> Doubt)
| FactId | Source | What It Tracks |
|--------|--------|----------------|
| `smuggler.sees.naia_worry` | Direct observation: Naia Tamm at bar, visibly distressed | The smuggler notices that the operation's stress is reaching Kael's partner |
| `smuggler.notices.maret_anxiety` | Direct observation: Maret double-checking manifests | The smuggler sees institutional pressure on a colleague who did not choose this |
| `smuggler.hears.pell_fear` | Overheard or dialogue: Pell's voice during ring check-in | The smuggler recognizes fear in a ring member who is close to breaking |
**Gate logic:** ANY one of these FactIds confirmed = Doubt phase begins. The first observation of human cost cracks the rationalization.
### Phase 2 -> Phase 3 Gates (Doubt -> Reckoning)
| FactId | Source | What It Tracks |
|--------|--------|----------------|
| `smuggler.witnesses.kael_stress` | Direct observation: Kael's tells escalate (lattice checking, shortened interactions, spatial deviation) | Kael's behavioral deterioration is now unmissable |
| `smuggler.learns.naia_confided_sera` | Dialogue or observation: Naia has spoken to Sera about Kael | The smuggler discovers that the worry has reached the Commission's orbit |
| `smuggler.sees.drin_breaking` | Direct observation: Drin's inspection compromises visible as human suffering | The operational asset is a person in pain |
| `smuggler.knows.ring_volume_escalation` | Dialogue: Devra relays Nils's doubled-volume order | The operation is escalating beyond the smuggler's comfort |
**Gate logic:** ANY one of these FactIds confirmed = Reckoning phase begins. One undeniable harm materializes.
### Phase 3 -> Phase 4 Gates (Reckoning -> Compromise)
| FactId | Source | What It Tracks |
|--------|--------|----------------|
| `smuggler.decides.triangle1_path` | Player choice: Triangle 1 escalation fork (Path A/B/C) | The smuggler commits to backing Voss, backing Nils, or staying neutral |
| `smuggler.confronts.kael` | Player choice: Initiates confrontation dialogue with Kael about the unauthorized contact | The smuggler addresses the FRIEND contradiction directly |
| `smuggler.decides.pell_fate` | Player choice: Responds to Pell's wavering (support, report, or abandon) | The smuggler makes a decision about a vulnerable ring member |
**Gate logic:** ANY one of these FactIds confirmed = Compromise phase begins. The smuggler must act to enter the final phase.
### Supporting FactIds (Not Phase-Gating, But Monologue-Relevant)
| FactId | What It Tracks |
|--------|----------------|
| `smuggler.knows.kael_exit_attempt` | The smuggler has discovered Kael's unauthorized contact and infers exit attempt |
| `smuggler.knows.sera_commission` | The smuggler is aware Sera is Commission (always true at start, but awareness sharpens during Doubt) |
| `smuggler.sees.torek_spending` | The smuggler notices Torek's visible consumption |
| `smuggler.feels.location_contamination` | The smuggler returns to a location (bar, dock) after a moral phase transition and the monologue notes the changed feeling |
| `smuggler.assesses.voss_stability` | The smuggler evaluates Voss's cover integrity |
---
## 4. Monologue Trigger Rules
Moral-arc-relevant monologue fires under the following conditions. These are not exhaustive -- other monologue triggers exist for operational, atmospheric, and NPC-observation content. These rules govern specifically the lines that track the moral arc.
### Phase Transition Moments
When a phase-gating FactId is confirmed, the monologue system fires a phase-transition line. These are the highest-priority monologue events in the pool.
**Trigger type:** `phase_transition`
**Priority:** Maximum (overrides queued environmental or routine monologue)
**Example (Comfort -> Doubt):**
> *"Naia was at the bar again. Looking at the door every time it opened. Waiting for Kael. ...She doesn't know why he's late. I do."*
**Example (Doubt -> Reckoning):**
> *"Kael's hands were shaking. Not the lattice checking -- his hands. That's not nerves. That's fear."*
**Example (Reckoning -> Compromise):**
> *"I chose. For better or worse, I chose. Now I get to live with it."*
### Post-Decision Reflection
After the player makes a decision that gates a phase transition (Triangle 1 fork, Kael confrontation, Pell decision), a reflective monologue fires within 30-60 seconds. This is the "consequences landing" moment.
**Trigger type:** `post_decision`
**Priority:** High (fires after decision dialogue concludes, during next idle moment)
**Delay:** 30-60 seconds post-decision (let the player process the dialogue first)
**Example (post-Triangle 1, Path A):**
> *"Told Kael to push back. He didn't want to. Did it anyway, because I asked. If Nils comes down on him... that's on me."*
### Observing Consequences of Own Choices
After a decision has been made, the smuggler's monologue fires when she observes the downstream effects. These are delayed consequence lines -- they fire minutes after the decision, when the player encounters the result.
**Trigger type:** `observe_consequence`
**Prerequisite:** Phase-gating FactId + specific consequence state
**Example (Path B consequence -- Voss rattled):**
> *"Voss is sitting alone in the break room. Staring at his lattice. He did what I asked him to do. Look at him."*
### Kael Contradiction Discovery Intersection
When the smuggler discovers Kael's unauthorized contact (the FRIEND contradiction), the moral-arc monologue and the FRIEND-arc monologue fire in sequence. The FRIEND line fires first (shock, confusion). The moral-arc line fires second (guilt, responsibility).
**Trigger type:** `friend_contradiction` + `moral_reflection`
**Sequence:**
1. FRIEND line: *"Kael? In the corridor? Who the hell is that with him?"* (immediate)
2. Moral-arc line: *"He's trying to get out. And I'm the reason he needs to."* (15-30 second delay)
The second line only fires if the smuggler is in Phase 2 (Doubt) or later. If still in Phase 1 (Comfort), only the FRIEND line fires -- the smuggler has not yet developed the moral lens to process the observation as self-implication.
---
## 5. Kael Intersection
The smuggler's moral arc and Kael's 5-phase contradiction arc (defined in [kael-davan.md](../wiki/npcs/kael-davan.md)) are two perspectives on the same events. The following table maps the intersection:
| Kael Phase | Kael State | Smuggler Moral Phase | Smuggler State | Shared Event |
|------------|------------|---------------------|----------------|-------------|
| **1: Comfort** | Warm, reliable, present | **1: Comfort** | Operationally confident, fond | Baseline: both characters comfortable. No tension. |
| **2: First Crack** | Lattice checking, shortened interactions | **1: Comfort** or **2: Doubt** | Noticing concern but not yet connecting to moral cost | Kael's behavioral tells begin. Smuggler may still be in Comfort if she has not yet seen Naia's worry or other Phase 1->2 gates. |
| **3: The Observation** | Corridor B-7, unknown contact, spatial deviation | **2: Doubt** or **3: Reckoning** | Shock at Kael's contradiction; if in Doubt, the moral implications land immediately | THE FRIEND contradiction moment. This is the hinge. The smuggler's moral phase determines whether she reads this as betrayal (Phase 1-2: "Kael broke protocol") or as consequence (Phase 2-3: "Kael is trying to get out because of what we're all doing"). |
| **4: Confrontation** | Evasion, the tell confirmed, forced casualness | **3: Reckoning** | The smuggler's confrontation with Kael IS the moral reckoning -- personal loyalty vs. operational security vs. the cost of the operation | The confrontation dialogue. Kael's evasion forces the smuggler to decide: press harder, show mercy, or walk away. Each choice is a moral position. |
| **5: Contaminated Trust** | Surface normal, warmth locked out or cautiously restored | **4: Compromise** | Living with whatever she chose. Every interaction with Kael carries the weight of the decision. | The new equilibrium. Kael's Phase 5 and the smuggler's Phase 4 are the same state: something is permanently different, and both characters know it. |
### Why This Intersection Matters
The smuggler's moral reckoning and Kael's trust erosion are **the same events seen from different angles**. The smuggler does not have a moral arc separate from her relationships -- the relationships ARE the moral arc. Kael's contradiction is not just a plot event; it is the moment the smuggler's rationalization meets reality.
This means content authors must write the intersection, not just the individual arcs:
- Every Kael-related smuggler monologue line must be aware of the smuggler's current moral phase
- Every confrontation dialogue option must reflect both the FRIEND arc state and the moral arc state
- The "contaminated trust" of Kael Phase 5 and the "compromise" of Smuggler Phase 4 must feel like the same emotional register approached from two directions
---
## 6. Divergence from Detective
At each phase, the smuggler's moral arc creates maximum distance from the detective's analytical trajectory. The following table cross-references the divergence escalation curve from the [Dual Lens Authoring Guide](dual-lens-authoring-guide.md), Chapter 4.
| Phase | Smuggler Moral Position | Detective Analytical Position | Divergence Type | Minutes |
|-------|------------------------|------------------------------|----------------|---------|
| **1: Comfort** | "Nobody's getting hurt." | "Manifest discrepancies require investigation." | Minimal: both characters are in their comfort zones. Difference is tonal, not emotional. | 0-10 |
| **2: Doubt** | "Maybe people ARE getting hurt." | "Behavioral patterns suggest a network. Building the case." | Growing: the smuggler is beginning to question; the detective is beginning to confirm. One moves toward uncertainty, the other toward certainty. | 10-20 |
| **3: Reckoning** | "I am responsible for this harm." | "The evidence supports formal action. But the subjects are people, not entries." | Maximum: the smuggler is inside the moral crisis. The detective may be starting to feel the human cost of the investigation, but from the outside. Same events, opposite emotional positions. | 20-25 |
| **4: Compromise** | "I chose. I live with it." | "The investigation produced results. But at what cost?" | Settled: both characters carry weight, but different weight. The smuggler's compromise is personal (complicity). The detective's doubt is institutional (was this right?). | 25-30 |
### What This Means for Content
The maximum divergence point (Phase 3, minutes 20-25) is where the dual-lens experience creates its strongest emotional contrast. A player who has played the smuggler path and then plays the detective path will experience the same 5-minute window as two completely different emotional events:
- **As smuggler:** "I am watching my world break apart because of choices I made."
- **As detective:** "I am closing in on a case. The suspects are nervous. The evidence is mounting."
The smuggler's moral arc is the engine that makes this divergence feel earned, not arbitrary. The divergence is not "different information" -- it is "different moral position relative to the same information."
---
## 7. Content Requirements
### Lines Per Phase
| Phase | Monologue Lines | Type Breakdown |
|-------|----------------|----------------|
| **Comfort** | 6-8 | 3-4 operational confidence, 2-3 NPC fondness, 1 atmospheric |
| **Doubt** | 8-10 | 3-4 reflective concern, 2-3 NPC moral observation, 2 self-questioning, 1 phase-transition |
| **Reckoning** | 6-8 | 2-3 confrontation reaction, 2-3 post-decision reflection, 1-2 consequence observation, 1 phase-transition |
| **Compromise** | 4-6 | 2-3 settled weight, 1-2 contaminated observation, 1 atmospheric (changed), 1 phase-transition |
| **Total** | **24-32** | Moral-arc-specific monologue lines |
These counts are for **moral-arc-specific** monologue only. The smuggler's total monologue pool is larger (operational observations, environmental atmosphere, general NPC reactions). The moral arc lines are the subset that tracks the emotional trajectory.
### What Authors Need to Produce Per Phase
**Phase 1 (Comfort):**
- Operational monologue lines that demonstrate ease and confidence
- NPC observation lines with no moral coloring
- 0 moral-weight-shift lines (the smuggler is not thinking about it)
**Phase 2 (Doubt):**
- Reflective monologue lines that introduce moral questioning
- NPC observation lines with new emotional subtext (re-seeing familiar faces through a cost lens)
- 1 phase-transition line (the moment Doubt begins)
- Self-questioning lines that use physical sensation, not abstract ethics
**Phase 3 (Reckoning):**
- Confrontation-adjacent lines (pre-decision tension, post-decision landing)
- Consequence observation lines (seeing the results of choices)
- 1 phase-transition line (the moment Reckoning begins)
- Lines must work across all Triangle 1 fork paths (A/B/C) with path-specific variants
**Phase 4 (Compromise):**
- Quiet, weighted lines that carry full history
- Contaminated-observation lines (same locations/NPCs, new subtext)
- 1 phase-transition line (the moment Compromise settles)
- Atmospheric lines that echo Phase 1 with changed meaning
---
## 8. Subsumption Note
This spec subsumes ticket #310 (Character voice speech patterns). The voice card ([smuggler-voice-card.md](smuggler-voice-card.md)) handles speech patterns -- register parameters, voice anchors, anti-patterns, display constraints, and the authoring checklist. This document handles the moral trajectory -- the 4-phase arc that determines *what the smuggler thinks about*, not *how she thinks*.
Together, the two documents define the complete smuggler authoring framework:
- **Voice card** = HOW (fragments, feeling-first, first names, Krenn substrate vocabulary)
- **Moral arc** = WHAT (the progression from comfort through doubt and reckoning to compromise)
Content authors use both documents together. A smuggler monologue line must pass the voice card's checklist AND reflect the correct moral arc phase. A line that sounds right but belongs to the wrong phase is as broken as a line that sounds wrong.
---
**Cross-References:**
- [Smuggler Voice Card](smuggler-voice-card.md) -- Voice register parameters and authoring checklist
- [Dual Lens Authoring Guide](dual-lens-authoring-guide.md) -- Full dual-lens framework, divergence curve (Chapter 4), voice signatures (Chapter 7)
- [Kael Davan](../wiki/npcs/kael-davan.md) -- Kael's 5-phase contradiction arc, smuggler FRIEND intersection
- [Entity Attributes](../wiki/knowledge/entity-attributes.md) -- `moral_weight` key definition and role-perspective interpretation
- [Round 1 Gestalt](../workshops/v01-content-scoping/round1-gestalt.md) -- Original `moral_weight` key proposal and smuggler attribute mapping
- [Round 1 Paula](../workshops/v01-content-scoping/round1-paula.md) -- Smuggler moral arc phases, smuggler-lens sections
- [Round 2 Paula](../workshops/v01-content-scoping/round2-paula.md) -- Role-perspective keys as content not schema, generic assessment architecture
---
**End Smuggler Moral Arc Spec**
+295
View File
@@ -0,0 +1,295 @@
# Smuggler Voice Card
**Authoring Reference** | Ticket: #382 | Subsumes: #310 (Character voice speech patterns)
---
## 1. Purpose
This document is the single authoring reference for the smuggler's internal monologue voice. Every monologue line written for the smuggler character must pass the parameters, anchors, and anti-patterns defined here. The voice card is used by:
- **Content authors** writing monologue pools, dialogue reactions, and environmental observations
- **Reviewers** checking voice consistency across content packs
- **The generation pipeline** (v0.2+) as the style target for expanded monologue variants
The detective voice card is the structural mirror. Where this card defines fragments, feeling-first, and first names, the detective card defines complete sentences, analysis-first, and surnames. Both cards reference the same triggers and situations so that paired comparison is always visible. For the full dual-lens framework, see [Dual Lens Authoring Guide](dual-lens-authoring-guide.md), Chapter 7.
---
## 2. Smuggler Voice Register
**One-line summary:** Watches people, not systems. Thinks in fragments. Worries about friends the way a dock worker worries -- practically, physically, with the knot in the stomach, not the word for it.
### Voice Parameters
| Parameter | Value | Example |
|-----------|-------|---------|
| **Sentence length** | Short. Fragments welcome. Rarely more than 2 sentences per monologue fire. | *"Kael's here. Good."* |
| **Vocabulary** | Concrete, physical, sensory. Trade jargon (containers, manifests, shifts, routes) without explaining it. No institutional language. | *"Recycled air and cargo lubricant."* Not: "Standard atmospheric recycling." |
| **Emotional register** | Feeling-first, analysis second. Names the gut before the brain catches up. | *"Starting to worry"* before *"something's off."* |
| **Relationship mode** | First-name basis with everyone. People defined by connection, not role. | *"Kael"* not *"Davan."* *"Voss is tense"* not *"the shift supervisor seems agitated."* |
| **Observation priority** | People > environment > objects. Notices body language before noticing cargo. | *"Kael keeps checking his lattice"* before *"Container 4471 is still in temp."* |
| **Operational thinking** | Present when thinking about the job. Time-aware, route-aware, schedule-aware. Filtered through "is this safe for my people?" | *"Transition window opens in fifty minutes. After that, twenty minutes of reduced oversight."* |
| **Self-reference** | Rare. The smuggler thinks about others, not herself. When self-reference occurs, it's through physical sensation. | *"My stomach dropped"* not *"I feel betrayed."* |
| **Humor** | Dry, situational, understated. Dark when stressed. Never witty -- that's a different register. | *"Home sweet home"* about a cargo bay. |
### What the Smuggler Does NOT Do
- Does not analyze systems.
- Does not use institutional vocabulary.
- Does not explain things to herself that she already knows.
- Does not monologue in paragraphs.
### Krenn Substrate Vocabulary
The smuggler is Krenn System, born on Station Sova. Her vocabulary carries Krenn cultural markers:
- **First-name-primary**: Krenn convention is compact names, first-name basis in all social contexts. Surnames exist for records, not for conversation.
- **Trade jargon as native language**: containers, manifests, shifts, routes, transition windows, temp storage, freight bay -- these are her mother tongue, not terminology she learned. She does not translate or annotate.
- **Mind-your-business ethos**: The smuggler does not comment on things that are not her concern. Observations are filtered through relevance to her people and her operation.
- **Pragmatic, physical framing**: Abstract concepts get physical handles. Trust is "having your back." Danger is "getting caught." Betrayal is "a knife in the back" or "looking left when you answer."
---
## 3. Voice Anchors
These 5 lines define the boundaries of the smuggler's voice. Every smuggler monologue line should feel like it could sit next to these without register collision.
### Anchor 1: Baseline Warm
> *"Kael's already at the dock. Good. The day's better when he's on shift."*
Short. Personal. Physical presence matters. The smuggler's comfort is measured in who's around, not what's happening.
**Authored example:**
> *"Lera's got the usual table open. Feels like the shift's already behind me."*
### Anchor 2: Operational
> *"Shift transition in thirty minutes. If Voss kept the schedule thin, the route's clear."*
Time-specific. Practical. Other people's actions determine safety. The smuggler thinks in windows, not abstractions.
**Authored example:**
> *"Renn's already headed down the corridor. That means the handoff's on schedule."*
### Anchor 3: Concerned
> *"Kael keeps checking his lattice. Waiting for a message? Not like him to be jumpy."*
Observation leads to interpretation. Interpretation is relational ("not like him"), not clinical. The smuggler reads people through history with them.
**Authored example:**
> *"Voss snapped at the new hire again. Third time today. Something's eating him."*
### Anchor 4: Hurt
> *"He looked left. He always looks left when he's making something up. Two years I've known that tell. Kael is lying to me."*
Personal history weaponized. The "two years" is the knife. Ends with a flat declaration, not a question. When the smuggler is hurt, the fragments stop and the sentence lands whole.
**Authored example:**
> *"I covered for him last cycle. Covered for him the one before that. And this is what I get -- a closed door and a stranger's face."*
### Anchor 5: Atmospheric
> *"Morning shift. Recycled air and cargo lubricant. Home sweet home."*
Three fragments. Sensory detail. Irony through understatement. The smuggler's environment is felt, not cataloged.
**Authored example:**
> *"Night cycle hum. Half the overheads are out again. The freight bay looks better in the dark."*
---
## 4. Anti-Patterns
These are the 4 things the smuggler voice is NOT. Each anti-pattern includes the bad line, why it fails, and a corrected version.
### Anti-Pattern 1: Too Clinical
**Bad:** *"I should investigate this anomaly further."*
**Why it fails:** The word "anomaly" belongs to an institutional register. "Investigate" is what a detective does. The smuggler would never frame a problem this way.
**Corrected:** *"That's not right. I need to see what's going on."*
### Anti-Pattern 2: Institutional Vocabulary
**Bad:** *"The scheduling irregularity suggests systemic manipulation."*
**Why it fails:** "Scheduling irregularity," "systemic," "manipulation" -- every word comes from an analyst's toolkit. The smuggler sees people changing things, not systems being manipulated.
**Corrected:** *"Voss changed the rotation again. Who told him to do that?"*
### Anti-Pattern 3: Analytical Distance
**Bad:** *"I need to consider the implications of Kael's behavior for our operational security."*
**Why it fails:** This is a detective sentence in a smuggler's mouth. The smuggler does not "consider implications." She reacts, then thinks.
**Corrected:** *"What the hell is Kael doing?"*
### Anti-Pattern 4: Explaining the Already-Known
**Bad:** *"According to the manifest, container 4471 should weigh 240 kilograms."*
**Why it fails:** The smuggler has been reading manifests for years. She does not cite them to herself. She knows the weight. If it is wrong, she notices the wrongness, not the specification.
**Corrected:** *"4471's heavy. Too heavy."*
---
## 5. Paired Comparison Examples
Each trigger shows the same observation through both character lenses. The smuggler response is feeling-first, people-first, fragment-based. The detective response is analysis-first, pattern-first, complete sentences. These examples demonstrate the maximum contrast between the two registers.
### Trigger 1: Entering a Location
**Context:** The player enters The Last Shift (bar).
**Smuggler:**
> *"The usual crowd, the usual noise. Could use a drink after that shift."*
Fragment structure. Sensory. Personal need. The bar is a place the smuggler belongs, measured by comfort.
**Detective:**
> *"The Last Shift. Twelve patrons tonight, down from yesterday's sixteen. Someone's missing -- or avoiding."*
Complete sentence. Counted. Comparative. The bar is a dataset the detective reads for deviation.
---
### Trigger 2: Noticing an NPC
**Context:** The player notices Naia Tamm looking distressed at a corner table.
**Smuggler:**
> *"Naia's had a rough day. Should find her later, see if she needs anything."*
First name. Immediate empathy. Plans an action rooted in care. The smuggler sees a person who matters.
**Detective:**
> *"Tamm looks distressed. Baseline for her is composed. Something at home, or something she's learned?"*
Surname. Clinical assessment against baseline. Hypothesizes cause categories. The detective sees a data point that deviates.
---
### Trigger 3: Reacting to a Tell
**Context:** The player observes Kael checking his lattice repeatedly during a conversation.
**Smuggler:**
> *"Third time in five minutes. Kael, who are you waiting to hear from?"*
Direct address (even internally). Counts through instinct, not habit. The question is about a person, not a pattern.
**Detective:**
> *"Lattice activity: three checks in five minutes. Elevated from his established baseline of once per conversation. Noted."*
Quantified deviation from documented norm. Self-directed filing action. The observation is about a metric, not a friend.
---
### Trigger 4: Processing New Information
**Context:** The player learns that a container sat in temp storage overnight -- unusual for a hub with sub-eight-hour turnaround.
**Smuggler:**
> *"That one's been sitting since yesterday. Someone stalled it, or someone forgot. Either way, it's a problem."*
Two practical explanations offered without judgment. "It's a problem" is operational, not analytical. The smuggler thinks in consequences for the team.
**Detective:**
> *"Container held overnight. Turnaround standard for this hub is sub-eight hours. Deviation logged. Cross-reference with shift records."*
Quantified standard. Logged deviation. Self-directed investigative action. The detective thinks in evidence chains.
---
## 6. Display Constraints
All monologue lines must conform to these hard constraints (per Stig's Round 1 display proposal, adopted as authoring standard).
| Constraint | Value | Implication for Writing |
|------------|-------|------------------------|
| **Max length** | ~160 characters | Hard ceiling. Most lines should be 80-120 characters. |
| **Max visual lines** | 2 | No three-line monologue. If it wraps to 3, cut it. |
| **Display time** | 4-6 seconds (length-adjusted) | Player reads at ~250 WPM = ~20-25 words in 5 seconds. Target: 15-25 words per line. |
| **Fade behavior** | Fade in/out | No abrupt text pops. Lines must read cleanly mid-fade. |
| **Character tint** | Smuggler: amber-white `#f0e0c8` | Voice must be distinguishable WITHOUT color -- color confirms, does not create. |
| **No mid-sentence triggers** | Lines must be self-contained | A monologue line must make sense even if the previous one was not displayed (cooldown, priority override). |
### The 25-Word Rule
If a monologue line exceeds 25 words, it must be the most important line in the pool. Most lines should be 10-18 words. The authoring guide examples average 14 words. That is the target.
### Fragment-Friendly Formatting
The smuggler's fragment style naturally fits the 2-line display constraint. Fragments are short. Dashes and ellipses compress meaning. A smuggler line that feels too long is almost always trying to do too much -- split it into two triggers or cut the weakest clause.
**Good (14 words, 1 visual line):**
> *"Kael's already at the dock. Good. The day's better when he's on shift."*
**Too long (29 words, wraps to 3 lines):**
> *"Kael's already at the dock and it looks like Voss kept the schedule thin, which means the transition window should be clear for the route."*
**Fix:** Split into two separate monologue fires:
> *"Kael's at the dock. Good."*
> *"Voss kept the schedule thin. Route should be clear."*
---
## 7. Authoring Checklist
Before finalizing any smuggler monologue line, ask these 5 questions:
### 1. Does it sound like a person, not a system?
The smuggler thinks in people. If the line references a process, institution, or abstract concept without grounding it in a specific person's action, rewrite it.
- **Fail:** *"The operation is at risk."*
- **Pass:** *"Voss is going to get us caught."*
### 2. Is the feeling before the analysis?
The smuggler's gut fires first. If the line opens with a conclusion or a logical structure ("therefore," "which means," "this suggests"), rewrite it so the emotional reaction leads.
- **Fail:** *"Kael's behavior suggests he's hiding something."*
- **Pass:** *"Something's wrong with Kael. I can feel it."*
### 3. Would she say this to herself?
The smuggler does not explain things she already knows. If the line contains exposition about the world, the ring, or the station that the smuggler has known for years, cut it. Interior monologue is reaction, not recitation.
- **Fail:** *"The ring operates during shift transitions when oversight is reduced."*
- **Pass:** *"Transition window's coming up. Time to move."*
### 4. Is it under 25 words?
Count them. If it is over 25, it had better be the knife-twist line of the phase. Otherwise, cut. The smuggler does not ramble. Fragments. Dashes. Ellipses. Economy.
### 5. Does it use first names?
The smuggler calls everyone by their first name. If a surname appears without the first name, or if a role descriptor ("the shift supervisor," "the bartender") is used for someone the smuggler knows personally, rewrite it. The exception: institutions ("the Commission," "the Concord") are named abstractly because the smuggler does not think of institutions as people.
- **Fail:** *"Davan seems nervous."*
- **Pass:** *"Kael seems nervous."*
---
**Cross-References:**
- [Dual Lens Authoring Guide](dual-lens-authoring-guide.md) -- Chapter 7 (Voice Signatures), Chapter 4 (Divergence Escalation Curve)
- [Smuggler Moral Arc](smuggler-moral-arc.md) -- How voice register shifts across moral phases
- [Kael Davan](../wiki/npcs/kael-davan.md) -- Primary NPC voice interaction target (THE FRIEND)
- [Entity Attributes](../wiki/knowledge/entity-attributes.md) -- Role-perspective keys that gate monologue
---
**End Smuggler Voice Card**