diff --git a/server/content/npc-conversations/overheard.ron b/server/content/npc-conversations/overheard.ron deleted file mode 100644 index f68dac98f..000000000 --- a/server/content/npc-conversations/overheard.ron +++ /dev/null @@ -1,1629 +0,0 @@ -// 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 again. Low traffic, less oversight. Funny how that keeps happening." ), - ], - knowledge_payload: Some("Bay seven has been given a reduced crew in a low-oversight slot. The subordinate speaker notes the pattern without directly accusing anyone."), - ), - - ( - 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: "ranger", b: "settlement_administrator"), - 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: Gossip, - 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."), - ), - - // ===================================================================== - // COMMERCIAL MARKET - // ===================================================================== - - ( - id: "ovh_cmk_001", - zone_types: ["commercial_market"], - role_pair: (a: "vendor", b: "buyer"), - register: Work, - relationship_context: Acquaintance, - topic: "floor_pricing", - lines: [ - ( speaker: A, text: "Today's floor price is twenty-two. That number isn't going to move." ), - ( speaker: B, text: "Floor prices move when the market is thin. Three empty stalls this morning." ), - ( speaker: A, text: "Market official sets the floor. Take it up with her if you want — she's at the north end." ), - ], - knowledge_payload: None, - ), - - ( - id: "ovh_cmk_002", - zone_types: ["commercial_market"], - role_pair: (a: "vendor", b: "vendor"), - register: Social, - relationship_context: Colleague, - topic: "slow_market", - lines: [ - ( speaker: A, text: "Third slow morning this week. Same regulars, nothing moving past midday." ), - ( speaker: B, text: "Slow in the morning means busy at close, or it means nothing. Hard to tell which until it's done." ), - ( speaker: A, text: "Two spring stalls already gone. Rent's not patient." ), - ], - knowledge_payload: None, - ), - - ( - id: "ovh_cmk_003", - zone_types: ["commercial_market"], - role_pair: (a: "market_official", b: "security_warden"), - register: Work, - relationship_context: Colleague, - topic: "stall_encroachment", - lines: [ - ( speaker: A, text: "Stall thirty-eight has pushed past his allocation again. Third week running." ), - ( speaker: B, text: "Third week means the two courtesy notices did nothing." ), - ( speaker: A, text: "Friday close I want it logged formally. Next step is loss of the allocation." ), - ], - knowledge_payload: Some("A stall holder has repeatedly encroached on a neighboring space and ignored two informal warnings. Formal escalation is being prepared."), - ), - - // ===================================================================== - // COMMERCIAL TRANSIT - // ===================================================================== - - ( - id: "ovh_ctx_001", - zone_types: ["commercial_transit"], - role_pair: (a: "service_worker", b: "service_worker"), - register: Work, - relationship_context: Colleague, - topic: "counter_fault", - lines: [ - ( speaker: A, text: "Counter three display has been wrong since the morning changeover. Showing yesterday's pricing." ), - ( speaker: B, text: "Hub maintenance says end of cycle. Same answer they gave yesterday." ), - ( speaker: A, text: "Running off the terminal list in the meantime. Slower, but at least the numbers are right." ), - ], - knowledge_payload: None, - ), - - ( - id: "ovh_ctx_002", - zone_types: ["commercial_transit"], - role_pair: (a: "concourse_trader", b: "hub_security"), - register: Gossip, - relationship_context: Acquaintance, - topic: "informal_tolerance", - lines: [ - ( speaker: A, text: "Appreciated the slow pass this morning. Gave me the window I needed." ), - ( speaker: B, text: "No slow pass. Same timing as always. Coincidence it worked out for you." ), - ( speaker: A, text: "Of course. Same time tomorrow, then." ), - ], - knowledge_payload: Some("A concourse trader and hub security officer appear to have an informal arrangement around patrol timing. Both maintain plausible deniability."), - ), - - ( - id: "ovh_ctx_003", - zone_types: ["commercial_transit"], - role_pair: (a: "transit_official", b: "concourse_trader"), - register: Work, - relationship_context: Superior, - topic: "permit_lapse", - lines: [ - ( speaker: A, text: "Concourse permit for this section expired two weeks ago. Renewal was filed but not approved." ), - ( speaker: B, text: "Filed it on time. Not my fault the processing window ran long." ), - ( speaker: A, text: "Operating in the gap isn't covered. Close the display today and reapply through the standard channel." ), - ], - knowledge_payload: None, - ), - - // ===================================================================== - // RESIDENTIAL SURFACE - // ===================================================================== - - ( - id: "ovh_rsu_001", - zone_types: ["residential_surface"], - role_pair: (a: "resident", b: "resident"), - register: Social, - relationship_context: Friend, - topic: "neighborhood_change", - lines: [ - ( speaker: A, text: "New building on the corner looks like short-stay units. Six floors where the hardware shop was." ), - ( speaker: B, text: "Short-stay means turnover. Turnover means you stop knowing the names of the people on the street." ), - ( speaker: A, text: "Street's been changing for three years. This is just the part that shows." ), - ], - knowledge_payload: None, - ), - - ( - id: "ovh_rsu_002", - zone_types: ["residential_surface"], - role_pair: (a: "shopkeeper", b: "municipal_worker"), - register: Work, - relationship_context: Acquaintance, - topic: "infrastructure_delay", - lines: [ - ( speaker: A, text: "Drain in front of the shop backs up every time it rains. Has for two seasons." ), - ( speaker: B, text: "On the works order. Third priority, which means second rain cycle at earliest." ), - ( speaker: A, text: "Two seasons of third priority is a decision, not a delay." ), - ], - knowledge_payload: None, - ), - - ( - id: "ovh_rsu_003", - zone_types: ["residential_surface"], - role_pair: (a: "security", b: "resident"), - register: Gossip, - relationship_context: Acquaintance, - topic: "newcomer_behavior", - lines: [ - ( speaker: A, text: "New occupant in the end unit watches the street from the window. Watches a lot." ), - ( speaker: B, text: "Watching from a window isn't unusual. What time?" ), - ( speaker: A, text: "Off-peak hours. Early morning, quiet evening. Regular as a schedule." ), - ], - knowledge_payload: Some("A new block resident is observing the street at consistent, off-peak times. The pattern has been noticed by at least two neighbors."), - ), - - // ===================================================================== - // ENTERTAINMENT VENUE - // ===================================================================== - - ( - id: "ovh_evn_001", - zone_types: ["entertainment_venue"], - role_pair: (a: "stage_crew", b: "stage_crew"), - register: Work, - relationship_context: Colleague, - topic: "cue_failure", - lines: [ - ( speaker: A, text: "Fly cue seven ran four seconds early. Deck operator says he got a bad confirm from the headset." ), - ( speaker: B, text: "Four seconds early on that cue and the piece clears the performer by maybe a meter." ), - ( speaker: A, text: "Headset line goes to maintenance tonight. Not using that channel again until it's cleared." ), - ], - knowledge_payload: None, - ), - - ( - id: "ovh_evn_002", - zone_types: ["entertainment_venue"], - role_pair: (a: "performer", b: "venue_staff"), - register: Social, - relationship_context: Colleague, - topic: "thin_house", - lines: [ - ( speaker: A, text: "House was thin tonight. Could feel it from the second act." ), - ( speaker: B, text: "Thin house doesn't usually show through. Tonight it did a little." ), - ( speaker: A, text: "Management wants to cut the weekday run. Attendance gives them the numbers to do it." ), - ], - knowledge_payload: None, - ), - - ( - id: "ovh_evn_003", - zone_types: ["entertainment_venue"], - role_pair: (a: "security", b: "stage_crew"), - register: Gossip, - relationship_context: Acquaintance, - topic: "unauthorized_pass", - lines: [ - ( speaker: A, text: "Someone used a side stage pass for the backstage corridor after close. Badge doesn't match anyone on crew." ), - ( speaker: B, text: "Side stage passes come from the venue office. Shouldn't be extras floating around." ), - ( speaker: A, text: "Pulled the log. Access was clean on the system side. Someone signed a pass that wasn't supposed to exist." ), - ], - knowledge_payload: Some("A valid but unaccounted backstage access pass was used after the venue closed. The pass was system-valid but corresponds to no staff member, suggesting it was issued off-book."), - ), - - // ===================================================================== - // MEDICAL FACILITY - // ===================================================================== - - ( - id: "ovh_med_001", - zone_types: ["medical_facility"], - role_pair: (a: "medic", b: "medic"), - register: Work, - relationship_context: Colleague, - topic: "supply_shortage", - lines: [ - ( speaker: A, text: "Wound closure stock is down to two days. Supply request went in three days ago." ), - ( speaker: B, text: "Central depot has been running short on three lines this cycle. Not just us waiting." ), - ( speaker: A, text: "Administrator needs to know before tomorrow morning. Short supply changes the procedure list." ), - ], - knowledge_payload: None, - ), - - ( - id: "ovh_med_002", - zone_types: ["medical_facility"], - role_pair: (a: "physician", b: "administrator"), - register: Work, - relationship_context: Superior, - topic: "capacity_reclassification", - lines: [ - ( speaker: A, text: "Overflow bay has been in use for six days straight. That's not an overflow bay anymore, that's a ward." ), - ( speaker: B, text: "Formal ward designation requires a staffing reclassification. That's a budget line I don't have." ), - ( speaker: A, text: "Running a ward without calling it one doesn't change what it costs to staff it safely." ), - ], - knowledge_payload: None, - ), - - ( - id: "ovh_med_003", - zone_types: ["medical_facility"], - role_pair: (a: "administrator", b: "medic"), - register: Work, - relationship_context: Colleague, - topic: "intake_cluster", - lines: [ - ( speaker: A, text: "Four admissions this week with the same presentation. Facility across the district has seen three more." ), - ( speaker: B, text: "Seven with the same presentation in one week is a cluster. Someone should be notifying the health authority." ), - ( speaker: A, text: "Notification went up this morning. Waiting on the response." ), - ], - knowledge_payload: Some("Multiple facilities are seeing an unusual cluster of patients with identical presentations. A health authority notification has been filed."), - ), - - // ===================================================================== - // RESEARCH STATION - // ===================================================================== - - ( - id: "ovh_rsc_001", - zone_types: ["research_station"], - role_pair: (a: "researcher", b: "researcher"), - register: Work, - relationship_context: Colleague, - topic: "data_anomaly", - lines: [ - ( speaker: A, text: "Third run shows the same outlier at the seventeen-minute mark. Setup was recalibrated between each run." ), - ( speaker: B, text: "Consistent anomaly across three calibrated runs is a result, not noise." ), - ( speaker: A, text: "Section lead needs to see this before we log it. Changes what the project is looking at." ), - ], - knowledge_payload: Some("A research team has observed a consistent anomaly across multiple controlled runs and is treating it as a genuine finding, escalating before formal logging."), - ), - - ( - id: "ovh_rsc_002", - zone_types: ["research_station"], - role_pair: (a: "technician", b: "researcher"), - register: Work, - relationship_context: Colleague, - topic: "equipment_outage", - lines: [ - ( speaker: A, text: "Primary spectrometer is offline until Thursday. Bearing failure on the carousel drive." ), - ( speaker: B, text: "Thursday means two runs postponed. Sequence has to restart if there's a gap that long." ), - ( speaker: A, text: "Secondary unit is available, but throughput is half. Your call on the sequencing." ), - ], - knowledge_payload: None, - ), - - ( - id: "ovh_rsc_003", - zone_types: ["research_station"], - role_pair: (a: "security", b: "technician"), - register: Gossip, - relationship_context: Acquaintance, - topic: "off_hours_access", - lines: [ - ( speaker: A, text: "Clean room had a badge read at zero-three-hundred this cycle. Not on any scheduled access." ), - ( speaker: B, text: "Zero-three-hundred access should be logged with a reason code. Was there one?" ), - ( speaker: A, text: "Badge was valid, clearance level correct, reason field empty. That's the part I'm looking at." ), - ], - knowledge_payload: Some("The research station clean room was accessed in the early hours without a logged reason. Credentials were valid, suggesting an authorized person went off-book."), - ), - - // ===================================================================== - // PORT SPACE - // ===================================================================== - - ( - id: "ovh_psp_001", - zone_types: ["port_space"], - role_pair: (a: "docking_handler", b: "docking_handler"), - register: Work, - relationship_context: Colleague, - topic: "berth_queue", - lines: [ - ( speaker: A, text: "Berth queue is backed up to fourteen. Inbound traffic ran a full cycle ahead of the cleared departures." ), - ( speaker: B, text: "Fourteen in queue with the east bay still in maintenance is a problem, not a delay." ), - ( speaker: A, text: "Port authority has the numbers. Waiting on the schedule adjustment from their end." ), - ], - knowledge_payload: None, - ), - - ( - id: "ovh_psp_002", - zone_types: ["port_space"], - role_pair: (a: "customs_officer", b: "cargo_broker"), - register: Work, - relationship_context: Acquaintance, - topic: "manifest_hold", - lines: [ - ( speaker: A, text: "Container four-seven-two is held. Manifest weight doesn't match the transit declaration." ), - ( speaker: B, text: "Discrepancy size?" ), - ( speaker: A, text: "Eighty kilos over. Large enough that it isn't a scale error." ), - ], - knowledge_payload: Some("A cargo container has been held due to an 80kg weight discrepancy between the manifest and transit declaration — too large to be instrument error."), - ), - - ( - id: "ovh_psp_003", - zone_types: ["port_space"], - role_pair: (a: "port_security", b: "customs_officer"), - register: Gossip, - relationship_context: Colleague, - topic: "loitering_crew", - lines: [ - ( speaker: A, text: "Crew member off the Vellander Star has been in the transit lounge for six hours. No onward booking." ), - ( speaker: B, text: "Vellander Star was the vessel with the held container?" ), - ( speaker: A, text: "Same vessel. Started watching the inspection lanes about an hour ago." ), - ], - knowledge_payload: Some("A crew member from the vessel connected to a customs hold is lingering in the transit lounge and monitoring inspection activity. Both security and customs have noted the behavior."), - ), - - // ===================================================================== - // PORT MARITIME - // ===================================================================== - - ( - id: "ovh_pmt_001", - zone_types: ["port_maritime"], - role_pair: (a: "dock_crew", b: "dock_crew"), - register: Work, - relationship_context: Colleague, - topic: "weather_window", - lines: [ - ( speaker: A, text: "Weather window closes in two hours. Harbour master extended the morning run by one vessel." ), - ( speaker: B, text: "One extra means working the east crane through the wind pickup. Not ideal." ), - ( speaker: A, text: "Harbour master knows. Sent word down himself rather than leaving it in the log." ), - ], - knowledge_payload: None, - ), - - ( - id: "ovh_pmt_002", - zone_types: ["port_maritime"], - role_pair: (a: "harbour_master", b: "chandler"), - register: Work, - relationship_context: Superior, - topic: "undeclared_vessel", - lines: [ - ( speaker: A, text: "Vessel berthed at pier seven overnight with no advance notice. Not in the harbour log at all." ), - ( speaker: B, text: "Berthed clean? No damage on the dock side?" ), - ( speaker: A, text: "Clean berth, experienced handling. Someone knew this port well. No declaration is still a violation." ), - ], - knowledge_payload: Some("A vessel berthed overnight without advance notice or harbour declaration. The competent handling suggests prior familiarity with the port, making the omission more deliberate."), - ), - - ( - id: "ovh_pmt_003", - zone_types: ["port_maritime"], - role_pair: (a: "dock_crew", b: "maritime_security"), - register: Social, - relationship_context: Acquaintance, - topic: "end_of_season", - lines: [ - ( speaker: A, text: "Last bulk cargo run of the season clears tomorrow. Quay goes quiet after that." ), - ( speaker: B, text: "Quiet means different work, not less. Maintenance backlog covers the slow months." ), - ( speaker: A, text: "Still. Quiet is better than three cranes running and someone always short." ), - ], - knowledge_payload: None, - ), - - // ===================================================================== - // PORT FISHING - // ===================================================================== - - ( - id: "ovh_pfh_001", - zone_types: ["port_fishing"], - role_pair: (a: "fisher", b: "fisher"), - register: Work, - relationship_context: Colleague, - topic: "light_catch", - lines: [ - ( speaker: A, text: "Northern run came back light again. Third time in four trips." ), - ( speaker: B, text: "Northern run light three times means something changed out there. Current shift, or something else." ), - ( speaker: A, text: "Old Tarassa charts a different line now. Hard to argue with the results." ), - ], - knowledge_payload: None, - ), - - ( - id: "ovh_pfh_002", - zone_types: ["port_fishing"], - role_pair: (a: "gear_rigger", b: "fisher"), - register: Work, - relationship_context: Colleague, - topic: "untested_gear", - lines: [ - ( speaker: A, text: "Vedara net should not have gone out this morning. Splice on the port rail line wasn't tested." ), - ( speaker: B, text: "Splice looked solid when we loaded." ), - ( speaker: A, text: "Looking solid and being tested are two different things. Bring it back to me before the next run." ), - ], - knowledge_payload: None, - ), - - ( - id: "ovh_pfh_003", - zone_types: ["port_fishing"], - role_pair: (a: "port_buyer", b: "fisher"), - register: Work, - relationship_context: Superior, - topic: "grade_dispute", - lines: [ - ( speaker: A, text: "Thirty percent of this haul is below grade two. Buyer's scale, not my judgment." ), - ( speaker: B, text: "Conditions were rough. Grade two fish take damage coming over the stern in that weather." ), - ( speaker: A, text: "Weather affects the price. Certified scale sets the grade. Both go in the record." ), - ], - knowledge_payload: None, - ), - - // ===================================================================== - // PORT SURFACE - // ===================================================================== - - ( - id: "ovh_psu_001", - zone_types: ["port_surface"], - role_pair: (a: "ground_handler", b: "ground_handler"), - register: Work, - relationship_context: Colleague, - topic: "weather_hold", - lines: [ - ( speaker: A, text: "Pad three is on weather hold. Wind speed over the limit for the inbound class." ), - ( speaker: B, text: "How long before the hold lifts?" ), - ( speaker: A, text: "Control says two hours, maybe three. Departure queue is going to back up behind this one." ), - ], - knowledge_payload: None, - ), - - ( - id: "ovh_psu_002", - zone_types: ["port_surface"], - role_pair: (a: "customs_agent", b: "freight_dispatcher"), - register: Work, - relationship_context: Acquaintance, - topic: "secondary_review_pattern", - lines: [ - ( speaker: A, text: "Cargo from pad nine is under secondary review again. Won't clear until tomorrow morning." ), - ( speaker: B, text: "Tomorrow morning means the surface connection misses. Third delay this month from pad nine." ), - ( speaker: A, text: "Delays from secondary review aren't random. Something in that pad nine traffic is drawing attention." ), - ], - knowledge_payload: Some("Freight from pad nine is being repeatedly flagged for secondary customs review. A customs agent considers the pattern non-coincidental."), - ), - - ( - id: "ovh_psu_003", - zone_types: ["port_surface"], - role_pair: (a: "terminal_security", b: "customs_agent"), - register: Gossip, - relationship_context: Colleague, - topic: "repeat_traveler", - lines: [ - ( speaker: A, text: "Same transit traveler, third time through in eight days. Different destination declared each time." ), - ( speaker: B, text: "Different declared destination and no onward boarding record on the other side?" ), - ( speaker: A, text: "No record I can find. Arrivals here, yes. Departures from the stated destinations, nothing." ), - ], - knowledge_payload: Some("A traveler has passed through the terminal three times in eight days with a different declared destination each visit, and no verifiable onward travel from any of them."), - ), - - // ===================================================================== - // RURAL ORBITAL - // ===================================================================== - - ( - id: "ovh_ror_001", - zone_types: ["rural_orbital"], - role_pair: (a: "systems_maintainer", b: "habitat_farmer"), - register: Work, - relationship_context: Colleague, - topic: "pressure_variance", - lines: [ - ( speaker: A, text: "Grow section air loop flagged a pressure variance overnight. Not an alert yet, but heading there." ), - ( speaker: B, text: "How much variance?" ), - ( speaker: A, text: "Point-four below baseline. Small, but it's moved the same direction for three cycles." ), - ], - knowledge_payload: Some("The grow section air circulation system shows a slow but consistent pressure drop — below the alert threshold but trending in a concerning direction."), - ), - - ( - id: "ovh_ror_002", - zone_types: ["rural_orbital"], - role_pair: (a: "supply_coordinator", b: "watch_officer"), - register: Work, - relationship_context: Colleague, - topic: "resupply_gap", - lines: [ - ( speaker: A, text: "Resupply window was delayed by eight days. Current consumables run to day forty. Gap is twenty-two days." ), - ( speaker: B, text: "Twenty-two day gap means rationing or a contingency request to the transit authority." ), - ( speaker: A, text: "Contingency request is already filed. Waiting on a confirmation window." ), - ], - knowledge_payload: Some("A resupply delay has opened a potential 22-day supply gap on a rural orbital habitat. A contingency request has been submitted but not yet confirmed."), - ), - - ( - id: "ovh_ror_003", - zone_types: ["rural_orbital"], - role_pair: (a: "habitat_farmer", b: "systems_maintainer"), - register: Social, - relationship_context: Friend, - topic: "long_rotation", - lines: [ - ( speaker: A, text: "Seven months since the last rotation. Sometimes I have to think hard about what the surface smells like." ), - ( speaker: B, text: "Station smell gets into everything after a while. You stop noticing, which is the problem." ), - ( speaker: A, text: "Next rotation I'm going to stand outside in actual weather. Just stand there." ), - ], - knowledge_payload: None, - ), - - // ===================================================================== - // RURAL AQUACULTURE - // ===================================================================== - - ( - id: "ovh_raq_001", - zone_types: ["rural_aquaculture"], - role_pair: (a: "aquaculturist", b: "system_tech"), - register: Work, - relationship_context: Colleague, - topic: "tank_chemistry", - lines: [ - ( speaker: A, text: "Tank seven pH dropped point-three since yesterday. Feed rate hasn't changed." ), - ( speaker: B, text: "pH drop without a feed change points to the buffer system. Aerator or a slow line leak." ), - ( speaker: A, text: "Pulled the morning logs. Dissolved oxygen was normal, so the aerator's probably not the cause." ), - ], - knowledge_payload: None, - ), - - ( - id: "ovh_raq_002", - zone_types: ["rural_aquaculture"], - role_pair: (a: "inspector", b: "aquaculturist"), - register: Work, - relationship_context: Superior, - topic: "records_gap", - lines: [ - ( speaker: A, text: "Tank three batch records show a gap from the fourteenth to the sixteenth. Two days unlogged." ), - ( speaker: B, text: "Water sensor went offline. Logged the fault but forgot to carry the manual readings across." ), - ( speaker: A, text: "Fault log covers the sensor outage, not the records gap. Records need completing before I sign off." ), - ], - knowledge_payload: None, - ), - - ( - id: "ovh_raq_003", - zone_types: ["rural_aquaculture"], - role_pair: (a: "aquaculturist", b: "aquaculturist"), - register: Social, - relationship_context: Friend, - topic: "unexplained_stock_loss", - lines: [ - ( speaker: A, text: "North pen is down eighteen percent from last week's count. Water tests are clean." ), - ( speaker: B, text: "Clean water and an eighteen percent drop means the net, or something that got past the net." ), - ( speaker: A, text: "Net was checked two days ago. Whatever it is, we didn't see it coming." ), - ], - knowledge_payload: Some("An aquaculture pen has lost 18% of its stock with no apparent water quality explanation. The net was recently inspected and the cause remains unknown."), - ), - - // ===================================================================== - // RURAL PASTORAL - // ===================================================================== - - ( - id: "ovh_rps_001", - zone_types: ["rural_pastoral"], - role_pair: (a: "herder", b: "herder"), - register: Work, - relationship_context: Colleague, - topic: "missing_animals", - lines: [ - ( speaker: A, text: "Count came back short by two from the north paddock. Same section three nights running." ), - ( speaker: B, text: "Same section three nights means the fence, or something that knows the fence." ), - ( speaker: A, text: "Warden is checking the outer wire tonight. Taking the inside section myself." ), - ], - knowledge_payload: Some("Two animals have gone missing from the same paddock section on three consecutive nights, suggesting either a fence breach or a predator familiar with the layout."), - ), - - ( - id: "ovh_rps_002", - zone_types: ["rural_pastoral"], - role_pair: (a: "veterinarian", b: "herder"), - register: Work, - relationship_context: Superior, - topic: "disease_cluster", - lines: [ - ( speaker: A, text: "Third animal this week with the same respiratory presentation. None of them have been in contact with each other." ), - ( speaker: B, text: "Not in contact means it's not passing animal to animal." ), - ( speaker: A, text: "Could be environmental. Quarantining all three and filing a district referral today." ), - ], - knowledge_payload: Some("Three animals have developed identical symptoms without direct contact, suggesting an environmental rather than contagious cause. A district referral has been filed."), - ), - - ( - id: "ovh_rps_003", - zone_types: ["rural_pastoral"], - role_pair: (a: "warden", b: "trader"), - register: Gossip, - relationship_context: Acquaintance, - topic: "perimeter_vehicle", - lines: [ - ( speaker: A, text: "Unmarked transport was parked at the southeast gate access track two nights this week." ), - ( speaker: B, text: "Southeast gate is on the boundary road. Could be transiting, stopped for a rest." ), - ( speaker: A, text: "Two nights, no lights, no movement. Not transiting — waiting." ), - ], - knowledge_payload: Some("An unmarked vehicle has been stationary near a pastoral perimeter gate for two nights without lights or movement. The warden considers the pattern deliberate."), - ), - - // ===================================================================== - // ADMINISTRATIVE CIVIL - // ===================================================================== - - ( - id: "ovh_acv_001", - zone_types: ["administrative_civil"], - role_pair: (a: "clerk", b: "clerk"), - register: Work, - relationship_context: Colleague, - topic: "flagged_application", - lines: [ - ( speaker: A, text: "Application forty-seven has a secondary ID that doesn't match the address on the registration." ), - ( speaker: B, text: "Mismatch between ID and registration is a flag, not a rejection. Refer it up." ), - ( speaker: A, text: "Already in the administrator's tray. Noting it in case the applicant comes back to the window." ), - ], - knowledge_payload: None, - ), - - ( - id: "ovh_acv_002", - zone_types: ["administrative_civil"], - role_pair: (a: "administrator", b: "clerk"), - register: Work, - relationship_context: Superior, - topic: "queue_backlog", - lines: [ - ( speaker: A, text: "Queue is running forty minutes behind again. Third morning this week." ), - ( speaker: B, text: "Morning intake has been heavier than forecast. Two clerks pulled to records this morning." ), - ( speaker: A, text: "Records pulls happen before window open, not during. Adjust the schedule from tomorrow." ), - ], - knowledge_payload: None, - ), - - ( - id: "ovh_acv_003", - zone_types: ["administrative_civil"], - role_pair: (a: "inspector", b: "security"), - register: Gossip, - relationship_context: Acquaintance, - topic: "property_queries", - lines: [ - ( speaker: A, text: "Records hall had four separate permit history queries on the same property last cycle." ), - ( speaker: B, text: "Four queries on one property from the same office isn't standard procedure." ), - ( speaker: A, text: "Queries came from different terminals. Different users, same property code." ), - ], - knowledge_payload: Some("A single property has been queried four times through different terminals in one cycle. The pattern is unusual and has been noted by both inspection and security staff."), - ), - - // ===================================================================== - // ADMINISTRATIVE JUDICIAL - // ===================================================================== - - ( - id: "ovh_adj_001", - zone_types: ["administrative_judicial"], - role_pair: (a: "advocate", b: "clerk"), - register: Work, - relationship_context: Acquaintance, - topic: "transcript_discrepancy", - lines: [ - ( speaker: A, text: "Session record from the fourth has two lines out of sequence. Affects the admissibility timeline." ), - ( speaker: B, text: "Clerk error or transcription gap?" ), - ( speaker: A, text: "Transcription gap. Timestamp on exhibit three was entered after the exhibit was referenced, not before." ), - ], - knowledge_payload: Some("A session transcript contains a timing discrepancy that could affect evidence admissibility. An advocate has flagged it to the court clerk."), - ), - - ( - id: "ovh_adj_002", - zone_types: ["administrative_judicial"], - role_pair: (a: "clerk", b: "clerk"), - register: Work, - relationship_context: Colleague, - topic: "scheduling_conflict", - lines: [ - ( speaker: A, text: "Chamber two has two hearings marked against the same afternoon window. Both listed as firm." ), - ( speaker: B, text: "Both firm means one of the advocates hasn't been told yet." ), - ( speaker: A, text: "Flagging it to the adjudicator's office before the morning list goes up." ), - ], - knowledge_payload: None, - ), - - ( - id: "ovh_adj_003", - zone_types: ["administrative_judicial"], - role_pair: (a: "bailiff", b: "advocate"), - register: Social, - relationship_context: Acquaintance, - topic: "unexpected_ruling", - lines: [ - ( speaker: A, text: "Ruling came out different from what the corridor was expecting." ), - ( speaker: B, text: "Corridor consensus isn't the record. Adjudicator reads the record." ), - ( speaker: A, text: "True. Still surprised a few people who should have read it more carefully." ), - ], - knowledge_payload: None, - ), - - // ===================================================================== - // SECURITY CHECKPOINT - // ===================================================================== - - ( - id: "ovh_sch_001", - zone_types: ["security_checkpoint"], - role_pair: (a: "supervisor", b: "officer"), - register: Work, - relationship_context: Superior, - topic: "unofficial_bypass", - lines: [ - ( speaker: A, text: "Sareth party comes through at seventeen hundred. Wave them without a full scan." ), - ( speaker: B, text: "Standing exception or one-time?" ), - ( speaker: A, text: "Standing. No logging." ), - ( speaker: B, text: "Log requires a reason code. What goes in the field?" ), - ( speaker: A, text: "Transit facilitation. Standard language. Don't make it complicated." ), - ], - knowledge_payload: Some("Certain parties receive undocumented checkpoint bypasses on verbal instruction from a supervisor. The officer is attempting to create a paper trail, which the supervisor is suppressing."), - ), - - ( - id: "ovh_sch_002", - zone_types: ["security_checkpoint"], - role_pair: (a: "inspector", b: "inspector"), - register: Work, - relationship_context: Colleague, - topic: "cargo_cleared_without_signoff", - lines: [ - ( speaker: A, text: "Bay three cargo from last night. Flagged for density, then cleared. No inspector sign-off in the log." ), - ( speaker: B, text: "Cleared by whom?" ), - ( speaker: A, text: "System override. Supervisor code." ), - ( speaker: B, text: "Supervisor code on a density flag should go upstairs. Did it?" ), - ( speaker: A, text: "Log says cleared. That's all the log says." ), - ], - knowledge_payload: Some("Flagged cargo was cleared via supervisor override without following escalation protocol or leaving an inspector signature. The documentation gap appears deliberate."), - ), - - ( - id: "ovh_sch_003", - zone_types: ["security_checkpoint"], - role_pair: (a: "technician", b: "officer"), - register: Social, - relationship_context: Acquaintance, - topic: "persistent_camera_gap", - lines: [ - ( speaker: A, text: "C-wing scanner is back from calibration. Coverage is fine." ), - ( speaker: B, text: "Gap between C-wing and the freight bay access is still there." ), - ( speaker: A, text: "That gap has been there since the refurbishment. No work order ever came through to close it." ), - ( speaker: B, text: "Three years. Someone would have noticed." ), - ( speaker: A, text: "Someone did notice. Still no work order." ), - ], - knowledge_payload: Some("A persistent camera blind spot between two sensitive checkpoint areas has never had a repair order filed, suggesting deliberate preservation of the coverage gap."), - ), - - // ===================================================================== - // MILITARY GARRISON - // ===================================================================== - - ( - id: "ovh_mga_001", - zone_types: ["military_garrison"], - role_pair: (a: "nco", b: "soldier"), - register: Work, - relationship_context: Superior, - topic: "incident_reclassification", - lines: [ - ( speaker: A, text: "Official log lists that as equipment malfunction. Not a personnel incident." ), - ( speaker: B, text: "Both of us were there." ), - ( speaker: A, text: "And the log says equipment malfunction. Both of us were present for an equipment malfunction." ), - ( speaker: B, text: "Understood." ), - ], - knowledge_payload: Some("An incident witnessed as a personnel event has been officially reclassified as equipment malfunction. The NCO is delivering an implicit instruction to conform to the official account."), - ), - - ( - id: "ovh_mga_002", - zone_types: ["military_garrison"], - role_pair: (a: "soldier", b: "soldier"), - register: Social, - relationship_context: Friend, - topic: "civilian_contact_cutoff", - lines: [ - ( speaker: A, text: "Deployment orders came in. East perimeter extension. Two rotations, no civilian contact window." ), - ( speaker: B, text: "No contact window means no communication with the settlement." ), - ( speaker: A, text: "That's what it says." ), - ( speaker: B, text: "Settlements use that window for resupply complaints. Who handles those now?" ), - ( speaker: A, text: "Someone else, apparently." ), - ], - knowledge_payload: Some("New deployment orders cut soldier contact with nearby civilian settlements, eliminating a communication channel those settlements depend on. Neither soldier knows who replaces that function."), - ), - - ( - id: "ovh_mga_003", - zone_types: ["military_garrison"], - role_pair: (a: "officer", b: "nco"), - register: Gossip, - relationship_context: Colleague, - topic: "supply_diversion", - lines: [ - ( speaker: A, text: "Second quartermaster requisition this month went to the Vensek depot. Not here." ), - ( speaker: B, text: "Vensek is under a different command bracket." ), - ( speaker: A, text: "Same requisition codes. Different delivery address. Filed from this building." ), - ( speaker: B, text: "Someone in this building has access to the requisition system and an address they prefer." ), - ], - knowledge_payload: Some("Garrison supplies are being requisitioned using legitimate codes but delivered to an unrelated depot. The requisitions originate within the garrison, suggesting internal diversion by someone with system access."), - ), - - // ===================================================================== - // DETENTION FACILITY - // ===================================================================== - - ( - id: "ovh_det_001", - zone_types: ["detention_facility"], - role_pair: (a: "guard", b: "guard"), - register: Work, - relationship_context: Colleague, - topic: "undocumented_night_transfer", - lines: [ - ( speaker: A, text: "Cell twelve is empty. Transfer order came in at zero two hundred." ), - ( speaker: B, text: "Middle-of-night transfer with no briefing note." ), - ( speaker: A, text: "Order was signed. Chain-of-custody form completed." ), - ( speaker: B, text: "Signed by whom?" ), - ( speaker: A, text: "Administrator code. She wasn't on shift." ), - ], - knowledge_payload: Some("A prisoner was transferred at 0200 using an administrator's credentials while that administrator was not on shift. No briefing note was left for incoming staff."), - ), - - ( - id: "ovh_det_002", - zone_types: ["detention_facility"], - role_pair: (a: "medic", b: "administrator"), - register: Work, - relationship_context: Colleague, - topic: "altered_intake_records", - lines: [ - ( speaker: A, text: "Three intake examinations this month. Injury dates on the filed forms don't match my examination log." ), - ( speaker: B, text: "Intake forms go through processing before filing." ), - ( speaker: A, text: "Processing shouldn't change a date." ), - ( speaker: B, text: "Flag it formally. I'll forward it up." ), - ( speaker: A, text: "Formal flag went in two weeks ago. Nothing came back." ), - ], - knowledge_payload: Some("Medical intake records are being altered between the medic's examination log and the final filed forms. A prior formal complaint about this pattern was submitted and not acted upon."), - ), - - ( - id: "ovh_det_003", - zone_types: ["detention_facility"], - role_pair: (a: "prisoner", b: "prisoner"), - register: Social, - relationship_context: Friend, - topic: "delayed_release", - lines: [ - ( speaker: A, text: "Merata's case cleared last cycle. Advocate confirmed the date." ), - ( speaker: B, text: "Merata is still in block C." ), - ( speaker: A, text: "Release order didn't come through. No reason in the file." ), - ( speaker: B, text: "Advocate comes Tuesday. That's what they say every week." ), - ], - knowledge_payload: Some("A prisoner whose release was confirmed by their legal advocate has not been released. No official reason has been filed. Other inmates recognize the pattern of recurring unmet release expectations."), - ), - - // ===================================================================== - // DIPLOMATIC ELITE - // ===================================================================== - - ( - id: "ovh_dip_001", - zone_types: ["diplomatic_elite"], - role_pair: (a: "aide", b: "aide"), - register: Social, - relationship_context: Colleague, - topic: "treaty_text_discrepancy", - lines: [ - ( speaker: A, text: "Annex three in the circulated draft is not the annex three from the working session." ), - ( speaker: B, text: "Third paragraph. Resource allocation floor. Changed from binding to advisory." ), - ( speaker: A, text: "Subtle enough to survive without someone checking the working draft." ), - ( speaker: B, text: "Someone is counting on that." ), - ], - knowledge_payload: Some("A treaty annex has been altered between the working session and the circulated draft, changing a binding resource commitment to advisory language. Both aides recognize the change as deliberate."), - ), - - ( - id: "ovh_dip_002", - zone_types: ["diplomatic_elite"], - role_pair: (a: "diplomat", b: "aide"), - register: Work, - relationship_context: Superior, - topic: "unscheduled_bilateral", - lines: [ - ( speaker: A, text: "Ambassador Kell met with the Sova trade attaché separately. No record in the session diary." ), - ( speaker: B, text: "Requesting a courtesy note from the attaché's side would confirm the contact." ), - ( speaker: A, text: "Do that. Quietly. No note from their side is its own answer." ), - ( speaker: B, text: "And if the question surfaces in today's session?" ), - ( speaker: A, text: "Let it surface. Watch how they respond with an audience in the room." ), - ], - knowledge_payload: Some("A senior diplomat held an unscheduled bilateral meeting kept off the official diary. Another delegation is attempting to surface the contact through procedural means during the formal session."), - ), - - ( - id: "ovh_dip_003", - zone_types: ["diplomatic_elite"], - role_pair: (a: "security_detail", b: "security_detail"), - register: Work, - relationship_context: Colleague, - topic: "principal_unescorted_contact", - lines: [ - ( speaker: A, text: "Principal left the building last night at one forty-five. Unescorted." ), - ( speaker: B, text: "Not in either of our logs." ), - ( speaker: A, text: "Twenty-minute absence. Contact outside the schedule." ), - ( speaker: B, text: "File it or hold it?" ), - ( speaker: A, text: "File it. A gap in our log is worse than what's in it." ), - ], - knowledge_payload: Some("A diplomat left the building alone at night for an undocumented contact, bypassing their security detail. Security personnel are debating whether to formally record the incident."), - ), - - // ===================================================================== - // INDUSTRIAL MANUFACTURING - // ===================================================================== - - ( - id: "ovh_mfg_001", - zone_types: ["industrial_manufacturing"], - role_pair: (a: "assembler", b: "assembler"), - register: Social, - relationship_context: Friend, - topic: "overtime_and_family", - lines: [ - ( speaker: A, text: "Third double shift this week. Daughter's recital is tomorrow evening." ), - ( speaker: B, text: "Swap with Krev on bay six. Krev needs the hours." ), - ( speaker: A, text: "Supervisor won't approve a bay swap mid-cycle. Already asked." ), - ( speaker: B, text: "Cover bay four for me Thursday. I'll run yours tomorrow. Off the books." ), - ], - knowledge_payload: None, - ), - - ( - id: "ovh_mfg_002", - zone_types: ["industrial_manufacturing"], - role_pair: (a: "quality_inspector", b: "line_supervisor"), - register: Work, - relationship_context: Colleague, - topic: "disappearing_rejects", - lines: [ - ( speaker: A, text: "Reject tray from bay four was empty this morning. Forty-eight units were in it yesterday." ), - ( speaker: B, text: "Maintenance must have cleared it." ), - ( speaker: A, text: "Maintenance doesn't clear reject trays. That's not their task." ), - ( speaker: B, text: "Someone moved them. I'll look into it." ), - ( speaker: A, text: "Looking into it after they're back on the line is a different kind of looking." ), - ], - knowledge_payload: Some("Rejected units are disappearing from quality control trays overnight, presumably returning to the production line. The line supervisor is deflecting rather than escalating."), - ), - - ( - id: "ovh_mfg_003", - zone_types: ["industrial_manufacturing"], - role_pair: (a: "maintenance_tech", b: "assembler"), - register: Social, - relationship_context: Friend, - topic: "spec_change_discrepancy", - lines: [ - ( speaker: A, text: "Tolerance spec on the junction housing changed last week. Wider band now." ), - ( speaker: B, text: "Wider band means more variation passes inspection." ), - ( speaker: A, text: "More passes means more gets shipped." ), - ( speaker: B, text: "Changed in the system or on paper?" ), - ( speaker: A, text: "System only. Station placard still shows the old number." ), - ], - knowledge_payload: Some("Product tolerance specs have been widened in the system without updating physical documentation at workstations. Workers know this results in units shipping that would previously have been rejected."), - ), - - // ===================================================================== - // INDUSTRIAL PROCESSING - // ===================================================================== - - ( - id: "ovh_ipr_001", - zone_types: ["industrial_processing"], - role_pair: (a: "safety_officer", b: "process_operator"), - register: Work, - relationship_context: Superior, - topic: "near_miss_reclassified", - lines: [ - ( speaker: A, text: "Last night's pressure spike in line three was logged as within-tolerance variance." ), - ( speaker: B, text: "Called it in myself. Category was changed after I submitted." ), - ( speaker: A, text: "Changed from near-miss to variance. Who signed the change?" ), - ( speaker: B, text: "Shift lead signed it. Change wasn't authorized by me." ), - ( speaker: A, text: "Original call is in my notes. That's a second record now." ), - ], - knowledge_payload: Some("A near-miss event was reclassified as within-tolerance variance by the shift lead after the operator reported it. The safety officer is creating an independent record to preserve the original classification."), - ), - - ( - id: "ovh_ipr_002", - zone_types: ["industrial_processing"], - role_pair: (a: "shift_lead", b: "plant_technician"), - register: Work, - relationship_context: Colleague, - topic: "inspection_cancellation_pattern", - lines: [ - ( speaker: A, text: "External inspection scheduled for the fourteenth. Cancelled the night before." ), - ( speaker: B, text: "Rescheduled or cancelled outright?" ), - ( speaker: A, text: "Cancelled. No new date filed." ), - ( speaker: B, text: "Third cancellation this year." ), - ( speaker: A, text: "Same inspector named on each request. Someone keeps putting her name on it and pulling it." ), - ], - knowledge_payload: Some("Multiple external safety inspections have been cancelled before arrival. The same inspector is named on each cancelled request, suggesting deliberate targeting to prevent a specific inspector from accessing the facility."), - ), - - ( - id: "ovh_ipr_003", - zone_types: ["industrial_processing"], - role_pair: (a: "process_operator", b: "process_operator"), - register: Social, - relationship_context: Friend, - topic: "feedstock_substitution", - lines: [ - ( speaker: A, text: "Incoming feedstock this batch smells different. Not bad. Just different." ), - ( speaker: B, text: "Different supplier?" ), - ( speaker: A, text: "Manifest says same supplier, same grade certification." ), - ( speaker: B, text: "Grade certification is a piece of paper. The smell is what the material actually is." ), - ( speaker: A, text: "Logged it. Supervisor said write it as batch variation, within spec." ), - ], - knowledge_payload: Some("Processing workers have detected a feedstock change inconsistent with official supply documentation. A direct sensory observation was suppressed through official re-categorization."), - ), - - // ===================================================================== - // EXTRACTION SURFACE - // ===================================================================== - - ( - id: "ovh_exs_001", - zone_types: ["extraction_surface"], - role_pair: (a: "surface_miner", b: "surface_miner"), - register: Social, - relationship_context: Friend, - topic: "active_work_in_closed_section", - lines: [ - ( speaker: A, text: "Section F has been closed since month two. Surveyor said exhausted." ), - ( speaker: B, text: "Walked past it yesterday. Face looks fresh. Someone's been working it." ), - ( speaker: A, text: "Fresh face in a closed section means a different crew." ), - ( speaker: B, text: "No second crew on the roster." ), - ( speaker: A, text: "None on our roster." ), - ], - knowledge_payload: Some("A mine section officially classified as exhausted shows signs of recent active excavation. No second crew appears on accessible staffing records, suggesting an undisclosed operation."), - ), - - ( - id: "ovh_exs_002", - zone_types: ["extraction_surface"], - role_pair: (a: "site_surveyor", b: "camp_supervisor"), - register: Work, - relationship_context: Colleague, - topic: "grade_data_interception", - lines: [ - ( speaker: A, text: "Grade data from sections B and D shows the seam running significantly higher than the company estimate." ), - ( speaker: B, text: "Send the raw data to me before it goes to the company rep." ), - ( speaker: A, text: "That's a change from standard procedure." ), - ( speaker: B, text: "Send it to me first." ), - ], - knowledge_payload: Some("Site mineral grade is significantly higher than the company estimate. The supervisor is intercepting survey data before it reaches company representatives, deviating from standard reporting procedure."), - ), - - ( - id: "ovh_exs_003", - zone_types: ["extraction_surface"], - role_pair: (a: "equipment_operator", b: "surface_miner"), - register: Gossip, - relationship_context: Acquaintance, - topic: "question_then_transfer", - lines: [ - ( speaker: A, text: "Darra asked about section F in last week's debrief. Transferred two days later." ), - ( speaker: B, text: "Transfer or just gone?" ), - ( speaker: A, text: "Transfer. Different site, different district." ), - ( speaker: B, text: "Quick, for a miner halfway through a rotation." ), - ( speaker: A, text: "Quick and quiet. No goodbye shift." ), - ], - knowledge_payload: Some("A worker who publicly questioned an operational discrepancy was transferred to a different site within 48 hours. The speed and secrecy of the transfer are noted as unusual by remaining workers."), - ), - - // ===================================================================== - // EXTRACTION SPACE - // ===================================================================== - - ( - id: "ovh_esp_001", - zone_types: ["extraction_space"], - role_pair: (a: "miner", b: "miner"), - register: Social, - relationship_context: Friend, - topic: "rotation_extension", - lines: [ - ( speaker: A, text: "Third rotation extension this contract. Forty days instead of thirty." ), - ( speaker: B, text: "Extension pays the same daily rate." ), - ( speaker: A, text: "Same rate, ten extra days, no option to refuse." ), - ( speaker: B, text: "Operational necessity clause covers it. It's in the contract somewhere." ), - ( speaker: A, text: "Somewhere. Nobody finds it until after they need it." ), - ], - knowledge_payload: Some("Crew rotations are being extended unilaterally under a contract clause for operational necessity. Workers have identified the mechanism but have no practical recourse."), - ), - - ( - id: "ovh_esp_002", - zone_types: ["extraction_space"], - role_pair: (a: "drill_operator", b: "ore_processor"), - register: Work, - relationship_context: Colleague, - topic: "grade_reporting_discrepancy", - lines: [ - ( speaker: A, text: "Batch seven reported to the buyer at 4.2 percent grade." ), - ( speaker: B, text: "Batch seven processed at 6.1 percent. That's what I logged." ), - ( speaker: A, text: "Company transmits to the buyer. Internal logs stay internal." ), - ( speaker: B, text: "Different numbers in two different places." ), - ( speaker: A, text: "One of them goes to someone who pays based on the number." ), - ], - knowledge_payload: Some("The station is reporting lower ore grades to the buyer than actual processed grades. Workers have internal logs showing the discrepancy but no control over what is transmitted externally."), - ), - - ( - id: "ovh_esp_003", - zone_types: ["extraction_space"], - role_pair: (a: "miner", b: "station_chief"), - register: Work, - relationship_context: Subordinate, - topic: "restricted_sector", - lines: [ - ( speaker: A, text: "Bore pattern shows a significant seam running through sector seven. Worth extending the drill window." ), - ( speaker: B, text: "Sector seven is restricted." ), - ( speaker: A, text: "Restricted under what operational category?" ), - ( speaker: B, text: "Above the drilling schedule. Work the assigned sectors." ), - ( speaker: A, text: "Logged the data. Just flagging it." ), - ], - knowledge_payload: Some("A valuable mineral seam extends into a restricted sector. The station chief refuses to explain the restriction's basis. The miner formally logs the discovery, creating a record that the seam was identified."), - ), - - // ===================================================================== - // EXTRACTION PLATFORM - // ===================================================================== - - ( - id: "ovh_epl_001", - zone_types: ["extraction_platform"], - role_pair: (a: "rig_hand", b: "rig_hand"), - register: Social, - relationship_context: Friend, - topic: "rotation_end_plans", - lines: [ - ( speaker: A, text: "Forty-two days left on rotation. Counting every one." ), - ( speaker: B, text: "Last rotation you said the same thing at sixty days." ), - ( speaker: A, text: "Last rotation I re-signed at forty. Not this time." ), - ( speaker: B, text: "Platform pays better than anything dirtside." ), - ( speaker: A, text: "Better pay stops mattering at some point. Took me three rotations to find that point." ), - ], - knowledge_payload: None, - ), - - ( - id: "ovh_epl_002", - zone_types: ["extraction_platform"], - role_pair: (a: "platform_tech", b: "medic"), - register: Work, - relationship_context: Colleague, - topic: "injury_classification_downgrade", - lines: [ - ( speaker: A, text: "Rig hand Tanev had a serious hand injury Tuesday. Saw it at the equipment bay." ), - ( speaker: B, text: "Intake record says minor contusion, right hand." ), - ( speaker: A, text: "Tanev could barely close his fingers. That's not minor." ), - ( speaker: B, text: "Intake note said minor. Filed version says minor." ), - ( speaker: A, text: "Severity classification affects the platform incident rate." ), - ], - knowledge_payload: Some("An injury was classified as minor despite witness evidence and the medic's own assessment indicating greater severity. The downgraded classification improves the platform's safety incident rate metrics."), - ), - - ( - id: "ovh_epl_003", - zone_types: ["extraction_platform"], - role_pair: (a: "rig_hand", b: "platform_manager"), - register: Social, - relationship_context: Acquaintance, - topic: "ownership_change", - lines: [ - ( speaker: A, text: "Platform's parent company changed hands. Heard it from the supply tender crew." ), - ( speaker: B, text: "Operational contract runs through Vasara-Lenn. Same as before." ), - ( speaker: A, text: "Vasara-Lenn was the acquisition." ), - ( speaker: B, text: "Acquired companies keep their contracts. Nothing changes operationally." ), - ( speaker: A, text: "Nothing changes operationally." ), - ], - knowledge_payload: Some("The platform's parent company has changed hands. The manager's response is deliberately reassuring but non-committal. The rig hand's flat repetition of the reassurance signals disbelief."), - ), - - // ===================================================================== - // WILDERNESS FRONTIER - // ===================================================================== - - ( - id: "ovh_wfr_001", - zone_types: ["wilderness_frontier"], - role_pair: (a: "ranger", b: "prospector"), - register: Work, - relationship_context: Acquaintance, - topic: "unauthorized_survey_work", - lines: [ - ( speaker: A, text: "Northwest sector had active survey work last week. No licensed party on my patrol list." ), - ( speaker: B, text: "Northwest is in the claim buffer zone." ), - ( speaker: A, text: "Buffer zones have access restrictions." ), - ( speaker: B, text: "Someone with access, or someone who didn't know about the restrictions." ), - ( speaker: A, text: "Equipment I saw was professional grade. Not someone who didn't know." ), - ], - knowledge_payload: Some("Unauthorized professional survey work is occurring in a claim buffer zone. Equipment quality rules out accidental trespass. The identity of the party is unknown."), - ), - - ( - id: "ovh_wfr_002", - zone_types: ["wilderness_frontier"], - role_pair: (a: "ranger", b: "ranger"), - register: Gossip, - relationship_context: Colleague, - topic: "boundary_marker_moved", - lines: [ - ( speaker: A, text: "Western boundary marker was moved again. Three meters closer to the fence line." ), - ( speaker: B, text: "Moved or corrected?" ), - ( speaker: A, text: "Moved. Original survey pins are still in the ground. Checked." ), - ( speaker: B, text: "Original pins inside the fence, new markers outside. That's not a correction." ), - ( speaker: A, text: "That's an expansion of what's on the protected side." ), - ], - knowledge_payload: Some("Boundary markers near a restricted zone have been moved to increase the area on the protected side of the fence. Original survey pins prove the change was unauthorized rather than a legitimate correction."), - ), - - ( - id: "ovh_wfr_003", - zone_types: ["wilderness_frontier"], - role_pair: (a: "guide", b: "medic"), - register: Social, - relationship_context: Friend, - topic: "unexplained_operator", - lines: [ - ( speaker: A, text: "Client in sector four claimed to be mapping personal claim data. No claim registration in the registry." ), - ( speaker: B, text: "Mapping a place without registering a claim." ), - ( speaker: A, text: "Or documenting something other than ore." ), - ( speaker: B, text: "People come out here for different reasons." ), - ( speaker: A, text: "Most people who want to disappear pick somewhere with fewer patrols." ), - ], - knowledge_payload: Some("An individual in a wilderness sector provided a cover explanation that does not match verifiable records. Both speakers speculate the person may be involved in surveillance or documentation of something sensitive."), - ), - - // ===================================================================== - // ARCHAEOLOGICAL SITE - // ===================================================================== - - ( - id: "ovh_arc_001", - zone_types: ["archaeological_site"], - role_pair: (a: "archaeologist", b: "field_technician"), - register: Work, - relationship_context: Colleague, - topic: "catalog_discrepancy", - lines: [ - ( speaker: A, text: "Grid seven finds went into the central catalog this morning. Six items. Logged nine in the trench." ), - ( speaker: B, text: "Three items between the trench and the catalog." ), - ( speaker: A, text: "That's where they'd be, yes." ), - ( speaker: B, text: "Do we report the discrepancy or check the catalog first?" ), - ( speaker: A, text: "Check the catalog. Then report the discrepancy." ), - ], - knowledge_payload: Some("Artifacts are being lost between field logging and the central catalog. Three items are missing from a single grid section. The archaeologist's measured response suggests this may not be the first occurrence."), - ), - - ( - id: "ovh_arc_002", - zone_types: ["archaeological_site"], - role_pair: (a: "site_security", b: "logistics_coordinator"), - register: Gossip, - relationship_context: Colleague, - topic: "external_access_inquiries", - lines: [ - ( speaker: A, text: "Second group this month requesting access to the eastern trench section. Neither one from the institution." ), - ( speaker: B, text: "External researchers sometimes contact us directly." ), - ( speaker: A, text: "No academic affiliation listed. One vehicle had a portable assay kit." ), - ( speaker: B, text: "Assay kit is mining equipment." ), - ( speaker: A, text: "Someone wants to know what's down there and it isn't for the published record." ), - ], - knowledge_payload: Some("Unknown parties with mining equipment have been making unauthorized access inquiries to the site. Non-academic interest suggests valuable or unusual material may be present."), - ), - - ( - id: "ovh_arc_003", - zone_types: ["archaeological_site"], - role_pair: (a: "archaeologist", b: "site_security"), - register: Social, - relationship_context: Acquaintance, - topic: "significant_find_window", - lines: [ - ( speaker: A, text: "Founder structure in section C is fully intact. First recovered one at this depth." ), - ( speaker: B, text: "First one means the site's value just changed significantly." ), - ( speaker: A, text: "Publication will bring attention." ), - ( speaker: B, text: "Publication or the period before publication." ), - ( speaker: A, text: "The period before publication is the dangerous part. Yes." ), - ], - knowledge_payload: Some("A significant archaeological discovery has substantially increased the site's value. Both speakers recognize that the period before official publication — when the discovery is known but not public — is the window of highest risk."), - ), - - ], -) diff --git a/server/content/npc-conversations/overheard.yaml.deprecated b/server/content/npc-conversations/overheard.yaml.deprecated deleted file mode 100644 index 4de669bbd..000000000 --- a/server/content/npc-conversations/overheard.yaml.deprecated +++ /dev/null @@ -1,855 +0,0 @@ -# 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]