Merge remote-tracking branch 'origin/copy'

This commit is contained in:
2026-02-21 15:13:10 +01:00
35 changed files with 2186 additions and 406 deletions
@@ -41,7 +41,7 @@ lines:
access: [insider]
trust: real
situation: [routine]
mood: [comfortable]
mood: [content]
topic: [cargo]
tags: [kael, ring-ops, renn, operational]
@@ -51,7 +51,7 @@ lines:
access: [insider]
trust: real
situation: [routine]
mood: [concerned]
mood: [frustrated]
topic: [danger, cargo]
tags: [kael, ring-ops, operational, caution]
@@ -66,7 +66,7 @@ lines:
access: [insider]
trust: surface
situation: [confrontation]
mood: [concerned]
mood: [frustrated]
topic: [danger]
tags: [kael, contradiction, phase-3]
@@ -76,7 +76,7 @@ lines:
access: [insider]
trust: surface
situation: [confrontation]
mood: [concerned]
mood: [frustrated]
topic: [routine]
tags: [kael, deflection, lying, phase-4]
@@ -86,7 +86,7 @@ lines:
access: [insider]
trust: surface
situation: [confrontation]
mood: [concerned]
mood: [frustrated]
topic: [trust]
tags: [kael, deflection, hostile-path, phase-4]
@@ -100,7 +100,7 @@ lines:
access: [insider]
trust: secret
situation: [confrontation, alone]
mood: [conflicted]
mood: [anxious]
topic: [personal, trust]
tags: [kael, confession, phase-5]
@@ -110,7 +110,7 @@ lines:
access: [insider]
trust: secret
situation: [confrontation, alone]
mood: [worried]
mood: [anxious]
topic: [danger, trust]
tags: [kael, confession, nils, phase-5]
@@ -120,9 +120,65 @@ lines:
access: [insider]
trust: secret
situation: [alone]
mood: [conflicted]
mood: [anxious]
topic: [personal]
tags: [kael, confession, phase-5]
knowledge_grant:
fact_id: knowledge.kael_exit_plan
confidence: knows_details
# ========================================
# LAYER 2 GREETING VARIANTS — D-028 Layer 2
# Ticket #170 (Sprint 15). situation: [greeting] fires on initial contact.
# Access tier + mood encode relationship history state.
# Context: restricted maintenance corridors. Any stranger here is immediately
# suspicious. Even trusted contacts get terse, operational greetings.
# ========================================
# first_meeting: InteractionMemory.count == 0. Any stranger in restricted corridors is a problem.
- id: maintenance-corridors_d_011
text: "This is a restricted section. Who authorized you back here?"
role: dock-worker
access: [public]
trust: surface
situation: [greeting]
mood: [focused]
topic: [danger, routine]
tags: [kael, greeting, first-meeting, layer2]
notes: "Layer 2 greeting — first meeting in restricted corridors. Immediate challenge. Any stranger back here is suspicious regardless of intent."
# established — peer/smuggler context: count >= 3, RelationshipState: Known/Friendly → Peer/Insider access.
- id: maintenance-corridors_d_012
text: "You're on time. Clear all the way to the junction."
role: dock-worker
access: [peer, insider]
trust: surface
situation: [greeting]
mood: [content]
topic: [cargo, colleague]
tags: [kael, greeting, repeat-visit, peer-tone, layer2]
notes: "Layer 2 greeting — established, operational. All business. Kael treats a trusted repeat visitor as crew — no pleasantries, just the essential handoff information."
# established — authority/detective context: count >= 3, RelationshipState: PersonOfInterest → Authority access.
- id: maintenance-corridors_d_013
text: "You keep showing up back here. You have clearance for this section?"
role: dock-worker
access: [authority]
trust: surface
situation: [greeting]
mood: [suspicious]
topic: [danger, routine]
tags: [kael, greeting, repeat-visit, authority-tone, layer2]
notes: "Layer 2 greeting — repeat with authority figure in restricted section. Professionally defensive. Kael challenges them but can't bar entry if they have clearance."
# post-confrontation: confrontation logged. Kael is cornered on his own operational ground.
- id: maintenance-corridors_d_014
text: "You followed me here."
role: dock-worker
access: [peer, insider]
trust: surface
situation: [greeting]
mood: [hostile, suspicious]
topic: [danger, trust]
tags: [kael, greeting, post-confrontation, layer2]
notes: "Layer 2 greeting — post-confrontation, restricted corridors. Accusatory, not a question. Kael feels cornered. This is where the contradiction lives."
@@ -28,7 +28,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [ring-operative, surface-cover, b7]
dual_lens:
smuggler: "Cover phrase. He's not doing maintenance."
@@ -42,7 +42,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [ring-operative, surface-cover, bay-four, spatial]
dual_lens:
smuggler: "He's telling me the route is faster. This is spatial information, not just courtesy."
@@ -55,7 +55,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [ring-operative, surface-cover, ambient]
dual_lens:
smuggler: "Dead air confirmed. Meridian's not picking this up."
@@ -68,7 +68,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine, colleague]
mood: [comfortable]
mood: [content]
tags: [ring-operative, surface-cover, pael, corridor-traffic]
dual_lens:
smuggler: "Pael was through. Legitimate. Corridor's been active — that means traffic covers us."
@@ -81,7 +81,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [ring-operative, surface-cover, c4, spatial]
dual_lens:
smuggler: "He's giving me the timing. Three minutes to C-4 from this point."
@@ -156,7 +156,7 @@ lines:
trust: real
situation: [routine, confrontation]
topic: [danger, colleague]
mood: [concerned]
mood: [frustrated]
tags: [ring-operative, ring-ops, coded, drin-asking, warning]
dual_lens:
smuggler: "Drin's circling B-7. That's a warning. Push the pickup or hold it."
@@ -218,7 +218,7 @@ lines:
trust: real
situation: [confrontation, investigation]
topic: [danger, institution]
mood: [concerned]
mood: [frustrated]
tags: [ring-operative, ring-ops, commission, warning]
dual_lens:
smuggler: "Detective is visible on the main floor. Corridors are still clear."
@@ -231,7 +231,7 @@ lines:
trust: real
situation: [confrontation]
topic: [danger]
mood: [concerned]
mood: [frustrated]
tags: [ring-operative, ring-ops, drin, abort-signal]
dual_lens:
smuggler: "Stop. Drin's in position. The window's closed."
@@ -244,7 +244,7 @@ lines:
trust: real
situation: [confrontation, routine]
topic: [danger, institution]
mood: [concerned]
mood: [frustrated]
tags: [ring-operative, ring-ops, maret, voss, caution]
dual_lens:
smuggler: "Maret flagged something. Voss is managing it. Stand down tonight."
@@ -257,7 +257,7 @@ lines:
trust: real
situation: [shift_end, routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [ring-operative, ring-ops, run-complete, closing]
dual_lens:
smuggler: "Run's done. No issues. Tomorrow."
@@ -274,7 +274,7 @@ lines:
trust: surface
situation: [investigation, confrontation]
topic: [institution, routine]
mood: [wary]
mood: [suspicious]
tags: [ring-operative, detective-path, access-denial]
- id: maintenance-corridors_d_118
@@ -284,7 +284,7 @@ lines:
trust: surface
situation: [investigation]
topic: [institution, routine]
mood: [wary]
mood: [suspicious]
tags: [ring-operative, detective-path, voss-redirect]
dual_lens:
smuggler: "Never encounters this."
@@ -297,7 +297,7 @@ lines:
trust: surface
situation: [investigation]
topic: [routine]
mood: [wary]
mood: [suspicious]
tags: [ring-operative, detective-path, deflection]
# ==========================================
@@ -312,7 +312,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [ring-operative, surface-cover, generation-pass]
- id: maintenance-corridors_d_121
@@ -322,7 +322,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine, colleague]
mood: [comfortable]
mood: [content]
tags: [ring-operative, surface-cover, pael, generation-pass]
- id: maintenance-corridors_d_122
@@ -332,7 +332,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [ring-operative, surface-cover, generation-pass]
- id: maintenance-corridors_d_123
@@ -342,7 +342,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [ring-operative, surface-cover, spatial, generation-pass]
- id: maintenance-corridors_d_124
@@ -352,7 +352,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [ring-operative, surface-cover, navigation, generation-pass]
dual_lens:
smuggler: "He's directing people away from the route. Social traffic management."
@@ -365,7 +365,7 @@ lines:
trust: surface
situation: [routine, shift_end]
topic: [routine]
mood: [tired]
mood: [frustrated]
tags: [ring-operative, surface-cover, generation-pass]
- id: maintenance-corridors_d_126
@@ -375,5 +375,5 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [ring-operative, surface-cover, generation-pass]
@@ -22,7 +22,7 @@ lines:
trust: surface
situation: [routine, observation]
topic: [colleague, personal]
mood: [comfortable]
mood: [content]
tags: [tev, seems-important-but-isnt, waiting, kosse]
dual_lens:
smuggler: "Someone asking who came through the corridor. Tev. Harmless — checking for a partner."
@@ -43,7 +43,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine, cargo]
mood: [comfortable]
mood: [content]
tags: [tev, atmospheric]
- id: maintenance-corridors_d_003
@@ -53,7 +53,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [tev, incidental]
- id: maintenance-corridors_d_004
@@ -63,7 +63,7 @@ lines:
trust: surface
situation: [routine, night_shift]
topic: [routine, cargo]
mood: [comfortable]
mood: [content]
tags: [tev, atmospheric]
- id: maintenance-corridors_d_005
@@ -73,5 +73,5 @@ lines:
trust: surface
situation: [routine, observation]
topic: [personal]
mood: [comfortable]
mood: [content]
tags: [tev, waiting]
@@ -20,7 +20,7 @@ lines:
trust: surface
situation: [arrival]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [lera, greeting, economy-of-words]
- id: the-last-shift_d_101
@@ -30,7 +30,7 @@ lines:
trust: surface
situation: [arrival]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [lera, greeting]
- id: the-last-shift_d_102
@@ -40,7 +40,7 @@ lines:
trust: surface
situation: [arrival]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [lera, greeting, house-rules]
- id: the-last-shift_d_103
@@ -50,7 +50,7 @@ lines:
trust: surface
situation: [arrival, routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [lera, greeting, redirection]
# ==========================================
@@ -64,7 +64,7 @@ lines:
trust: surface
situation: [confrontation, routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [lera, house-rules, authority]
- id: the-last-shift_d_105
@@ -74,7 +74,7 @@ lines:
trust: surface
situation: [routine, shift_end]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [lera, tab, house-rules]
- id: the-last-shift_d_106
@@ -84,7 +84,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine, institution]
mood: [comfortable]
mood: [content]
tags: [lera, torek, tab-arrangement]
dual_lens:
smuggler: "Lera chose to give Torek credit. Commission man. She's keeping him visible and comfortable. Smart."
@@ -98,7 +98,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine, institution]
mood: [comfortable]
mood: [content]
tags: [lera, lattice-free, house-rules]
notes: "Not legally enforceable — Lera knows this. It's about atmosphere, not compliance."
@@ -109,7 +109,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [lera, drinks, community]
# ==========================================
@@ -123,7 +123,7 @@ lines:
trust: surface
situation: [arrival, routine]
topic: [colleague, routine]
mood: [comfortable]
mood: [content]
tags: [lera, kael, spatial-information]
dual_lens:
smuggler: "Good. She keeps track. That's what she does."
@@ -136,7 +136,7 @@ lines:
trust: surface
situation: [routine]
topic: [colleague]
mood: [comfortable]
mood: [content]
tags: [lera, naia, observation]
dual_lens:
smuggler: "Lera noticed Naia's off. She notices everything. She's saying it because she wants someone to do something."
@@ -149,7 +149,7 @@ lines:
trust: surface
situation: [routine]
topic: [colleague]
mood: [comfortable]
mood: [content]
tags: [lera, ren, drifter]
dual_lens:
smuggler: "That's Lera's version of a clean assessment. She'd say more if she suspected something."
@@ -162,7 +162,7 @@ lines:
trust: surface
situation: [routine]
topic: [colleague]
mood: [comfortable]
mood: [content]
tags: [lera, tev, endorsement]
dual_lens:
smuggler: "Lera vouching for Tev. She doesn't do that for people she doesn't trust."
@@ -193,7 +193,7 @@ lines:
trust: real
situation: [routine]
topic: [colleague]
mood: [comfortable]
mood: [content]
tags: [lera, kael, loyalty]
dual_lens:
smuggler: "Lera's loyal to Kael. Not to the ring. There's a difference and it matters."
@@ -210,7 +210,7 @@ lines:
trust: surface
situation: [arrival, investigation]
topic: [institution, routine]
mood: [comfortable]
mood: [content]
tags: [lera, detective-path, neutral-welcome]
- id: the-last-shift_d_116
@@ -220,7 +220,7 @@ lines:
trust: surface
situation: [investigation, routine]
topic: [institution, routine]
mood: [comfortable]
mood: [content]
tags: [lera, detective-path, institutional-independence]
- id: the-last-shift_d_117
@@ -230,7 +230,7 @@ lines:
trust: surface
situation: [investigation, confrontation]
topic: [institution, routine]
mood: [wary]
mood: [suspicious]
tags: [lera, detective-path, authority-assertion]
- id: the-last-shift_d_118
@@ -240,7 +240,7 @@ lines:
trust: surface
situation: [investigation]
topic: [institution, routine]
mood: [comfortable]
mood: [content]
tags: [lera, detective-path, careful-language]
dual_lens:
smuggler: "Never encounters this line."
@@ -257,7 +257,7 @@ lines:
trust: real
situation: [routine, alone]
topic: [colleague, danger]
mood: [concerned]
mood: [frustrated]
tags: [lera, naia, threshold-line]
dual_lens:
smuggler: "Lera's telling me to do something about Naia. She's right."
@@ -274,7 +274,7 @@ lines:
trust: surface
situation: [shift_end]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [lera, closing]
- id: the-last-shift_d_121
@@ -284,7 +284,7 @@ lines:
trust: surface
situation: [shift_end]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [lera, closing]
- id: the-last-shift_d_122
@@ -294,7 +294,7 @@ lines:
trust: surface
situation: [shift_end]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [lera, closing]
# ==========================================
@@ -308,7 +308,7 @@ lines:
trust: surface
situation: [arrival]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [lera, greeting, generation-pass]
- id: the-last-shift_d_124
@@ -318,7 +318,7 @@ lines:
trust: surface
situation: [arrival]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [lera, greeting, generation-pass]
- id: the-last-shift_d_125
@@ -328,7 +328,7 @@ lines:
trust: surface
situation: [arrival]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [lera, greeting, newcomer, generation-pass]
- id: the-last-shift_d_126
@@ -338,7 +338,7 @@ lines:
trust: surface
situation: [arrival, routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [lera, house-rules, generation-pass]
- id: the-last-shift_d_127
@@ -348,7 +348,7 @@ lines:
trust: surface
situation: [arrival]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [lera, redirect, generation-pass]
- id: the-last-shift_d_128
@@ -358,7 +358,7 @@ lines:
trust: surface
situation: [routine, shift_end]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [lera, house-rules, generation-pass]
- id: the-last-shift_d_129
@@ -368,7 +368,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [lera, ambient, generation-pass]
- id: the-last-shift_d_130
@@ -378,5 +378,5 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [lera, ambient, generation-pass]
@@ -19,7 +19,7 @@ lines:
trust: surface
situation: [arrival]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [bar-regular, greeting]
- id: the-last-shift_d_301
@@ -29,7 +29,7 @@ lines:
trust: surface
situation: [arrival]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [bar-regular, greeting]
- id: the-last-shift_d_302
@@ -39,7 +39,7 @@ lines:
trust: surface
situation: [arrival, routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [bar-regular, greeting, drinks]
# ==========================================
@@ -53,7 +53,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine, cargo]
mood: [comfortable]
mood: [content]
tags: [bar-regular, terminal, voss]
- id: the-last-shift_d_304
@@ -63,7 +63,7 @@ lines:
trust: surface
situation: [routine]
topic: [colleague, cargo]
mood: [wary]
mood: [suspicious]
tags: [bar-regular, maret, voss, discrepancy]
dual_lens:
smuggler: "They're talking about Maret's flags as general knowledge. That's a wider problem than I thought."
@@ -76,7 +76,7 @@ lines:
trust: surface
situation: [routine]
topic: [cargo, routine]
mood: [wary]
mood: [suspicious]
tags: [bar-regular, bay-four, observation]
dual_lens:
smuggler: "They've noticed bay four. It's becoming visible. Not good."
@@ -89,7 +89,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [bar-regular, transition-window, complaint]
dual_lens:
smuggler: "The window is their biggest frustration. And their biggest frustration is the ring's biggest asset."
@@ -102,7 +102,7 @@ lines:
trust: surface
situation: [routine]
topic: [institution, routine]
mood: [wary]
mood: [suspicious]
tags: [bar-regular, commission, audit]
dual_lens:
smuggler: "Cycle fifteen. That's the deadline. Get clean before then."
@@ -115,7 +115,7 @@ lines:
trust: surface
situation: [routine]
topic: [institution, colleague]
mood: [wary]
mood: [suspicious]
tags: [bar-regular, voss, observation]
dual_lens:
smuggler: "Voss is visible more. Is that heat from above, or is he managing something on the floor?"
@@ -132,7 +132,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [bar-regular, sports, drifters]
- id: the-last-shift_d_310
@@ -142,7 +142,7 @@ lines:
trust: surface
situation: [routine]
topic: [institution, routine]
mood: [comfortable]
mood: [content]
tags: [bar-regular, infrastructure, grievance]
- id: the-last-shift_d_311
@@ -152,7 +152,7 @@ lines:
trust: surface
situation: [routine]
topic: [community, routine]
mood: [comfortable]
mood: [content]
tags: [bar-regular, vessels-tamm, notice]
dual_lens:
smuggler: "Vessels Tamm. Naia's surname is Tamm. Don't chase it — but don't ignore it either."
@@ -165,7 +165,7 @@ lines:
trust: surface
situation: [routine]
topic: [community, routine]
mood: [comfortable]
mood: [content]
tags: [bar-regular, clinic, community]
- id: the-last-shift_d_313
@@ -175,7 +175,7 @@ lines:
trust: surface
situation: [routine]
topic: [institution, community]
mood: [comfortable]
mood: [content]
tags: [bar-regular, lattice, economy]
dual_lens:
smuggler: "That's why the waiting list keeps growing. They're providing a service."
@@ -188,7 +188,7 @@ lines:
trust: surface
situation: [routine]
topic: [institution, community]
mood: [wary]
mood: [suspicious]
tags: [bar-regular, workers-association, voss, transition-window]
dual_lens:
smuggler: "Voss is defending the twenty-minute window against Association pressure. He's protecting the gap."
@@ -205,7 +205,7 @@ lines:
trust: surface
situation: [arrival, investigation]
topic: [routine]
mood: [wary]
mood: [suspicious]
tags: [bar-regular, detective-path, recognition]
- id: the-last-shift_d_316
@@ -215,7 +215,7 @@ lines:
trust: surface
situation: [investigation, routine]
topic: [institution, routine]
mood: [wary]
mood: [suspicious]
tags: [bar-regular, detective-path, deflection]
- id: the-last-shift_d_317
@@ -225,7 +225,7 @@ lines:
trust: surface
situation: [investigation]
topic: [routine]
mood: [wary]
mood: [suspicious]
tags: [bar-regular, detective-path, lera-redirect]
# ==========================================
@@ -239,7 +239,7 @@ lines:
trust: surface
situation: [shift_end]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [bar-regular, closing]
- id: the-last-shift_d_319
@@ -249,7 +249,7 @@ lines:
trust: surface
situation: [shift_end]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [bar-regular, closing, community]
# ==========================================
@@ -263,7 +263,7 @@ lines:
trust: surface
situation: [arrival]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [bar-regular, greeting, generation-pass]
- id: the-last-shift_d_321
@@ -273,7 +273,7 @@ lines:
trust: surface
situation: [arrival]
topic: [routine, institution]
mood: [comfortable]
mood: [content]
tags: [bar-regular, greeting, voss, generation-pass]
- id: the-last-shift_d_322
@@ -283,7 +283,7 @@ lines:
trust: surface
situation: [arrival]
topic: [routine]
mood: [tired]
mood: [frustrated]
tags: [bar-regular, greeting, generation-pass]
- id: the-last-shift_d_323
@@ -293,7 +293,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [bar-regular, sports, community, generation-pass]
- id: the-last-shift_d_324
@@ -303,7 +303,7 @@ lines:
trust: surface
situation: [routine]
topic: [institution, community]
mood: [comfortable]
mood: [content]
tags: [bar-regular, infrastructure, grievance, generation-pass]
- id: the-last-shift_d_325
@@ -313,7 +313,7 @@ lines:
trust: surface
situation: [routine]
topic: [colleague, routine]
mood: [comfortable]
mood: [content]
tags: [bar-regular, new-hire, community, generation-pass]
- id: the-last-shift_d_326
@@ -323,7 +323,7 @@ lines:
trust: surface
situation: [routine]
topic: [institution, routine]
mood: [wary]
mood: [suspicious]
tags: [bar-regular, infrastructure, generation-pass]
- id: the-last-shift_d_327
@@ -333,7 +333,7 @@ lines:
trust: surface
situation: [routine]
topic: [colleague]
mood: [comfortable]
mood: [content]
tags: [bar-regular, kael, observation, generation-pass]
dual_lens:
smuggler: "Kael's absence is visible. Other people notice too."
@@ -346,7 +346,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [bar-regular, lera, humor, generation-pass]
- id: the-last-shift_d_329
@@ -356,5 +356,5 @@ lines:
trust: surface
situation: [shift_end]
topic: [routine, institution]
mood: [comfortable]
mood: [content]
tags: [bar-regular, closing, generation-pass]
@@ -19,7 +19,7 @@ lines:
trust: surface
situation: [arrival]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [sess, greeting]
- id: the-last-shift_d_201
@@ -29,7 +29,7 @@ lines:
trust: surface
situation: [arrival]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [sess, greeting, social]
- id: the-last-shift_d_202
@@ -39,7 +39,7 @@ lines:
trust: surface
situation: [arrival, routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [sess, greeting, drinks]
# ==========================================
@@ -53,7 +53,7 @@ lines:
trust: surface
situation: [routine]
topic: [colleague]
mood: [comfortable]
mood: [content]
tags: [sess, kael, observation]
dual_lens:
smuggler: "Sess noticed Kael's off. She's reading it as personal. She doesn't know what's underneath."
@@ -66,7 +66,7 @@ lines:
trust: surface
situation: [routine]
topic: [institution, routine]
mood: [comfortable]
mood: [content]
tags: [sess, torek, observation]
dual_lens:
smuggler: "Torek's making friends with the staff. Not good."
@@ -79,7 +79,7 @@ lines:
trust: surface
situation: [routine]
topic: [colleague]
mood: [comfortable]
mood: [content]
tags: [sess, naia, note, observation]
dual_lens:
smuggler: "Naia left something. Lera has it. Go to Lera."
@@ -92,7 +92,7 @@ lines:
trust: surface
situation: [routine]
topic: [colleague]
mood: [comfortable]
mood: [content]
tags: [sess, ren, drifter]
- id: the-last-shift_d_207
@@ -102,7 +102,7 @@ lines:
trust: surface
situation: [routine]
topic: [colleague, routine]
mood: [comfortable]
mood: [content]
tags: [sess, tev, door, observation]
dual_lens:
smuggler: "Tev watches the door for Lera. Not for anyone else. That's the setup."
@@ -115,7 +115,7 @@ lines:
trust: surface
situation: [routine]
topic: [colleague, institution]
mood: [comfortable]
mood: [content]
tags: [sess, sera, torek, observation]
dual_lens:
smuggler: "Commission in, Commission contact out. Makes sense."
@@ -132,7 +132,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [sess, tev, sports, community]
- id: the-last-shift_d_210
@@ -142,7 +142,7 @@ lines:
trust: surface
situation: [routine]
topic: [institution, routine]
mood: [comfortable]
mood: [content]
tags: [sess, workers-association, community]
- id: the-last-shift_d_211
@@ -152,7 +152,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [sess, ambient]
# ==========================================
@@ -166,7 +166,7 @@ lines:
trust: surface
situation: [arrival, investigation]
topic: [institution, routine]
mood: [comfortable]
mood: [content]
tags: [sess, detective-path, observation]
- id: the-last-shift_d_213
@@ -176,7 +176,7 @@ lines:
trust: surface
situation: [investigation, routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [sess, detective-path, open]
dual_lens:
smuggler: "Never encounters this line."
@@ -189,7 +189,7 @@ lines:
trust: surface
situation: [investigation]
topic: [institution, routine]
mood: [comfortable]
mood: [content]
tags: [sess, detective-path, lera-redirect]
# ==========================================
@@ -203,7 +203,7 @@ lines:
trust: surface
situation: [shift_end]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [sess, closing]
- id: the-last-shift_d_216
@@ -213,7 +213,7 @@ lines:
trust: surface
situation: [shift_end]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [sess, closing]
# ==========================================
@@ -227,7 +227,7 @@ lines:
trust: surface
situation: [arrival]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [sess, greeting, generation-pass]
- id: the-last-shift_d_218
@@ -237,7 +237,7 @@ lines:
trust: surface
situation: [arrival, routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [sess, greeting, generation-pass]
- id: the-last-shift_d_219
@@ -247,7 +247,7 @@ lines:
trust: surface
situation: [arrival]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [sess, greeting, social, generation-pass]
- id: the-last-shift_d_220
@@ -257,7 +257,7 @@ lines:
trust: surface
situation: [routine, arrival]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [sess, lera, house-rules, generation-pass]
- id: the-last-shift_d_221
@@ -267,7 +267,7 @@ lines:
trust: surface
situation: [routine]
topic: [institution, colleague]
mood: [comfortable]
mood: [content]
tags: [sess, torek, observation, generation-pass]
- id: the-last-shift_d_222
@@ -277,7 +277,7 @@ lines:
trust: surface
situation: [routine]
topic: [colleague]
mood: [comfortable]
mood: [content]
tags: [sess, ren, observation, generation-pass]
- id: the-last-shift_d_223
@@ -287,7 +287,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [sess, sports, community, generation-pass]
- id: the-last-shift_d_224
@@ -297,7 +297,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [sess, ambient, generation-pass]
- id: the-last-shift_d_225
@@ -307,5 +307,5 @@ lines:
trust: surface
situation: [shift_end, routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [sess, closing, generation-pass]
@@ -22,7 +22,7 @@ lines:
trust: surface
situation: [bar_evening, social]
topic: [money, cargo]
mood: [comfortable]
mood: [content]
tags: [ren, seems-important-but-isnt, job-seeking, night-shift]
dual_lens:
smuggler: "Someone asking about the night rotation. Probably nothing. Watch them anyway."
@@ -43,7 +43,7 @@ lines:
trust: surface
situation: [social, bar_evening]
topic: [routine, colleague]
mood: [comfortable]
mood: [content]
tags: [ren, job-seeking]
- id: the-last-shift_d_003
@@ -53,7 +53,7 @@ lines:
trust: surface
situation: [social, bar_evening]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [ren, atmospheric]
- id: the-last-shift_d_004
@@ -63,7 +63,7 @@ lines:
trust: surface
situation: [social]
topic: [personal, routine]
mood: [comfortable]
mood: [content]
tags: [ren, drifter]
- id: the-last-shift_d_005
@@ -73,7 +73,7 @@ lines:
trust: surface
situation: [bar_evening, social]
topic: [personal]
mood: [comfortable]
mood: [content]
tags: [ren, atmospheric]
- id: the-last-shift_d_006
@@ -83,7 +83,7 @@ lines:
trust: surface
situation: [social, bar_evening]
topic: [cargo, routine]
mood: [comfortable]
mood: [content]
tags: [ren, seems-important-but-isnt, job-seeking]
notes: >
Second "seems important" line. Asking about manifest deadlines sounds
@@ -18,7 +18,7 @@ lines:
access: [insider, peer]
trust: surface
situation: [bar_evening, social, arrival]
mood: [fond]
mood: [warm]
topic: [personal, colleague]
tags: [kael, greeting, phase-1]
@@ -28,7 +28,7 @@ lines:
access: [insider, peer]
trust: surface
situation: [bar_evening, social]
mood: [fond]
mood: [warm]
topic: [personal]
tags: [kael, social, phase-1]
@@ -38,7 +38,7 @@ lines:
access: [insider, peer]
trust: surface
situation: [bar_evening, social]
mood: [comfortable]
mood: [content]
topic: [colleague, routine]
tags: [kael, humor, voss, lera]
@@ -48,7 +48,7 @@ lines:
access: [insider, peer]
trust: surface
situation: [bar_evening, social]
mood: [comfortable]
mood: [content]
topic: [colleague]
tags: [kael, observational, torek]
knowledge_grant:
@@ -61,7 +61,7 @@ lines:
access: [peer]
trust: surface
situation: [bar_evening, social]
mood: [comfortable]
mood: [content]
topic: [personal]
tags: [kael, atmospheric]
@@ -71,7 +71,7 @@ lines:
access: [insider, peer]
trust: surface
situation: [bar_evening, social]
mood: [comfortable]
mood: [content]
topic: [personal, routine]
tags: [kael, casual, lera]
@@ -85,7 +85,7 @@ lines:
access: [insider, peer]
trust: surface
situation: [bar_evening, social]
mood: [fond]
mood: [warm]
topic: [personal]
tags: [kael, unprompted, naia-reference]
@@ -95,7 +95,7 @@ lines:
access: [insider, peer]
trust: surface
situation: [bar_evening, social]
mood: [fond]
mood: [warm]
topic: [personal]
tags: [kael, unprompted, naia-reference]
@@ -105,7 +105,7 @@ lines:
access: [insider]
trust: real
situation: [bar_evening, social, alone]
mood: [conflicted]
mood: [anxious]
topic: [personal, trust]
tags: [kael, naia-reference, vulnerability]
@@ -119,7 +119,7 @@ lines:
access: [insider]
trust: real
situation: [bar_evening, social]
mood: [concerned]
mood: [frustrated]
topic: [danger]
tags: [kael, ring-ops, nils]
@@ -129,7 +129,7 @@ lines:
access: [insider]
trust: real
situation: [bar_evening, social]
mood: [concerned]
mood: [frustrated]
topic: [danger, colleague]
tags: [kael, ring-ops, torek, caution]
@@ -139,7 +139,7 @@ lines:
access: [insider]
trust: real
situation: [bar_evening, social, alone]
mood: [concerned]
mood: [frustrated]
topic: [colleague, danger]
tags: [kael, ring-ops, lera, caution]
knowledge_grant:
@@ -156,7 +156,7 @@ lines:
access: [insider, peer]
trust: surface
situation: [bar_evening, social]
mood: [conflicted]
mood: [anxious]
topic: [personal]
tags: [kael, contaminated-trust, phase-5]
@@ -166,7 +166,7 @@ lines:
access: [insider]
trust: real
situation: [bar_evening, social]
mood: [conflicted]
mood: [anxious]
topic: [personal]
tags: [kael, contaminated-trust, naia-reference, phase-5]
@@ -176,6 +176,60 @@ lines:
access: [insider]
trust: surface
situation: [bar_evening, social]
mood: [worried]
mood: [anxious]
topic: [trust, personal]
tags: [kael, vulnerability, phase-5]
# ========================================
# LAYER 2 GREETING VARIANTS — D-028 Layer 2
# Ticket #170 (Sprint 15). situation: [greeting] fires on initial contact.
# Access tier + mood encode relationship history state.
# ========================================
# first_meeting: InteractionMemory.count == 0. RelationshipState: Unknown → Public access only.
- id: the-last-shift_d_016
text: "Evening. Friend of someone's, or first time at Lera's?"
role: dock-worker
access: [public]
trust: surface
situation: [greeting]
mood: [content]
topic: [personal]
tags: [kael, greeting, first-meeting, layer2]
notes: "Layer 2 greeting — first meeting at the bar. Kael is curious about a stranger but not suspicious. Off-shift, looser than at the terminal."
# established — peer/smuggler context: count >= 3, RelationshipState: Known/Friendly → Peer/Insider access.
- id: the-last-shift_d_017
text: "You made it. I was starting to think something came up."
role: dock-worker
access: [peer, insider]
trust: surface
situation: [greeting]
mood: [warm]
topic: [personal, colleague]
tags: [kael, greeting, repeat-visit, peer-tone, layer2]
notes: "Layer 2 greeting — established, bar context. Warm, they were expected. Kael was watching for them."
# established — authority/detective context: count >= 3, RelationshipState: PersonOfInterest → Authority access.
- id: the-last-shift_d_018
text: "Still in the district. Thought you'd be done by now."
role: dock-worker
access: [authority]
trust: surface
situation: [greeting]
mood: [suspicious]
topic: [routine]
tags: [kael, greeting, repeat-visit, authority-tone, layer2]
notes: "Layer 2 greeting — repeat with authority figure, bar context. Politely questioning their continued presence. The bar is supposed to be off-limits from work."
# post-confrontation: confrontation in InteractionMemory.notable_events. NPC mood shifted to suspicious/frustrated.
- id: the-last-shift_d_019
text: "You came back."
role: dock-worker
access: [peer, insider]
trust: surface
situation: [greeting]
mood: [suspicious, frustrated]
topic: [personal, trust]
tags: [kael, greeting, post-confrontation, layer2]
notes: "Layer 2 greeting — post-confrontation, bar context. Flat, loaded. Not a welcome. Three words that replace a whole conversation they both don't want to have."
@@ -15,7 +15,7 @@ lines:
access: [public]
trust: surface
situation: [bar_evening, greeting]
mood: [comfortable]
mood: [content]
topic: [personal]
tags: [pc-detective, greeting, public-tier]
@@ -15,7 +15,7 @@ lines:
access: [public]
trust: surface
situation: [bar_evening, greeting]
mood: [comfortable]
mood: [content]
topic: [personal]
tags: [pc-smuggler, greeting, public-tier]
@@ -25,7 +25,7 @@ lines:
access: [public]
trust: surface
situation: [bar_evening, social]
mood: [comfortable]
mood: [content]
topic: [routine]
tags: [pc-smuggler, social, public-tier]
@@ -39,23 +39,23 @@ lines:
# ============================================================
- id: the-last-shift_d_101
text: "There you are. Grab a seat -- Lera's doing that thing with the grain spirit again. Don't ask, just trust me and order the ale."
text: "There you are. Grab a seat Lera's doing that thing with the grain spirit again. Don't ask, just trust me and order the ale."
role: bar-regular
access: [peer]
trust: surface
situation: [bar_evening, social]
topic: [personal]
mood: [fond, comfortable]
mood: [warm, content]
tags: [greeting, phase-1, establishes-warmth]
- id: the-last-shift_d_102
text: "Corner booth's free. I saved it -- force of habit."
text: "Corner booth's free. I saved it force of habit."
role: bar-regular
access: [peer]
trust: surface
situation: [bar_evening, arrival]
topic: [personal]
mood: [fond]
mood: [warm]
tags: [greeting, phase-1, spatial-anchor]
- id: the-last-shift_d_103
@@ -65,7 +65,7 @@ lines:
trust: surface
situation: [bar_evening, social]
topic: [personal, routine]
mood: [fond, comfortable]
mood: [warm, content]
tags: [greeting, phase-1-2]
- id: the-last-shift_d_104
@@ -75,27 +75,27 @@ lines:
trust: surface
situation: [bar_evening, arrival]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [greeting, phase-2-5, repeatable]
- id: the-last-shift_d_105
text: "Good timing. Naia was here earlier -- you just missed her."
text: "Good timing. Naia was here earlier you just missed her."
role: bar-regular
access: [peer]
trust: surface
situation: [bar_evening, social]
topic: [colleague, personal]
mood: [comfortable]
mood: [content]
tags: [greeting, phase-2, naia-reference]
- id: the-last-shift_d_106
text: "Grab a seat. Quiet night so far -- Lera's in a good mood, which means the ale's fresh."
text: "Grab a seat. Quiet night so far Lera's in a good mood, which means the ale's fresh."
role: bar-regular
access: [peer, public]
trust: surface
situation: [bar_evening, social]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [greeting, phase-1-3]
- id: the-last-shift_d_107
@@ -105,7 +105,7 @@ lines:
trust: surface
situation: [bar_evening, arrival]
topic: [personal]
mood: [concerned]
mood: [frustrated]
tags: [greeting, phase-3-5, post-pattern, shorter]
- id: the-last-shift_d_108
@@ -115,7 +115,7 @@ lines:
trust: surface
situation: [bar_evening, arrival]
topic: [routine, personal]
mood: [comfortable]
mood: [content]
tags: [greeting, phase-2-3]
# ============================================================
@@ -130,17 +130,17 @@ lines:
trust: surface
situation: [bar_evening, social]
topic: [routine, colleague]
mood: [comfortable]
mood: [content]
tags: [orientation, district-background]
- id: the-last-shift_d_111
text: "See the card game in the corner? That's Harek's table. Security officer, off-duty. Harmless -- just loud."
text: "See the card game in the corner? That's Harek's table. Security officer, off-duty. Harmless just loud."
role: bar-regular
access: [peer]
trust: surface
situation: [bar_evening, social]
topic: [colleague]
mood: [comfortable]
mood: [content]
tags: [orientation, npc-introduction]
- id: the-last-shift_d_112
@@ -150,7 +150,7 @@ lines:
trust: surface
situation: [bar_evening, social]
topic: [routine, colleague]
mood: [comfortable]
mood: [content]
tags: [orientation, district-background]
- id: the-last-shift_d_113
@@ -160,7 +160,7 @@ lines:
trust: surface
situation: [social]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [setting-atmosphere]
- id: the-last-shift_d_114
@@ -170,7 +170,7 @@ lines:
trust: surface
situation: [social]
topic: [routine, institution]
mood: [comfortable]
mood: [content]
tags: [self-introduction, institutional-background]
- id: the-last-shift_d_115
@@ -180,27 +180,27 @@ lines:
trust: surface
situation: [social]
topic: [personal, institution]
mood: [comfortable]
mood: [content]
tags: [backstory, phase-1]
- id: the-last-shift_d_116
text: "Lera remembers every regular's order. Eighteen years of that. Don't ask how she does it -- she'll just pour you one and prove it."
text: "Lera remembers every regular's order. Eighteen years of that. Don't ask how she does it she'll just pour you one and prove it."
role: bar-regular
access: [peer, public]
trust: surface
situation: [bar_evening, social]
topic: [colleague]
mood: [fond]
mood: [warm]
tags: [community-texture]
- id: the-last-shift_d_117
text: "The shift crowd clears out by 19:00. After that it's just us -- regulars, a few stragglers. The good hours."
text: "The shift crowd clears out by 19:00. After that it's just us regulars, a few stragglers. The good hours."
role: bar-regular
access: [peer]
trust: surface
situation: [bar_evening]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [setting-atmosphere, routine]
- id: the-last-shift_d_118
@@ -210,7 +210,7 @@ lines:
trust: surface
situation: [social]
topic: [personal]
mood: [comfortable]
mood: [content]
tags: [setting-detail, phase-1]
- id: the-last-shift_d_119
@@ -220,7 +220,7 @@ lines:
trust: surface
situation: [social, bar_evening]
topic: [personal]
mood: [comfortable]
mood: [content]
tags: [spatial-anchor, character-detail]
# ============================================================
@@ -233,33 +233,33 @@ lines:
# --- Surface trust ---
- id: the-last-shift_d_120
text: "The Commission runs maintenance checks quarterly. I handle the field side -- equipment calibration, relay diagnostics. Standard."
text: "The Commission runs maintenance checks quarterly. I handle the field side equipment calibration, relay diagnostics. Standard."
role: bar-regular
access: [peer, authority]
trust: surface
situation: [social]
topic: [institution, routine]
mood: [comfortable]
mood: [content]
tags: [institutional-background]
- id: the-last-shift_d_121
text: "Naia teaches the station kids. Primary education, mostly. She's good at it -- patient. The kids adore her."
text: "Naia teaches the station kids. Primary education, mostly. She's good at it patient. The kids adore her."
role: bar-regular
access: [peer]
trust: surface
situation: [social, bar_evening]
topic: [colleague, personal]
mood: [fond]
mood: [warm]
tags: [naia-reference, phase-2]
- id: the-last-shift_d_122
text: "The district runs on freight. Terminal handles most of it -- container processing, manifest filing. Bread and butter."
text: "The district runs on freight. Terminal handles most of it container processing, manifest filing. Bread and butter."
role: bar-regular
access: [peer, public]
trust: surface
situation: [social]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [district-context]
- id: the-last-shift_d_123
@@ -269,7 +269,7 @@ lines:
trust: surface
situation: [social, investigation]
topic: [colleague, institution]
mood: [comfortable]
mood: [content]
tags: [deflection-surface, distance-from-hub]
- id: the-last-shift_d_124
@@ -279,7 +279,7 @@ lines:
trust: surface
situation: [social]
topic: [colleague, personal]
mood: [comfortable]
mood: [content]
tags: [community-framing]
- id: the-last-shift_d_125
@@ -289,19 +289,19 @@ lines:
trust: surface
situation: [social]
topic: [institution]
mood: [comfortable]
mood: [content]
tags: [information-offer, phase-2, overcompensation-seed]
# --- Real trust ---
- id: the-last-shift_d_130
text: "Naia's been worried lately. About Kael -- her partner. He's a dock worker at the Terminal. Late nights, evasive answers. She confided in me."
text: "Naia's been worried lately. About Kael her partner. He's a dock worker at the Terminal. Late nights, evasive answers. She confided in me."
role: bar-regular
access: [peer]
trust: real
situation: [social, bar_evening]
topic: [colleague, personal, trust]
mood: [concerned]
mood: [frustrated]
tags: [naia-kael-link, phase-2, critical-information]
knowledge_grant:
fact_id: "relationship.kael_naia_connection"
@@ -314,7 +314,7 @@ lines:
trust: real
situation: [social]
topic: [institution, investigation]
mood: [analytical]
mood: [focused]
tags: [institutional-access, phase-2-3, self-incriminating-hint]
- id: the-last-shift_d_132
@@ -324,7 +324,7 @@ lines:
trust: real
situation: [social, bar_evening]
topic: [personal, trust]
mood: [concerned, conflicted]
mood: [frustrated, anxious]
tags: [motivation-reveal, phase-2-3]
- id: the-last-shift_d_133
@@ -334,7 +334,7 @@ lines:
trust: real
situation: [social]
topic: [institution, investigation]
mood: [analytical]
mood: [focused]
tags: [institutional-capability, overcompensation, phase-3-4]
knowledge_grant:
fact_id: "investigation.manifest_discrepancy"
@@ -347,7 +347,7 @@ lines:
trust: real
situation: [social]
topic: [institution, personal]
mood: [analytical]
mood: [focused]
tags: [self-awareness, capability-reveal]
- id: the-last-shift_d_135
@@ -357,7 +357,7 @@ lines:
trust: real
situation: [social, investigation]
topic: [trust]
mood: [conflicted]
mood: [anxious]
tags: [deflection-real-tier, phase-4, the-lie]
- id: the-last-shift_d_136
@@ -367,19 +367,19 @@ lines:
trust: real
situation: [bar_evening, social]
topic: [money, personal]
mood: [conflicted]
mood: [anxious]
tags: [moral-position, community-loyalty]
# --- Secret trust ---
- id: the-last-shift_d_140
text: "I ran a compliance check. Unauthorized. Six weeks ago. Naia was so worried about Kael -- I thought I could help. I found manifest discrepancies tied to his shifts."
text: "I ran a compliance check. Unauthorized. Six weeks ago. Naia was so worried about Kael I thought I could help. I found manifest discrepancies tied to his shifts."
role: bar-regular
access: [peer]
trust: secret
situation: [alone, social]
topic: [investigation, trust, personal]
mood: [conflicted]
mood: [anxious]
tags: [confession, phase-5, critical-reveal]
knowledge_grant:
fact_id: "investigation.manifest_discrepancy"
@@ -392,30 +392,30 @@ lines:
trust: secret
situation: [alone, social]
topic: [personal, trust, institution]
mood: [conflicted]
mood: [anxious]
tags: [motivation-confession, phase-5]
- id: the-last-shift_d_142
text: "The irregularities correlate with Torek Lintar's inspection shifts. That's why I can't -- I can't be near him. He doesn't know I know."
text: "The irregularities correlate with Torek Lintar's inspection shifts. That's why I can't I can't be near him. He doesn't know I know."
role: bar-regular
access: [peer]
trust: secret
situation: [alone]
topic: [investigation, danger]
mood: [worried, conflicted]
mood: [anxious]
tags: [torek-link, avoidance-explanation, phase-5]
knowledge_grant:
fact_id: "investigation.shift_mismatch"
confidence: "knows_details"
- id: the-last-shift_d_143
text: "I don't know what you're looking for. I told you everything I know. If you're asking whether I'm hiding something -- I'm a field tech, not an analyst."
text: "I don't know what you're looking for. I told you everything I know. If you're asking whether I'm hiding something I'm a field tech, not an analyst."
role: bar-regular
access: [peer, authority]
trust: secret
situation: [investigation, confrontation]
topic: [trust, investigation]
mood: [suspicious, conflicted]
mood: [suspicious, anxious]
tags: [denial-under-pressure, phase-4-5, the-wall]
- id: the-last-shift_d_144
@@ -425,7 +425,7 @@ lines:
trust: secret
situation: [alone, social]
topic: [trust, personal]
mood: [conflicted]
mood: [anxious]
tags: [retrospective-confession, phase-5, emotional-payload]
# ============================================================
@@ -435,36 +435,36 @@ lines:
# ============================================================
- id: the-last-shift_d_150
text: "Oh -- before I forget. The dock scheduler, Maret? She's sharp. If you need freight records context, she's the one to ask."
text: "Oh before I forget. The dock scheduler, Maret? She's sharp. If you need freight records context, she's the one to ask."
role: bar-regular
access: [peer]
trust: surface
situation: [social, bar_evening]
topic: [colleague, investigation]
mood: [comfortable]
mood: [content]
tags: [unprompted, genuine-help, phase-1-2]
knowledge_grant:
fact_id: "relationship.trust_network"
confidence: "suspects"
- id: the-last-shift_d_151
text: "I checked the relay calibration logs for the Terminal this morning. Nothing flagged. But the data throughput was higher than standard -- more manifests processed than usual."
text: "I checked the relay calibration logs for the Terminal this morning. Nothing flagged. But the data throughput was higher than standard more manifests processed than usual."
role: bar-regular
access: [peer, authority]
trust: real
situation: [social]
topic: [institution, cargo]
mood: [analytical]
mood: [focused]
tags: [unprompted, overcompensation, phase-3-4]
- id: the-last-shift_d_152
text: "I asked around -- quietly -- about the shift rotation schedule. Voss has been adjusting it more than usual this cycle. Might mean nothing."
text: "I asked around quietly about the shift rotation schedule. Voss has been adjusting it more than usual this cycle. Might mean nothing."
role: bar-regular
access: [peer]
trust: real
situation: [social, bar_evening]
topic: [routine, investigation]
mood: [analytical, concerned]
mood: [focused, frustrated]
tags: [unprompted, overcompensation, phase-3-4]
- id: the-last-shift_d_153
@@ -474,7 +474,7 @@ lines:
trust: real
situation: [social]
topic: [institution, investigation]
mood: [comfortable]
mood: [content]
tags: [unprompted, information-offer, overcompensation, phase-3-5]
- id: the-last-shift_d_154
@@ -484,20 +484,20 @@ lines:
trust: real
situation: [social, bar_evening]
topic: [personal, colleague]
mood: [concerned]
mood: [frustrated]
tags: [unprompted, naia-worry, phase-2-3]
knowledge_grant:
fact_id: "relationship.kael_naia_connection"
confidence: "knows_details"
- id: the-last-shift_d_155
text: "You should know -- Lera watches out for her regulars. If people have been asking about you, she'd know. She just won't volunteer it."
text: "You should know Lera watches out for her regulars. If people have been asking about you, she'd know. She just won't volunteer it."
role: bar-regular
access: [peer]
trust: real
situation: [social, bar_evening]
topic: [colleague, trust, danger]
mood: [concerned]
mood: [frustrated]
tags: [unprompted, genuine-help, phase-2-3]
# ============================================================
@@ -506,67 +506,67 @@ lines:
# ============================================================
- id: the-last-shift_d_160
text: "Actually, I should head out. Early shift tomorrow -- calibration rounds start at 07:30."
text: "Actually, I should head out. Early shift tomorrow calibration rounds start at 07:30."
role: bar-regular
access: [peer, public]
trust: surface
situation: [bar_evening]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [avoidance-excuse-1, torek-trigger, phase-3]
- id: the-last-shift_d_161
text: "Sorry -- headache coming on. Station air does that sometimes. I'll catch you tomorrow."
text: "Sorry headache coming on. Station air does that sometimes. I'll catch you tomorrow."
role: bar-regular
access: [peer, public]
trust: surface
situation: [bar_evening]
topic: [personal]
mood: [comfortable]
mood: [content]
tags: [avoidance-excuse-2, torek-trigger, phase-3]
- id: the-last-shift_d_162
text: "I need to check something at the Commission kiosk. Forgot to file a diagnostic report. I'll be quick -- or not. You know how the system is."
text: "I need to check something at the Commission kiosk. Forgot to file a diagnostic report. I'll be quick or not. You know how the system is."
role: bar-regular
access: [peer]
trust: surface
situation: [bar_evening]
topic: [institution, routine]
mood: [comfortable]
mood: [content]
tags: [avoidance-excuse-3, torek-trigger, phase-3]
- id: the-last-shift_d_163
text: "Torek? He's just loud. I don't love loud drunks. Nothing personal -- I just like a quieter evening."
text: "Torek? He's just loud. I don't love loud drunks. Nothing personal I just like a quieter evening."
role: bar-regular
access: [peer]
trust: surface
situation: [social, investigation]
topic: [colleague]
mood: [comfortable]
mood: [content]
tags: [torek-deflection, phase-4, the-deflection]
- id: the-last-shift_d_164
text: "Manifests? I wouldn't know -- I'm on the equipment side, not the freight side. Different department entirely."
text: "Manifests? I wouldn't know I'm on the equipment side, not the freight side. Different department entirely."
role: bar-regular
access: [peer, authority]
trust: surface
situation: [investigation, social]
topic: [cargo, institution]
mood: [comfortable]
mood: [content]
tags: [topic-deflection, cargo-avoidance, phase-3-5]
- id: the-last-shift_d_165
text: "Anyway -- did you try the ale? Lera got a new supply run in. Much better than last week's batch."
text: "Anyway did you try the ale? Lera got a new supply run in. Much better than last week's batch."
role: bar-regular
access: [peer]
trust: surface
situation: [social, bar_evening]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [redirect, warmth-recovery, phase-4]
- id: the-last-shift_d_166
text: "I'm just a field tech. I maintain equipment. I don't track people or shipments -- that's your department."
text: "I'm just a field tech. I maintain equipment. I don't track people or shipments that's your department."
role: bar-regular
access: [peer, authority]
trust: surface
@@ -576,13 +576,13 @@ lines:
tags: [deflection-firm, phase-4-5, the-wall]
- id: the-last-shift_d_167
text: "Let's talk about something else. How's the investigation going -- generally? Making progress?"
text: "Let's talk about something else. How's the investigation going generally? Making progress?"
role: bar-regular
access: [peer]
trust: real
situation: [social, investigation]
topic: [investigation, trust]
mood: [conflicted]
mood: [anxious]
tags: [redirect-to-detective, controlled-recovery, phase-4]
# ============================================================
@@ -598,7 +598,7 @@ lines:
trust: surface
situation: [bar_evening, arrival]
topic: [personal]
mood: [fond]
mood: [warm]
tags: [post-discovery, surface-warmth, phase-5]
- id: the-last-shift_d_171
@@ -608,7 +608,7 @@ lines:
trust: real
situation: [social]
topic: [institution]
mood: [comfortable]
mood: [content]
tags: [post-discovery, overcompensation, phase-5]
- id: the-last-shift_d_172
@@ -618,7 +618,7 @@ lines:
trust: surface
situation: [bar_evening, social]
topic: [personal, investigation]
mood: [concerned]
mood: [frustrated]
tags: [post-discovery, awareness, phase-5]
- id: the-last-shift_d_173
@@ -628,15 +628,74 @@ lines:
trust: real
situation: [social]
topic: [trust, personal]
mood: [fond, conflicted]
mood: [warm, anxious]
tags: [post-discovery, genuine-but-contaminated, phase-5]
- id: the-last-shift_d_174
text: "If there's anything I can help with -- anything at all -- you just ask. You know that."
text: "If there's anything I can help with anything at all you just ask. You know that."
role: bar-regular
access: [peer]
trust: real
situation: [social, bar_evening]
topic: [trust, personal]
mood: [fond, concerned]
mood: [warm, frustrated]
tags: [post-discovery, overcompensation, phase-5, closing-line]
# ============================================================
# LAYER 2 GREETING VARIANTS — D-028 Layer 2
# Ticket #170 (Sprint 15). situation: [greeting] fires on initial contact.
# Access tier + mood encode relationship history state.
# Sera is THE FRIEND for the detective. Warm, observant, bar anchor.
# ============================================================
# first_meeting (detective path): RelationshipState Unknown → Public/Authority access.
# Sera clocks them as Commission immediately. Makes them welcome anyway.
- id: the-last-shift_d_175
text: "Commission? Don't worry, I don't bite. I'm Sera. Corner booth's better — you can see the whole room."
role: bar-regular
access: [public, authority]
trust: surface
situation: [greeting]
mood: [warm]
topic: [personal, institution]
tags: [sera, greeting, first-meeting, detective-path, layer2]
notes: "Layer 2 greeting — first meeting, detective path. Sera reads the institutional marking immediately and disarms it. Corner booth tip is genuine — Sera always notices the useful details."
# established (detective path): count >= 3, RelationshipState: Known/Friendly → Peer access.
# Warmer, more personal. Sera has been waiting for them.
- id: the-last-shift_d_176
text: "I was hoping you'd come in. Saved the corner booth. How'd today go?"
role: bar-regular
access: [peer]
trust: surface
situation: [greeting]
mood: [warm]
topic: [personal, investigation]
tags: [sera, greeting, repeat-visit, detective-path, layer2]
notes: "Layer 2 greeting — established, detective path. Personal, invested. Sera asks about their day the way a friend does — not just small talk."
# first_meeting (smuggler path): smuggler is dock crew, Sera knows the district crowd.
# Peer/insider access from the start — Sera has social network, not institutional distance.
- id: the-last-shift_d_177
text: "Terminal crew? Grab a seat. Kael usually sits in the back if you're looking for him."
role: bar-regular
access: [peer, insider]
trust: surface
situation: [greeting]
mood: [content]
topic: [colleague, personal]
tags: [sera, greeting, first-meeting, smuggler-path, layer2]
notes: "Layer 2 greeting — first meeting, smuggler path. Sera recognizes dock crew on sight and extends the social network. Mentioning Kael is casual intel — she knows everyone's connections."
# post-confrontation: confrontation logged. Sera's surface warmth is present but qualified.
# She doesn't know where they stand. The welcome is real but uncertain.
- id: the-last-shift_d_178
text: "You're back. I wasn't sure you would be."
role: bar-regular
access: [peer]
trust: surface
situation: [greeting]
mood: [anxious, suspicious]
topic: [personal, trust]
tags: [sera, greeting, post-confrontation, layer2]
notes: "Layer 2 greeting — post-confrontation. Sera's warmth is genuine but the relief is complicated. She genuinely didn't know if they'd come back. The relationship is still there but it's been stressed."
@@ -20,7 +20,7 @@ lines:
trust: surface
situation: [arrival, routine]
topic: [routine, cargo]
mood: [comfortable]
mood: [content]
tags: [renn, greeting, operational]
- id: the-terminal_d_501
@@ -30,7 +30,7 @@ lines:
trust: surface
situation: [arrival, routine]
topic: [routine, cargo]
mood: [comfortable]
mood: [content]
tags: [renn, greeting, procedural]
- id: the-terminal_d_502
@@ -40,7 +40,7 @@ lines:
trust: surface
situation: [arrival, shift_start]
topic: [routine, cargo]
mood: [comfortable]
mood: [content]
tags: [renn, greeting, cargo]
# ==========================================
@@ -54,7 +54,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [renn, operational, brief]
- id: the-terminal_d_504
@@ -64,7 +64,7 @@ lines:
trust: surface
situation: [routine, investigation]
topic: [routine, cargo]
mood: [comfortable]
mood: [content]
tags: [renn, procedural, documentation]
- id: the-terminal_d_505
@@ -74,7 +74,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine, cargo]
mood: [comfortable]
mood: [content]
tags: [renn, operational]
- id: the-terminal_d_506
@@ -84,7 +84,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [renn, operational]
dual_lens:
smuggler: "Clean phrase. Public-safe. He'd say it either way."
@@ -154,7 +154,7 @@ lines:
trust: surface
situation: [investigation, routine]
topic: [institution, cargo]
mood: [comfortable]
mood: [content]
tags: [renn, detective-path, procedural]
- id: the-terminal_d_512
@@ -164,7 +164,7 @@ lines:
trust: surface
situation: [investigation]
topic: [cargo, institution]
mood: [comfortable]
mood: [content]
tags: [renn, detective-path, deflection]
dual_lens:
smuggler: "That's the answer. Clean and correct."
@@ -177,7 +177,7 @@ lines:
trust: surface
situation: [investigation, confrontation]
topic: [cargo, institution]
mood: [comfortable]
mood: [content]
tags: [renn, detective-path, authority-assertion]
# ==========================================
@@ -191,7 +191,7 @@ lines:
trust: surface
situation: [shift_end, routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [renn, closing]
- id: the-terminal_d_515
@@ -201,7 +201,7 @@ lines:
trust: surface
situation: [shift_end]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [renn, closing]
# ==========================================
@@ -215,7 +215,7 @@ lines:
trust: surface
situation: [arrival, routine]
topic: [routine, cargo]
mood: [comfortable]
mood: [content]
tags: [renn, greeting, generation-pass]
- id: the-terminal_d_517
@@ -225,7 +225,7 @@ lines:
trust: surface
situation: [arrival, routine]
topic: [routine, cargo]
mood: [comfortable]
mood: [content]
tags: [renn, greeting, procedural, generation-pass]
- id: the-terminal_d_518
@@ -235,7 +235,7 @@ lines:
trust: surface
situation: [arrival, routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [renn, delay, generation-pass]
- id: the-terminal_d_519
@@ -245,7 +245,7 @@ lines:
trust: surface
situation: [routine, investigation]
topic: [routine, cargo]
mood: [comfortable]
mood: [content]
tags: [renn, procedural, generation-pass]
- id: the-terminal_d_520
@@ -255,7 +255,7 @@ lines:
trust: surface
situation: [arrival, routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [renn, operational, generation-pass]
- id: the-terminal_d_521
@@ -265,5 +265,5 @@ lines:
trust: surface
situation: [shift_end, routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [renn, closing, generation-pass]
@@ -19,7 +19,7 @@ lines:
trust: surface
situation: [shift_start, arrival]
topic: [routine, cargo]
mood: [comfortable]
mood: [content]
tags: [dock-worker, greeting]
- id: the-terminal_d_201
@@ -29,7 +29,7 @@ lines:
trust: surface
situation: [arrival, shift_start]
topic: [routine]
mood: [tired]
mood: [frustrated]
tags: [dock-worker, greeting]
- id: the-terminal_d_202
@@ -39,7 +39,7 @@ lines:
trust: surface
situation: [arrival, shift_start]
topic: [institution, routine]
mood: [wary]
mood: [suspicious]
tags: [dock-worker, voss, caution]
dual_lens:
smuggler: "Voss is in early. If the schedule's tight, the window shifts. Check it."
@@ -56,7 +56,7 @@ lines:
trust: surface
situation: [routine]
topic: [cargo, routine]
mood: [comfortable]
mood: [content]
tags: [dock-worker, bay-four, procedural]
dual_lens:
smuggler: "He doesn't know what's in it. Just annoyed at the backup."
@@ -69,7 +69,7 @@ lines:
trust: surface
situation: [routine, shift_start]
topic: [cargo, routine]
mood: [comfortable]
mood: [content]
tags: [dock-worker, manifest]
- id: the-terminal_d_205
@@ -79,7 +79,7 @@ lines:
trust: surface
situation: [routine]
topic: [colleague, routine]
mood: [wary]
mood: [suspicious]
tags: [dock-worker, maret, observation]
dual_lens:
smuggler: "Maret reviewing something. If she flags a discrepancy, Voss'll sit on it. He always does."
@@ -92,7 +92,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine, colleague]
mood: [comfortable]
mood: [content]
tags: [dock-worker, drin, inspection]
dual_lens:
smuggler: "Drin on six while bay four stays held. Scheduled or arranged?"
@@ -105,7 +105,7 @@ lines:
trust: surface
situation: [shift_transition, routine]
topic: [institution, routine]
mood: [wary]
mood: [suspicious]
tags: [dock-worker, commission, transition-window]
dual_lens:
smuggler: "Commission presence during transition. Window's compromised."
@@ -118,7 +118,7 @@ lines:
trust: surface
situation: [routine, shift_start]
topic: [colleague, routine]
mood: [comfortable]
mood: [content]
tags: [dock-worker, pael, community]
- id: the-terminal_d_209
@@ -128,7 +128,7 @@ lines:
trust: surface
situation: [routine]
topic: [cargo, colleague]
mood: [wary]
mood: [suspicious]
tags: [dock-worker, maret, voss, discrepancy]
dual_lens:
smuggler: "Forty kilos. Maret flagged it. Voss buried it. Same as last time."
@@ -144,7 +144,7 @@ lines:
trust: surface
situation: [routine]
topic: [cargo, routine]
mood: [wary]
mood: [suspicious]
tags: [dock-worker, c4-storage, observation]
dual_lens:
smuggler: "C-4's getting casual attention. Note it."
@@ -161,7 +161,7 @@ lines:
trust: surface
situation: [shift_end, routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [dock-worker, social, the-last-shift]
- id: the-terminal_d_212
@@ -171,7 +171,7 @@ lines:
trust: surface
situation: [routine]
topic: [institution, routine]
mood: [comfortable]
mood: [content]
tags: [dock-worker, workers-association, community]
- id: the-terminal_d_213
@@ -181,7 +181,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [dock-worker, social, pael]
# ==========================================
@@ -195,7 +195,7 @@ lines:
trust: surface
situation: [investigation, routine]
topic: [institution, routine]
mood: [wary]
mood: [suspicious]
tags: [dock-worker, detective-path, redirect]
- id: the-terminal_d_215
@@ -205,7 +205,7 @@ lines:
trust: surface
situation: [investigation, confrontation]
topic: [institution, routine]
mood: [wary]
mood: [suspicious]
tags: [dock-worker, detective-path, deflection]
- id: the-terminal_d_216
@@ -215,7 +215,7 @@ lines:
trust: surface
situation: [investigation]
topic: [institution, routine]
mood: [wary]
mood: [suspicious]
tags: [dock-worker, detective-path, voss, redirect]
# ==========================================
@@ -229,7 +229,7 @@ lines:
trust: real
situation: [routine]
topic: [colleague]
mood: [wary]
mood: [suspicious]
tags: [dock-worker, maret, peer-candor]
dual_lens:
smuggler: "Maret's not going to drop it. That's the problem."
@@ -242,7 +242,7 @@ lines:
trust: real
situation: [routine]
topic: [institution, colleague]
mood: [wary]
mood: [suspicious]
tags: [dock-worker, voss, peer-candor]
dual_lens:
smuggler: "He suspects Voss is shaving something. Doesn't know what. Doesn't want to."
@@ -259,7 +259,7 @@ lines:
trust: surface
situation: [shift_end]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [dock-worker, closing]
- id: the-terminal_d_220
@@ -269,7 +269,7 @@ lines:
trust: surface
situation: [shift_end, shift_transition]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [dock-worker, closing]
# ==========================================
@@ -283,7 +283,7 @@ lines:
trust: surface
situation: [arrival, shift_start]
topic: [routine, cargo]
mood: [comfortable]
mood: [content]
tags: [dock-worker, greeting, generation-pass]
- id: the-terminal_d_222
@@ -293,7 +293,7 @@ lines:
trust: surface
situation: [arrival, shift_start]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [dock-worker, station, generation-pass]
- id: the-terminal_d_223
@@ -303,7 +303,7 @@ lines:
trust: surface
situation: [routine, shift_start]
topic: [colleague, routine]
mood: [comfortable]
mood: [content]
tags: [dock-worker, pael, generation-pass]
- id: the-terminal_d_224
@@ -313,7 +313,7 @@ lines:
trust: surface
situation: [shift_start, routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [dock-worker, social, generation-pass]
- id: the-terminal_d_225
@@ -323,7 +323,7 @@ lines:
trust: surface
situation: [routine]
topic: [cargo, routine]
mood: [comfortable]
mood: [content]
tags: [dock-worker, scan-hold, generation-pass]
- id: the-terminal_d_226
@@ -333,7 +333,7 @@ lines:
trust: surface
situation: [routine]
topic: [colleague, routine]
mood: [comfortable]
mood: [content]
tags: [dock-worker, new-hire, generation-pass]
- id: the-terminal_d_227
@@ -343,7 +343,7 @@ lines:
trust: surface
situation: [shift_transition]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [dock-worker, handoff, generation-pass]
- id: the-terminal_d_228
@@ -353,7 +353,7 @@ lines:
trust: surface
situation: [routine, shift_start]
topic: [routine, cargo]
mood: [wary]
mood: [suspicious]
tags: [dock-worker, span-gate, generation-pass]
- id: the-terminal_d_229
@@ -363,7 +363,7 @@ lines:
trust: surface
situation: [shift_start, routine]
topic: [colleague, routine]
mood: [tired]
mood: [frustrated]
tags: [dock-worker, staffing, generation-pass]
- id: the-terminal_d_230
@@ -373,7 +373,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine, colleague]
mood: [comfortable]
mood: [content]
tags: [dock-worker, pael, humor, generation-pass]
- id: the-terminal_d_231
@@ -383,7 +383,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [dock-worker, overtime, generation-pass]
- id: the-terminal_d_232
@@ -393,5 +393,5 @@ lines:
trust: surface
situation: [shift_end]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [dock-worker, closing, generation-pass]
@@ -18,7 +18,7 @@ lines:
access: [insider, peer]
trust: surface
situation: [arrival, shift_start]
mood: [fond]
mood: [warm]
topic: [colleague]
tags: [kael, greeting, phase-1]
@@ -28,7 +28,7 @@ lines:
access: [insider, peer]
trust: surface
situation: [shift_start]
mood: [comfortable]
mood: [content]
topic: [routine]
tags: [kael, greeting, phase-1]
@@ -38,7 +38,7 @@ lines:
access: [insider, peer]
trust: surface
situation: [shift_start]
mood: [comfortable]
mood: [content]
topic: [colleague, routine]
tags: [kael, greeting, humor]
@@ -48,7 +48,7 @@ lines:
access: [insider, peer]
trust: surface
situation: [shift_start, social]
mood: [fond]
mood: [warm]
topic: [colleague]
tags: [kael, greeting, phase-1]
@@ -58,7 +58,7 @@ lines:
access: [peer]
trust: surface
situation: [arrival, social]
mood: [comfortable]
mood: [content]
topic: [personal]
tags: [kael, greeting, casual]
@@ -69,7 +69,7 @@ lines:
access: [public, authority]
trust: surface
situation: [arrival]
mood: [comfortable]
mood: [content]
topic: [routine]
tags: [kael, greeting, outsider]
@@ -83,7 +83,7 @@ lines:
access: [insider, peer]
trust: surface
situation: [routine, shift_start]
mood: [comfortable]
mood: [content]
topic: [routine, cargo]
tags: [kael, operational]
@@ -93,7 +93,7 @@ lines:
access: [public, peer]
trust: surface
situation: [routine]
mood: [comfortable]
mood: [content]
topic: [cargo, routine]
tags: [kael, operational]
knowledge_grant:
@@ -106,7 +106,7 @@ lines:
access: [insider, peer]
trust: surface
situation: [shift_start]
mood: [comfortable]
mood: [content]
topic: [routine]
tags: [kael, humor]
@@ -116,7 +116,7 @@ lines:
access: [public, peer]
trust: surface
situation: [routine]
mood: [comfortable]
mood: [content]
topic: [routine]
tags: [kael, environmental]
@@ -126,7 +126,7 @@ lines:
access: [insider, peer]
trust: surface
situation: [routine]
mood: [comfortable]
mood: [content]
topic: [cargo, colleague]
tags: [kael, operational, maret]
@@ -136,7 +136,7 @@ lines:
access: [insider, peer]
trust: surface
situation: [shift_end, shift_transition]
mood: [comfortable]
mood: [content]
topic: [routine]
tags: [kael, operational]
@@ -146,7 +146,7 @@ lines:
access: [insider, peer]
trust: surface
situation: [social, routine]
mood: [fond]
mood: [warm]
topic: [personal]
tags: [kael, naia-reference, casual]
@@ -156,6 +156,7 @@ lines:
access: [public, peer]
trust: surface
situation: [routine, social]
mood: [content]
topic: [colleague]
tags: [kael, observational]
@@ -199,7 +200,7 @@ lines:
access: [insider]
trust: real
situation: [routine]
mood: [comfortable]
mood: [content]
topic: [cargo]
tags: [kael, ring-ops, maret, phase-2]
@@ -209,7 +210,7 @@ lines:
access: [insider]
trust: real
situation: [social]
mood: [concerned]
mood: [frustrated]
topic: [danger, trust]
tags: [kael, ring-ops, nils, tension, phase-2]
@@ -219,6 +220,7 @@ lines:
access: [insider]
trust: real
situation: [routine]
mood: [content]
topic: [colleague]
tags: [kael, ring-ops, drin, phase-2]
knowledge_grant:
@@ -231,7 +233,7 @@ lines:
access: [insider]
trust: real
situation: [routine, social]
mood: [worried]
mood: [anxious]
topic: [colleague, danger]
tags: [kael, ring-ops, maret, caution, phase-2]
@@ -241,7 +243,7 @@ lines:
access: [insider]
trust: real
situation: [shift_transition]
mood: [concerned]
mood: [frustrated]
topic: [cargo, danger]
tags: [kael, ring-ops, contraband, phase-2]
@@ -255,7 +257,7 @@ lines:
access: [insider]
trust: secret
situation: [social, alone]
mood: [conflicted]
mood: [anxious]
topic: [trust, personal]
tags: [kael, vulnerability, friend-arc]
@@ -265,7 +267,7 @@ lines:
access: [insider]
trust: secret
situation: [social, alone]
mood: [conflicted]
mood: [anxious]
topic: [personal, trust]
tags: [kael, naia-reference, vulnerability]
@@ -275,7 +277,7 @@ lines:
access: [insider]
trust: secret
situation: [alone]
mood: [worried]
mood: [anxious]
topic: [personal, trust]
tags: [kael, naia-reference, vulnerability, friend-arc]
@@ -289,7 +291,7 @@ lines:
access: [insider, peer]
trust: surface
situation: [shift_start]
mood: [concerned]
mood: [frustrated]
topic: [colleague, danger]
tags: [kael, unprompted, warning]
@@ -299,7 +301,7 @@ lines:
access: [insider, peer]
trust: surface
situation: [shift_end, social]
mood: [fond]
mood: [warm]
topic: [personal, colleague]
tags: [kael, unprompted, social]
@@ -309,7 +311,7 @@ lines:
access: [insider]
trust: real
situation: [social]
mood: [worried]
mood: [anxious]
topic: [danger, colleague]
tags: [kael, unprompted, torek, caution]
@@ -323,7 +325,7 @@ lines:
access: [insider, peer]
trust: surface
situation: [confrontation, social]
mood: [concerned]
mood: [frustrated]
topic: [personal]
tags: [kael, deflection, phase-4]
@@ -333,7 +335,7 @@ lines:
access: [insider, peer]
trust: surface
situation: [confrontation]
mood: [concerned]
mood: [frustrated]
topic: [personal, trust]
tags: [kael, deflection, phase-4]
@@ -343,7 +345,7 @@ lines:
access: [insider, peer]
trust: surface
situation: [confrontation]
mood: [concerned]
mood: [frustrated]
topic: [routine]
tags: [kael, deflection, lying, phase-4]
@@ -353,7 +355,7 @@ lines:
access: [insider, peer]
trust: surface
situation: [confrontation, shift_start]
mood: [concerned]
mood: [frustrated]
topic: [routine, trust]
tags: [kael, deflection, subject-change, phase-4]
@@ -363,7 +365,7 @@ lines:
access: [insider]
trust: surface
situation: [confrontation]
mood: [concerned]
mood: [frustrated]
topic: [danger]
tags: [kael, deflection, phase-4]
@@ -378,7 +380,7 @@ lines:
access: [insider]
trust: real
situation: [confrontation, alone]
mood: [conflicted]
mood: [anxious]
topic: [trust, personal]
tags: [kael, confession-path, phase-5]
@@ -389,7 +391,7 @@ lines:
access: [insider]
trust: surface
situation: [confrontation]
mood: [concerned]
mood: [frustrated]
topic: [danger, trust]
tags: [kael, hostile-path, phase-5]
@@ -400,7 +402,7 @@ lines:
access: [insider]
trust: secret
situation: [confrontation, alone]
mood: [conflicted]
mood: [anxious]
topic: [personal, trust]
tags: [kael, confession, naia-reference, phase-5]
@@ -422,3 +424,57 @@ lines:
situation: [confrontation, investigation]
topic: [colleague, routine]
tags: [kael, deflection, detective-path, voss]
# ========================================
# LAYER 2 GREETING VARIANTS — D-028 Layer 2
# Ticket #170 (Sprint 15). situation: [greeting] fires on initial contact.
# Access tier + mood encode relationship history state.
# ========================================
# first_meeting: InteractionMemory.count == 0. RelationshipState: Unknown → Public access only.
- id: the-terminal_d_050
text: "This section is dock crew and logistics. If you're Commission or admin, check-in's back that way."
role: dock-worker
access: [public]
trust: surface
situation: [greeting]
mood: [content]
topic: [routine]
tags: [kael, greeting, first-meeting, layer2]
notes: "Layer 2 greeting — first meeting. Kael is helpful but orienting the stranger away from his work."
# established — peer/smuggler context: count >= 3, RelationshipState: Known/Friendly → Peer/Insider access.
- id: the-terminal_d_051
text: "You're back. Good — bay three's been quiet. I'll fill you in."
role: dock-worker
access: [peer, insider]
trust: surface
situation: [greeting]
mood: [warm]
topic: [colleague, routine]
tags: [kael, greeting, repeat-visit, peer-tone, layer2]
notes: "Layer 2 greeting — established. Warm, practical, skips pleasantries. Treats them as crew."
# established — authority/detective context: count >= 3, RelationshipState: PersonOfInterest → Authority access.
- id: the-terminal_d_052
text: "Back again. I'm on shift — if you have questions, make them quick."
role: dock-worker
access: [authority]
trust: surface
situation: [greeting]
mood: [focused]
topic: [routine]
tags: [kael, greeting, repeat-visit, authority-tone, layer2]
notes: "Layer 2 greeting — repeat with authority figure. Professional, clipped, not hostile. Kael can't refuse but won't volunteer."
# post-confrontation: confrontation in InteractionMemory.notable_events. NPC mood shifted to suspicious/frustrated.
- id: the-terminal_d_053
text: "Didn't expect you today."
role: dock-worker
access: [peer, insider]
trust: surface
situation: [greeting]
mood: [suspicious, frustrated]
topic: [personal]
tags: [kael, greeting, post-confrontation, layer2]
notes: "Layer 2 greeting — post-confrontation. Strained. Four words doing the work of a paragraph. Not hostile but the warmth is gone."
@@ -21,7 +21,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [pael, seems-important-but-isnt, maintenance, b7]
dual_lens:
smuggler: "Pael knows the corridor's been used. But Pael knows nothing — this is an HVAC complaint."
@@ -42,7 +42,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [pael, atmospheric]
- id: the-terminal_d_042
@@ -52,7 +52,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [pael, atmospheric]
- id: the-terminal_d_043
@@ -62,7 +62,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [pael, warning, helpful]
- id: the-terminal_d_044
@@ -72,7 +72,7 @@ lines:
trust: surface
situation: [routine, social]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [pael, response]
- id: the-terminal_d_045
@@ -82,5 +82,5 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [pael, atmospheric]
@@ -19,7 +19,7 @@ lines:
trust: surface
situation: [arrival, shift_start]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [new-hire, greeting, orientation]
- id: the-terminal_d_401
@@ -29,7 +29,7 @@ lines:
trust: surface
situation: [arrival, shift_start]
topic: [routine, institution]
mood: [comfortable]
mood: [content]
tags: [new-hire, greeting, voss]
- id: the-terminal_d_402
@@ -39,7 +39,7 @@ lines:
trust: surface
situation: [arrival, shift_start]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [new-hire, greeting]
# ==========================================
@@ -53,7 +53,7 @@ lines:
trust: surface
situation: [routine]
topic: [cargo, routine]
mood: [comfortable]
mood: [content]
tags: [new-hire, bay-four, observation]
dual_lens:
smuggler: "New eyes on bay four. He doesn't know what he's looking at. But he noticed."
@@ -66,7 +66,7 @@ lines:
trust: surface
situation: [routine]
topic: [cargo, routine]
mood: [comfortable]
mood: [content]
tags: [new-hire, c4-storage, observation, inadvertent-witness]
dual_lens:
smuggler: "He saw someone in C-4 without a log. Does he know who? This is a problem."
@@ -83,7 +83,7 @@ lines:
trust: surface
situation: [routine, shift_transition]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [new-hire, transition-window, comparison]
dual_lens:
smuggler: "He's asking about the window. Doesn't know why it matters. Answer carefully."
@@ -96,7 +96,7 @@ lines:
trust: surface
situation: [routine]
topic: [cargo, routine]
mood: [comfortable]
mood: [content]
tags: [new-hire, bay-four, inadvertent-witness]
dual_lens:
smuggler: "He saw movement through bay four during the hold. This is a liability."
@@ -112,7 +112,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [new-hire, maintenance-corridors, orientation]
dual_lens:
smuggler: "He found the corridor entrance by accident. Normal for new workers. Noted."
@@ -129,7 +129,7 @@ lines:
trust: surface
situation: [routine]
topic: [institution, routine]
mood: [comfortable]
mood: [content]
tags: [new-hire, commission, curiosity]
- id: the-terminal_d_409
@@ -139,7 +139,7 @@ lines:
trust: surface
situation: [routine]
topic: [colleague]
mood: [comfortable]
mood: [content]
tags: [new-hire, maret, observation]
dual_lens:
smuggler: "He noticed Maret. Good that he's asking, not reporting. Manage this."
@@ -152,7 +152,7 @@ lines:
trust: surface
situation: [routine]
topic: [colleague]
mood: [comfortable]
mood: [content]
tags: [new-hire, voss, curiosity]
- id: the-terminal_d_411
@@ -162,7 +162,7 @@ lines:
trust: surface
situation: [routine]
topic: [institution, routine]
mood: [comfortable]
mood: [content]
tags: [new-hire, voss, career]
# ==========================================
@@ -176,7 +176,7 @@ lines:
trust: surface
situation: [shift_end]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [new-hire, closing]
- id: the-terminal_d_413
@@ -186,7 +186,7 @@ lines:
trust: surface
situation: [shift_end]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [new-hire, closing]
# ==========================================
@@ -200,7 +200,7 @@ lines:
trust: surface
situation: [routine, shift_start]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [new-hire, orientation, generation-pass]
- id: the-terminal_d_415
@@ -210,7 +210,7 @@ lines:
trust: surface
situation: [routine]
topic: [colleague]
mood: [comfortable]
mood: [content]
tags: [new-hire, maret, curiosity, generation-pass]
- id: the-terminal_d_416
@@ -220,7 +220,7 @@ lines:
trust: surface
situation: [routine, arrival]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [new-hire, orientation, generation-pass]
- id: the-terminal_d_417
@@ -230,7 +230,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [new-hire, social, generation-pass]
- id: the-terminal_d_418
@@ -240,7 +240,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [new-hire, orientation, humor, generation-pass]
- id: the-terminal_d_419
@@ -250,7 +250,7 @@ lines:
trust: surface
situation: [routine]
topic: [colleague]
mood: [comfortable]
mood: [content]
tags: [new-hire, drin, curiosity, generation-pass]
- id: the-terminal_d_420
@@ -260,5 +260,5 @@ lines:
trust: surface
situation: [routine]
topic: [colleague]
mood: [comfortable]
mood: [content]
tags: [new-hire, voss, humor, generation-pass]
@@ -23,7 +23,7 @@ lines:
access: [public]
trust: surface
situation: [arrival, greeting]
mood: [comfortable]
mood: [content]
topic: [routine]
tags: [pc-detective, greeting, public-tier]
@@ -23,7 +23,7 @@ lines:
access: [public]
trust: surface
situation: [arrival, greeting]
mood: [comfortable]
mood: [content]
topic: [routine]
tags: [pc-smuggler, greeting, public-tier]
@@ -20,7 +20,7 @@ lines:
trust: surface
situation: [shift_start, arrival]
topic: [routine, cargo]
mood: [comfortable]
mood: [content]
tags: [maret, procedural, greeting]
- id: the-terminal_d_301
@@ -30,7 +30,7 @@ lines:
trust: surface
situation: [shift_start, routine]
topic: [cargo, routine]
mood: [comfortable]
mood: [content]
tags: [maret, container-4471, procedural]
dual_lens:
smuggler: "She's tracking 4471 as a scheduling issue. Not flagging it as a discrepancy yet."
@@ -46,7 +46,7 @@ lines:
trust: surface
situation: [shift_start, routine]
topic: [cargo, routine]
mood: [comfortable]
mood: [content]
tags: [maret, procedural, manifest]
# ==========================================
@@ -60,7 +60,7 @@ lines:
trust: surface
situation: [routine, investigation]
topic: [cargo, routine]
mood: [concerned]
mood: [frustrated]
tags: [maret, discrepancy, flagging]
dual_lens:
smuggler: "Which container? Not 4471. She's flagging a different one. Two flags, no escalation."
@@ -76,7 +76,7 @@ lines:
trust: surface
situation: [routine]
topic: [cargo, routine]
mood: [concerned]
mood: [frustrated]
tags: [maret, discrepancy, institutional-response]
dual_lens:
smuggler: "She doesn't know what 'administrative' means either. Voss's answer covered nothing."
@@ -89,7 +89,7 @@ lines:
trust: surface
situation: [routine, investigation]
topic: [cargo, routine]
mood: [concerned]
mood: [frustrated]
tags: [maret, pattern, transition-window]
dual_lens:
smuggler: "She's found the pattern. Not the cause. Not yet."
@@ -105,7 +105,7 @@ lines:
trust: surface
situation: [routine]
topic: [cargo, routine]
mood: [concerned]
mood: [frustrated]
tags: [maret, pattern, manifest]
dual_lens:
smuggler: "She's tracking the small ones too. But 'within rounding' is what Voss told her. She's not satisfied."
@@ -118,7 +118,7 @@ lines:
trust: surface
situation: [routine, confrontation]
topic: [cargo, institution]
mood: [concerned]
mood: [frustrated]
tags: [maret, voss, suppression, frustration]
dual_lens:
smuggler: "She filed a formal notice. Voss sat on it. She knows. This is the pressure point."
@@ -138,7 +138,7 @@ lines:
trust: surface
situation: [routine, shift_start]
topic: [routine, cargo]
mood: [comfortable]
mood: [content]
tags: [maret, operational]
- id: the-terminal_d_309
@@ -148,7 +148,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine, cargo]
mood: [comfortable]
mood: [content]
tags: [maret, drin, bay-four, scheduling]
dual_lens:
smuggler: "Maret confirmed it: bay four is Voss's directive. Not a system hold."
@@ -161,7 +161,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine, institution]
mood: [comfortable]
mood: [content]
tags: [maret, administrative]
- id: the-terminal_d_311
@@ -171,7 +171,7 @@ lines:
trust: surface
situation: [routine, shift_start]
topic: [routine, cargo]
mood: [comfortable]
mood: [content]
tags: [maret, procedural, manifest]
# ==========================================
@@ -185,7 +185,7 @@ lines:
trust: surface
situation: [investigation, routine]
topic: [institution, cargo]
mood: [comfortable]
mood: [content]
tags: [maret, detective-path, procedural]
- id: the-terminal_d_313
@@ -195,7 +195,7 @@ lines:
trust: surface
situation: [investigation]
topic: [cargo, institution]
mood: [concerned]
mood: [frustrated]
tags: [maret, detective-path, discrepancy-disclosure]
dual_lens:
smuggler: "Never encounters this line."
@@ -208,7 +208,7 @@ lines:
trust: surface
situation: [investigation, confrontation]
topic: [institution, cargo]
mood: [concerned]
mood: [frustrated]
tags: [maret, detective-path, careful-language]
dual_lens:
smuggler: "Never encounters this line."
@@ -225,7 +225,7 @@ lines:
trust: real
situation: [routine, investigation]
topic: [cargo, investigation]
mood: [concerned]
mood: [frustrated]
tags: [maret, peer-candor, pattern]
dual_lens:
smuggler: "She's figured it out. She hasn't said what 'it' is. But she knows the numbers aren't random."
@@ -241,7 +241,7 @@ lines:
trust: real
situation: [routine, confrontation]
topic: [cargo, institution]
mood: [concerned]
mood: [frustrated]
tags: [maret, voss, suppression, peer-candor]
dual_lens:
smuggler: "Two formal notices. Both sitting with Voss. He's managing her output directly."
@@ -257,7 +257,7 @@ lines:
trust: real
situation: [confrontation, alone]
topic: [investigation]
mood: [concerned]
mood: [frustrated]
tags: [maret, detective-path, threshold-line]
notes: "Gate line. Opens when detective has built enough trust. What follows depends on the conversation state."
@@ -272,7 +272,7 @@ lines:
trust: surface
situation: [shift_end]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [maret, closing]
- id: the-terminal_d_319
@@ -282,7 +282,7 @@ lines:
trust: real
situation: [shift_end, routine]
topic: [routine]
mood: [concerned]
mood: [frustrated]
tags: [maret, closing, character-line]
notes: "Low-access line. Maret's professional philosophy. Can fire as ambient or as a closing beat."
@@ -297,7 +297,7 @@ lines:
trust: surface
situation: [shift_start, routine]
topic: [routine, cargo]
mood: [comfortable]
mood: [content]
tags: [maret, procedural, generation-pass]
- id: the-terminal_d_321
@@ -307,7 +307,7 @@ lines:
trust: surface
situation: [routine]
topic: [cargo, routine]
mood: [comfortable]
mood: [content]
tags: [maret, operational, generation-pass]
- id: the-terminal_d_322
@@ -317,7 +317,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine, cargo]
mood: [comfortable]
mood: [content]
tags: [maret, procedural, generation-pass]
- id: the-terminal_d_323
@@ -327,7 +327,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine, institution]
mood: [comfortable]
mood: [content]
tags: [maret, voss, administrative, generation-pass]
- id: the-terminal_d_324
@@ -337,7 +337,7 @@ lines:
trust: surface
situation: [routine, shift_start]
topic: [routine, cargo]
mood: [comfortable]
mood: [content]
tags: [maret, procedural, generation-pass]
- id: the-terminal_d_325
@@ -347,7 +347,7 @@ lines:
trust: surface
situation: [routine, shift_end]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [maret, procedural, generation-pass]
- id: the-terminal_d_326
@@ -357,7 +357,7 @@ lines:
trust: surface
situation: [routine]
topic: [cargo, routine]
mood: [comfortable]
mood: [content]
tags: [maret, procedural, manifest, generation-pass]
- id: the-terminal_d_327
@@ -367,5 +367,5 @@ lines:
trust: surface
situation: [routine]
topic: [institution, routine]
mood: [wary]
mood: [suspicious]
tags: [maret, commission, audit, generation-pass]
@@ -19,7 +19,7 @@ lines:
trust: surface
situation: [arrival, shift_start]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [voss, greeting, authority]
- id: the-terminal_d_101
@@ -29,7 +29,7 @@ lines:
trust: surface
situation: [shift_start]
topic: [routine, cargo]
mood: [comfortable]
mood: [content]
tags: [voss, procedural]
- id: the-terminal_d_102
@@ -39,7 +39,7 @@ lines:
trust: surface
situation: [shift_start, routine]
topic: [cargo, routine]
mood: [comfortable]
mood: [content]
tags: [voss, authority]
dual_lens:
smuggler: "Review hold on Bay 4. Voss knows the container's in the queue. Is he covering it or flagging it?"
@@ -52,7 +52,7 @@ lines:
trust: surface
situation: [shift_start, routine]
topic: [institution, routine]
mood: [concerned]
mood: [frustrated]
tags: [voss, warning, commission]
dual_lens:
smuggler: "Voss knows the detective's here. That warning's not just about tidiness."
@@ -69,7 +69,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine, colleague]
mood: [comfortable]
mood: [content]
tags: [voss, drin, authority]
- id: the-terminal_d_105
@@ -79,7 +79,7 @@ lines:
trust: surface
situation: [shift_transition]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [voss, procedural, transition-window]
- id: the-terminal_d_106
@@ -89,7 +89,7 @@ lines:
trust: surface
situation: [routine, shift_end]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [voss, procedural]
- id: the-terminal_d_107
@@ -99,7 +99,7 @@ lines:
trust: surface
situation: [routine, shift_start]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [voss, operational]
- id: the-terminal_d_108
@@ -109,7 +109,7 @@ lines:
trust: surface
situation: [routine, investigation]
topic: [cargo, routine]
mood: [comfortable]
mood: [content]
tags: [voss, maret, discrepancy, cover]
dual_lens:
smuggler: "Voss reviewed it and logged it. Not escalating. He's managing it."
@@ -125,7 +125,7 @@ lines:
trust: surface
situation: [routine]
topic: [cargo, routine]
mood: [comfortable]
mood: [content]
tags: [voss, deflection, philosophy]
# ==========================================
@@ -177,7 +177,7 @@ lines:
trust: surface
situation: [investigation, routine]
topic: [institution, routine]
mood: [comfortable]
mood: [content]
tags: [voss, detective-path, institutional-resistance]
- id: the-terminal_d_114
@@ -187,7 +187,7 @@ lines:
trust: surface
situation: [investigation]
topic: [cargo, institution]
mood: [comfortable]
mood: [content]
tags: [voss, detective-path, redirect]
- id: the-terminal_d_115
@@ -197,7 +197,7 @@ lines:
trust: surface
situation: [investigation, confrontation]
topic: [routine, institution]
mood: [comfortable]
mood: [content]
tags: [voss, detective-path, deflection]
- id: the-terminal_d_116
@@ -207,7 +207,7 @@ lines:
trust: surface
situation: [investigation, confrontation]
topic: [routine, institution]
mood: [comfortable]
mood: [content]
tags: [voss, detective-path, authority-assertion]
# ==========================================
@@ -221,7 +221,7 @@ lines:
trust: real
situation: [confrontation, alone]
topic: [danger]
mood: [concerned]
mood: [frustrated]
tags: [voss, confrontation, private]
- id: the-terminal_d_118
@@ -231,7 +231,7 @@ lines:
trust: real
situation: [confrontation, alone]
topic: [colleague, danger]
mood: [concerned]
mood: [frustrated]
tags: [voss, ring-ops, maret, caution]
knowledge_grant:
fact_id: behavioral.voss_awareness
@@ -244,7 +244,7 @@ lines:
trust: surface
situation: [confrontation]
topic: [routine]
mood: [concerned]
mood: [frustrated]
tags: [voss, deflection, shutdown]
# ==========================================
@@ -258,7 +258,7 @@ lines:
trust: surface
situation: [shift_end]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [voss, procedural]
- id: the-terminal_d_121
@@ -268,7 +268,7 @@ lines:
trust: surface
situation: [shift_transition, shift_end]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [voss, procedural]
- id: the-terminal_d_122
@@ -278,7 +278,7 @@ lines:
trust: surface
situation: [shift_end]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [voss, closing]
# ==========================================
@@ -292,7 +292,7 @@ lines:
trust: surface
situation: [shift_start, routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [voss, procedural, generation-pass]
- id: the-terminal_d_124
@@ -302,7 +302,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine, cargo]
mood: [comfortable]
mood: [content]
tags: [voss, procedural, maret, generation-pass]
- id: the-terminal_d_125
@@ -312,7 +312,7 @@ lines:
trust: surface
situation: [routine, shift_start]
topic: [routine, cargo]
mood: [comfortable]
mood: [content]
tags: [voss, operational, generation-pass]
- id: the-terminal_d_126
@@ -322,7 +322,7 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [voss, authority, generation-pass]
- id: the-terminal_d_127
@@ -332,7 +332,7 @@ lines:
trust: surface
situation: [shift_end, routine]
topic: [routine, institution]
mood: [comfortable]
mood: [content]
tags: [voss, procedural, generation-pass]
- id: the-terminal_d_128
@@ -342,7 +342,7 @@ lines:
trust: surface
situation: [routine, shift_start]
topic: [routine, cargo]
mood: [comfortable]
mood: [content]
tags: [voss, operational, generation-pass]
- id: the-terminal_d_129
@@ -352,5 +352,5 @@ lines:
trust: surface
situation: [routine]
topic: [routine]
mood: [comfortable]
mood: [content]
tags: [voss, philosophy, generation-pass]
@@ -3,50 +3,90 @@ location: general
lines:
- id: general_m_d_001
text: "Sova Transit District. Population twelve thousand and change. Let's narrow that down."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: enter_location
tags: [arrival, analytical]
- id: general_m_d_002
text: "The span gate resonance is constant here. Background radiation of a freight hub."
role: player_character
access: [public]
trust: surface
situation: [routine]
trigger: hear_sound
tags: [environmental]
- id: general_m_d_003
text: "First week on station. The case file is thin. The manifest discrepancies are not."
role: player_character
access: [public]
trust: surface
situation: [investigation]
trigger: time_idle
tags: [investigation, orientation]
- id: general_m_d_004
text: "Everyone knows I'm Commission. The conversations stop when I walk in. Noted."
role: player_character
access: [public]
trust: surface
situation: [investigation]
trigger: time_idle
tags: [investigation, social]
- id: general_m_d_005
text: "Station gravity's point-nine-three standard. Enough to notice after a long shift."
role: player_character
access: [public]
trust: surface
situation: [alone]
trigger: time_idle
tags: [environmental, personal]
- id: general_m_d_006
text: "The previous liaison rotated out three months ago. That gap matters."
role: player_character
access: [public]
trust: surface
situation: [investigation]
trigger: time_idle
tags: [investigation, analytical]
- id: general_m_d_007
text: "Back in the district. Let's see what changed while I wasn't watching."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: return_visit
tags: [arrival, analytical]
- id: general_m_d_008
text: "Recycled air, industrial residue, and that constant gate hum. Sova in three notes."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: enter_location
tags: [environmental, atmospheric]
- id: general_m_d_009
text: "Communities like this close ranks around outsiders. Patient work."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: time_idle
tags: [reflection, social]
- id: general_m_d_010
text: "The manifest data goes back eighteen months. The pattern starts around month six."
role: player_character
access: [public]
trust: surface
situation: [investigation]
trigger: time_idle
tags: [investigation, analytical]
@@ -5,41 +5,73 @@ lines:
- id: maintenance-corridors_m_d_001
text: "Maintenance level. Low lighting, exposed conduit, restricted access nobody enforces."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: enter_location
tags: [arrival, environmental]
- id: maintenance-corridors_m_d_002
text: "The air's different down here. Cooler. Damper. Less filtered."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: enter_location
tags: [environmental, atmospheric]
- id: maintenance-corridors_m_d_003
text: "Service corridor B-section. Not on the public transit map. Interesting routing options."
role: player_character
access: [public]
trust: surface
situation: [arrival, investigation]
trigger: enter_location
tags: [arrival, investigation]
- id: maintenance-corridors_m_d_004
text: "Water recycling conduits. The station's circulatory system, hidden from view."
role: player_character
access: [public]
trust: surface
situation: [routine]
trigger: hear_sound
tags: [environmental]
- id: maintenance-corridors_m_d_005
text: "Pipe network branching three directions. Good for maintenance. Better for privacy."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: enter_location
tags: [environmental, analytical]
- id: maintenance-corridors_m_d_006
text: "Emergency lighting only. Visibility reduced, but so is surveillance coverage."
role: player_character
access: [public]
trust: surface
situation: [arrival, investigation]
trigger: enter_location
tags: [environmental, investigation]
- id: maintenance-corridors_m_d_007
text: "The rust smell is stronger near junction B-7. Older section. Less maintenance."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: enter_location
tags: [environmental, atmospheric]
- id: maintenance-corridors_m_d_008
text: "Back in the corridors. Different route this time — mapping the alternatives."
role: player_character
access: [public]
trust: surface
situation: [arrival, investigation]
trigger: return_visit
tags: [arrival, investigation]
@@ -47,41 +79,73 @@ lines:
- id: maintenance-corridors_m_d_009
text: "Scuff marks on the floor. Recent, heavy. Cargo weight, not foot traffic."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_anomaly
tags: [investigation, evidence]
- id: maintenance-corridors_m_d_010
text: "The service hatch has been used recently. Oil on the handle, dust disturbed."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_anomaly
tags: [investigation, evidence]
- id: maintenance-corridors_m_d_011
text: "Restricted access, but the lock plate shows wear. Regular use by someone with clearance."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_anomaly
tags: [investigation, evidence]
- id: maintenance-corridors_m_d_012
text: "Sound carries differently down here. Voices from two junctions away, if you're patient."
role: player_character
access: [public]
trust: surface
situation: [investigation, routine]
trigger: hear_sound
tags: [environmental, investigation]
- id: maintenance-corridors_m_d_013
text: "Chalk marks on the wall. Low, deliberate. Not maintenance notation — wrong color."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_anomaly
tags: [investigation, evidence]
- id: maintenance-corridors_m_d_014
text: "This corridor connects bay four to temp storage. Bypasses the main freight floor entirely."
role: player_character
access: [public]
trust: surface
situation: [arrival, investigation, routine]
trigger: enter_location
tags: [investigation, operational]
- id: maintenance-corridors_m_d_015
text: "Footsteps ahead. Single set, moving fast. Someone who knows where they're going."
role: player_character
access: [public]
trust: surface
situation: [investigation, routine]
trigger: hear_sound
tags: [investigation, caution]
- id: maintenance-corridors_m_d_016
text: "The temp storage access from this side isn't logged on the manifest system. Blind spot."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_anomaly
tags: [investigation, evidence]
@@ -89,6 +153,10 @@ lines:
- id: maintenance-corridors_m_d_017
text: "The cargo scuff pattern matches bay four containers. Dock to corridor to storage — the route."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_anomaly
prerequisites:
facts:
@@ -99,6 +167,10 @@ lines:
- id: maintenance-corridors_m_d_018
text: "Those chalk marks match the courier's timing. Renn's route markers, if I had to guess."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_anomaly
prerequisites:
facts:
@@ -109,6 +181,10 @@ lines:
- id: maintenance-corridors_m_d_019
text: "Camera blind spot at junction C-2. Coincidence, or someone mapped the coverage?"
role: player_character
access: [public]
trust: surface
situation: [investigation, observation, routine]
trigger: observe_anomaly
prerequisites:
facts:
@@ -118,6 +194,10 @@ lines:
- id: maintenance-corridors_m_d_020
text: "Standard container, no manifest checkpoint along this route. That's the gap."
role: player_character
access: [public]
trust: surface
situation: [alone, investigation]
trigger: time_idle
prerequisites:
facts:
@@ -128,6 +208,10 @@ lines:
- id: maintenance-corridors_m_d_021
text: "Hatch lubricant is fresh. Someone's maintaining this access point. Not station maintenance."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_anomaly
prerequisites:
facts:
@@ -137,6 +221,10 @@ lines:
- id: maintenance-corridors_m_d_022
text: "Davan was seen near B-7 during off-shift. Cross-reference with container movements."
role: player_character
access: [public]
trust: surface
situation: [alone, investigation]
trigger: time_idle
prerequisites:
facts:
@@ -147,6 +235,10 @@ lines:
- id: maintenance-corridors_m_d_023
text: "Two access routes, one manifest checkpoint. Someone designed this gap. Or discovered it."
role: player_character
access: [public]
trust: surface
situation: [alone, investigation]
trigger: time_idle
prerequisites:
facts:
@@ -156,6 +248,10 @@ lines:
- id: maintenance-corridors_m_d_024
text: "Rosta's gambling debt gives me leverage. But using it makes me the authority they resent."
role: player_character
access: [public]
trust: surface
situation: [alone, investigation]
trigger: time_idle
prerequisites:
facts:
@@ -166,6 +262,10 @@ lines:
- id: maintenance-corridors_m_d_025
text: "Evidence is accumulating. Names, routes, timing. But I still can't see the full picture."
role: player_character
access: [public]
trust: surface
situation: [alone, investigation]
trigger: time_idle
prerequisites:
facts:
@@ -0,0 +1,166 @@
character: detective
location: opening
lines:
# Opening Hook Sequence — Ticket #300 — Detective Diegetic Tutorial Arc / First 5 Minutes
# 12 lines. Prerequisites null on all — fires before any knowledge graph state exists.
# Priority 8-10 ensures these fire before the general terminal pool lines.
# cooldown: 9999 — each line fires once, does not repeat.
# Arc: institutional orientation → sensory/analytical → lattice overlay → Commission kiosk → fog boundary →
# NPC lattice scan → Sera sighting → Sera warmth → manifest board → anomaly → flag it → operational settle.
# Contraction discipline: analytical lines = uncontracted; personal lines (Sera) = contracted.
# All lines fully schema-compliant per D-035 (role, access, trust, situation present).
- id: opening_m_d_001
text: "Sova Transit. Mid-morning shift, dock lighting at half-cycle. Consistent with the Commission pre-arrival briefing."
role: player_character
access: [public]
trust: surface
situation: [arrival, shift_start]
trigger: enter_location
mood: [focused]
priority: 10
cooldown: 9999
tags: [opening-hook, tutorial-arc, analytical, orientation]
notes: "Opening line. Reality matches the briefing — he arrived prepared. Establishes: detective as institutional outsider sent here. Cool-lit corridors per D-046 expressed through 'half-cycle' lighting observation. No contractions (analytical)."
- id: opening_m_d_002
text: "Cargo lubricant, recycled atmosphere. Same mixture on every freight hub from here to the span gate hum. First observation: consistent with Commission briefing profile."
role: player_character
access: [public]
trust: surface
situation: [arrival, shift_start]
trigger: enter_location
mood: [focused]
priority: 10
cooldown: 9999
tags: [opening-hook, tutorial-arc, atmospheric, analytical]
notes: "Environmental sensory in analytical register. Colon usage (detective verbal pattern, section 2.2). No contractions. 'span gate' is canonical terminology (D-036); 'hum' is sensory detail. Contrast with smuggler's 'Home sweet home' — same smell, opposite emotional valence. He's working, not home."
- id: opening_m_d_003
text: "Lattice overlay initializing. Four identity flags in immediate range — cross-referencing against Commission case file."
role: player_character
access: [public]
trust: surface
situation: [arrival, shift_start]
trigger: enter_location
mood: [focused]
priority: 10
cooldown: 9999
tags: [opening-hook, tutorial-arc, lattice, perception]
notes: "Teaches insert channel. The analytical lattice is active on entry — it flags and cross-references automatically. Teaches: detective's insert HUD is denser and diegetically active (D-048). Players learn the lattice is a tool, not decoration."
- id: opening_m_d_004
text: "Commission kiosk confirmed my credentials on entry. Authority access logged. The floor knows someone's here."
role: player_character
access: [public]
trust: surface
situation: [arrival, shift_start]
trigger: enter_location
mood: [focused]
priority: 9
cooldown: 9999
tags: [opening-hook, tutorial-arc, institutional, authority]
notes: "Commission kiosk visible, institutional standing established. Sardonic close — dry awareness of his effect on the social environment. Confidence register: wry humor (section 2.8). Teaches: Authority access tier, institutional role is visible to NPCs."
- id: opening_m_d_005
text: "Visual range terminates at bay nine. Approximately fifteen meters. Consistent with district atmo settings."
role: player_character
access: [public]
trust: surface
situation: [arrival, shift_start, observation]
trigger: enter_location
priority: 9
cooldown: 9999
tags: [opening-hook, tutorial-arc, fog, perception]
notes: "Fog boundary in analytical register. He clocks the measurement, notes 'approximately' — precision with honest calibration. Contrast with smuggler's 'Can't see the far dock' — same fog, different framing: limitation vs. measurement."
- id: opening_m_d_006
text: "Dock workers distributed across nine visible bays. Lattice flagging each on contact. Names from the case file, faces from the floor."
role: player_character
access: [public]
trust: surface
situation: [arrival, shift_start, observation]
trigger: enter_location
mood: [focused]
priority: 9
cooldown: 9999
tags: [opening-hook, tutorial-arc, lattice, orientation]
notes: "Spatial overview with lattice overlay tutorial. Explains how the insert channel works: lattice matches observed faces against the pre-loaded case file. Parallel structure ('Names from... faces from...'). Teaches: NPC identification comes through the lattice."
- id: opening_m_d_007
text: "Venn, S. at the far terminal. She said she'd come in early."
role: player_character
access: [public]
trust: surface
situation: [arrival, shift_start, social]
trigger: observe_npc
mood: [warm]
priority: 10
cooldown: 9999
tags: [opening-hook, tutorial-arc, sera, friend-arc]
notes: "First Sera sighting. Surname-initial filing first (institutional reflex) — then breaks to personal contracted voice ('she'd') in the same beat. Teaches contrast: case-file subjects get 'Davan, K.'; Sera gets a different register. D-033 Unknown/Neutral teal entity."
- id: opening_m_d_008
text: "She's got the manifest logs open already. Field tech who knows how to pull records — she knows what I need before I ask."
role: player_character
access: [public]
trust: surface
situation: [arrival, shift_start, social]
trigger: observe_npc
mood: [warm]
priority: 9
cooldown: 9999
tags: [opening-hook, tutorial-arc, sera, friend-arc]
notes: "Sera warmth. Fully contracted throughout ('She's', 'she knows') — personal mode, no analytical distance. Em-dash. Professional respect established without implying prior district visits. Contrast with how he processes everyone else. Teaches: some NPCs are in a different relational category (THE FRIEND pattern, D-034)."
- id: opening_m_d_009
text: "Central manifest board: real-time container routing, weight declarations, bay assignments. Everything routes through here."
role: player_character
access: [public]
trust: surface
situation: [arrival, shift_start, investigation]
trigger: enter_location
mood: [focused]
priority: 8
cooldown: 9999
tags: [opening-hook, tutorial-arc, manifest, investigation]
notes: "Manifest board labeled and cataloged. Colon usage (section 2.2). No contractions (analytical). Teaches: the manifest board is the information hub — and therefore the investigation's starting point."
- id: opening_m_d_010
text: "Container 4471. Temp storage flag since yesterday. Standard turnaround is sub-eight hours — that's not standard."
role: player_character
access: [public]
trust: surface
situation: [arrival, observation, investigation]
trigger: observe_anomaly
mood: [focused, suspicious]
priority: 9
cooldown: 9999
tags: [opening-hook, tutorial-arc, manifest, investigation, anomaly]
notes: "First manifest anomaly. Specific container ID from case file. 'That's not standard' — only contraction in an analytical line, marking it as personal reaction to the finding. Sets the investigation hook: something is wrong before he asks a single question."
- id: opening_m_d_011
text: "Worth flagging. Let's see what the shift logs say about that container's overnight routing."
role: player_character
access: [public]
trust: surface
situation: [observation, investigation]
trigger: observe_anomaly
mood: [focused]
priority: 8
cooldown: 9999
tags: [opening-hook, tutorial-arc, investigation, next-step]
notes: "'Worth flagging' + 'Let's see what' — both detective verbal tics in sequence (section 2.7). Frames the next investigative step. Teaches: investigation is incremental — observe, flag, investigate deeper."
- id: opening_m_d_012
text: "Lattice stable. Nine identity flags and counting. Let's see what this shift tells me."
role: player_character
access: [public]
trust: surface
situation: [arrival, shift_start]
trigger: enter_location
mood: [focused]
priority: 7
cooldown: 9999
tags: [opening-hook, tutorial-arc, lattice, operational]
notes: "Operational settle — closes the opening arc. Lattice confirmed active, identity count growing. 'Let's see what...' verbal tic as the closing beat. The whole opening hook lands here: credentials logged, floor scanned, first anomaly flagged. Investigation begins."
@@ -14,6 +14,10 @@ lines:
- id: general_m_d_011
text: "That dock worker checks the corridor before turning. Habitual. Military? Or just careful."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
prerequisites:
relationship:
@@ -23,6 +27,10 @@ lines:
- id: general_m_d_012
text: "Movement pattern changed at shift change. More direct. Less idle. Interesting."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_anomaly
prerequisites:
relationship:
@@ -32,6 +40,10 @@ lines:
- id: general_m_d_013
text: "Slight acceleration past the checkpoint. Most people do it. But this one does it every time."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_anomaly
prerequisites:
relationship:
@@ -41,6 +53,10 @@ lines:
- id: general_m_d_014
text: "Same three people at the same table. Every shift. Consistent social group."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
prerequisites:
relationship:
@@ -50,6 +66,10 @@ lines:
- id: general_m_d_015
text: "That worker checked container 4471 twice. The same container that's in my manifest discrepancy file."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_anomaly
prerequisites:
facts:
@@ -65,6 +85,10 @@ lines:
- id: general_m_d_016
text: "Three behavioral flags on one dock worker. Corridor awareness, shift-transition alertness, cargo fixation. That's a pattern."
role: player_character
access: [public]
trust: surface
situation: [alone, investigation]
trigger: time_idle
prerequisites:
entity_attributes:
@@ -76,6 +100,10 @@ lines:
- id: general_m_d_017
text: "Cross-referencing the dock worker's shift schedule with manifest anomalies. Correlation: moderate."
role: player_character
access: [public]
trust: surface
situation: [alone, investigation]
trigger: time_idle
prerequisites:
facts:
@@ -89,6 +117,10 @@ lines:
- id: general_m_d_018
text: "The dock worker and Davan eat together every shift. Same courier joins them. Tight operational cluster."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_npc
prerequisites:
relationship:
@@ -5,51 +5,91 @@ lines:
- id: the-last-shift_m_d_001
text: "The Last Shift. Only place in this district that doesn't smell like freight lubricant."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: enter_location
tags: [arrival, atmospheric]
- id: the-last-shift_m_d_002
text: "Grain spirit and low conversation. The social nexus of Sova Transit."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: enter_location
tags: [arrival, analytical]
- id: the-last-shift_m_d_003
text: "Bar's busy tonight. Good — crowds talk. Bad — they notice outsiders."
role: player_character
access: [public]
trust: surface
situation: [arrival, investigation]
trigger: enter_location
tags: [arrival, investigation]
- id: the-last-shift_m_d_004
text: "Standard district bar. Prefab fixtures, aftermarket lighting, a menu board nobody reads."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: enter_location
tags: [arrival, environmental]
- id: the-last-shift_m_d_005
text: "The Meridian feed on the wall display. Local news, freight indices, Assembly coverage."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: enter_location
tags: [environmental]
- id: the-last-shift_m_d_006
text: "The overhead vent rattles every thirty seconds. Like clockwork. Nobody else notices."
role: player_character
access: [public]
trust: surface
situation: [routine]
trigger: hear_sound
tags: [environmental]
- id: the-last-shift_m_d_007
text: "The conversation volume dropped when I walked in. Recovering now. They're adjusting."
role: player_character
access: [public]
trust: surface
situation: [arrival, investigation]
trigger: enter_location
tags: [social, investigation]
- id: the-last-shift_m_d_008
text: "Back at the bar. Same booth. Let's see who's here and who isn't."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: return_visit
tags: [arrival, analytical]
- id: the-last-shift_m_d_009
text: "Kitchen's running. Fried protein and something spiced. The bar's other currency: hot food."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: enter_location
tags: [environmental, atmospheric]
- id: the-last-shift_m_d_010
text: "Someone carved initials into this table. Old. A history I don't have."
role: player_character
access: [public]
trust: surface
situation: [alone]
trigger: time_idle
tags: [environmental, reflection]
@@ -57,51 +97,91 @@ lines:
- id: the-last-shift_m_d_011
text: "The bartender — Sessik, L. Knows everyone. Watches everything. Gives away nothing."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
tags: [npc, lera, analytical]
- id: the-last-shift_m_d_012
text: "Good to see Sera. At least someone in this district speaks my language."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
tags: [npc, sera, warm]
- id: the-last-shift_m_d_013
text: "Lintar, T. — the loud one at the bar. Spends freely. Where's the money from?"
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_npc
tags: [npc, torek, investigation]
- id: the-last-shift_m_d_014
text: "A woman at the corner table — Tamm, N., according to Sera. Davan's partner."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
tags: [npc, naia, analytical]
- id: the-last-shift_m_d_015
text: "The regulars have assigned seating. Unofficial, but enforced. I don't have a spot yet."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
tags: [social, atmospheric]
- id: the-last-shift_m_d_016
text: "Sessik greeted three people by name since I sat down. I got a nod. Progress."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: witness_interaction
tags: [npc, lera, social]
- id: the-last-shift_m_d_017
text: "Two dock workers in the corner. Heads close, voices low. Not unusual for after-shift."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: witness_interaction
tags: [social, investigation]
- id: the-last-shift_m_d_018
text: "Sera introduced me to Tamm. Brief, polite, guarded. Expected."
role: player_character
access: [public]
trust: surface
situation: [social]
trigger: post_conversation
tags: [npc, sera, naia, social]
- id: the-last-shift_m_d_019
text: "Sessik poured my drink without asking. She remembered. Small thing, but noted."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
tags: [npc, lera, social, warm]
- id: the-last-shift_m_d_020
text: "The old man by the window hasn't spoken to anyone all evening. Watching, though."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
tags: [social, atmospheric]
@@ -109,6 +189,10 @@ lines:
- id: the-last-shift_m_d_021
text: "Sera left when Torek arrived. Second time. Different excuse. Same result."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_anomaly
prerequisites:
facts:
@@ -119,6 +203,10 @@ lines:
- id: the-last-shift_m_d_022
text: "That's the third time. Three excuses, one result. That's data."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_anomaly
prerequisites:
facts:
@@ -129,6 +217,10 @@ lines:
- id: the-last-shift_m_d_023
text: "Lintar's spending doesn't match a dock worker's salary. Source unknown."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_npc
prerequisites:
facts:
@@ -138,6 +230,10 @@ lines:
- id: the-last-shift_m_d_024
text: "Sessik's eyes tracked me when I sat near the back room. Protective, not hostile."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_npc
prerequisites:
facts:
@@ -147,6 +243,10 @@ lines:
- id: the-last-shift_m_d_025
text: "Sera's being extra helpful tonight. Names, backgrounds, context. Compensating?"
role: player_character
access: [public]
trust: surface
situation: [investigation, social]
trigger: post_conversation
prerequisites:
relationship:
@@ -157,6 +257,10 @@ lines:
- id: the-last-shift_m_d_026
text: "Same booth. Same warm smile. Same offer to buy me a drink. Everything except the truth."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_npc
prerequisites:
relationship:
@@ -167,6 +271,10 @@ lines:
- id: the-last-shift_m_d_027
text: "Tamm seems distressed tonight. Not her baseline. Something at home, or something she heard?"
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
prerequisites:
relationship:
@@ -176,6 +284,10 @@ lines:
- id: the-last-shift_m_d_028
text: "Sessik just redirected a conversation away from freight schedules. Protective reflex?"
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: witness_interaction
prerequisites:
facts:
@@ -185,6 +297,10 @@ lines:
- id: the-last-shift_m_d_029
text: "Davan and his partner at the bar. She's talking. He's not listening. Noted."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: witness_interaction
prerequisites:
relationship:
@@ -194,6 +310,10 @@ lines:
- id: the-last-shift_m_d_030
text: "The regulars are warming up. Three visits and I'm almost furniture. Almost."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: return_visit
prerequisites:
facts:
@@ -206,6 +326,10 @@ lines:
- id: the-last-shift_m_d_043
text: "Davan is different here. Looser. The dock worker persona drops and something warmer replaces it."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
prerequisites:
relationship:
@@ -215,6 +339,10 @@ lines:
- id: the-last-shift_m_d_044
text: "Davan checks the door every time it opens. Even here. Even off-shift. That is not relaxation."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_npc
prerequisites:
relationship:
@@ -231,6 +359,10 @@ lines:
- id: the-last-shift_m_d_031
text: "Sera changed the subject when I mentioned manifests. Smooth. Practised, maybe."
role: player_character
access: [public]
trust: surface
situation: [investigation, social]
trigger: post_conversation
prerequisites:
facts:
@@ -241,6 +373,10 @@ lines:
- id: the-last-shift_m_d_032
text: "She volunteers names, routines, context. Gives everything I ask for -- except what I did not."
role: player_character
access: [public]
trust: surface
situation: [investigation, social]
trigger: post_conversation
prerequisites:
relationship:
@@ -251,6 +387,10 @@ lines:
- id: the-last-shift_m_d_033
text: "Sera at the Commission kiosk. Third pass this shift. That is not standard recalibration."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_npc
prerequisites:
facts:
@@ -261,6 +401,10 @@ lines:
- id: the-last-shift_m_d_034
text: "Everything Sera told me checks out. Layout, schedules, regulars. Accurate. Thorough. Selective?"
role: player_character
access: [public]
trust: surface
situation: [investigation, social]
trigger: post_conversation
prerequisites:
relationship:
@@ -271,6 +415,10 @@ lines:
- id: the-last-shift_m_d_035
text: "She mentioned Naia's worry about Kael early -- before I had context. Priming, or concern?"
role: player_character
access: [public]
trust: surface
situation: [investigation, social]
trigger: post_conversation
prerequisites:
facts:
@@ -281,6 +429,10 @@ lines:
- id: the-last-shift_m_d_036
text: "Sera's institutional access goes further than field calibration. She could pull records I cannot."
role: player_character
access: [public]
trust: surface
situation: [alone, investigation]
trigger: time_idle
prerequisites:
relationship:
@@ -290,6 +442,10 @@ lines:
- id: the-last-shift_m_d_037
text: "Assessment: Venn, S. Cooperative. Embedded. Competent. Green -- with reservations now."
role: player_character
access: [public]
trust: surface
situation: [alone, investigation]
trigger: time_idle
prerequisites:
facts:
@@ -300,6 +456,10 @@ lines:
- id: the-last-shift_m_d_038
text: "Correction: amber. The avoidance pattern is behavioural, not preferential. Data, not taste."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_anomaly
prerequisites:
facts:
@@ -310,6 +470,10 @@ lines:
- id: the-last-shift_m_d_039
text: "She's the first person who made this place feel less foreign. I need that to not matter right now."
role: player_character
access: [public]
trust: surface
situation: [alone, investigation]
trigger: time_idle
prerequisites:
relationship:
@@ -320,6 +484,10 @@ lines:
- id: the-last-shift_m_d_040
text: "Those early tips. The district layout, the introductions. Were those help -- or steering?"
role: player_character
access: [public]
trust: surface
situation: [alone, investigation]
trigger: time_idle
prerequisites:
relationship:
@@ -330,6 +498,10 @@ lines:
- id: the-last-shift_m_d_041
text: "She's not a suspect. She's a friend with access to everything I need. That is the problem."
role: player_character
access: [public]
trust: surface
situation: [alone, investigation]
trigger: time_idle
prerequisites:
facts:
@@ -340,6 +512,10 @@ lines:
- id: the-last-shift_m_d_042
text: "Trust: compromised. The question is not what she told me. It is what she did not."
role: player_character
access: [public]
trust: surface
situation: [investigation, social]
trigger: post_conversation
prerequisites:
relationship:
@@ -5,61 +5,109 @@ lines:
- id: the-terminal_m_d_001
text: "Logistics hub. Standard prefab, heavy foot traffic. Let's see what the shift change tells me."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: enter_location
tags: [arrival, analytical]
- id: the-terminal_m_d_002
text: "Sixteen bays, four loading arms, one manifest board. Everything routes through here."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: enter_location
tags: [arrival, orientation]
- id: the-terminal_m_d_003
text: "Cargo lubricant and recycled air. The smell of honest work. Or a convincing imitation."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: enter_location
tags: [arrival, atmospheric]
- id: the-terminal_m_d_004
text: "Loading arm three has a grind in its cycle. Maintenance deferred — budget, or negligence?"
role: player_character
access: [public]
trust: surface
situation: [routine]
trigger: hear_sound
tags: [environmental, analytical]
- id: the-terminal_m_d_005
text: "Shift change in twenty minutes. The handover period is where oversight gets thin."
role: player_character
access: [public]
trust: surface
situation: [alone, investigation, routine]
trigger: time_idle
tags: [investigation, operational]
- id: the-terminal_m_d_006
text: "The manifest board updates in real-time. Container movement, weight, destination. All logged."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: enter_location
tags: [environmental, orientation]
- id: the-terminal_m_d_007
text: "Heavy foot traffic at shift change. Good — observation is easier in a crowd."
role: player_character
access: [public]
trust: surface
situation: [arrival, investigation]
trigger: enter_location
tags: [arrival, investigation]
- id: the-terminal_m_d_008
text: "Containers stacked to regulation height in most bays. Bay four is the exception."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_anomaly
tags: [environmental, investigation]
- id: the-terminal_m_d_009
text: "Back at the hub. Different shift, different faces. Same manifest board."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: return_visit
tags: [arrival]
- id: the-terminal_m_d_010
text: "The dock lights are running half-cycle. Saves power. Also reduces visibility."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: enter_location
tags: [environmental, analytical]
- id: the-terminal_m_d_011
text: "Something in the air beyond the lubricant. Chemical, faint. Not standard freight residue."
role: player_character
access: [public]
trust: surface
situation: [arrival, investigation]
trigger: enter_location
tags: [environmental, investigation]
- id: the-terminal_m_d_012
text: "Overhead conveyor running at capacity. The manifest says otherwise. Interesting."
role: player_character
access: [public]
trust: surface
situation: [investigation, routine]
trigger: hear_sound
tags: [environmental, investigation]
@@ -67,61 +115,109 @@ lines:
- id: the-terminal_m_d_013
text: "Shift supervisor Voss. Tense posture, checking the dock more than the schedule."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
tags: [npc, voss, behavioral]
- id: the-terminal_m_d_014
text: "Korr, M. — freight scheduler. Efficient, focused. Either very good or very careful."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
tags: [npc, maret, analytical]
- id: the-terminal_m_d_015
text: "Rosta, D. — dock inspector. Quick checks, minimal documentation. That's a pattern."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_npc
tags: [npc, drin, investigation]
- id: the-terminal_m_d_016
text: "Dock worker. Davan, K. Unremarkable on paper. But he knows the bay layout cold."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
tags: [npc, kael]
- id: the-terminal_m_d_017
text: "Conversations stop when I pass. Standard response to Commission presence. Expected."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: witness_interaction
tags: [social, investigation]
- id: the-terminal_m_d_018
text: "Two workers talking by bay six. One sees me, taps the other. Both go quiet."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: witness_interaction
tags: [social, investigation]
- id: the-terminal_m_d_019
text: "Voss gave Davan a look across the bay. Brief. Loaded. Filing it."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: witness_interaction
tags: [npc, voss, kael, behavioral]
- id: the-terminal_m_d_020
text: "The courier — Renn — moves fast. Efficient routing. Knows these corridors well."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
tags: [npc, renn, analytical]
- id: the-terminal_m_d_021
text: "New shift starting. Different bodies, same avoidance radius around me."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
tags: [social, atmospheric]
- id: the-terminal_m_d_022
text: "Rosta's inspection of bay four took forty seconds. The others: three minutes each."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_npc
tags: [npc, drin, investigation, behavioral]
- id: the-terminal_m_d_023
text: "Voss deflected when I asked about overnight containers. Smooth, but I caught it."
role: player_character
access: [public]
trust: surface
situation: [investigation, social]
trigger: post_conversation
tags: [npc, voss, investigation]
- id: the-terminal_m_d_024
text: "Korr won't make eye contact. Not hostility — something else. Anxiety, maybe."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
tags: [npc, maret, behavioral]
@@ -129,6 +225,10 @@ lines:
- id: the-terminal_m_d_025
text: "Davan's lattice activity spiked. Expecting a message? Or checking for surveillance?"
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_anomaly
prerequisites:
relationship:
@@ -138,6 +238,10 @@ lines:
- id: the-terminal_m_d_026
text: "Container 4471. Logged for temp storage overnight. Turnaround should be sub-eight hours."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_anomaly
prerequisites:
facts:
@@ -148,6 +252,10 @@ lines:
- id: the-terminal_m_d_027
text: "Weight discrepancy on the bay four manifest. Point-three kilos over declared. Noted."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_anomaly
prerequisites:
facts:
@@ -157,6 +265,10 @@ lines:
- id: the-terminal_m_d_028
text: "Rosta's gambling debts are in the case file. Leverage, if I need it. Do I need it?"
role: player_character
access: [public]
trust: surface
situation: [alone, investigation]
trigger: time_idle
prerequisites:
facts:
@@ -166,6 +278,10 @@ lines:
- id: the-terminal_m_d_029
text: "Three names keep appearing near the anomalous manifests: Voss, Davan, Renn. Coincidence?"
role: player_character
access: [public]
trust: surface
situation: [alone, investigation]
trigger: time_idle
prerequisites:
facts:
@@ -176,6 +292,10 @@ lines:
- id: the-terminal_m_d_030
text: "The shift transition creates a twenty-minute gap in active oversight. Every cycle."
role: player_character
access: [public]
trust: surface
situation: [alone, investigation, routine]
trigger: time_idle
prerequisites:
facts:
@@ -186,6 +306,10 @@ lines:
- id: the-terminal_m_d_031
text: "Korr changed the schedule after our conversation. Covering tracks, or just doing her job?"
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_anomaly
prerequisites:
entity_attributes:
@@ -196,6 +320,10 @@ lines:
- id: the-terminal_m_d_032
text: "Rosta inspects everything else by the book. Bay four is the exception. That's the tell."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_npc
prerequisites:
facts:
@@ -206,6 +334,10 @@ lines:
- id: the-terminal_m_d_033
text: "Davan's at an unusual terminal. Not his assigned bay. Why the move?"
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_anomaly
prerequisites:
relationship:
@@ -215,6 +347,10 @@ lines:
- id: the-terminal_m_d_034
text: "Voss is watching me watch his people. He knows what I'm here for."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_npc
prerequisites:
facts:
@@ -225,6 +361,10 @@ lines:
- id: the-terminal_m_d_035
text: "The routing logs and the physical movement don't match. Someone's hand-editing."
role: player_character
access: [public]
trust: surface
situation: [investigation]
trigger: discover_evidence
prerequisites:
facts:
@@ -238,6 +378,10 @@ lines:
- id: the-terminal_m_d_036
text: "Davan's shift pattern is clean. Too clean. Same bays, same hours, same rotation. Nothing out of place."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
prerequisites:
relationship:
@@ -247,6 +391,10 @@ lines:
- id: the-terminal_m_d_037
text: "Davan eats with the same group every shift. Social anchor, or keeping tabs?"
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
prerequisites:
relationship:
@@ -256,6 +404,10 @@ lines:
- id: the-terminal_m_d_038
text: "Davan handled that container routing without checking the manifest board. He knows the schedule by heart."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
prerequisites:
relationship:
@@ -266,6 +418,10 @@ lines:
- id: the-terminal_m_d_039
text: "Davan's posture changed when I approached bay four. Subtle. Filing it."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_anomaly
prerequisites:
relationship:
@@ -276,6 +432,10 @@ lines:
- id: the-terminal_m_d_040
text: "Three manifests with weight discrepancies. All during Davan's shifts. Correlation is not causation. But noted."
role: player_character
access: [public]
trust: surface
situation: [alone, investigation]
trigger: time_idle
prerequisites:
facts:
@@ -3,50 +3,90 @@ location: general
lines:
- id: general_m_s_001
text: "Another day on Sova. Same air, same hum, same faces."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: enter_location
tags: [arrival, atmospheric]
- id: general_m_s_002
text: "The span gate hum's louder today. Maintenance hasn't touched it in weeks."
role: player_character
access: [public]
trust: surface
situation: [routine]
trigger: hear_sound
tags: [environmental]
- id: general_m_s_003
text: "Twenty minutes between shifts. That's the window. Always has been."
role: player_character
access: [public]
trust: surface
situation: [routine]
trigger: time_idle
tags: [operational, orientation]
- id: general_m_s_004
text: "People talk about leaving Sova. Nobody actually does."
role: player_character
access: [public]
trust: surface
situation: [alone]
trigger: time_idle
tags: [reflection]
- id: general_m_s_005
text: "Two years of this. Still not used to the gate vibration in my teeth."
role: player_character
access: [public]
trust: surface
situation: [routine]
trigger: hear_sound
tags: [environmental, personal]
- id: general_m_s_006
text: "The money's good. The risk's manageable. Keep telling yourself that."
role: player_character
access: [public]
trust: surface
situation: [alone]
trigger: time_idle
tags: [reflection, operational]
- id: general_m_s_007
text: "Back again. Same corridors, same shortcuts, same reasons."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: return_visit
tags: [arrival]
- id: general_m_s_008
text: "Commission patrols are thinner this cycle. Good or bad — hard to say."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_anomaly
tags: [operational, caution]
- id: general_m_s_009
text: "If anyone asks, I'm clocking overtime. That's always the story."
role: player_character
access: [public]
trust: surface
situation: [routine]
trigger: time_idle
tags: [operational, cover]
- id: general_m_s_010
text: "Recycled air tastes different near the outer ring. Sharper. More machine."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: enter_location
tags: [environmental, atmospheric]
@@ -5,41 +5,73 @@ lines:
- id: maintenance-corridors_m_s_001
text: "Service corridor. Dim lights, damp walls, and the constant drip of condensation."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: enter_location
tags: [arrival, atmospheric]
- id: maintenance-corridors_m_s_002
text: "Cooler down here. The ventilation doesn't reach this far."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: enter_location
tags: [environmental, atmospheric]
- id: maintenance-corridors_m_s_003
text: "The access panel's still loose. Good — our route's intact."
role: player_character
access: [public]
trust: surface
situation: [arrival, routine]
trigger: enter_location
tags: [arrival, operational]
- id: maintenance-corridors_m_s_004
text: "Pipes groaning overhead. Station's old. These corridors are older."
role: player_character
access: [public]
trust: surface
situation: [routine]
trigger: hear_sound
tags: [environmental, atmospheric]
- id: maintenance-corridors_m_s_005
text: "Water recycling rumbles through the walls down here. Constant."
role: player_character
access: [public]
trust: surface
situation: [routine]
trigger: hear_sound
tags: [environmental]
- id: maintenance-corridors_m_s_006
text: "Back in the maintenance tunnels. Rust and coolant."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: return_visit
tags: [arrival, atmospheric]
- id: maintenance-corridors_m_s_007
text: "Emergency lighting only. Just enough to see where you're going."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: enter_location
tags: [environmental]
- id: maintenance-corridors_m_s_008
text: "Footsteps echo different down here. You learn to listen."
role: player_character
access: [public]
trust: surface
situation: [routine]
trigger: hear_sound
tags: [environmental, operational]
@@ -47,41 +79,73 @@ lines:
- id: maintenance-corridors_m_s_009
text: "Renn's chalk marks on the wall. Route's been used recently."
role: player_character
access: [public]
trust: surface
situation: [observation, routine]
trigger: observe_anomaly
tags: [operational, renn]
- id: maintenance-corridors_m_s_010
text: "Someone left a crate at junction B-4. Not one of ours."
role: player_character
access: [public]
trust: surface
situation: [observation, routine]
trigger: observe_anomaly
tags: [operational, caution]
- id: maintenance-corridors_m_s_011
text: "The temp storage hatch is warm. Cargo cycled through recently."
role: player_character
access: [public]
trust: surface
situation: [arrival, routine]
trigger: enter_location
tags: [operational]
- id: maintenance-corridors_m_s_012
text: "Scratches on the lock plate. Someone's been forcing this access point."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_anomaly
tags: [environmental, caution]
- id: maintenance-corridors_m_s_013
text: "Timer says twelve minutes until the oversight gap closes. Plenty."
role: player_character
access: [public]
trust: surface
situation: [alone, routine]
trigger: time_idle
tags: [operational]
- id: maintenance-corridors_m_s_014
text: "That's Renn's jacket on the pipe junction. He was here."
role: player_character
access: [public]
trust: surface
situation: [observation, routine]
trigger: observe_anomaly
tags: [npc, renn, operational]
- id: maintenance-corridors_m_s_015
text: "Voices echoing from the junction. Can't make out words yet."
role: player_character
access: [public]
trust: surface
situation: [routine]
trigger: hear_sound
tags: [caution]
- id: maintenance-corridors_m_s_016
text: "The route through B-section is clear. Voss kept his word."
role: player_character
access: [public]
trust: surface
situation: [arrival, routine]
trigger: enter_location
tags: [operational, voss]
@@ -89,6 +153,10 @@ lines:
- id: maintenance-corridors_m_s_017
text: "Corridor B-7. This is where I saw Kael. With someone I don't know."
role: player_character
access: [public]
trust: surface
situation: [arrival, investigation]
trigger: enter_location
prerequisites:
facts:
@@ -99,6 +167,10 @@ lines:
- id: maintenance-corridors_m_s_018
text: "Fresh boot prints in the dust. Two sets. Different sizes."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_anomaly
prerequisites:
facts:
@@ -108,6 +180,10 @@ lines:
- id: maintenance-corridors_m_s_019
text: "New scratch marks on the service hatch. Someone's using our route."
role: player_character
access: [public]
trust: surface
situation: [observation, routine]
trigger: observe_anomaly
prerequisites:
facts:
@@ -118,6 +194,10 @@ lines:
- id: maintenance-corridors_m_s_020
text: "The container in temp was supposed to move last shift. It didn't. Why?"
role: player_character
access: [public]
trust: surface
situation: [observation, routine]
trigger: observe_anomaly
prerequisites:
facts:
@@ -127,6 +207,10 @@ lines:
- id: maintenance-corridors_m_s_021
text: "Camera's been repositioned at junction C-2. Who authorized that?"
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_anomaly
prerequisites:
facts:
@@ -137,6 +221,10 @@ lines:
- id: maintenance-corridors_m_s_022
text: "If Kael's meeting people down here without telling us, the whole route's exposed."
role: player_character
access: [public]
trust: surface
situation: [alone, investigation, routine]
trigger: time_idle
prerequisites:
facts:
@@ -147,6 +235,10 @@ lines:
- id: maintenance-corridors_m_s_023
text: "Sealed containers don't end up in temp storage by accident. Someone rerouted."
role: player_character
access: [public]
trust: surface
situation: [observation, routine]
trigger: observe_anomaly
prerequisites:
facts:
@@ -156,6 +248,10 @@ lines:
- id: maintenance-corridors_m_s_024
text: "Kael's not answering his lattice. He was supposed to meet me here."
role: player_character
access: [public]
trust: surface
situation: [alone, investigation]
trigger: time_idle
prerequisites:
relationship:
@@ -166,5 +262,9 @@ lines:
- id: maintenance-corridors_m_s_025
text: "Someone wiped the dust off this hatch. Recently. Carefully."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_anomaly
tags: [environmental, caution]
@@ -0,0 +1,152 @@
character: smuggler
location: opening
lines:
# Opening Hook Sequence — Ticket #299 — Smuggler Diegetic Tutorial Arc / First 5 Minutes
# 11 lines. Prerequisites null on all — fires before any knowledge graph state exists.
# Priority 8-10 ensures these fire before the general terminal pool lines.
# cooldown: 9999 — each line fires once, does not repeat.
# Arc: station hum → spatial count → fog boundary → thin crowd → Kael sighting ×2 → news ticker → sound ping → time countdown → settle ×2.
# All lines fully schema-compliant per D-035 (role, access, trust, situation present).
- id: opening_m_s_001
text: "Station hum. B-flat, steady — freight's moving."
role: player_character
access: [public]
trust: surface
situation: [arrival, shift_start]
trigger: enter_location
mood: [content]
priority: 10
cooldown: 9999
tags: [opening-hook, tutorial-arc, atmospheric]
notes: "Opening sensation. Station audio registers first — the hum tells her freight is running. Teaches: audio environment carries operational information (D-074)."
- id: opening_m_s_002
text: "Sixteen bays, three arms running. Standard morning."
role: player_character
access: [public]
trust: surface
situation: [arrival, shift_start]
trigger: enter_location
mood: [content]
priority: 10
cooldown: 9999
tags: [opening-hook, tutorial-arc, orientation]
notes: "Spatial orientation. She clocks the floor in two beats — count of bays, count of running arms. Everything in fragments. Teaches: the terminal layout."
- id: opening_m_s_003
text: "Haze past bay eight today. Can't see the far dock from here."
role: player_character
access: [public]
trust: surface
situation: [arrival, shift_start, observation]
trigger: enter_location
mood: [content]
priority: 10
cooldown: 9999
tags: [opening-hook, tutorial-arc, fog, perception]
notes: "Fog boundary. She notices the edge of her vision as a fact of the floor, not a mechanic. Teaches: perception range has limits (D-015, D-046)."
- id: opening_m_s_004
text: "Morning crew's spread thin. Good. Room to move."
role: player_character
access: [public]
trust: surface
situation: [arrival, shift_start]
trigger: enter_location
mood: [content]
priority: 9
cooldown: 9999
tags: [opening-hook, tutorial-arc]
notes: "Light crowd = operational comfort. 'Good.' standalone verbal tic (section 1.7). Teaches: NPC density affects movement options."
- id: opening_m_s_005
text: "Kael's at dock three. Right where he should be."
role: player_character
access: [public]
trust: surface
situation: [arrival, shift_start, social]
trigger: observe_npc
mood: [content, warm]
priority: 10
cooldown: 9999
tags: [opening-hook, tutorial-arc, kael, friend-arc]
notes: "First Kael sighting. Warm, immediate — she locates him before she finishes reading the floor. Teaches: named NPCs are identifiable via insert overlay (D-033 green entity)."
- id: opening_m_s_006
text: "Already has his clipboard. Day's organized before it starts. Two years, same routine."
role: player_character
access: [public]
trust: surface
situation: [arrival, shift_start, social]
trigger: observe_npc
mood: [warm]
priority: 9
cooldown: 9999
tags: [opening-hook, tutorial-arc, kael, friend-arc]
notes: "Kael warmth through behavior-reading, not labeling. Three beats: observation → interpretation → familiarity. 'Two years, same routine' says she knows his patterns intimately. Establishes: Kael is trusted, competent, reliable — the baseline before the friend arc erodes it."
- id: opening_m_s_007
text: "Bulletin board's got a new Commission notice. Lattice registration updates. Not today's problem."
role: player_character
access: [public]
trust: surface
situation: [arrival, routine]
trigger: enter_location
mood: [content]
priority: 8
cooldown: 9999
tags: [opening-hook, tutorial-arc, news-ticker]
notes: "News ticker glance. She reads and dismisses it. The Commission exists as background noise — relevant only when it stops being ignorable. Teaches: environmental text exists, player can engage or skip. D-037 irony: lattice registration is exactly what the ring circumvents."
- id: opening_m_s_008
text: "Span gate echo from dock fourteen. Something inbound, running heavy by the sound of it."
role: player_character
access: [public]
trust: surface
situation: [arrival, shift_start, observation]
trigger: hear_sound
mood: [content]
priority: 9
cooldown: 9999
tags: [opening-hook, tutorial-arc, sound, perception]
notes: "First sound ping at the edge of range. She interprets pitch instantly — the echo tells her load weight. Teaches: sound carries operational information (D-018, D-074 sound model). Sound channel is meaningful."
- id: opening_m_s_009
text: "Shift board says light cargo today. Fifty minutes before Voss does his rounds."
role: player_character
access: [public]
trust: surface
situation: [arrival, shift_start, routine]
trigger: enter_location
mood: [content]
priority: 8
cooldown: 9999
tags: [opening-hook, tutorial-arc, operational]
notes: "'Fifty minutes' = time-as-countdown verbal tic (section 1.7). She's already calculating windows. Teaches: time and NPC patrol rhythms are trackable."
- id: opening_m_s_010
text: "Same floor, same faces, same hum. Could be worse."
role: player_character
access: [public]
trust: surface
situation: [arrival, shift_start]
trigger: enter_location
mood: [content]
priority: 8
cooldown: 9999
tags: [opening-hook, tutorial-arc, atmospheric]
notes: "Settling line. Baseline contentment. Parallel three-beat structure then understatement. 'Could be worse' is her comfort language — not enthusiastic, just settled. Voice anchor for confidence register (section 1.8)."
- id: opening_m_s_011
text: "Dock's clean this morning. Good start."
role: player_character
access: [public]
trust: surface
situation: [arrival, shift_start, routine]
trigger: enter_location
mood: [content]
priority: 7
cooldown: 9999
tags: [opening-hook, tutorial-arc]
notes: "Close of opening arc. Short, approving. 'Good start' = positive 'Good.' tic applied to the environment. Everything is where it should be — for now."
@@ -14,6 +14,10 @@ lines:
- id: general_m_s_011
text: "Commission officer just stood there after talking to Voss. Making notes. Not good."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
prerequisites:
relationship:
@@ -23,6 +27,10 @@ lines:
- id: general_m_s_012
text: "That investigator is working the hub section by section. Not browsing. Searching."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_anomaly
prerequisites:
relationship:
@@ -32,6 +40,10 @@ lines:
- id: general_m_s_013
text: "Commission's parked at the manifest terminal again. Third time today."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_anomaly
prerequisites:
relationship:
@@ -41,6 +53,10 @@ lines:
- id: general_m_s_014
text: "They're watching. From the corner, where they can see the whole dock floor. Professional."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
prerequisites:
relationship:
@@ -50,6 +66,10 @@ lines:
- id: general_m_s_015
text: "The investigator and Sera again. Old friends? Or is Sera reporting to them?"
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
prerequisites:
relationship:
@@ -64,6 +84,10 @@ lines:
- id: general_m_s_016
text: "New Commission face at the hub. Keep your head down. Don't give them anything."
role: player_character
access: [public]
trust: surface
situation: [observation, routine]
trigger: observe_npc
prerequisites:
relationship:
@@ -74,6 +98,10 @@ lines:
- id: general_m_s_017
text: "That investigator's been here all morning. Nobody stays that long for a routine check."
role: player_character
access: [public]
trust: surface
situation: [alone, routine]
trigger: time_idle
prerequisites:
relationship:
@@ -84,6 +112,10 @@ lines:
- id: general_m_s_018
text: "Commission's at the bar. Sitting with Sera. Watching the room like they own it."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
prerequisites:
relationship:
@@ -5,51 +5,91 @@ lines:
- id: the-last-shift_m_s_001
text: "Lera's. Grain spirit and noise. Could use both right now."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: enter_location
tags: [arrival, atmospheric]
- id: the-last-shift_m_s_002
text: "Bar's half full. The after-shift crowd's starting to filter in."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: enter_location
tags: [arrival]
- id: the-last-shift_m_s_003
text: "Lera's got the Meridian feed running. Same headlines, different day."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: enter_location
tags: [arrival, environmental]
- id: the-last-shift_m_s_004
text: "Smells like fried protein and cheap grain spirit. Perfect."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: enter_location
tags: [environmental, atmospheric]
- id: the-last-shift_m_s_005
text: "My booth's free. Small victories."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: enter_location
tags: [arrival, personal]
- id: the-last-shift_m_s_006
text: "The overhead light's still buzzing. Lera says it adds character."
role: player_character
access: [public]
trust: surface
situation: [routine]
trigger: hear_sound
tags: [environmental]
- id: the-last-shift_m_s_007
text: "Music's louder tonight. Lera's in a good mood, or drowning something out."
role: player_character
access: [public]
trust: surface
situation: [routine]
trigger: hear_sound
tags: [environmental, atmospheric]
- id: the-last-shift_m_s_008
text: "Back at Lera's. Same booth, same drink, same crowd."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: return_visit
tags: [arrival]
- id: the-last-shift_m_s_009
text: "The ventilation rattles when the kitchen's on. You learn to talk over it."
role: player_character
access: [public]
trust: surface
situation: [routine]
trigger: hear_sound
tags: [environmental]
- id: the-last-shift_m_s_010
text: "Quiet night at Lera's. Fewer people means fewer ears."
role: player_character
access: [public]
trust: surface
situation: [arrival, routine]
trigger: enter_location
tags: [arrival, operational]
@@ -57,51 +97,91 @@ lines:
- id: the-last-shift_m_s_011
text: "Lera's behind the bar. Good — she keeps things steady."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
tags: [npc, lera]
- id: the-last-shift_m_s_012
text: "Kael's at the corner table. Looks relaxed. That's something."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
tags: [npc, kael]
- id: the-last-shift_m_s_013
text: "Torek's buying rounds again. That man doesn't know the word 'discreet.'"
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
tags: [npc, torek, caution]
- id: the-last-shift_m_s_014
text: "Sera's here. Commission field tech. She keeps to herself — mostly."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
tags: [npc, sera, commission]
- id: the-last-shift_m_s_015
text: "Naia's laughing at something Lera said. Nice to see her relaxed."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
tags: [npc, naia]
- id: the-last-shift_m_s_016
text: "Old Pael's in his usual spot. Hasn't moved in three hours. Impressive."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
tags: [npc, atmospheric]
- id: the-last-shift_m_s_017
text: "Lera just cut someone off. Smooth about it, but firm."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: witness_interaction
tags: [npc, lera]
- id: the-last-shift_m_s_018
text: "Kael and Naia at the bar. Leaning into each other. They look good together."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: witness_interaction
tags: [npc, kael, naia]
- id: the-last-shift_m_s_019
text: "Voss is drinking alone. Not his usual pace."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
tags: [npc, voss]
- id: the-last-shift_m_s_020
text: "That new face in the corner — been nursing the same drink for an hour."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
tags: [npc, caution]
@@ -109,6 +189,10 @@ lines:
- id: the-last-shift_m_s_021
text: "Sera left when Torek walked in. Coincidence? Maybe."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_anomaly
prerequisites:
facts:
@@ -118,6 +202,10 @@ lines:
- id: the-last-shift_m_s_022
text: "Torek just paid cash credit, not station account. Sloppy."
role: player_character
access: [public]
trust: surface
situation: [observation, routine]
trigger: observe_npc
prerequisites:
facts:
@@ -127,6 +215,10 @@ lines:
- id: the-last-shift_m_s_023
text: "Lera gave me that look. The one that says 'not here, not now.'"
role: player_character
access: [public]
trust: surface
situation: [routine, social]
trigger: post_conversation
prerequisites:
facts:
@@ -136,6 +228,10 @@ lines:
- id: the-last-shift_m_s_024
text: "Naia looks tired. Has Kael been coming home late again?"
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
prerequisites:
relationship:
@@ -145,6 +241,10 @@ lines:
- id: the-last-shift_m_s_025
text: "The detective is here. At the bar. My bar."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_npc
prerequisites:
facts:
@@ -155,6 +255,10 @@ lines:
- id: the-last-shift_m_s_026
text: "Sera and the detective sharing a booth. Commission people stick together."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: witness_interaction
prerequisites:
facts:
@@ -164,6 +268,10 @@ lines:
- id: the-last-shift_m_s_027
text: "Kael didn't save my seat tonight. First time in months."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_anomaly
prerequisites:
relationship:
@@ -174,6 +282,10 @@ lines:
- id: the-last-shift_m_s_028
text: "The back room light's on. Nils is here, then."
role: player_character
access: [public]
trust: surface
situation: [observation, routine]
trigger: observe_anomaly
prerequisites:
facts:
@@ -183,6 +295,10 @@ lines:
- id: the-last-shift_m_s_029
text: "Kael bought Naia a drink but barely looked at her. That's new."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: witness_interaction
prerequisites:
facts:
@@ -192,6 +308,10 @@ lines:
- id: the-last-shift_m_s_030
text: "Everyone's a little too quiet tonight. Something happened. I can feel it."
role: player_character
access: [public]
trust: surface
situation: [arrival, routine]
trigger: enter_location
prerequisites:
facts:
@@ -208,6 +328,10 @@ lines:
- id: the-last-shift_m_s_031
text: "Sera's at the Commission kiosk. Third time this shift. Nobody recalibrates that much."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
prerequisites:
facts:
@@ -218,11 +342,19 @@ lines:
- id: the-last-shift_m_s_032
text: "Naia trusts Sera. More than most people here. That says something."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: witness_interaction
tags: [npc, sera, naia, social, dual-lens]
- id: the-last-shift_m_s_033
text: "Sera was studying the freight display. For a calibration tech, that's a lot of manifest reading."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
prerequisites:
facts:
@@ -233,6 +365,10 @@ lines:
- id: the-last-shift_m_s_034
text: "That's three times Sera's bailed when Torek showed up. Maybe she owes him money."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_anomaly
prerequisites:
facts:
@@ -243,6 +379,10 @@ lines:
- id: the-last-shift_m_s_035
text: "Sera offered the detective compliance records. Helpful -- or professional courtesy?"
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: witness_interaction
prerequisites:
facts:
@@ -252,6 +392,10 @@ lines:
- id: the-last-shift_m_s_036
text: "Something about Sera tonight. Same smile, different eyes."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
prerequisites:
relationship:
@@ -261,11 +405,19 @@ lines:
- id: the-last-shift_m_s_037
text: "Commission tech who drinks at a dock bar. Either lonely or embedded. Either way -- careful."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
tags: [npc, sera, commission, assessment, dual-lens]
- id: the-last-shift_m_s_038
text: "Sera knows the shift rotations better than Voss. That's not calibration. That's attention."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
prerequisites:
facts:
@@ -5,61 +5,109 @@ lines:
- id: the-terminal_m_s_001
text: "Morning shift. Recycled air and cargo lubricant. Home sweet home."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: enter_location
tags: [arrival, atmospheric]
- id: the-terminal_m_s_002
text: "The loading arms are cycling. Freight's on schedule — for once."
role: player_character
access: [public]
trust: surface
situation: [arrival, routine]
trigger: enter_location
tags: [arrival, operational]
- id: the-terminal_m_s_003
text: "Shift board's already full. Voss has everyone running double today."
role: player_character
access: [public]
trust: surface
situation: [arrival, routine]
trigger: enter_location
tags: [arrival, operational]
- id: the-terminal_m_s_004
text: "Cargo lubricant and ozone. You'd think I'd stop noticing."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: enter_location
tags: [environmental, atmospheric]
- id: the-terminal_m_s_005
text: "Loading arm three is grinding again. Someone should file that."
role: player_character
access: [public]
trust: surface
situation: [routine]
trigger: hear_sound
tags: [environmental]
- id: the-terminal_m_s_006
text: "Containers stacked six high in bay four. That's new."
role: player_character
access: [public]
trust: surface
situation: [observation, routine]
trigger: observe_anomaly
tags: [environmental, operational]
- id: the-terminal_m_s_007
text: "The freight manifest board's flickering. Always flickering."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: enter_location
tags: [environmental]
- id: the-terminal_m_s_008
text: "Dock lights are on half-cycle. Budget cuts again."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: enter_location
tags: [environmental, atmospheric]
- id: the-terminal_m_s_009
text: "Back at the hub. Shift transition in fifty minutes."
role: player_character
access: [public]
trust: surface
situation: [arrival, routine]
trigger: return_visit
tags: [arrival, operational]
- id: the-terminal_m_s_010
text: "Quiet morning. Containers moving, nobody talking. I like it this way."
role: player_character
access: [public]
trust: surface
situation: [arrival]
trigger: enter_location
tags: [arrival, atmospheric]
- id: the-terminal_m_s_011
text: "Bay three's been sealed off. Inspection, or something else?"
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_anomaly
tags: [environmental, caution]
- id: the-terminal_m_s_012
text: "The conveyor hums at a different pitch when it's loaded heavy. This one's heavy."
role: player_character
access: [public]
trust: surface
situation: [routine]
trigger: hear_sound
tags: [environmental, operational]
@@ -67,61 +115,109 @@ lines:
- id: the-terminal_m_s_013
text: "Kael's already at the dock. Good. The day's better when he's on shift."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
tags: [npc, kael, warm]
- id: the-terminal_m_s_014
text: "Voss is pacing. Never a good sign."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
tags: [npc, voss, caution]
- id: the-terminal_m_s_015
text: "Maret's got her scheduling face on. Tight lips, fast hands on the terminal."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
tags: [npc, maret]
- id: the-terminal_m_s_016
text: "New face at dock seven. Temp worker, or someone I should know about?"
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
tags: [npc, caution]
- id: the-terminal_m_s_017
text: "Drin's at inspection again. Going through the motions, same as always."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
tags: [npc, drin]
- id: the-terminal_m_s_018
text: "Renn's running late. Third time this week."
role: player_character
access: [public]
trust: surface
situation: [observation, routine]
trigger: observe_npc
tags: [npc, renn, operational]
- id: the-terminal_m_s_019
text: "Voss and Maret talking by the schedule board. Both look tense."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: witness_interaction
tags: [npc, voss, maret]
- id: the-terminal_m_s_020
text: "Kael nodded at me across the bay. Business as usual."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
tags: [npc, kael]
- id: the-terminal_m_s_021
text: "Someone I don't recognize talking to Drin. Drin's smiling. Drin never smiles."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: witness_interaction
tags: [npc, drin, anomaly]
- id: the-terminal_m_s_022
text: "Torek's on the dock. Shouldn't be — his shift ended two hours ago."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_anomaly
tags: [npc, torek, caution]
- id: the-terminal_m_s_023
text: "Nils isn't here yet. That's unusual."
role: player_character
access: [public]
trust: surface
situation: [observation, routine]
trigger: observe_anomaly
tags: [npc, nils, operational]
- id: the-terminal_m_s_024
text: "Kael's eating alone today. He always eats with me."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_anomaly
tags: [npc, kael, concern]
@@ -129,6 +225,10 @@ lines:
- id: the-terminal_m_s_025
text: "Kael keeps checking his lattice. Waiting for a message? Not like him to be jumpy."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_anomaly
prerequisites:
relationship:
@@ -139,6 +239,10 @@ lines:
- id: the-terminal_m_s_026
text: "Container 4471's been in temp since yesterday. That's not the normal routing."
role: player_character
access: [public]
trust: surface
situation: [observation, routine]
trigger: observe_anomaly
prerequisites:
facts:
@@ -148,6 +252,10 @@ lines:
- id: the-terminal_m_s_027
text: "Voss changed the rotation again. Third time this month. Covering something."
role: player_character
access: [public]
trust: surface
situation: [observation, routine]
trigger: observe_anomaly
prerequisites:
facts:
@@ -157,6 +265,10 @@ lines:
- id: the-terminal_m_s_028
text: "That detective's back. Asking questions near bay four. Stay calm."
role: player_character
access: [public]
trust: surface
situation: [investigation, observation]
trigger: observe_npc
prerequisites:
facts:
@@ -167,6 +279,10 @@ lines:
- id: the-terminal_m_s_029
text: "Maret hasn't looked at me all shift. She noticed something. I know she did."
role: player_character
access: [public]
trust: surface
situation: [observation]
trigger: observe_npc
prerequisites:
entity_attributes:
@@ -178,6 +294,10 @@ lines:
- id: the-terminal_m_s_030
text: "Shift transition in ten. If the route's clean, we move tonight."
role: player_character
access: [public]
trust: surface
situation: [alone, routine]
trigger: time_idle
prerequisites:
facts:
@@ -187,6 +307,10 @@ lines:
- id: the-terminal_m_s_031
text: "Kael was in corridor B-7 last night. Off-shift. Off-route. That's not nothing."
role: player_character
access: [public]
trust: surface
situation: [alone, investigation]
trigger: time_idle
prerequisites:
facts:
@@ -197,6 +321,10 @@ lines:
- id: the-terminal_m_s_032
text: "Who was Kael talking to? Not anyone from our rotation. I'd know the face."
role: player_character
access: [public]
trust: surface
situation: [alone, investigation]
trigger: time_idle
prerequisites:
facts:
@@ -207,6 +335,10 @@ lines:
- id: the-terminal_m_s_033
text: "He looked left before answering. He always looks left when he's lying."
role: player_character
access: [public]
trust: surface
situation: [investigation, social]
trigger: post_conversation
prerequisites:
facts:
@@ -217,6 +349,10 @@ lines:
- id: the-terminal_m_s_034
text: "Torek's spending too much at Lera's. Someone's going to notice."
role: player_character
access: [public]
trust: surface
situation: [observation, routine]
trigger: observe_npc
prerequisites:
facts:
@@ -226,6 +362,10 @@ lines:
- id: the-terminal_m_s_035
text: "Same old Kael. Same jokes, same routine. ...What are you not telling me?"
role: player_character
access: [public]
trust: surface
situation: [investigation, social]
trigger: post_conversation
prerequisites:
relationship:
+13 -15
View File
@@ -9,28 +9,26 @@ description: >
Lines can be appropriate for multiple moods.
values:
- value: fond
description: Warm, affectionate. Genuine positive feeling toward the listener.
- value: anxious
description: Anxious about something specific. Distracted, checking surroundings. (Renamed from 'worried' in Sprint 14.)
- value: comfortable
description: At ease, relaxed. Default positive-neutral state.
- value: frustrated
description: Blocked, irritated, empathetically distressed. Outward-directed tension. (Renamed from 'concerned' in Sprint 14.)
- value: worried
description: Anxious about something specific. Distracted, checking surroundings.
- value: content
description: At ease, relaxed. Default positive-neutral state. (Renamed from 'comfortable' in Sprint 14.)
- value: suspicious
description: Guarded, measuring words. Something feels off to this NPC.
- value: analytical
description: Thoughtful, assessing. Processing information rather than emoting.
- value: warm
description: Warm, affectionate. Genuine positive feeling toward the listener. (Renamed from 'fond' in Sprint 14.)
- value: conflicted
description: >
Torn between competing impulses. Loyalty vs. self-preservation, duty vs.
friendship. The mood of someone who hasn't decided what to do yet.
- value: concerned
description: Worried about someone else's wellbeing. Empathetic distress.
- value: hostile
description: Actively antagonistic. Trust broken, relationship damaged. (Added in Sprint 14.)
- value: relieved
description: Tension has eased. Something feared didn't happen, or a burden lifted.
- value: focused
description: Thoughtful, assessing, task-oriented. Processing information rather than emoting. (Renamed from 'analytical', merged with 'conflicted' in Sprint 14.)
+8 -1
View File
@@ -1,4 +1,4 @@
# 13 situation values (D-035, D-028 Layer 2)
# 14 situation values (D-035, D-028 Layer 2)
# Situation context for dialogue line eligibility — engine-state-to-situation mapping
name: situations
decision_ref: D-035
@@ -51,3 +51,10 @@ values:
- value: observation
description: Player is watching from a distance, not directly interacting
- value: greeting
description: >
Initial contact phase of an encounter. Layer 2 (D-028) uses greeting lines
with access tier filtering to differentiate first meeting vs established vs
post-confrontation greetings. Added Sprint 8 amendment. NOTE: server
derive_situations() does not yet push Situation::Greeting — pending Rust update.
+260
View File
@@ -0,0 +1,260 @@
# Layer 2: Situation-to-Relationship-History Mapping
**Ticket:** #170 | **Sprint:** 15 | **Author:** Paula
**Cross-references:** D-028, D-035, server/src/npc/interaction.rs (#325), server/src/simulation/dialogue.rs (#305)
---
## Purpose
D-028 Layer 2 modifies greeting and topic selection based on interaction history with a specific NPC.
This document defines:
1. Which of the 14 D-035 situations encode relationship history states
2. How the engine maps `InteractionMemory` to Layer 2 situation activation
3. How content authors tag lines to exploit those states
---
## Part A: The 14 Situations — Which Encode Relationship History
D-035 defines 14 `situation` enum values. Most are **time-and-context situations** (what's happening in the world right now). A smaller subset are **relationship history markers** that the engine derives from `InteractionMemory`.
### Time-and-Context Situations (engine derives from game state)
| Situation | When Active | Relationship-Aware? |
|-----------|-------------|---------------------|
| `arrival` | Player has just arrived at this location (first visit this game-day) | No |
| `shift_start` | NPC is beginning their work shift | No |
| `shift_end` | NPC is wrapping up their work shift | No |
| `shift_transition` | Gap between shifts — oversight thinnest | No |
| `bar_evening` | Social hours at The Last Shift | No |
| `night_shift` | Late hours, skeleton crew | No |
| `investigation` | Player is actively asking probing questions; activated by `PersonOfInterest` relationship | Yes — via RelationshipState |
| `confrontation` | Triangle tension past threshold; NPC is defensive/agitated | No (NPC-side state) |
| `social` | NPC is in casual social activity | No |
| `alone` | NPC is by themselves | No |
| `emergency` | Urgent event occurring | No |
| `routine` | Normal daily activity (always-active baseline) | No |
| `observation` | Player watching from a distance | No |
### Relationship History Situations
| Situation | Relationship History State | How Activated |
|-----------|---------------------------|---------------|
| `greeting` | **Any initial contact** — the opening exchange of an encounter | Active whenever the player initiates Talk (pending Rust update — see Part D) |
The `greeting` situation is the primary Layer 2 tool for content authors. By itself, `greeting` marks a line for the initial-contact phase of any encounter. The engine's `InteractionMemory` state then determines which `greeting`-tagged lines actually surface, via access tier filtering.
---
## Part B: Relationship History States and Content Encoding
Five relationship history states matter for Layer 2 dialogue authoring:
### 1. first_meeting
**Condition:** `InteractionMemory.interaction_count == 0`
**Engine behavior:** Pushes `Situation::FirstMeeting` into active situations
**Content encoding:** `situation: [greeting]` + `access: [public]`
The player has never spoken to this NPC before. Their `RelationshipState` is `Unknown`, so only `access: [public]` lines are eligible. A `greeting`-tagged line with `access: [public]` fires as the first words exchanged.
```yaml
# Pattern: first_meeting
situation: [greeting]
access: [public]
trust: surface
mood: [content] # or untagged (neutral)
```
### 2. established
**Condition:** `InteractionMemory.interaction_count >= 3`
**Engine behavior:** Pushes `Situation::RepeatedVisit` into active situations
**Content encoding:** `situation: [greeting]` + `access: [peer]` or `access: [peer, insider]`
The player has spoken to this NPC at least 3 times. The relationship has progressed — typically `Known` (access: Peer) or `Friendly` (access: Peer + Insider). `greeting`-tagged lines with these access tiers become available and are preferred over public lines for greeting selection.
```yaml
# Pattern: established — peer warmth
situation: [greeting]
access: [peer, insider]
trust: surface
mood: [warm, content]
```
```yaml
# Pattern: established — authority/professional repeat
situation: [greeting]
access: [authority]
trust: surface
mood: [focused]
```
### 3. tense
**Condition:** Confrontation logged in `InteractionMemory.notable_events` but relationship has not collapsed
**Engine behavior:** No distinct situation pushed; modeled through NPC's `CurrentMood` (set to `suspicious` or `frustrated` by confrontation response system)
**Content encoding:** `situation: [greeting]` + `access: [peer, insider]` + `mood: [suspicious, frustrated]`
A confrontation was delivered. The relationship may have been decremented (e.g., `Friendly → Known`), but the player still has peer access. The NPC's mood has shifted. `greeting`-tagged lines with `mood: [suspicious, frustrated]` score higher in Layer 4 weighted selection.
```yaml
# Pattern: tense — post-confrontation greeting (still peer access)
situation: [greeting]
access: [peer, insider]
trust: surface
mood: [suspicious, frustrated]
```
### 4. post_confrontation
**Condition:** Confrontation recorded in `InteractionMemory.notable_events` (kind: `Confrontation`)
**Relationship state change:** `process_confrontation_response` decrements `RelationshipState` (e.g., `Known → PersonOfInterest`)
**Content encoding:** `situation: [confrontation]` + access tags matching post-decrement relationship
Post-confrontation dialogue is primarily handled by existing `situation: [confrontation]` lines and the deflection/response pools. The `greeting` situation isn't the primary driver here — the confrontation situation takes precedence.
```yaml
# Pattern: post_confrontation — NPC is now defensive
situation: [confrontation]
access: [peer, public, authority]
trust: surface
mood: [hostile, suspicious, frustrated]
```
### 5. post_walkaway
**Condition:** Walk-away recorded in `InteractionMemory.notable_events` (kind: `WalkAway`)
**Engine behavior:** `process_walk_away` records `IncompleteInteraction` in KnowledgeGraph; NPC gets `RoutineDeviation` component
**Content encoding:** `situation: [greeting]` + `mood: [suspicious]` (lower intensity than confrontation)
A walk-away is softer than a confrontation. The NPC noticed, the KG recorded it, but the relationship didn't necessarily decrement. The NPC's mood may shift mildly suspicious. `greeting`-tagged lines with `mood: [suspicious]` will score slightly higher next encounter.
```yaml
# Pattern: post_walkaway — NPC is mildly unsettled
situation: [greeting]
access: [peer, insider]
trust: surface
mood: [suspicious]
```
---
## Part C: Situation State Quick Reference
| Relationship History State | InteractionMemory Condition | Access Tier in Play | Mood Signal | Layer 2 Mechanism |
|--------------------------|----------------------------|--------------------|--------------|--------------------|
| `first_meeting` | count == 0 | Public only | neutral/content | `Situation::FirstMeeting` pushed; only Public lines eligible |
| `established` | count >= 3 | Peer, Insider, or Authority | warm, content, focused | `Situation::RepeatedVisit` pushed; higher-tier access unlocked |
| `tense` | confrontation in notable_events, peer access still active | Peer + Insider | suspicious, frustrated | No distinct situation; NPC CurrentMood drives scoring |
| `post_confrontation` | confrontation in notable_events, relationship decremented | Public + Authority (or Peer) | hostile, suspicious | RelationshipState decremented → access tier shifts |
| `post_walkaway` | walkaway in notable_events | Peer + Insider | suspicious | KG records IncompleteInteraction; mild mood shift |
---
## Part D: InteractionMemory → Layer 2 Situation Selection
**Source:** `server/src/npc/interaction.rs` (#325), `server/src/simulation/dialogue.rs` (#305, L414-421)
### The Derivation Chain
When the player initiates a Talk interaction, `process_talk_interaction` derives the active situation set through two passes:
**Pass 1: Game-state situations** (`derive_situations`, dialogue.rs L226-251)
```rust
// Always-active baseline
situations.push(Situation::Routine);
// Day phase → situation
match day_phase {
Morning => situations.push(Situation::ShiftStart),
Afternoon => situations.push(Situation::Social),
Evening => { situations.push(Situation::BarEvening); situations.push(Situation::Social); }
Night => situations.push(Situation::NightShift),
}
// Relationship context
if relationship == PersonOfInterest { situations.push(Situation::Investigation); }
```
**Pass 2: InteractionMemory situations** (dialogue.rs L414-421)
```rust
if let Some(ref mem) = interaction_mem_opt {
if mem.is_first_meeting() {
situations.push(Situation::FirstMeeting); // count == 0
} else if mem.is_repeated_visit() {
situations.push(Situation::RepeatedVisit); // count >= 3
}
}
```
### InteractionMemory Thresholds
| Method | Condition | Derived Situation |
|--------|-----------|-------------------|
| `is_first_meeting()` | `interaction_count == 0` | `Situation::FirstMeeting` |
| `is_repeated_visit()` | `interaction_count >= 3` | `Situation::RepeatedVisit` |
| *(neither)* | count == 1 or 2 | Neither — transitional zone |
**Transitional zone (count 1-2):** No `FirstMeeting` or `RepeatedVisit` situation is pushed. The player has spoken to this NPC once or twice — the relationship is warming, but not yet "established." Greeting selection falls through to `access: [public]` lines (relationship likely still `Unknown` or just tipping to `Known`).
### The `greeting` Situation: Current Status and Intent
Content lines use `situation: [greeting]` as their tag. The engine currently pushes `Situation::FirstMeeting` and `Situation::RepeatedVisit` — NOT `Situation::Greeting`.
**Schema note (dialogue-line.schema.json):** `"'greeting' is not yet in server/src/content/line_pool.rs — lines using it will be skipped until Rust is updated."`
**Current fallback behavior:** Until the Rust update lands, lines tagged `situation: [greeting]` are excluded from the candidate pool entirely — they never fire. NPCs greet the player using their `situation: [routine]` or `situation: [social]` lines instead, filtered by access tier and mood as usual. This means Layer 2 relationship-aware greetings are functionally dormant; the content exists and is schema-valid, but the engine skips it. No error is raised — the line pool query simply finds no match for the `greeting` situation and falls through to other eligible lines.
**Intended resolution (pending Rust update):** When `server/src/content/line_pool.rs` is updated to include `Situation::Greeting`, `greeting`-tagged content lines will fire. The Layer 2 relationship history distinction will then work through the access tier filtering that is already implemented:
- `access: [public]` + `situation: [greeting]` → first meeting lines (Unknown relationship)
- `access: [peer, insider]` + `situation: [greeting]` → established lines (Known/Friendly relationship)
- `access: [authority]` + `situation: [greeting]` → authority repeat lines (PersonOfInterest relationship)
- `mood: [suspicious, frustrated]` on any of the above → strained/post-confrontation lines score higher
### Walk-away and Confrontation: No Separate Situations
Walk-aways and confrontations do NOT push a dedicated `Situation::PostWalkAway` or `Situation::PostConfrontation`. Instead:
- **Walk-away:** `InteractionMemory.notable_events` records `InteractionEventKind::WalkAway`. The KG records `IncompleteInteraction`. NPC gets `RoutineDeviation`. On next encounter, the NPC's mild mood shift (`suspicious`) steers Layer 4 scoring.
- **Confrontation:** `process_confrontation_response` decrements the NPC's `RelationshipState` in the player's KG. This directly changes which access tiers are available on next encounter. NPC's `CurrentMood` shifts (implementation pending: currently hardcoded to push `Tier2` animation and spike monologue; mood component update to `suspicious`/`frustrated` is implied).
### The Layer 2 Pipeline in Full
```
Player initiates Talk
1. derive_situations(day_phase, relationship)
→ [Routine, ShiftStart/Social/BarEvening/NightShift, Investigation?]
2. InteractionMemory → FirstMeeting | RepeatedVisit | (neither)
→ append to situations list
3. available_access_tiers(relationship)
→ [Public] | [Public, Peer] | [Public, Peer, Insider] | [Public, Peer, Authority] | [Hostile]
4. line_pool.query_dialogue(location, role, access, situations, trust)
→ candidate lines matching all three filters
5. Layer 4 weighted scoring: mood match (+3), topic match (+2/each)
→ NPC's CurrentMood biases toward lines matching their emotional state
6. Weighted random selection → final line
```
---
## Authoring Checklist: Layer 2 Greeting Variants
When authoring greeting variants for a new Tier 1 NPC, provide at minimum:
- [ ] **First meeting**`situation: [greeting]`, `access: [public]`, neutral mood. Fires before any relationship forms.
- [ ] **Established (peer/social)**`situation: [greeting]`, `access: [peer, insider]`, `mood: [warm, content]`. Fires after 3+ interactions in a social/peer context.
- [ ] **Established (authority)**`situation: [greeting]`, `access: [authority]`, `mood: [focused]`. Fires after 3+ interactions in an authority/investigation context.
- [ ] **Post-confrontation**`situation: [greeting]`, `access: [peer, insider]`, `mood: [suspicious, frustrated]`. Fires when NPC's mood is strained.
Optional but recommended:
- [ ] **Transitional (1-2 interactions)**`situation: [arrival, social]`, `access: [public, peer]`. Bridges first meeting and established. Uses `arrival` until `greeting` situation is active in Rust.
- [ ] **Post-walkaway**`situation: [greeting]`, `access: [peer, insider]`, `mood: [suspicious]`. Softer version of post-confrontation.
---
*Last updated: 2026-02-21 (Sprint 15, ticket #170)*