diff --git a/CHANGELOG.md b/CHANGELOG.md index 174e3c098..05c15286c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,7 @@ Format based on [Keep a Changelog](https://keepachangelog.com/). ### Added - 29 zone-type behavior templates completing the full library of 31 zone types per D-142. 2,210 culture-neutral behavior primitives across rural, industrial, port, extraction, commercial, administrative, research, medical, military, security, entertainment, residential, detention, archaeological, wilderness, and diplomatic zones -- Generator-compatible overheard conversation RON format replacing the deprecated named-NPC YAML. 15 sample conversations parameterized by role pair and zone type with knowledge_payload for investigative value +- Generator-compatible overheard conversation RON format replacing the deprecated named-NPC YAML. 16 sample conversations parameterized by role pair and zone type with knowledge_payload for investigative value - Cross-culture name pool collision checking in validate-ron (`--check-name-collisions` mode) - Drifter's Guide to the Reach — 100% coverage (301/301 systems). 262 new GTTR entries across all 5 regions plus updated regional index pages with hop-grouped tables diff --git a/content/global/zone-types/archaeological_site.ron b/content/global/zone-types/archaeological_site.ron index 602298926..4f19f5f9a 100644 --- a/content/global/zone-types/archaeological_site.ron +++ b/content/global/zone-types/archaeological_site.ron @@ -11,6 +11,10 @@ // Teams are small and specialist. Hierarchy is soft but expertise is respected. // Base camp is the social anchor; the dig face is where the real work happens. // +// D-142 POI tier 1: designated zone type for gatebuilder ruin sites and +// alien-infrastructure excavations. Future authors should consider this +// dual use when extending roles or primitives. +// // Primitives are CULTURE-NEUTRAL. Culture modifiers (culture-*.ron files) append // cultural flavor at assembly time. Do not encode cultural attitudes in action text. // diff --git a/content/global/zone-types/diplomatic_elite.ron b/content/global/zone-types/diplomatic_elite.ron index 1af1818bb..bb2cddc87 100644 --- a/content/global/zone-types/diplomatic_elite.ron +++ b/content/global/zone-types/diplomatic_elite.ron @@ -97,7 +97,7 @@ // OnShift ( action: "takes a position at the room entrance where arrivals can be seen before they enter the space", context: OnShift, modifier_hint: Some("environmental_scan") ), ( action: "stands at the principal's shoulder during an introduction, present but not visible", context: OnShift, modifier_hint: Some("physical_manner") ), - ( action: "clears the route from the private office to the car before the principal moves", context: OnShift, modifier_hint: Some("work_pace") ), + ( action: "clears the route from the private office to the departure point before the principal moves", context: OnShift, modifier_hint: Some("work_pace") ), ( action: "scans a new room from the door before the principal crosses the threshold", context: OnShift, modifier_hint: Some("environmental_scan") ), ( action: "communicates a change of position to her partner with a look rather than a word", context: OnShift, modifier_hint: Some("social_signal") ), ( action: "checks a credential badge by reading it from arm's length before standing aside", context: OnShift, modifier_hint: Some("task_completion") ), diff --git a/content/global/zone-types/entertainment_hospitality.ron b/content/global/zone-types/entertainment_hospitality.ron index 15c3eb6af..8cefad3c7 100644 --- a/content/global/zone-types/entertainment_hospitality.ron +++ b/content/global/zone-types/entertainment_hospitality.ron @@ -23,6 +23,7 @@ label: "Entertainment Hospitality Zone", description: "Lodging, dining, hosted leisure. Staff and guests occupy the same space on different terms. Work is guest-driven and cyclical. The space looks effortless because the effort is invisible.", + // Default economic/density profile. Location specs override. economic_level: 6, population_density: 5, diff --git a/content/global/zone-types/entertainment_venue.ron b/content/global/zone-types/entertainment_venue.ron index 83d2a5f33..1933fa0a3 100644 --- a/content/global/zone-types/entertainment_venue.ron +++ b/content/global/zone-types/entertainment_venue.ron @@ -24,6 +24,7 @@ label: "Entertainment Venue Zone", description: "Performance spaces, spectator venues, live entertainment. Preparation, performance, and aftermath in a single building. Audience-facing and backstage roles exist in entirely different rhythms.", + // Default economic/density profile. Location specs override. economic_level: 5, population_density: 7, diff --git a/content/global/zone-types/military_garrison.ron b/content/global/zone-types/military_garrison.ron index 3b1015cf7..2556405df 100644 --- a/content/global/zone-types/military_garrison.ron +++ b/content/global/zone-types/military_garrison.ron @@ -51,7 +51,7 @@ ( action: "re-ties a kit strap on the move between positions without breaking stride", context: OnShift, modifier_hint: Some("physical_manner") ), // OffDuty ( action: "drops onto a barrack bunk in full kit and stares at the ceiling, boots still on", context: OffDuty, modifier_hint: Some("offduty_posture") ), - ( action: "sits at the mess table with both hands around a mug, listening to the conversation at the next seat", context: Social, modifier_hint: Some("offduty_posture") ), + ( action: "sits at the mess table with both hands around a mug, listening to the conversation at the next seat", context: OffDuty, modifier_hint: Some("offduty_posture") ), ( action: "trades a short story at the mess table and goes quiet when the NCO walks through", context: Social, modifier_hint: Some("social_signal") ), ( action: "plays a tile game in the common room with the same two people every evening", context: Social, modifier_hint: Some("offduty_posture") ), ( action: "laughs at something loud enough to carry across the common room, then cuts it off", context: Social, modifier_hint: Some("social_signal") ), diff --git a/content/global/zone-types/residential_dispersed.ron b/content/global/zone-types/residential_dispersed.ron index 496b5d713..964154250 100644 --- a/content/global/zone-types/residential_dispersed.ron +++ b/content/global/zone-types/residential_dispersed.ron @@ -30,6 +30,7 @@ label: "Residential Dispersed Zone", description: "Scattered low-density habitation at the margins — frontier settlements, isolated homesteads, edge communities. Travel between neighbors is measured in time, not steps. Self-reliance by necessity.", + // Default economic/density profile. Location specs override. economic_level: 2, population_density: 1, diff --git a/content/global/zone-types/residential_station.ron b/content/global/zone-types/residential_station.ron index 60f6d1523..5010cabb3 100644 --- a/content/global/zone-types/residential_station.ron +++ b/content/global/zone-types/residential_station.ron @@ -25,6 +25,7 @@ label: "Residential Station Zone", description: "Permanent orbital or deep-space residential blocks. Life structured by shift rotations and shared resources. The walls are always close. Everyone knows everyone else's schedule.", + // Default economic/density profile. Location specs override. economic_level: 4, population_density: 8, @@ -140,7 +141,7 @@ ( action: "acknowledges a resident greeting in the corridor without breaking the circuit walk", context: OnShift, modifier_hint: Some("social_signal") ), // OffDuty ( action: "sits in the common room off-shift in civilian clothes and is mostly ignored", context: OffDuty, modifier_hint: Some("offduty_posture") ), - ( action: "is still the one who notices when something is wrong, even off-shift", context: Social, modifier_hint: Some("environmental_scan") ), + ( action: "watches the corridor from the common room window without turning her head, even off-shift", context: Social, modifier_hint: Some("environmental_scan") ), ( action: "accepts a drink from a block resident and doesn't talk about the job", context: Social, modifier_hint: Some("social_signal") ), ], ), diff --git a/content/global/zone-types/residential_surface.ron b/content/global/zone-types/residential_surface.ron index 3eb89703a..9ab213f78 100644 --- a/content/global/zone-types/residential_surface.ron +++ b/content/global/zone-types/residential_surface.ron @@ -25,6 +25,7 @@ label: "Residential Surface Zone", description: "Planetary surface residential districts — suburbs, town blocks, city neighborhoods. Life is weather-aware and spatially open. Community bonds are formed by proximity over time.", + // Default economic/density profile. Location specs override. economic_level: 4, population_density: 5, diff --git a/content/npc-conversations/overheard.ron b/content/npc-conversations/overheard.ron index 9d3a13af3..16242877c 100644 --- a/content/npc-conversations/overheard.ron +++ b/content/npc-conversations/overheard.ron @@ -88,9 +88,9 @@ topic: "bay_assignment", lines: [ ( speaker: A, text: "Bay seven crew is two short tonight. Fill the gap from B-section." ), - ( speaker: B, text: "Bay seven's low traffic. Less oversight. Someone wanted that." ), + ( 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 suspects this is deliberate rather than operational."), + 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."), ), ( @@ -144,7 +144,7 @@ zone_types: ["entertainment_hospitality"], role_pair: (a: "concierge", b: "security"), register: Work, - relationship_context: Colleague, + relationship_context: Superior, topic: "guest_anomaly", lines: [ ( speaker: A, text: "Guest in room nine hasn't left the room since check-in. Thirty-six hours." ), diff --git a/content/npc-conversations/overheard.yaml b/content/npc-conversations/overheard.yaml deleted file mode 100644 index 8ecf22fc6..000000000 --- a/content/npc-conversations/overheard.yaml +++ /dev/null @@ -1,832 +0,0 @@ -# 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] diff --git a/docs/sprints/sprint-27/zone-type-review.md b/docs/sprints/sprint-27/zone-type-review.md index 7067e711e..617acfb1d 100644 --- a/docs/sprints/sprint-27/zone-type-review.md +++ b/docs/sprints/sprint-27/zone-type-review.md @@ -8,10 +8,10 @@ ## Summary All 31 zone-type templates pass the core authoring criteria. Two issues -require fixes before merge: one is a factual error in a header comment, -one is a cosmetic inconsistency affecting 5 files. +were found and resolved: one stale header comment, one cosmetic +inconsistency affecting 5 files. -**Status: PASS with minor fixes required** +**Status: PASS — all issues resolved** --- diff --git a/tooling/validate-ron b/tooling/validate-ron index 30f2e94d8..ae617e11b 100755 --- a/tooling/validate-ron +++ b/tooling/validate-ron @@ -57,7 +57,6 @@ def extract_names_from_block(text, field): block = m.group(1) # Strip line comments before extracting quoted strings block = re.sub(r'//[^\n]*', '', block) - block = re.sub(r'/[^\n]*', '', block) # single-slash RON comments return re.findall(r'"([^"]+)"', block) # culture_id -> set of names (given + family, tracked separately for reporting)