Files
settled-reach/docs/design/smuggler-moral-arc.md
T
jpmschweitzerandClaude Opus 4.6 d06c0e0f4e 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>
2026-02-12 18:12:31 +01:00

26 KiB

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. 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) 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, 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) 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 -- Voice register parameters and authoring checklist
  • Dual Lens Authoring Guide -- Full dual-lens framework, divergence curve (Chapter 4), voice signatures (Chapter 7)
  • Kael Davan -- Kael's 5-phase contradiction arc, smuggler FRIEND intersection
  • Entity Attributes -- moral_weight key definition and role-perspective interpretation
  • Round 1 Gestalt -- Original moral_weight key proposal and smuggler attribute mapping
  • Round 1 Paula -- Smuggler moral arc phases, smuggler-lens sections
  • Round 2 Paula -- Role-perspective keys as content not schema, generic assessment architecture

End Smuggler Moral Arc Spec