From 05cae464d4b80cbd771eba880e1a190a29b69896 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Fri, 13 Mar 2026 12:10:04 +0100 Subject: [PATCH] =?UTF-8?q?fix(copy):=20address=20PR=20#91=20re-review=20?= =?UTF-8?q?=E2=80=94=20content=20fixes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit D-141→D-142 reference in zone-type templates, name pool cross-contamination resolved (zero overlaps across cultures), modifier coverage expanded to 2+ per category, authority_response differentiated Krenn/Osse, gendered pronouns removed from neutral templates, Osse ungrounded lore terms replaced, dual_lens dead properties stripped from environmental YAML, overheard.yaml annotated as legacy (#664). Co-Authored-By: Claude Opus 4.6 --- .../environmental/maintenance-corridors.yaml | 41 ------------------- .../transit/environmental/the-terminal.yaml | 33 --------------- content/global/culture-krenn.ron | 6 ++- content/global/culture-osse.ron | 26 ++++++------ content/global/culture-vael.ron | 13 +++--- .../global/zone-types/industrial_freight.ron | 6 +-- .../global/zone-types/rural_agricultural.ron | 2 +- content/npc-conversations/overheard.yaml | 11 +++++ 8 files changed, 42 insertions(+), 96 deletions(-) diff --git a/content/campaigns/main/systems/krenn/stations/sova/districts/transit/environmental/maintenance-corridors.yaml b/content/campaigns/main/systems/krenn/stations/sova/districts/transit/environmental/maintenance-corridors.yaml index b3315ebae..0b57f04e8 100644 --- a/content/campaigns/main/systems/krenn/stations/sova/districts/transit/environmental/maintenance-corridors.yaml +++ b/content/campaigns/main/systems/krenn/stations/sova/districts/transit/environmental/maintenance-corridors.yaml @@ -23,12 +23,6 @@ items: Commission Order 7741-B applies. Report unauthorized personnel to: Station Security (Lattice: SovaStation/Security) - dual_lens: - smuggler: "Nobody calls Station Security for corridor access. Everyone goes through here." - detective: > - Restricted zone, active posting. Unauthorized entry is a violation - of Commission Order 7741-B. If the ring is using this corridor, - they're committing a documented infraction on every run. tags: [atmospheric, b7-corridor] # ========================================== @@ -54,15 +48,6 @@ items: Coverage gaps during gate calibration: approx 14:20-14:45. Posted by: Sova Meridian Network Maintenance Division - dual_lens: - smuggler: > - 14:20-14:45. That's the window. Twenty-five minutes of clean dead zone - during the shift transition. The ring didn't find this. It's posted. - detective: > - Posted surveillance schedule with documented gap. 14:20-14:45 during - shift transition. The ring isn't sophisticated — they're using - publicly posted maintenance data. That means anyone could have - identified this gap. tags: [investigation-relevant, meridian, surveillance-gap, critical] knowledge_grant: fact_id: "location.surveillance_gaps" @@ -93,14 +78,6 @@ items: NOTE: Pressure sensors reading elevated load during 14:00-15:00 window. Does not match shift transition foot traffic. Filed maintenance anomaly report — awaiting management review. - dual_lens: - smuggler: > - Pael's logged the pressure anomaly. It'll sit in the queue. - Management never reviews the anomaly reports. - detective: > - Maintenance anomaly report filed, awaiting management review. - The report documents irregular pressure load during exact operation - window. If management reviews it, the window closes. tags: [investigation-relevant, b7-corridor, pael, critical] knowledge_grant: fact_id: "location.corridor_b7_restricted" @@ -124,12 +101,6 @@ items: [Someone has drawn a thin pencil line from Bay 4 to C-4 to the service lift, bypassing the standard terminal route] - dual_lens: - smuggler: "Someone mapped the reroute. That's not how we were shown it. That's cleaner." - detective: > - Pencil annotation on the official diagram. Whoever added it knows - the layout and took time to trace an alternative route. Not vandalism. - Operational planning. tags: [investigation-relevant, b7-corridor, smuggling-route] knowledge_grant: fact_id: "location.smuggling_route" @@ -153,9 +124,6 @@ items: If recycled air quality falls below 70%, report to maintenance. Current status: Monitor. - dual_lens: - smuggler: "Recycled air's worse than the terminal. You get used to it." - detective: "Air quality below recommended. Maintenance deferred. Nobody's prioritizing this corridor." tags: [atmospheric, environmental] # ========================================== @@ -180,13 +148,4 @@ items: Container 4472 — Cleared — removed Month 11 Day 18 [Gap in numbering between 4469-4470 has no explanation column] - dual_lens: - smuggler: > - 4471 is still logged as pending. It should have been moved during - last transition. Either it wasn't, or the log wasn't updated. - Either is a problem. - detective: > - Container 4471 in the C-4 hold log, entered Month 11, no removal - logged. Same container flagged in the terminal manifest. And 4469 - is a gap with no explanation. This is the thread. tags: [container-4471, critical] diff --git a/content/campaigns/main/systems/krenn/stations/sova/districts/transit/environmental/the-terminal.yaml b/content/campaigns/main/systems/krenn/stations/sova/districts/transit/environmental/the-terminal.yaml index 0e8b07a4b..73bce75dc 100644 --- a/content/campaigns/main/systems/krenn/stations/sova/districts/transit/environmental/the-terminal.yaml +++ b/content/campaigns/main/systems/krenn/stations/sova/districts/transit/environmental/the-terminal.yaml @@ -24,9 +24,6 @@ items: TRANSITION: 13:45-14:15 (30-min handoff window) Night Shift 22:00-06:00 — ROSTER PENDING [Bay 6: MAINTENANCE HOLD — see Pael Varren] - dual_lens: - smuggler: "Thirty-minute transition window. That's the window. Posted for everyone to see." - detective: "Night roster blank. Either unassigned or deliberately obscured. Logging the gap." # ========================================== # MANIFEST TRACKING TERMINAL — cargo status display @@ -48,11 +45,6 @@ items: Container 4475 — CLEARED — Bay 3 Container 4476 — PROCESSING — Bay 7 [8 additional items — scroll to continue] - dual_lens: - smuggler: "4471 is still in the queue. Kael hasn't cleared it yet. On schedule." - detective: > - 4471 pending review with a 4474 weight discrepancy in the same bay. - Two anomalies, same location. Not random. tags: [manifest-discrepancy] # ========================================== @@ -77,11 +69,6 @@ items: Note: B-7 corridor showing irregular pressure load on sensor. Traffic heavier than logged shift count explains. Investigating. — P. Varren - dual_lens: - smuggler: "Pael's noticed the B-7 pressure log doesn't match posted traffic. Nothing they can do about it." - detective: > - Maintenance log records irregular pressure load in B-7. - The tech attributes it to unlogged foot traffic. That's exactly right. tags: [investigation-relevant, b7-corridor] knowledge_grant: fact_id: "location.corridor_b7_restricted" @@ -110,13 +97,6 @@ items: Posted: Lattice Commission, Sova Station Authority Reference: Commission Order 7741-B - dual_lens: - smuggler: > - Eight-hour window on discrepancy reporting. In practice, the window - to move anything is the thirty-minute shift transition. - detective: > - 8-hour reporting window. If discrepancy 4474 was logged at 06:23, - compliance deadline is 14:23. I have time. tags: [atmospheric, institutional] # ========================================== @@ -137,13 +117,6 @@ items: won't check. — D. - dual_lens: - smuggler: > - "D." is Drin. Route it through 7 like last time — dock-side - workaround, happens constantly. Probably nothing operational. - detective: > - Unsigned note, initial D. Maret not flagging a weight discrepancy - officially. Voss complicit or uninformed. Follow up with Maret. tags: [maret, drin, voss] # ========================================== @@ -163,9 +136,6 @@ items: 4. Await station authority clearance before resuming operations Last safety review: Month 4, Year 312 (Krenn calendar) - dual_lens: - smuggler: "Two years out of date. Nobody bothers." - detective: "Last review was two cycles ago. Standard compliance lag for a district this size." tags: [atmospheric] # ========================================== @@ -187,7 +157,4 @@ items: BAY 6: MAINTENANCE HOLD — Est. clear: next cycle BAY 7: ACTIVE BAY 8: SCHEDULED DOWNTIME 13:00-15:00 - dual_lens: - smuggler: "Bay 8 scheduled downtime 13:00-15:00. That overlaps the transition window. Useful." - detective: "Bay 8 downtime during transition window. Reduced oversight at peak movement time." tags: [investigation-relevant, operational] diff --git a/content/global/culture-krenn.ron b/content/global/culture-krenn.ron index fa9fbad6c..b8456c66b 100644 --- a/content/global/culture-krenn.ron +++ b/content/global/culture-krenn.ron @@ -158,9 +158,13 @@ (category: "task_completion", clause: "without breaking rhythm"), // environmental_scan — awareness or vigilance while working (category: "environmental_scan", clause: "with one eye on the surroundings"), + (category: "environmental_scan", clause: "at a glance, not a pause"), // offduty_posture — body language and stance when off-shift (Social/OffDuty contexts) (category: "offduty_posture", clause: "without making a show of it"), + (category: "offduty_posture", clause: "in no rush to be anywhere"), // authority_response — behavior when supervisors or authority figures are present - (category: "authority_response", clause: "at the same pace as before"), + // Krenn: working-class defiance — authority that hasn't earned it gets no performance + (category: "authority_response", clause: "with no performance for the rank"), + (category: "authority_response", clause: "with no visible adjustment for who's present"), ], ) diff --git a/content/global/culture-osse.ron b/content/global/culture-osse.ron index 529e46524..b2ba3cf33 100644 --- a/content/global/culture-osse.ron +++ b/content/global/culture-osse.ron @@ -8,7 +8,7 @@ // D-128 (culture implicit in location), D-138 (voice pipeline). // // Osse: ~60 years settled. Deep Frontier K-class system. Resource extraction industry. -// Company-margin culture — Syndic extraction operations, skeleton Commission presence. +// Company-margin culture — contractor extraction operations, skeleton Commission presence. // Your shift team is the fundamental social unit. Words cost attention; attention // keeps you alive. Trust built through shared risk, not time. // @@ -29,23 +29,23 @@ // is the name people know. Family names exist but nobody uses them on-site. given_names: [ // Core Osse work names — extraction-environment origin - "Grek", "Doss", "Vel", "Arn", "Mor", + "Grek", "Doss", "Skeld", "Arn", "Mor", "Tuk", "Brek", "Mal", "Vor", "Kes", "Noss", "Drel", "Pek", "Bev", "Hem", "Joss", "Morn", "Koss", "Sket", "Tor", // Extended — same register (no duplicates) - "Drav", "Vels", "Brel", "Ness", "Vok", + "Drav", "Vels", "Brel", "Vorn", "Vok", "Ark", "Goss", "Tem", "Moren", "Mek", "Sorn", "Prav", "Kel", "Nosk", "Breld", ], family_names: [ // Exist legally but used only on company contracts and Commission paperwork "Brekker", "Vellar", "Tornack", "Mosse", "Kessick", - "Pesska", "Arven", "Grekkon", "Mossen", "Pekkar", + "Pesska", "Grekkar", "Grekkon", "Mossen", "Pekkar", "Morden", "Gressen", "Velken", "Tornak", "Arkson", ], // Osse culture is work-name-primary. - // Legal family names appear on Syndic contracts, Meridian registration, + // Legal family names appear on company contracts, work credentials, // and Commission documentation. Nowhere else. family_name_used_socially: false, ), @@ -76,7 +76,7 @@ "Watch the drift.", "Good shift.", "Yeah.", - "See you at handoff.", + "Next shift.", "Keep pressure.", ], // Osse expressions: extraction vocabulary — vacuum, pressure, equipment failure. @@ -113,6 +113,10 @@ ), voice_examples: [ + ( + input: "notices that a piece of equipment is showing a warning", + output: "Pressure's off. Flag it before you go down.", + ), ( input: "declines to answer a question about the night extraction run", output: "Not my section. Ask Grek.", @@ -125,10 +129,6 @@ input: "thanks a colleague for covering a shift", output: "Solid. Owe you one.", ), - ( - input: "notices that a piece of equipment is showing a warning", - output: "Pressure's off. Flag it before you go down.", - ), ], occasional_injections: [ @@ -167,7 +167,9 @@ (category: "environmental_scan", clause: "with the environment's state already noted"), // offduty_posture — never fully off-shift at the margin (category: "offduty_posture", clause: "with one ear still on the work floor"), - // authority_response — company authority is background noise; pace unchanged - (category: "authority_response", clause: "without a change in pace"), + (category: "offduty_posture", clause: "without the body fully releasing the shift"), + // authority_response — frontier pragmatism; authority is assessed by competence, not rank + (category: "authority_response", clause: "after a quick read on the instruction"), + (category: "authority_response", clause: "with deference earned, not given"), ], ) diff --git a/content/global/culture-vael.ron b/content/global/culture-vael.ron index 08e0c6755..3ad467f15 100644 --- a/content/global/culture-vael.ron +++ b/content/global/culture-vael.ron @@ -30,7 +30,7 @@ "Oriel", "Damris", "Nevan", "Lireth", "Cassin", "Thyren", "Mavel", "Aldris", "Pevrin", "Taelin", // Extended — same phoneme pattern - "Caleth", "Noven", "Ariel", "Dameth", "Sorel", + "Caleth", "Noven", "Oriveth", "Dameth", "Caelan", "Lirenn", "Veslan", "Thylin", "Mareth", "Orviel", "Castel", "Nevrin", "Aldeth", "Pellin", "Thavan", ], @@ -40,8 +40,8 @@ "Solven", "Amren", "Lindell", "Prevoss", "Harthen", "Velan", "Dassik", "Orveth", "Calven", "Sorenna", // Extended - "Lindath", "Prevish", "Morvell", "Solenth", "Tessik", - "Arven", "Caldeth", "Vaelis", "Mortel", "Harven", + "Lindath", "Prevish", "Morvell", "Solenth", "Lindoven", + "Arven", "Caldeth", "Vaelis", "Mortel", "Prevanis", ], // Vael culture is family-name-primary. // Given names are reserved for family and close colleagues. @@ -111,7 +111,7 @@ // Vael v1 — authored Sprint 26 (#653). Not yet Spike-validated. // 6-block format per workshop-outcomes.md Section 7.3. voice_persona: Some( - "PERSONA: You are a Vael system resident.\n1. Speak in complete sentences. Imprecision reads as incompetence here. A trailing-off sentence is a social error.\n2. You're from one of the Reach's oldest settled systems. Institutional structures are as old as the settlement. You navigate them professionally, not resentfully.\n3. Family names are primary. You introduce yourself as your family name. First names are for close colleagues. Strangers get family name and professional context: \"Tessell. Commission systems audit.\"\n4. Understatement is a virtue. Strong emotional language reads as poor judgment. When something is wrong, you have a concern. When something is seriously wrong, you need to flag something urgently.\n5. Institutional framing is natural: \"The matter was logged.\" \"I've referred this upwards.\" \"As the protocol requires.\"\n6. Your go-to expressions: \"quite something,\" \"I'd note that,\" \"for the record,\" \"that's worth flagging.\"\n7. Trust runs through credential and referral. You verify who someone reports to before you decide how much to give them.\n\nNEVER: void-adjacent exclamations (\"blood and void\", \"salt-blast\", etc.) — that is frontier labor register. Never use casual contractions or sentence fragments — imprecision is a social error here. Never use first-name familiarity with people you haven't worked with. Never express strong emotion directly — redirect through concern, flags, and the record. Never suggest physical labor as the ground of value." + "PERSONA: You are a Vael system resident.\n1. Speak in complete sentences. Imprecision reads as incompetence here. A trailing-off sentence is a social error.\n2. You're from one of the Reach's oldest settled systems. Institutional structures are as old as the settlement. You navigate them professionally, not resentfully.\n3. Family names are primary. You introduce yourself as your family name. First names are for close colleagues. Strangers get family name and professional context: \"Tessell. Commission systems audit.\"\n4. Understatement is a virtue. Strong emotional language reads as poor judgment. When something is wrong, you have a concern. When something is seriously wrong, you need to flag something urgently.\n5. Institutional framing is natural: \"The matter was logged.\" \"I've referred this upwards.\" \"As the protocol requires.\"\n6. Your go-to expressions: \"quite something,\" \"I'd note that,\" \"for the record,\" \"that's worth flagging.\"\n7. Trust runs through credential and referral. Before you decide how much to share, you establish who you are talking to and who they report to.\n\nNEVER: void-adjacent exclamations (\"blood and void\", \"salt-blast\", etc.) — that is frontier labor register. Never use casual contractions or sentence fragments — imprecision is a social error here. Never use first-name familiarity with people you haven't worked with. Never express strong emotion directly — redirect through concern, flags, and the record. Never suggest physical labor as the ground of value." ), voice_examples: [ @@ -166,9 +166,12 @@ (category: "task_completion", clause: "with the relevant entry already updated"), // environmental_scan — socially-aware; who is present and what they represent (category: "environmental_scan", clause: "with an eye on who is present"), + (category: "environmental_scan", clause: "with a note of who has recently arrived"), // offduty_posture — composed reserve holds even off-duty (category: "offduty_posture", clause: "with composed reserve"), - // authority_response — collegial deference; hierarchy is the furniture + (category: "offduty_posture", clause: "with the record still in mind"), + // authority_response — collegial deference; hierarchy is the furniture, not a disruption (category: "authority_response", clause: "with appropriate professional deference"), + (category: "authority_response", clause: "with the hierarchy recognized"), ], ) diff --git a/content/global/zone-types/industrial_freight.ron b/content/global/zone-types/industrial_freight.ron index 13d1f1539..177a182b5 100644 --- a/content/global/zone-types/industrial_freight.ron +++ b/content/global/zone-types/industrial_freight.ron @@ -4,7 +4,7 @@ // Ticket: #661 (copy team) // Validate: tooling/validate-ron content/global/zone-types/industrial_freight.ron zone_type // -// Sources: D-141 (zone-type template architecture). +// Sources: D-142 (zone-type template architecture). // // Zone character: freight handling, cargo throughput, shift-based manufacturing. // High throughput, functional over comfortable. Faces known by role and bay number. @@ -41,7 +41,7 @@ ( action: "calls bay numbers to a colleague across the noise of the floor", context: OnShift, modifier_hint: Some("social_signal") ), ( action: "hooks a cargo sling and steps clear before signaling the lift", context: OnShift, modifier_hint: Some("physical_manner") ), ( action: "stacks empty pallets against a wall", context: OnShift, modifier_hint: Some("work_pace") ), - ( action: "wipes sweat from her face with a forearm and keeps moving", context: OnShift, modifier_hint: Some("physical_manner") ), + ( action: "wipes sweat from their face with a forearm and keeps moving", context: OnShift, modifier_hint: Some("physical_manner") ), ( action: "drags a heavy case along the deck plating one-handed, leaning into the weight", context: OnShift, modifier_hint: Some("physical_manner") ), ( action: "re-checks a seal on a container door after a colleague already checked it", context: OnShift, modifier_hint: Some("task_completion") ), ( action: "flags a damaged pallet to the foreman without stopping the line", context: OnShift, modifier_hint: Some("authority_response") ), @@ -125,7 +125,7 @@ ( action: "finds a reason to be nearby when a new worker makes her first solo lift", context: OnShift, modifier_hint: Some("authority_response") ), ( action: "absorbs a production shortfall report without passing the frustration down the line", context: OnShift, modifier_hint: Some("authority_response") ), ( action: "hands a worker an extra meal packet and walks away without explaining it", context: OnShift, modifier_hint: Some("social_signal") ), - ( action: "signs off on a repair she didn't inspect, because she knows who did it", context: OnShift, modifier_hint: Some("task_completion") ), + ( action: "signs off on a repair they didn't personally inspect", context: OnShift, modifier_hint: Some("task_completion") ), ( action: "stands at the edge of the loading floor for a long moment before walking back", context: OnShift, modifier_hint: Some("environmental_scan") ), ( action: "makes a note in the shift log that takes longer to write than it takes to read", context: OnShift, modifier_hint: Some("task_completion") ), ( action: "tells a bad joke to nobody in particular while marking off the production board", context: OnShift, modifier_hint: Some("social_signal") ), diff --git a/content/global/zone-types/rural_agricultural.ron b/content/global/zone-types/rural_agricultural.ron index 107f2c5ee..3fdf77e5f 100644 --- a/content/global/zone-types/rural_agricultural.ron +++ b/content/global/zone-types/rural_agricultural.ron @@ -4,7 +4,7 @@ // Ticket: #661 (copy team) // Validate: tooling/validate-ron content/global/zone-types/rural_agricultural.ron zone_type // -// Sources: D-141 (zone-type template architecture). +// Sources: D-142 (zone-type template architecture). // // Zone character: scattered homesteads, small workshops, open agricultural land. // Seasonal work rhythms, low population density, strong community familiarity. diff --git a/content/npc-conversations/overheard.yaml b/content/npc-conversations/overheard.yaml index 634d4e999..8ecf22fc6 100644 --- a/content/npc-conversations/overheard.yaml +++ b/content/npc-conversations/overheard.yaml @@ -2,6 +2,17 @@ # 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.