feat(content): replace overheard.yaml with generator-compatible RON format
Archives the 48 hand-authored overheard conversations that referenced deleted named NPCs (Kael, Sera, Torek). New RON pool format is parameterized by role pair and zone type, culture-neutral, with knowledge_payload for investigative value. 15 sample conversations across 5 zone types. Adds content pattern note to decisions/content.md. Ticket: #664 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,295 @@
|
||||
// Overheard Conversations Pool
|
||||
//
|
||||
// Schema: server/src/npc/overheard.rs :: OverheardPool (TBD — pending #663)
|
||||
// Ticket: #664 (copy team, Sprint 27)
|
||||
// Decision refs: D-078 (occlusion-resilient authoring), D-142 (zone-type architecture),
|
||||
// D-122 (all NPCs generated), D-139 (behavior primitives model)
|
||||
//
|
||||
// FORMAT NOTE: This file introduces a new content pattern — generator-compatible overheard
|
||||
// conversations parameterized by role pair and zone type. Pending D-record (see Q-WTF
|
||||
// note at end of decisions/content.md). The format is authored independently of any
|
||||
// specific NPC instance: role_pair draws from zone-type template role IDs; the generator
|
||||
// resolves role → NPC at runtime.
|
||||
//
|
||||
// HOW THIS WORKS:
|
||||
// At runtime, the generator finds two NPCs in proximity whose roles match `role_pair`
|
||||
// and whose zone type matches an entry in `zone_types`. The conversation is assembled
|
||||
// with per-word occlusion applied based on player distance, ambient noise level, and
|
||||
// ListeningFocus stance (D-078). Culture modifier can be applied to the assembled text
|
||||
// at the same layer as behavior primitive assembly.
|
||||
//
|
||||
// OCCLUSION-RESILIENT AUTHORING RULES (D-078 — apply to every line authored here):
|
||||
// 1. Front-load key information — most important word in the first third of the line.
|
||||
// 2. Short declarative sentences — one idea per turn.
|
||||
// 3. No pronoun-first openers — first word has highest drop risk under occlusion.
|
||||
// A dropped pronoun without antecedent is unresolvable. Use role nouns or subjects.
|
||||
// 4. Each turn is self-contained — a player who hears only one side gets a complete thought.
|
||||
//
|
||||
// REGISTERS:
|
||||
// Work — shift logistics, job gripes, operational notes
|
||||
// Social — idle chat, personal news, relationship signals
|
||||
// Gossip — third-party information with player-relevant knowledge payload
|
||||
//
|
||||
// RELATIONSHIP CONTEXT:
|
||||
// Colleague — same-level co-workers
|
||||
// Acquaintance — recognize each other, not close
|
||||
// Friend — off-duty warmth, shared history signals
|
||||
// Superior — one holds authority over the other (speaker_a is superior)
|
||||
// Subordinate — one defers to the other (speaker_a is subordinate)
|
||||
//
|
||||
// KNOWLEDGE PAYLOAD:
|
||||
// Describes what a player can infer from a fully-heard exchange, or the
|
||||
// key fragment retained under partial occlusion. None if the exchange is
|
||||
// social atmosphere with no investigative value.
|
||||
//
|
||||
// PRIMITIVES ARE CULTURE-NEUTRAL. No cultural attitudes in action or speech text.
|
||||
|
||||
(
|
||||
conversations: [
|
||||
|
||||
// =====================================================================
|
||||
// INDUSTRIAL FREIGHT
|
||||
// =====================================================================
|
||||
|
||||
(
|
||||
id: "ovh_ifr_001",
|
||||
zone_types: ["industrial_freight"],
|
||||
role_pair: (a: "dock_worker", b: "dock_worker"),
|
||||
register: Work,
|
||||
relationship_context: Colleague,
|
||||
topic: "equipment_fault",
|
||||
lines: [
|
||||
( speaker: A, text: "Loading arm three is grinding again. Filed the report last week." ),
|
||||
( speaker: B, text: "Maintenance says next cycle. Someone loses a hand before anything moves." ),
|
||||
],
|
||||
knowledge_payload: None,
|
||||
),
|
||||
|
||||
(
|
||||
id: "ovh_ifr_002",
|
||||
zone_types: ["industrial_freight"],
|
||||
role_pair: (a: "dock_worker", b: "dock_worker"),
|
||||
register: Work,
|
||||
relationship_context: Colleague,
|
||||
topic: "manifest_discrepancy",
|
||||
lines: [
|
||||
( speaker: A, text: "Weight manifest came in four hundred kilos short again. Third time this month." ),
|
||||
( speaker: B, text: "Four hundred kilos doesn't disappear from a calibration error. It goes somewhere." ),
|
||||
],
|
||||
knowledge_payload: Some("Recurring manifest weight discrepancy. Dock workers suspicious of the official explanation. Potential signal of systematic removal."),
|
||||
),
|
||||
|
||||
(
|
||||
id: "ovh_ifr_003",
|
||||
zone_types: ["industrial_freight"],
|
||||
role_pair: (a: "foreman", b: "dock_worker"),
|
||||
register: Work,
|
||||
relationship_context: Superior,
|
||||
topic: "bay_assignment",
|
||||
lines: [
|
||||
( speaker: A, text: "Bay seven crew is two short tonight. Fill the gap from B-section." ),
|
||||
( speaker: B, text: "Bay seven's low traffic. Less oversight. Someone wanted that." ),
|
||||
],
|
||||
knowledge_payload: Some("Bay seven has been given a reduced crew in a low-oversight slot. The subordinate speaker suspects this is deliberate rather than operational."),
|
||||
),
|
||||
|
||||
(
|
||||
id: "ovh_ifr_004",
|
||||
zone_types: ["industrial_freight"],
|
||||
role_pair: (a: "technician", b: "technician"),
|
||||
register: Work,
|
||||
relationship_context: Colleague,
|
||||
topic: "camera_anomaly",
|
||||
lines: [
|
||||
( speaker: A, text: "Junction camera at C-corridor was repositioned. Nobody filed a maintenance request." ),
|
||||
( speaker: B, text: "Camera moved without logging is a compliance violation. Someone did it off-book." ),
|
||||
],
|
||||
knowledge_payload: Some("A surveillance camera was moved without documentation. Suggests deliberate manipulation of oversight coverage."),
|
||||
),
|
||||
|
||||
(
|
||||
id: "ovh_ifr_005",
|
||||
zone_types: ["industrial_freight"],
|
||||
role_pair: (a: "dock_worker", b: "dock_worker"),
|
||||
register: Social,
|
||||
relationship_context: Friend,
|
||||
topic: "career_stasis",
|
||||
lines: [
|
||||
( speaker: A, text: "Transfer application went through. Third time. Got rejected again." ),
|
||||
( speaker: B, text: "Some people just belong to a place whether they want to or not." ),
|
||||
],
|
||||
knowledge_payload: None,
|
||||
),
|
||||
|
||||
// =====================================================================
|
||||
// ENTERTAINMENT HOSPITALITY
|
||||
// =====================================================================
|
||||
|
||||
(
|
||||
id: "ovh_hos_001",
|
||||
zone_types: ["entertainment_hospitality"],
|
||||
role_pair: (a: "hospitality_staff", b: "hospitality_staff"),
|
||||
register: Social,
|
||||
relationship_context: Colleague,
|
||||
topic: "guest_behavior",
|
||||
lines: [
|
||||
( speaker: A, text: "Room fourteen left every amenity in the bath untouched. For three nights." ),
|
||||
( speaker: B, text: "Some guests want the illusion of service, not the thing itself." ),
|
||||
],
|
||||
knowledge_payload: None,
|
||||
),
|
||||
|
||||
(
|
||||
id: "ovh_hos_002",
|
||||
zone_types: ["entertainment_hospitality"],
|
||||
role_pair: (a: "concierge", b: "security"),
|
||||
register: Work,
|
||||
relationship_context: Colleague,
|
||||
topic: "guest_anomaly",
|
||||
lines: [
|
||||
( speaker: A, text: "Guest in room nine hasn't left the room since check-in. Thirty-six hours." ),
|
||||
( speaker: B, text: "Tray service three times, no housekeeping, no movement. Worth a wellness check." ),
|
||||
],
|
||||
knowledge_payload: Some("A guest has been isolated in their room for an extended period. Security and front desk are beginning to flag this as unusual."),
|
||||
),
|
||||
|
||||
(
|
||||
id: "ovh_hos_003",
|
||||
zone_types: ["entertainment_hospitality"],
|
||||
role_pair: (a: "kitchen_worker", b: "kitchen_worker"),
|
||||
register: Work,
|
||||
relationship_context: Colleague,
|
||||
topic: "supply_chain",
|
||||
lines: [
|
||||
( speaker: A, text: "Supplier changed the protein spec again. Third reformulation this cycle." ),
|
||||
( speaker: B, text: "Changed means cheaper. Guests won't notice until they do, and then they'll blame us." ),
|
||||
],
|
||||
knowledge_payload: None,
|
||||
),
|
||||
|
||||
(
|
||||
id: "ovh_hos_004",
|
||||
zone_types: ["entertainment_hospitality"],
|
||||
role_pair: (a: "security", b: "security"),
|
||||
register: Work,
|
||||
relationship_context: Colleague,
|
||||
topic: "access_pattern",
|
||||
lines: [
|
||||
( speaker: A, text: "Service corridor had three badge reads last night. All outside shift hours." ),
|
||||
( speaker: B, text: "Off-hours service access should be logged with management. Check if it was." ),
|
||||
],
|
||||
knowledge_payload: Some("Service corridor is being accessed outside normal hours without clear authorization. Pattern may indicate unauthorized activity."),
|
||||
),
|
||||
|
||||
// =====================================================================
|
||||
// RESIDENTIAL STATION
|
||||
// =====================================================================
|
||||
|
||||
(
|
||||
id: "ovh_rst_001",
|
||||
zone_types: ["residential_station"],
|
||||
role_pair: (a: "resident", b: "resident"),
|
||||
register: Social,
|
||||
relationship_context: Acquaintance,
|
||||
topic: "block_conditions",
|
||||
lines: [
|
||||
( speaker: A, text: "Air recycler on deck six has been cycling short again. Reported it twice." ),
|
||||
( speaker: B, text: "Block admin is backed up. Three units filed the same fault this cycle." ),
|
||||
],
|
||||
knowledge_payload: None,
|
||||
),
|
||||
|
||||
(
|
||||
id: "ovh_rst_002",
|
||||
zone_types: ["residential_station"],
|
||||
role_pair: (a: "block_admin", b: "maintenance_tech"),
|
||||
register: Work,
|
||||
relationship_context: Superior,
|
||||
topic: "welfare_concern",
|
||||
lines: [
|
||||
( speaker: A, text: "Unit forty-two hasn't answered welfare checks in four days. Filing it formal." ),
|
||||
( speaker: B, text: "Saw lights on two nights ago. Someone's in there. Not answering is a choice." ),
|
||||
],
|
||||
knowledge_payload: Some("A residential unit occupant has been avoiding contact for days. Conflicting information: lights suggest presence, but no response to welfare checks."),
|
||||
),
|
||||
|
||||
(
|
||||
id: "ovh_rst_003",
|
||||
zone_types: ["residential_station"],
|
||||
role_pair: (a: "resident", b: "resident"),
|
||||
register: Gossip,
|
||||
relationship_context: Friend,
|
||||
topic: "unexplained_income",
|
||||
lines: [
|
||||
( speaker: A, text: "New furniture in unit thirty. Nice furniture. Station dock pay doesn't cover that." ),
|
||||
( speaker: B, text: "Extra shift somewhere, or extra something. Nobody asks too closely." ),
|
||||
],
|
||||
knowledge_payload: Some("A block resident has acquired unexplained goods above their apparent income level. Other residents have noticed and are deliberately not inquiring further."),
|
||||
),
|
||||
|
||||
// =====================================================================
|
||||
// RESIDENTIAL DISPERSED
|
||||
// =====================================================================
|
||||
|
||||
(
|
||||
id: "ovh_dis_001",
|
||||
zone_types: ["residential_dispersed"],
|
||||
role_pair: (a: "supply_runner", b: "homesteader"),
|
||||
register: Work,
|
||||
relationship_context: Acquaintance,
|
||||
topic: "missing_resident",
|
||||
lines: [
|
||||
( speaker: A, text: "Eastern claim hasn't put out a supply crate in six weeks. Door closed on three runs." ),
|
||||
( speaker: B, text: "Six weeks is a long time to be quiet out there. Someone should go properly." ),
|
||||
],
|
||||
knowledge_payload: Some("A dispersed homestead has been unresponsive for six weeks. Supply runner has made three passes without contact. Welfare concern escalating."),
|
||||
),
|
||||
|
||||
(
|
||||
id: "ovh_dis_002",
|
||||
zone_types: ["residential_dispersed"],
|
||||
role_pair: (a: "frontier_medic", b: "liaison"),
|
||||
register: Gossip,
|
||||
relationship_context: Colleague,
|
||||
topic: "off_grid_activity",
|
||||
lines: [
|
||||
( speaker: A, text: "New structure went up on the ridge claim. Not on any filed homestead record." ),
|
||||
( speaker: B, text: "Unfiled structure means someone doesn't want the location in the regional system." ),
|
||||
],
|
||||
knowledge_payload: Some("An unregistered structure has appeared in a dispersed residential area. Both speakers recognize the deliberate omission from regional records as significant."),
|
||||
),
|
||||
|
||||
// =====================================================================
|
||||
// RURAL AGRICULTURAL
|
||||
// =====================================================================
|
||||
|
||||
(
|
||||
id: "ovh_rag_001",
|
||||
zone_types: ["rural_agricultural"],
|
||||
role_pair: (a: "farmer", b: "trader"),
|
||||
register: Work,
|
||||
relationship_context: Acquaintance,
|
||||
topic: "supply_shortage",
|
||||
lines: [
|
||||
( speaker: A, text: "Irrigation fittings haven't come through in two cycles. Runner said the supplier changed terms." ),
|
||||
( speaker: B, text: "Supplier changed terms means the price went up or someone else got the contract." ),
|
||||
],
|
||||
knowledge_payload: None,
|
||||
),
|
||||
|
||||
(
|
||||
id: "ovh_rag_002",
|
||||
zone_types: ["rural_agricultural"],
|
||||
role_pair: (a: "militia", b: "militia"),
|
||||
register: Social,
|
||||
relationship_context: Colleague,
|
||||
topic: "visitor_pattern",
|
||||
lines: [
|
||||
( speaker: A, text: "Same vehicle came through the gate three times this week. Different plates each time." ),
|
||||
( speaker: B, text: "Different plates, same vehicle. That's not a coincidence, that's a method." ),
|
||||
],
|
||||
knowledge_payload: Some("A vehicle has visited the settlement three times in one week under different registration plates. Both militia members recognize this as suspicious rather than operational."),
|
||||
),
|
||||
|
||||
],
|
||||
)
|
||||
@@ -0,0 +1,855 @@
|
||||
# DEPRECATED — archived by ticket #664 (copy team, Sprint 27)
|
||||
#
|
||||
# This file is NOT served at runtime. It is preserved for authoring reference only.
|
||||
#
|
||||
# WHY DEPRECATED: Every entry in this file references named NPCs from the Sova Transit
|
||||
# District vertical slice (Kael Davan, Sera Venn, Naia Tamm, Voss, Torek, Renn, Maret,
|
||||
# Lera, Nils, Drin, Olin, etc.). Per D-122 (all NPCs generated, no hand-authored
|
||||
# characters), all named character references in this file are invalid against the
|
||||
# generated NPC population. The drama module system (ticket #158) that these entries
|
||||
# were authored for was superseded before implementation.
|
||||
#
|
||||
# WHAT REPLACED IT: content/npc-conversations/overheard.ron
|
||||
# Generator-compatible RON pool. Parameterized by role pair and zone type.
|
||||
# No named NPC references. Culture-neutral text accepting culture modifier at assembly.
|
||||
#
|
||||
# WHAT IS STRUCTURALLY WORTH PRESERVING (applied in overheard.ron):
|
||||
# - Overheard conversations as ambient information layer (D-078)
|
||||
# - Register taxonomy: social / work / gossip
|
||||
# - Occlusion-resilient authoring rules (D-078): front-load key info, short
|
||||
# declarative sentences, no pronoun-first openers, each turn self-contained
|
||||
# - knowledge_payload pattern for investigative inference
|
||||
#
|
||||
# Original file header below:
|
||||
# NPC-to-NPC Overheard Dialogue Pool
|
||||
# Ticket: #536 | Author: Mellanie | Sprint: 14
|
||||
# Decision refs: D-078, D-018, D-071, D-035
|
||||
#
|
||||
# LEGACY CONTENT — v0.1 hand-authored pool. DO NOT DELETE.
|
||||
# All entries in this file reference named NPCs from the Sova Transit District
|
||||
# vertical slice (Kael Davan, Sera Venn, Naia Tamm, Voss, Nils, Maret Korr, etc.).
|
||||
# These named NPCs were authored for the drama module system (ticket #158), which
|
||||
# was superseded before implementation. The named references in this file are
|
||||
# therefore broken — they reference characters that do not exist in the generated
|
||||
# NPC population.
|
||||
# Ticket #664 tracks replacement of this file with a zone-type-aware overheard
|
||||
# generator that produces conversations from role pairs rather than named characters.
|
||||
# Until #664 ships, this file is not served at runtime.
|
||||
#
|
||||
# These are conversations the player can overhear when stationary near two
|
||||
# NPCs. The passive dialogue panel (D-078) displays them with per-word
|
||||
# occlusion based on distance, ambient noise, and ListeningFocus stance.
|
||||
#
|
||||
# OCCLUSION-RESILIENT AUTHORING RULES (D-078):
|
||||
# 1. Front-load key information — most important word in first third.
|
||||
# 2. Short declarative sentences — one idea per turn.
|
||||
# 3. No pronoun-first openers — first word has highest drop risk; a dropped
|
||||
# pronoun without antecedent is unresolvable. Use names or nouns.
|
||||
# 4. Each turn is self-contained — a player who hears only one side gets
|
||||
# a complete thought.
|
||||
#
|
||||
# SCHEMA NOTE:
|
||||
# `relationship_type` and `knowledge_payload` are custom extensions to the
|
||||
# D-035 schema for this content type. NPC-sourced lines use `role: npc`,
|
||||
# `access` and `trust` apply normally. Monologue-specific tags (`character`,
|
||||
# `trigger`, `prerequisite`) are not used here.
|
||||
# Schema confirmation with Gestalt (#168) before CI validation.
|
||||
#
|
||||
# REGISTERS:
|
||||
# social — idle chat, personal news, relationship talk
|
||||
# work — shift logistics, job gripes, operational notes
|
||||
# gossip — third-party information with player-relevant knowledge payload
|
||||
#
|
||||
# RELATIONSHIP TYPES:
|
||||
# colleague, friend, hostile, romantic
|
||||
#
|
||||
# KNOWLEDGE PAYLOAD FORMAT:
|
||||
# Plain English description of what the player can infer from hearing this
|
||||
# exchange clearly — or the key fragment they retain under partial occlusion.
|
||||
# null if the exchange is social noise with no investigative value.
|
||||
|
||||
pairs:
|
||||
|
||||
# ===================================================================
|
||||
# SOCIAL register — personal news, idle chat, relationships
|
||||
# ===================================================================
|
||||
|
||||
- id: overheard_001
|
||||
register: social
|
||||
speaker_a:
|
||||
role: dock-worker
|
||||
text: "Kael brought food for the whole bay yesterday. Just showed up with it."
|
||||
speaker_b:
|
||||
role: dock-worker
|
||||
text: "Naia must have made him feel guilty about something. Again."
|
||||
relationship_type: colleague
|
||||
topic: personal-gossip
|
||||
location_hints: [the-terminal, the-last-shift]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Kael and Naia have a relationship dynamic. Naia has leverage or emotional pull over Kael's behavior."
|
||||
tags: [kael, naia, social, atmosphere]
|
||||
|
||||
- id: overheard_002
|
||||
register: social
|
||||
speaker_a:
|
||||
role: bar-regular
|
||||
text: "Lera's keeping the kitchen open late this week. Span gate delay — crews stuck here."
|
||||
speaker_b:
|
||||
role: bar-regular
|
||||
text: "Good for Lera. Bad for everyone waiting on the gate."
|
||||
relationship_type: friend
|
||||
topic: station-life
|
||||
location_hints: [the-last-shift]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: null
|
||||
tags: [lera, span-gate, atmosphere, social]
|
||||
|
||||
- id: overheard_003
|
||||
register: social
|
||||
speaker_a:
|
||||
role: dock-worker
|
||||
text: "Drin's applying for the transfer. Again. Third time he's tried."
|
||||
speaker_b:
|
||||
role: dock-worker
|
||||
text: "Drin's never getting off Sova. Some people just belong to a place."
|
||||
relationship_type: colleague
|
||||
topic: career-gossip
|
||||
location_hints: [the-terminal, the-last-shift]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Drin wants out of Sova Transit. Unhappy enough to pursue transfer requests."
|
||||
tags: [drin, transfer, social, atmosphere]
|
||||
|
||||
- id: overheard_004
|
||||
register: social
|
||||
speaker_a:
|
||||
role: bar-regular
|
||||
text: "Naia and Kael had a fight. Loud enough that Lera had to step in."
|
||||
speaker_b:
|
||||
role: bar-regular
|
||||
text: "Kael looked rough this morning. That tracks."
|
||||
relationship_type: friend
|
||||
topic: relationship-drama
|
||||
location_hints: [the-last-shift]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Kael and Naia are under relationship strain. Kael's mood is affected. Cross-reference: behavioral.kael_behavioral_change."
|
||||
tags: [kael, naia, relationship, friend-arc-adjacent, dual-lens]
|
||||
|
||||
- id: overheard_005
|
||||
register: social
|
||||
speaker_a:
|
||||
role: dock-worker
|
||||
text: "Renn's finally getting his lattice service done. Been putting it off for years."
|
||||
speaker_b:
|
||||
role: dock-worker
|
||||
text: "Commission clinic wait time is eight months. Renn found someone faster."
|
||||
relationship_type: colleague
|
||||
topic: lattice-access
|
||||
location_hints: [the-terminal]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Renn found a non-Commission lattice service provider. Points toward unlicensed lattice components market."
|
||||
tags: [renn, lattice, contraband-adjacent, atmosphere]
|
||||
|
||||
- id: overheard_006
|
||||
register: social
|
||||
speaker_a:
|
||||
role: bar-regular
|
||||
text: "Maret's promotion came through. Third level supervisor."
|
||||
speaker_b:
|
||||
role: bar-regular
|
||||
text: "Good. Maret actually knows what she's doing. Unlike some."
|
||||
relationship_type: colleague
|
||||
topic: career-news
|
||||
location_hints: [the-last-shift, the-terminal]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: null
|
||||
tags: [maret, promotion, atmosphere, social]
|
||||
|
||||
- id: overheard_007
|
||||
register: social
|
||||
speaker_a:
|
||||
role: dock-worker
|
||||
text: "Voss has been in a mood all week. Something from upstairs."
|
||||
speaker_b:
|
||||
role: dock-worker
|
||||
text: "Voss is always in a mood. Week ends in -day, Voss is in a mood."
|
||||
relationship_type: colleague
|
||||
topic: supervisor-gossip
|
||||
location_hints: [the-terminal]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Voss is under external pressure from 'upstairs.' Something is stressing management."
|
||||
tags: [voss, management, atmosphere, social]
|
||||
|
||||
- id: overheard_008
|
||||
register: social
|
||||
speaker_a:
|
||||
role: bar-regular
|
||||
text: "Sera's been coming here every evening this week. Thought Commission people didn't drink."
|
||||
speaker_b:
|
||||
role: bar-regular
|
||||
text: "Sera's different. She fits here better than she fits over there."
|
||||
relationship_type: colleague
|
||||
topic: social-observation
|
||||
location_hints: [the-last-shift]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Sera Venn is a regular at The Last Shift, unusual for a Commission employee. She has social roots in the district."
|
||||
tags: [sera, commission, atmosphere, social, dual-lens]
|
||||
|
||||
- id: overheard_009
|
||||
register: social
|
||||
speaker_a:
|
||||
role: dock-worker
|
||||
text: "Nils covered Kael's morning slot yesterday. No explanation, just a roster note."
|
||||
speaker_b:
|
||||
role: dock-worker
|
||||
text: "Kael's been doing that a lot lately. Taking sick leave, then showing up mid-shift."
|
||||
relationship_type: colleague
|
||||
topic: roster-anomaly
|
||||
location_hints: [the-terminal]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Kael's schedule is irregular. Unexplained absences and late arrivals. Cross-reference: observe_anomaly triggers for Kael."
|
||||
tags: [kael, nils, roster, friend-arc-adjacent]
|
||||
|
||||
- id: overheard_010
|
||||
register: social
|
||||
speaker_a:
|
||||
role: maintenance-tech
|
||||
text: "Olin's kid got into the Commission cadet program. Starts next cycle."
|
||||
speaker_b:
|
||||
role: maintenance-tech
|
||||
text: "Olin must be pleased. Cost of living here, Commission pay makes sense."
|
||||
relationship_type: colleague
|
||||
topic: family-news
|
||||
location_hints: [maintenance-corridors, the-last-shift]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: null
|
||||
tags: [olin, commission, atmosphere, social]
|
||||
|
||||
# ===================================================================
|
||||
# WORK register — shift logistics, operational gripes, job talk
|
||||
# ===================================================================
|
||||
|
||||
- id: overheard_011
|
||||
register: work
|
||||
speaker_a:
|
||||
role: dock-worker
|
||||
text: "Maret shifted the roster again. Bay four to bay seven, no reason given."
|
||||
speaker_b:
|
||||
role: dock-worker
|
||||
text: "Bay seven's the low-traffic slot. Somebody wanted less oversight over there."
|
||||
relationship_type: colleague
|
||||
topic: roster-change
|
||||
location_hints: [the-terminal]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Bay seven has been given a low-oversight crew deliberately. This is operationally significant."
|
||||
tags: [maret, roster, bay-seven, investigation-adjacent]
|
||||
|
||||
- id: overheard_012
|
||||
register: work
|
||||
speaker_a:
|
||||
role: dock-worker
|
||||
text: "Loading arm three is grinding again. Filed the report last week."
|
||||
speaker_b:
|
||||
role: dock-worker
|
||||
text: "Maintenance says next cycle. Means nothing gets done until someone loses a hand."
|
||||
relationship_type: colleague
|
||||
topic: equipment-maintenance
|
||||
location_hints: [the-terminal]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: null
|
||||
tags: [equipment, maintenance, atmosphere, work]
|
||||
|
||||
- id: overheard_013
|
||||
register: work
|
||||
speaker_a:
|
||||
role: dock-worker
|
||||
text: "Container 4471's been in temp for three days. Someone should move it."
|
||||
speaker_b:
|
||||
role: dock-worker
|
||||
text: "Routing says hold. Don't ask me, I just process what the board says."
|
||||
relationship_type: colleague
|
||||
topic: container-routing
|
||||
location_hints: [the-terminal]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Container 4471 is being deliberately held in temp storage. 'Routing says hold' — someone modified the routing instruction."
|
||||
tags: [container-4471, routing, contraband-adjacent, investigation-payload]
|
||||
|
||||
- id: overheard_014
|
||||
register: work
|
||||
speaker_a:
|
||||
role: dock-worker
|
||||
text: "Voss cut the B-section crew by two. Says it's budget. Doesn't feel like budget."
|
||||
speaker_b:
|
||||
role: dock-worker
|
||||
text: "Less crew in B-section means less oversight. Could be budget. Could be something else."
|
||||
relationship_type: colleague
|
||||
topic: crew-reduction
|
||||
location_hints: [the-terminal, maintenance-corridors]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "B-section is understaffed. The speaker suspects this is deliberate. Cross-reference: ring oversight windows."
|
||||
tags: [voss, b-section, oversight, investigation-payload]
|
||||
|
||||
- id: overheard_015
|
||||
register: work
|
||||
speaker_a:
|
||||
role: dock-worker
|
||||
text: "Span gate's backed up again. Forty-minute delay on the freight queue."
|
||||
speaker_b:
|
||||
role: dock-worker
|
||||
text: "Forty minutes is nothing. Last month it was three hours. Patience."
|
||||
relationship_type: colleague
|
||||
topic: span-gate-delay
|
||||
location_hints: [the-terminal]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: null
|
||||
tags: [span-gate, freight, atmosphere, work]
|
||||
|
||||
- id: overheard_016
|
||||
register: work
|
||||
speaker_a:
|
||||
role: maintenance-tech
|
||||
text: "Junction C-2's camera was repositioned. Nobody filed a maintenance request."
|
||||
speaker_b:
|
||||
role: maintenance-tech
|
||||
text: "Someone moved it without logging it. That's a compliance violation."
|
||||
relationship_type: colleague
|
||||
topic: camera-anomaly
|
||||
location_hints: [maintenance-corridors]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Camera at junction C-2 was moved without documentation. Suggests deliberate surveillance manipulation. Cross-reference: awareness.surveillance_change."
|
||||
tags: [camera, surveillance, c-2, investigation-payload]
|
||||
|
||||
- id: overheard_017
|
||||
register: work
|
||||
speaker_a:
|
||||
role: dock-worker
|
||||
text: "Commission wants another inspection. Fourth one this quarter."
|
||||
speaker_b:
|
||||
role: dock-worker
|
||||
text: "Inspections mean overtime. Inspections mean everyone's watching everyone."
|
||||
relationship_type: colleague
|
||||
topic: commission-inspection
|
||||
location_hints: [the-terminal]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Commission is conducting elevated inspections of the terminal. Something has drawn their attention."
|
||||
tags: [commission, inspection, atmosphere, investigation-adjacent]
|
||||
|
||||
- id: overheard_018
|
||||
register: work
|
||||
speaker_a:
|
||||
role: dock-worker
|
||||
text: "Weight manifest on the morning freight came in five hundred kilos short. Recalibration error."
|
||||
speaker_b:
|
||||
role: dock-worker
|
||||
text: "Five hundred kilos doesn't disappear from a calibration error. It disappears from somewhere else."
|
||||
relationship_type: colleague
|
||||
topic: weight-discrepancy
|
||||
location_hints: [the-terminal]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Manifest weight discrepancy exists and dock workers are suspicious of the official explanation."
|
||||
tags: [manifest, weight-discrepancy, contraband-adjacent, investigation-payload]
|
||||
|
||||
- id: overheard_019
|
||||
register: work
|
||||
speaker_a:
|
||||
role: dock-worker
|
||||
text: "Shift handover's going to be rough tonight. Torek's team hasn't filed."
|
||||
speaker_b:
|
||||
role: dock-worker
|
||||
text: "Torek's team never files on time. Let Maret handle it."
|
||||
relationship_type: colleague
|
||||
topic: shift-handover
|
||||
location_hints: [the-terminal]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: null
|
||||
tags: [torek, maret, shift, atmosphere, work]
|
||||
|
||||
- id: overheard_020
|
||||
register: work
|
||||
speaker_a:
|
||||
role: maintenance-tech
|
||||
text: "Sub-level access has been requested twice this week. Both times outside shift hours."
|
||||
speaker_b:
|
||||
role: maintenance-tech
|
||||
text: "Scheduled maintenance happens in-shift. Off-hours access needs sign-off."
|
||||
relationship_type: colleague
|
||||
topic: sub-level-access
|
||||
location_hints: [maintenance-corridors]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Someone has been accessing sub-level spaces outside normal hours. No sign-off implies unauthorized use. Cross-reference: smuggling-hold activity."
|
||||
tags: [sub-level, access, maintenance, investigation-payload]
|
||||
|
||||
- id: overheard_021
|
||||
register: work
|
||||
speaker_a:
|
||||
role: dock-worker
|
||||
text: "Bay four's been sealed for inspection since yesterday morning."
|
||||
speaker_b:
|
||||
role: dock-worker
|
||||
text: "Commission authorized it. Not Voss. Commission went over his head."
|
||||
relationship_type: colleague
|
||||
topic: bay-inspection
|
||||
location_hints: [the-terminal]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Bay four inspection bypassed Voss's authority. Commission is operating independently of local management."
|
||||
tags: [bay-four, commission, voss, inspection, investigation-payload]
|
||||
|
||||
- id: overheard_022
|
||||
register: work
|
||||
speaker_a:
|
||||
role: dock-worker
|
||||
text: "Kael's running Renn's route today. Renn's supposed to be on that."
|
||||
speaker_b:
|
||||
role: dock-worker
|
||||
text: "Kael volunteered. Said Renn had something come up."
|
||||
relationship_type: colleague
|
||||
topic: route-substitution
|
||||
location_hints: [the-terminal]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Kael is voluntarily taking routes outside his assignment. Could be covering for Renn, could be operational flexibility needed by the ring."
|
||||
tags: [kael, renn, route, ring-adjacent]
|
||||
|
||||
- id: overheard_023
|
||||
register: work
|
||||
speaker_a:
|
||||
role: bar-regular
|
||||
text: "Lera's dealing with the supply chain issue again. Grain spirit supplier changed terms."
|
||||
speaker_b:
|
||||
role: bar-regular
|
||||
text: "Lera will figure it out. Lera always figures it out."
|
||||
relationship_type: friend
|
||||
topic: supply-chain
|
||||
location_hints: [the-last-shift]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: null
|
||||
tags: [lera, supply, atmosphere, work]
|
||||
|
||||
- id: overheard_024
|
||||
register: work
|
||||
speaker_a:
|
||||
role: maintenance-tech
|
||||
text: "Condensation in the B-corridor's gotten worse. Someone's running heat-generation equipment down there."
|
||||
speaker_b:
|
||||
role: maintenance-tech
|
||||
text: "Heat-gen in a maintenance corridor. That's either a storage issue or a very bad idea."
|
||||
relationship_type: colleague
|
||||
topic: corridor-anomaly
|
||||
location_hints: [maintenance-corridors]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Heat-generating equipment is being used in maintenance corridors unofficially. Points toward the smuggling hold or ring operations."
|
||||
tags: [b-corridor, heat, maintenance, smuggling-adjacent]
|
||||
|
||||
- id: overheard_025
|
||||
register: work
|
||||
speaker_a:
|
||||
role: dock-worker
|
||||
text: "Torek's been doing double manifests for a month. Every container logged twice."
|
||||
speaker_b:
|
||||
role: dock-worker
|
||||
text: "Double logging means one version goes somewhere it shouldn't."
|
||||
relationship_type: colleague
|
||||
topic: manifest-anomaly
|
||||
location_hints: [the-terminal]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Torek is maintaining duplicate manifest records. One version is falsified. Direct evidence of ring operation at the administrative level."
|
||||
tags: [torek, manifest, contraband, investigation-payload, high-value]
|
||||
|
||||
# ===================================================================
|
||||
# GOSSIP register — third-party knowledge with investigative payload
|
||||
# ===================================================================
|
||||
|
||||
- id: overheard_026
|
||||
register: gossip
|
||||
speaker_a:
|
||||
role: dock-worker
|
||||
text: "Kael was in corridor B-7 last night. Saw him myself. Off shift, wrong time, wrong place."
|
||||
speaker_b:
|
||||
role: dock-worker
|
||||
text: "Kael lives near B-section. Could have been heading home the long way."
|
||||
relationship_type: colleague
|
||||
topic: kael-location
|
||||
location_hints: [the-terminal, the-last-shift]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Kael was in corridor B-7 off-shift. Eyewitness account."
|
||||
tags: [kael, corridor-b7, investigation-payload, friend-arc, high-value]
|
||||
|
||||
- id: overheard_027
|
||||
register: gossip
|
||||
speaker_a:
|
||||
role: bar-regular
|
||||
text: "Kael was talking to someone near B-7 last night. Person I didn't recognize."
|
||||
speaker_b:
|
||||
role: bar-regular
|
||||
text: "Unknown people at junction B-7 at night. That's not normal."
|
||||
relationship_type: friend
|
||||
topic: kael-unknown-contact
|
||||
location_hints: [the-last-shift]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Kael met with an unidentified person at corridor B-7 during off-hours."
|
||||
tags: [kael, unknown-contact, corridor-b7, friend-arc, high-value, investigation-payload]
|
||||
|
||||
- id: overheard_028
|
||||
register: gossip
|
||||
speaker_a:
|
||||
role: bar-regular
|
||||
text: "Torek spent three thousand credits at Lera's last week. Three thousand. On a dock worker's salary."
|
||||
speaker_b:
|
||||
role: bar-regular
|
||||
text: "Torek's either very lucky or very stupid. Either way, someone's going to notice."
|
||||
relationship_type: friend
|
||||
topic: torek-spending
|
||||
location_hints: [the-last-shift]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Torek is spending significantly above his salary at The Last Shift."
|
||||
tags: [torek, spending, lera, investigation-payload, ring-adjacent]
|
||||
|
||||
- id: overheard_029
|
||||
register: gossip
|
||||
speaker_a:
|
||||
role: dock-worker
|
||||
text: "Renn got new boots. Commission-grade. Renn can't afford Commission-grade boots."
|
||||
speaker_b:
|
||||
role: dock-worker
|
||||
text: "Renn's been running extra shifts. Or extra something."
|
||||
relationship_type: colleague
|
||||
topic: renn-spending
|
||||
location_hints: [the-terminal]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Renn has unexplained extra income. Cross-reference: ring membership payments."
|
||||
tags: [renn, income, ring-adjacent, investigation-adjacent]
|
||||
|
||||
- id: overheard_030
|
||||
register: gossip
|
||||
speaker_a:
|
||||
role: bar-regular
|
||||
text: "Sera Venn avoids Torek every time he's here. Every single time. Noticed it three weeks straight."
|
||||
speaker_b:
|
||||
role: bar-regular
|
||||
text: "Torek does that to people. He talks too much and says things he shouldn't."
|
||||
relationship_type: colleague
|
||||
topic: sera-torek-avoidance
|
||||
location_hints: [the-last-shift]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Sera Venn has a consistent avoidance pattern toward Torek Lintar. Cross-reference: behavioral.sera_avoidance_pattern."
|
||||
tags: [sera, torek, avoidance, friend-arc, investigation-payload, high-value]
|
||||
|
||||
- id: overheard_031
|
||||
register: gossip
|
||||
speaker_a:
|
||||
role: bar-regular
|
||||
text: "Commission officer's been asking questions at The Terminal. Polite questions. Thorough ones."
|
||||
speaker_b:
|
||||
role: bar-regular
|
||||
text: "Polite and thorough is the worst combination. That's someone who has time."
|
||||
relationship_type: colleague
|
||||
topic: commission-investigation
|
||||
location_hints: [the-last-shift]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "A Commission officer is conducting a quiet investigation at The Terminal. Cross-reference: awareness.detective_presence."
|
||||
tags: [commission, detective, investigation-payload, awareness]
|
||||
|
||||
- id: overheard_032
|
||||
register: gossip
|
||||
speaker_a:
|
||||
role: dock-worker
|
||||
text: "Lattice components went through last month. Unlicensed grade. Manifest said 'mechanical parts.'"
|
||||
speaker_b:
|
||||
role: dock-worker
|
||||
text: "Mechanical parts. Right. People find ways when the Commission won't."
|
||||
relationship_type: colleague
|
||||
topic: contraband-transit
|
||||
location_hints: [the-terminal]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Unlicensed lattice components are moving through The Terminal under falsified manifests. Cross-reference: contraband operation confirmed."
|
||||
tags: [lattice, contraband, manifest, investigation-payload, high-value]
|
||||
|
||||
- id: overheard_033
|
||||
register: gossip
|
||||
speaker_a:
|
||||
role: maintenance-tech
|
||||
text: "Sub-level temp storage has been accessed four times this week. Door log shows it."
|
||||
speaker_b:
|
||||
role: maintenance-tech
|
||||
text: "Four times and no maintenance ticket filed. Someone's using it off-book."
|
||||
relationship_type: colleague
|
||||
topic: unauthorized-access
|
||||
location_hints: [maintenance-corridors]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "The sub-level storage (smuggling hold) has heavy unauthorized use documented in door logs. Direct evidence of ring operations."
|
||||
tags: [sub-level, access-log, ring, investigation-payload, high-value]
|
||||
|
||||
- id: overheard_034
|
||||
register: gossip
|
||||
speaker_a:
|
||||
role: bar-regular
|
||||
text: "Voss changed the B-section rotation. Kael and Renn are both on the overnight slot now."
|
||||
speaker_b:
|
||||
role: bar-regular
|
||||
text: "Kael and Renn on overnight in B-section. That's a very specific combination."
|
||||
relationship_type: colleague
|
||||
topic: roster-combination
|
||||
location_hints: [the-last-shift]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Kael and Renn have been placed on the same overnight B-section rotation. This creates the oversight gap the ring needs."
|
||||
tags: [kael, renn, voss, roster, ring-adjacent, investigation-payload]
|
||||
|
||||
- id: overheard_035
|
||||
register: gossip
|
||||
speaker_a:
|
||||
role: dock-worker
|
||||
text: "Sera asked me about container routing last week. Wanted to know who approves temp storage extensions."
|
||||
speaker_b:
|
||||
role: dock-worker
|
||||
text: "Commission tech asking about temp storage approvals. That's outside her job scope."
|
||||
relationship_type: colleague
|
||||
topic: sera-investigation
|
||||
location_hints: [the-terminal]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Sera Venn is conducting her own investigation into temp storage approvals, outside her Commission mandate. Cross-reference: behavioral.sera_kiosk_pattern."
|
||||
tags: [sera, storage, investigation-payload, friend-arc, dual-lens, high-value]
|
||||
|
||||
- id: overheard_036
|
||||
register: gossip
|
||||
speaker_a:
|
||||
role: bar-regular
|
||||
text: "Naia told me Kael hasn't been sleeping. Says he's up late, doesn't explain where."
|
||||
speaker_b:
|
||||
role: bar-regular
|
||||
text: "Naia's worried about him. Kael won't talk about whatever it is."
|
||||
relationship_type: friend
|
||||
topic: kael-behavioral-change
|
||||
location_hints: [the-last-shift]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Kael's behavior has changed at home. Sleepless, secretive, won't explain to Naia. Cross-reference: behavioral.kael_behavioral_change."
|
||||
tags: [kael, naia, behavior, friend-arc, investigation-payload]
|
||||
|
||||
- id: overheard_037
|
||||
register: gossip
|
||||
speaker_a:
|
||||
role: dock-worker
|
||||
text: "Someone flagged a manifest discrepancy on the morning freight. Voss cleared the flag himself."
|
||||
speaker_b:
|
||||
role: dock-worker
|
||||
text: "Voss doesn't clear flags. That's Maret's job. Or Commission's."
|
||||
relationship_type: colleague
|
||||
topic: manifest-flag-cleared
|
||||
location_hints: [the-terminal]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Voss manually cleared a manifest discrepancy flag, bypassing protocol. Suggests Voss is actively covering for ring activity."
|
||||
tags: [voss, manifest, flag-cleared, investigation-payload, high-value]
|
||||
|
||||
- id: overheard_038
|
||||
register: gossip
|
||||
speaker_a:
|
||||
role: bar-regular
|
||||
text: "Kael's been asking about exit options. Not just talk — actually asking Lera if she knows anyone who could help someone disappear quietly."
|
||||
speaker_b:
|
||||
role: bar-regular
|
||||
text: "Kael wants out of something. That's the only reason people ask that kind of question."
|
||||
relationship_type: friend
|
||||
topic: kael-exit-attempt
|
||||
location_hints: [the-last-shift]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Kael is actively trying to leave 'something' — most likely the ring. He's researching options."
|
||||
tags: [kael, exit, ring-adjacent, friend-arc, investigation-payload, high-value]
|
||||
|
||||
- id: overheard_039
|
||||
register: gossip
|
||||
speaker_a:
|
||||
role: dock-worker
|
||||
text: "Medical lattice upgrades are showing up on the black-side. Commission-grade, no paperwork."
|
||||
speaker_b:
|
||||
role: dock-worker
|
||||
text: "People who need them can't wait on Commission approval. Someone's doing a service."
|
||||
relationship_type: colleague
|
||||
topic: black-market-lattice
|
||||
location_hints: [the-terminal, the-last-shift]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Medical-grade lattice components are available outside Commission channels. Confirms the moral framing of the contraband operation — it serves real medical need."
|
||||
tags: [lattice, medical, black-market, contraband, moral-framing]
|
||||
|
||||
- id: overheard_040
|
||||
register: gossip
|
||||
speaker_a:
|
||||
role: bar-regular
|
||||
text: "Torek told someone he had a meeting last night. Past midnight. In maintenance."
|
||||
speaker_b:
|
||||
role: bar-regular
|
||||
text: "Torek having midnight maintenance meetings. Sure. That's completely normal."
|
||||
relationship_type: colleague
|
||||
topic: torek-late-meeting
|
||||
location_hints: [the-last-shift]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Torek met with someone in the maintenance corridors late at night."
|
||||
tags: [torek, maintenance, midnight, ring-adjacent, investigation-payload]
|
||||
|
||||
# ===================================================================
|
||||
# BONUS PAIRS — social and work depth
|
||||
# ===================================================================
|
||||
|
||||
- id: overheard_041
|
||||
register: social
|
||||
speaker_a:
|
||||
role: bar-regular
|
||||
text: "Lera's thinking about expanding. Back room could seat twenty more."
|
||||
speaker_b:
|
||||
role: bar-regular
|
||||
text: "Back room's the only reason this place has any privacy. Expand it and we lose that."
|
||||
relationship_type: friend
|
||||
topic: bar-expansion
|
||||
location_hints: [the-last-shift]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: null
|
||||
tags: [lera, bar, atmosphere, social]
|
||||
|
||||
- id: overheard_042
|
||||
register: work
|
||||
speaker_a:
|
||||
role: dock-worker
|
||||
text: "Shift change is late again. Maret says weather on Velen is delaying the span gate."
|
||||
speaker_b:
|
||||
role: dock-worker
|
||||
text: "Weather on Velen. Which means fog. Which means the morning run is going to be rough."
|
||||
relationship_type: colleague
|
||||
topic: weather-delay
|
||||
location_hints: [the-terminal]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: null
|
||||
tags: [velen, fog, span-gate, weather, atmosphere]
|
||||
|
||||
- id: overheard_043
|
||||
register: social
|
||||
speaker_a:
|
||||
role: bar-regular
|
||||
text: "Olin's getting a commendation from Commission. Ten years of service."
|
||||
speaker_b:
|
||||
role: bar-regular
|
||||
text: "Ten years. Commission gives you a piece of paper and a handshake."
|
||||
relationship_type: colleague
|
||||
topic: commission-recognition
|
||||
location_hints: [the-last-shift]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: null
|
||||
tags: [olin, commission, atmosphere, social]
|
||||
|
||||
- id: overheard_044
|
||||
register: work
|
||||
speaker_a:
|
||||
role: maintenance-tech
|
||||
text: "Power fluctuation in sub-level B last night. Lasted three minutes."
|
||||
speaker_b:
|
||||
role: maintenance-tech
|
||||
text: "Three minutes is enough to blind the cameras if you know the timing."
|
||||
relationship_type: colleague
|
||||
topic: power-fluctuation
|
||||
location_hints: [maintenance-corridors]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "A power fluctuation in sub-level B temporarily disabled cameras. Could be timed to enable unobserved access."
|
||||
tags: [power, cameras, sub-level, timing, investigation-adjacent]
|
||||
|
||||
- id: overheard_045
|
||||
register: gossip
|
||||
speaker_a:
|
||||
role: dock-worker
|
||||
text: "Commission officer asked Drin about cargo manifest irregularities. Drin told him everything he knows, which isn't much."
|
||||
speaker_b:
|
||||
role: dock-worker
|
||||
text: "Drin doesn't know much by design. That's why Drin's on inspection detail."
|
||||
relationship_type: colleague
|
||||
topic: commission-inquiry
|
||||
location_hints: [the-terminal]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "The Commission officer is asking dock workers directly about manifest irregularities. Drin has been interviewed. Cross-reference: awareness.detective_presence."
|
||||
tags: [drin, commission, detective, interview, investigation-payload]
|
||||
|
||||
- id: overheard_046
|
||||
register: gossip
|
||||
speaker_a:
|
||||
role: bar-regular
|
||||
text: "Sera's been keeping a list. Someone told Naia. Private list, personal data."
|
||||
speaker_b:
|
||||
role: bar-regular
|
||||
text: "Sera keeping a list of what? And why would Naia know?"
|
||||
relationship_type: friend
|
||||
topic: sera-documentation
|
||||
location_hints: [the-last-shift]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Sera is documenting something privately — possibly her own investigation or evidence she's sitting on."
|
||||
tags: [sera, naia, list, evidence, friend-arc, investigation-payload, dual-lens]
|
||||
|
||||
- id: overheard_047
|
||||
register: social
|
||||
speaker_a:
|
||||
role: dock-worker
|
||||
text: "Sova's been home for twenty years. Still don't know if I love it or just got used to it."
|
||||
speaker_b:
|
||||
role: dock-worker
|
||||
text: "Twenty years is the same thing."
|
||||
relationship_type: friend
|
||||
topic: station-life
|
||||
location_hints: [the-terminal, the-last-shift]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: null
|
||||
tags: [sova, atmosphere, personal, social]
|
||||
|
||||
- id: overheard_048
|
||||
register: work
|
||||
speaker_a:
|
||||
role: dock-worker
|
||||
text: "Voss approved overtime for two extra heads on the B-section night shift. Unusual."
|
||||
speaker_b:
|
||||
role: dock-worker
|
||||
text: "Overtime plus extra bodies in B at night. Either something's wrong or something's being made to look right."
|
||||
relationship_type: colleague
|
||||
topic: overtime-approval
|
||||
location_hints: [the-terminal]
|
||||
access: [public]
|
||||
trust: surface
|
||||
knowledge_payload: "Voss approved extra overnight staffing in B-section — possibly to create cover or provide legitimate-looking explanation for movement in that area."
|
||||
tags: [voss, overtime, b-section, night-shift, investigation-adjacent]
|
||||
+16
-1
@@ -569,4 +569,19 @@ How narrative, NPCs, and world content are created: content tiers, NPC generatio
|
||||
|
||||
---
|
||||
|
||||
*44 decisions. Last updated: 2026-03-17 (D-147 aesthetic taste trait)*
|
||||
---
|
||||
|
||||
### Content Pattern Note: Generator-compatible overheard conversation format (ticket #664)
|
||||
- **Date:** 2026-03-17
|
||||
- **Status:** Content pattern noted — pending formal D-record (check with Qatux before claiming ID)
|
||||
- **Pattern:** `content/npc-conversations/overheard.ron` introduces a new content type: a pool of NPC-to-NPC overheard conversations parameterized by `role_pair` and `zone_types` (matching zone-type template role IDs from D-142). No named NPC references. Culture-neutral text that accepts culture modifier at assembly time. Replaces `overheard.yaml.deprecated` (v0.1 hand-authored pool with named NPCs, superseded by D-122).
|
||||
- **Format fields:** `id`, `zone_types[]`, `role_pair(a, b)`, `register` (Work|Social|Gossip), `relationship_context` (Colleague|Acquaintance|Friend|Superior|Subordinate), `topic`, `lines[(speaker:A|B, text)]`, `knowledge_payload (Option<String>)`
|
||||
- **Occlusion authoring rules:** D-078 rules apply unchanged — front-load key info, short declarative sentences, no pronoun-first openers, each turn self-contained.
|
||||
- **Runtime resolution:** Generator selects conversations where two nearby NPCs match `role_pair` and `zone_types`. Knowledge payload is exposed to player inference layer (partial occlusion reduces but cannot eliminate inference value of a fully-heard payload).
|
||||
- **Schema location:** `server/src/npc/overheard.rs :: OverheardPool` — TBD pending #663 struct changes.
|
||||
- **Raised by:** Paula (Sprint 27, ticket #664)
|
||||
- **Decision needed:** Whether to formalize this as D-NNN or treat as sub-pattern of D-142. Recommend D-record since it introduces the `knowledge_payload` field as a new ambient information delivery mechanism distinct from existing dialogue architecture (D-028).
|
||||
|
||||
---
|
||||
|
||||
*44 decisions. Last updated: 2026-03-17 (D-147 aesthetic taste trait; content pattern note for overheard.ron format added)*
|
||||
|
||||
Reference in New Issue
Block a user