refactor(simulation): move content/ under server/ (#669)

Content files (RON templates, YAML campaigns, gauntlet data) are consumed
exclusively by the server. Colocate them at server/content/ and update all
path references in Rust source, tooling scripts, and schema files.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-17 10:31:20 +01:00
co-authored by Claude Opus 4.6
parent c0669489ff
commit b2ef56440f
73 changed files with 153 additions and 55 deletions
@@ -0,0 +1,7 @@
# Main Campaign metadata (D-003)
display_name: "The Settled Reach"
description: >
The core campaign. Set in a universe of wormhole-connected star systems,
neural lattice technology, and faction-driven politics. Occlusion-based
detective game with combat elements.
version: "0.1.0"
@@ -0,0 +1,16 @@
# Sova Transit District metadata (D-036)
# Identity derived from directory path: campaigns/main/systems/van-maanens-star/stations/sova/districts/transit/
# canonical_id: van-maanens-star.sova.transit (derived at load time by ContentValidator)
display_name: "Sova Transit District"
description: >
A 40-year-old prefab-modular-retrofitted freight logistics hub on Station Sova.
Five locations: The Terminal (logistics hub), The Last Shift (bar),
maintenance corridors, gate corridor (ground level), and the observation
gallery (Commission-only, z=2 above the gate concourse).
locations:
- "the-terminal"
- "the-last-shift"
- "maintenance-corridors"
- "gate-ground"
- "gate-gallery"
npc_count: 17
@@ -0,0 +1,151 @@
# Environmental Text: Maintenance Corridors
# Signs, terminals, documents, readable objects.
# Investigation-heavy. This is where the operational evidence lives.
# Ticket: #262 | Sprint: 12
location: maintenance-corridors
items:
# ==========================================
# ACCESS RESTRICTION SIGN — corridor entrance
# ==========================================
- id: env_corridor_001
type: sign
label: "Restricted Access Notice"
visibility: always
text: >
RESTRICTED ACCESS — MAINTENANCE PERSONNEL ONLY
B-CORRIDOR SECTOR — AUTHORIZED ENTRY REQUIRED
Unauthorized entry subject to Sova Station Authority review.
Commission Order 7741-B applies.
Report unauthorized personnel to: Station Security (Lattice: SovaStation/Security)
tags: [atmospheric, b7-corridor]
# ==========================================
# MERIDIAN COVERAGE SCHEDULE — posted on corridor wall
# Most investigation-relevant item in the game.
# ==========================================
- id: env_corridor_002
type: document
label: "Meridian Scan Schedule"
visibility: examine_only
text: >
MERIDIAN SURVEILLANCE COVERAGE — SOVA TRANSIT DISTRICT
MAINTENANCE CORRIDOR SECTOR — CURRENT CYCLE
Active coverage windows (full corridor monitoring):
06:00-07:30 | 10:00-11:00 | 14:00-15:30 | 22:00-23:00
Reduced coverage (perimeter only):
07:30-10:00 | 11:00-14:00 | 15:30-22:00 | 23:00-06:00
NOTE: Span gate maintenance cycles create signal interference.
Coverage gaps during gate calibration: approx 14:20-14:45.
Posted by: Sova Meridian Network Maintenance Division
tags: [investigation-relevant, meridian, surveillance-gap, critical]
knowledge_grant:
fact_id: "location.surveillance_gaps"
confidence: knows_details
# ==========================================
# MAINTENANCE LOG SHEET — handwritten clipboard at corridor junction
# ==========================================
- id: env_corridor_003
type: document
label: "Maintenance Log (B-7 Corridor)"
visibility: examine_only
text: >
B-7 CORRIDOR — MAINTENANCE LOG
Logged by: Pael Varren
[Month 11, Day 4]
Air scrubber pressure variance. Reset. Source unclear.
[Month 11, Day 12]
Seal failure B-7 junction. Third occurrence. Replaced again.
Noted: floor wear pattern inconsistent with posted traffic.
Possible deferred maintenance backlog creating additional load.
[Month 11, Day 22]
Recurring seal failure. Escalated to deferred queue.
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.
tags: [investigation-relevant, b7-corridor, pael, critical]
knowledge_grant:
fact_id: "location.corridor_b7_restricted"
confidence: knows_of
# ==========================================
# ROUTING DIAGRAM — cargo flow map posted at junction
# ==========================================
- id: env_corridor_004
type: sign
label: "Cargo Routing Diagram"
visibility: always
text: >
SOVA TRANSIT — MAINTENANCE CORRIDOR ROUTING
[Technical diagram showing freight flow paths]
Standard freight path: Bay > Terminal > Surface Storage
Emergency reroute: Bay > B-corridor > Temporary Hold (C-4)
Maintenance access: B-corridor > Service Lift > Environmental Systems
[Someone has drawn a thin pencil line from Bay 4 to C-4 to
the service lift, bypassing the standard terminal route]
tags: [investigation-relevant, b7-corridor, smuggling-route]
knowledge_grant:
fact_id: "location.smuggling_route"
confidence: suspects
# ==========================================
# ENVIRONMENTAL WARNING — recycled air quality
# ==========================================
- id: env_corridor_005
type: sign
label: "Environmental Quality Notice"
visibility: always
text: >
CORRIDOR ENVIRONMENTAL STATUS — CURRENT READINGS
CO2: 0.12% [ACCEPTABLE — upper threshold 0.15%]
Particulate: ELEVATED — see maintenance queue
Temperature: 19.4°C [nominal]
Recycled air freshness: 73% [minimum recommended: 80%]
If recycled air quality falls below 70%, report to maintenance.
Current status: Monitor.
tags: [atmospheric, environmental]
# ==========================================
# TEMPORARY STORAGE MANIFEST SHEET
# At the C-4 temporary hold point
# ==========================================
- id: env_corridor_006
type: document
label: "Temporary Storage Log (C-4)"
visibility: examine_only
text: >
C-4 TEMPORARY HOLD — CONTENTS LOG
[Printed manifest, partial, two pages visible]
Container 4466 — Cleared — removed Month 11 Day 1
Container 4467 — Cleared — removed Month 11 Day 3
Container 4468 — Cleared — removed Month 11 Day 3
Container 4469 — [NO ENTRY]
Container 4470 — Cleared — removed Month 11 Day 8
Container 4471 — [PENDING — entered Month 11 Day 15, no removal logged]
Container 4472 — Cleared — removed Month 11 Day 18
[Gap in numbering between 4469-4470 has no explanation column]
tags: [container-4471, critical]
@@ -0,0 +1,209 @@
# Environmental Text: The Last Shift (Bar)
# Signs, terminals, documents, readable objects.
# Atmosphere-heavy. Some investigation relevance through social texture.
# Ticket: #262 | Sprint: 12
location: the-last-shift
items:
# ==========================================
# DRINK MENU — handwritten, scratched-out prices
# Above the bar. Visible to anyone.
# ==========================================
- id: env_bar_001
type: sign
label: "Drink Menu"
visibility: always
text: >
THE LAST SHIFT
(Lera's)
Van Maanen's Star grain spirit — 4c
Pale station brew — 3c ~~2c~~
Dark station brew — 3c
Import (off-station) — 8c
Sova standard water — 1c
Meal (hot, whatever's running) — 6c
No tabs. No Commission business at the bar.
House rules posted.
dual_lens:
smuggler: "Import's doubled since last year. Everything's tighter."
detective: >
"No Commission business at the bar." That's Lera's personal policy.
She'll have opinions about why.
tags: [atmospheric]
# ==========================================
# LERA'S RULES — above the bar
# ==========================================
- id: env_bar_002
type: sign
label: "House Rules"
visibility: always
text: >
LERA'S — HOUSE RULES
1. Pay before you're too drunk to remember.
2. Arguments outside. Always.
3. What's said at the bar stays at the bar.
4. No job talk after 20:00.
5. Torek Lintar runs his own tab. Don't ask.
dual_lens:
smuggler: "Rule 5. Lera's been running Torek's tab for years. Old arrangement."
detective: >
Rule 5 is specific. Named. Torek Lintar has a standing arrangement
here. That's the third time his name has come up without context.
tags: [investigation-relevant, torek-lintar, lera]
knowledge_grant:
fact_id: "relationship.torek_bar_arrangement"
confidence: suspects
# ==========================================
# NOTICE BOARD — general community notices
# Examine to read individual notices.
# ==========================================
- id: env_bar_003
type: readable_object
label: "Notice Board"
visibility: always
text: >
[NOTICE BOARD — various papers pinned over each other]
MISSING: Vessels Tamm, last seen Sova Transit District, Month 11.
Contact: Lattice Commission Sova liaison or speak to Lera.
CARGO WORKERS' ASSOCIATION — Monthly meeting, back room, Month 12,
evening shift. All Sova Transit workers welcome. Bring your own.
ROOM AVAILABLE: Residential pod B-3, lower level. Quiet. Short-term.
Speak to Harek at the bar.
[handwritten, pinned over the others:]
ANYONE KNOW WHO LEFT A TRANSIT BAG IN THE STORAGE ROOM?
IT'S BEEN THREE WEEKS.
dual_lens:
smuggler: >
Vessels Tamm. Missing person notice. That name's from the Tamm family —
Naia's connection? Or coincidence. Probably coincidence.
detective: >
Missing persons notice. Vessels Tamm. Sova Transit District. Cross-reference
Tamm with case file — possible Naia Tamm relation. Flag for follow-up.
tags: [investigation-relevant, naia-tamm-adjacent, harek]
knowledge_grant:
fact_id: "relationship.tamm_family"
confidence: suspects
# ==========================================
# GRAFFITI — bathroom wall
# Examine to read.
# ==========================================
- id: env_bar_004
type: readable_object
label: "Graffiti (Bathroom Wall)"
visibility: examine_only
text: >
[scratched into the wall surface over several years]
Voss doesn't check bay 4. Never has. Never will.
The Commission sees what it wants to see.
Lera knows.
[someone added in different handwriting:]
Lera doesn't know anything. She just sells drinks.
[original hand, below:]
Keep telling yourself that.
dual_lens:
smuggler: "Graffiti's been here since before I started. The Voss line is right, though."
detective: >
"Lera knows." Someone believes the bar owner has information.
Someone else pushes back. The debate is years old.
tags: [atmospheric, voss, lera, investigation-adjacent]
# ==========================================
# TONIGHT'S SPECIALS — chalkboard near the kitchen
# ==========================================
- id: env_bar_005
type: sign
label: "Tonight's Specials"
visibility: always
text: >
TONIGHT:
Hot grain porridge (Velen style) — 5c
Station fish fry — 7c
Ask Lera what Velen style means.
She'll tell you about it for twenty minutes.
dual_lens:
smuggler: "Lera's from Velen originally. She makes everyone ask."
detective: "Lera Sessik. Originally from Velen surface. Personal detail noted."
tags: [atmospheric, lera-backstory]
# ==========================================
# LATTICE-FREE ZONE SIGN — near the entrance
# ==========================================
- id: env_bar_006
type: sign
label: "Lattice-Free Zone Notice"
visibility: always
text: >
VOLUNTARY LATTICE-FREE ZONE
By Lera's request: please disable active lattice scanning
and recording functions while at the bar.
Conversation here is conversation. Not data.
This is not a Commission-recognized designation.
Lera doesn't care.
dual_lens:
smuggler: >
Everyone honors this. It's one of the reasons the bar works for
what it works for.
detective: >
Not legally enforceable. But anyone who honors it voluntarily is
actively choosing to reduce their surveillance footprint here.
Who honors it and who doesn't is worth noting.
tags: [investigation-relevant, lera, lattice-free]
# ==========================================
# CARGO WORKERS' ASSOCIATION FLYER — pinned to the bar
# ==========================================
- id: env_bar_007
type: document
label: "Association Meeting Flyer"
visibility: examine_only
text: >
SOVA TRANSIT CARGO WORKERS' ASSOCIATION
Monthly Meeting
Topic: Shift change protocols — the thirty-minute handoff window
and why it isn't long enough.
Also on agenda: Updated manifest compliance requirements from
the Commission (new reporting window: 6 hours, down from 8).
Back room. Evening shift. All welcome.
Bring your concerns, bring a drink.
dual_lens:
smuggler: >
Commission shortened the reporting window to six hours. That's
tighter than the eight-hour buffer. Someone noticed the gap.
detective: >
Agenda item: thirty-minute handoff window. Workers complaining
about it publicly means the window is known beyond the ring.
Or is being discussed for reasons that are less innocent.
tags: [investigation-relevant, shift-transition, commission]
knowledge_grant:
fact_id: "world.shift_schedule"
confidence: knows_of
@@ -0,0 +1,160 @@
# Environmental Text: The Terminal (Logistics Hub)
# Signs, terminals, documents, readable objects.
# Both characters can examine these. Interpretation differs.
# Ticket: #262 | Sprint: 12
location: the-terminal
items:
# ==========================================
# SHIFT BOARD — posted schedule
# Always visible. High-traffic reference point.
# ==========================================
- id: env_terminal_001
type: sign
label: "Shift Schedule Board"
visibility: always
text: >
SOVA TRANSIT DISTRICT — LOGISTICS HUB
CURRENT ROTATION — CYCLE 47
BAY 1-4: Day Shift 06:00-14:00 (Voss, K. — Supervisor)
BAY 5-8: Day Shift 06:00-14:00 (Maret, K. — Scheduler)
TRANSITION: 13:45-14:15 (30-min handoff window)
Night Shift 22:00-06:00 — ROSTER PENDING
[Bay 6: MAINTENANCE HOLD — see Pael Varren]
# ==========================================
# MANIFEST TRACKING TERMINAL — cargo status display
# Active terminal. Can be read from appropriate distance in investigation mode.
# ==========================================
- id: env_terminal_002
type: terminal
label: "Cargo Tracking Terminal"
visibility: always
text: >
ACTIVE MANIFEST QUEUE — SOVA LOGISTICS
Last updated: 06:23
Container 4471 — [PENDING REVIEW] — Bay 4
Container 4472 — CLEARED — Bay 2
Container 4473 — CLEARED — Bay 2
Container 4474 — [WEIGHT DISCREPANCY — 47kg] — Bay 4
Container 4475 — CLEARED — Bay 3
Container 4476 — PROCESSING — Bay 7
[8 additional items — scroll to continue]
tags: [manifest-discrepancy]
# ==========================================
# MAINTENANCE REQUEST CLIPBOARD
# Physical clipboard near loading arm 3. Examine to read.
# ==========================================
- id: env_terminal_003
type: document
label: "Maintenance Request Log"
visibility: examine_only
text: >
DEFERRED MAINTENANCE — CURRENT QUEUE
(Submitted: Pael Varren, Maintenance)
Loading arm 3 — Grinding during lift cycle — DEFERRED x4
Bay 6 environmental seal — Recurring failure — DEFERRED x3 (HOLD)
B-7 corridor air scrubber — Pressure variance — DEFERRED x1
Gate calibration bay 5-6 — Off-spec hum — DEFERRED x2
Recycling unit C-4 — Thermal spike — DEFERRED x1
Note: B-7 corridor showing irregular pressure load on sensor.
Traffic heavier than logged shift count explains. Investigating.
— P. Varren
tags: [investigation-relevant, b7-corridor]
knowledge_grant:
fact_id: "location.corridor_b7_restricted"
confidence: suspects
# ==========================================
# COMMISSION COMPLIANCE NOTICE
# Standard posting. Required by regulation. Two years old.
# ==========================================
- id: env_terminal_004
type: sign
label: "Commission Compliance Notice"
visibility: always
text: >
LATTICE COMMISSION — FREIGHT OPERATIONS COMPLIANCE
All manifest discrepancies exceeding 15kg must be reported
within 8 hours of discovery.
All cargo flagged PENDING REVIEW must be cleared by assigned
inspector before shift transition.
Unauthorized access to restricted maintenance corridors
will result in immediate suspension pending review.
Posted: Lattice Commission, Sova Station Authority
Reference: Commission Order 7741-B
tags: [atmospheric, institutional]
# ==========================================
# WORK ORDER NOTE — handwritten, coffee-stained
# Personal communication between dock workers. Examine to read.
# ==========================================
- id: env_terminal_005
type: document
label: "Handwritten Note (Coffee-Stained)"
visibility: examine_only
text: >
Kael —
Bay 4 queue backed up again. Maret says it's a weight issue
but she's not flagging it officially. If it's still there when
you come in, just route it through 7 like last time. Voss
won't check.
— D.
tags: [maret, drin, voss]
# ==========================================
# SAFETY PROCEDURES PLACARD — standard, faded
# ==========================================
- id: env_terminal_006
type: sign
label: "Emergency Procedures"
visibility: always
text: >
IN CASE OF EMERGENCY:
1. Activate hull breach alarm (red panel, every 20m)
2. Proceed to nearest designated shelter (yellow markers)
3. Do not use freight lifts during emergency protocols
4. Await station authority clearance before resuming operations
Last safety review: Month 4, Year 312 (Van Maanen's Star calendar)
tags: [atmospheric]
# ==========================================
# BAY STATUS BOARD — current bay availability
# ==========================================
- id: env_terminal_007
type: sign
label: "Bay Status Board"
visibility: always
text: >
BAY STATUS — CURRENT CYCLE
BAY 1: ACTIVE
BAY 2: ACTIVE
BAY 3: ACTIVE
BAY 4: ACTIVE — PENDING REVIEW (2 items)
BAY 5: ACTIVE
BAY 6: MAINTENANCE HOLD — Est. clear: next cycle
BAY 7: ACTIVE
BAY 8: SCHEDULED DOWNTIME 13:00-15:00
tags: [investigation-relevant, operational]
@@ -0,0 +1,48 @@
# Location: Gate Corridor — Observation Gallery
# Source: D-093 gate cluster zone spec
# Zone palette: surface #b8bec4 / fog tint #0a1222
# z=2 (above gate concourse)
canonical_id: "van-maanens-star.sova.transit.location.gate-gallery"
display_name: "Observation Gallery"
description: >
Commission-only observation gallery overlooking the gate concourse from
z=2. The gallery rail is a transparent low wall — occupants can see
down to the concourse below, but upward LOS from z=1 is blocked except
at the staircase. Access restricted to Commission personnel.
tile_bounds:
x_min: 0
y_min: 0
x_max: 31
y_max: 9
z: 2
# Legend:
# R = Restricted (Commission-only access)
# W = Wall (solid)
#
# Layout (32 wide x 10 tall):
# Row 0: North wall with staircase entrance (col 1 = R, access point)
# Rows 1-8: Gallery floor (R tiles — restricted access)
# Row 9: South wall (gallery rail — transparent low wall, modeled as W;
# cross-z LOS is handled server-side)
tiles:
- "WRWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
- "WRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRW"
- "WRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRW"
- "WRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRW"
- "WRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRW"
- "WRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRW"
- "WRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRW"
- "WRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRW"
- "WRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRW"
- "WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
sightlines:
open: true
notes: >
Gallery rail is transparent — full downward LOS to gate concourse (z=1).
Upward LOS from concourse to gallery is blocked except at staircase.
Cross-z LOS behavior handled by server shadowcasting system.
@@ -0,0 +1,83 @@
# Location: Gate Corridor — Ground Level
# Source: D-093 gate cluster zone spec
# Zone palette: surface #b8bec4 / fog tint #0a1222
canonical_id: "van-maanens-star.sova.transit.location.gate-ground"
display_name: "Gate Corridor"
description: >
The gate cluster handles all traffic between Station Sova and the horizon
gate network. From north to south: the restricted aperture chamber where
span gate transits occur, freight staging and passenger arrival halls,
customs lanes (freight and pedestrian), and the wide gate concourse
where arrivals disperse into the transit district.
tile_bounds:
x_min: 0
y_min: 0
x_max: 39
y_max: 33
z: 1
# Legend:
# F = Floor (walkable) W = Wall (solid, blocks LOS)
# R = Restricted (access-tier gated)
#
# Layout (40 wide x 34 tall):
# Row 0: North wall
# Rows 1-4: Aperture chamber (centered 8 wide, R tiles — restricted)
# Row 5: Wall separator
# Rows 6-13: Freight staging (west, 24 tiles) | passenger arrival (east, 13 tiles)
# Row 14: Wall with door gaps (cols 12, 32)
# Rows 15-24: Freight customs (west, 20 tiles, 3 lanes at 6vt + wall stubs)
# | corridor (6 tiles) | ped customs (east, 10 tiles, 3 lanes)
# Row 25: Wall with wide opening to concourse (cols 5-34 open)
# Rows 26-33: Gate concourse (full 38-tile width, 8 rows — public open space)
#
# D-093 zone dimensions: freight customs 20x10, ped customs 12x10 (10 rows each)
# Corridor width: gate concourse 8vt (D-093)
tiles:
- "WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
- "WWWWWWWWWWWWWWWWRRRRRRRRWWWWWWWWWWWWWWWW"
- "WWWWWWWWWWWWWWWWRRRRRRRRWWWWWWWWWWWWWWWW"
- "WWWWWWWWWWWWWWWWRRRRRRRRWWWWWWWWWWWWWWWW"
- "WWWWWWWWWWWWWWWWRRRRRRRRWWWWWWWWWWWWWWWW"
- "WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
- "WFFFFFFFFFFFFFFFFFFFFFFFFWFFFFFFFFFFFFFW"
- "WFFFFFFFFFFFFFFFFFFFFFFFFWFFFFFFFFFFFFFW"
- "WFFFFFFFFFFFFFFFFFFFFFFFFWFFFFFFFFFFFFFW"
- "WFFFFFFFFFFFFFFFFFFFFFFFFWFFFFFFFFFFFFFW"
- "WFFFFFFFFFFFFFFFFFFFFFFFFWFFFFFFFFFFFFFW"
- "WFFFFFFFFFFFFFFFFFFFFFFFFWFFFFFFFFFFFFFW"
- "WFFFFFFFFFFFFFFFFFFFFFFFFWFFFFFFFFFFFFFW"
- "WFFFFFFFFFFFFFFFFFFFFFFFFWFFFFFFFFFFFFFW"
- "WWWWWWWWWWWWFWWWWWWWWWWWWWWWWWWWFWWWWWWW"
- "WFFFFFFWFFFFFFWFFFFFFWFFFFFFWFFWFFFWFFFW"
- "WFFFFFFWFFFFFFWFFFFFFWFFFFFFWFFWFFFWFFFW"
- "WFFFFFFWFFFFFFWFFFFFFWFFFFFFWFFWFFFWFFFW"
- "WFFFFFFWFFFFFFWFFFFFFWFFFFFFWFFWFFFWFFFW"
- "WFFFFFFWFFFFFFWFFFFFFWFFFFFFWFFWFFFWFFFW"
- "WFFFFFFWFFFFFFWFFFFFFWFFFFFFWFFWFFFWFFFW"
- "WFFFFFFWFFFFFFWFFFFFFWFFFFFFWFFWFFFWFFFW"
- "WFFFFFFWFFFFFFWFFFFFFWFFFFFFWFFWFFFWFFFW"
- "WFFFFFFWFFFFFFWFFFFFFWFFFFFFWFFWFFFWFFFW"
- "WFFFFFFWFFFFFFWFFFFFFWFFFFFFWFFWFFFWFFFW"
- "WWWWWFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFWWWWW"
- "WFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFW"
- "WFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFW"
- "WFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFW"
- "WFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFW"
- "WFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFW"
- "WFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFW"
- "WFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFW"
- "WFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFW"
sightlines:
open: false
notes: >
Gate concourse (rows 26-33) is wide open with full sightlines.
Customs lanes have wall stubs creating partial occlusion between
lanes. Freight customs (west, 20 tiles, 3 lanes at 6vt) is wider
than pedestrian customs (east, 10 tiles, 3 lanes). Aperture chamber
is fully walled and restricted. Cross-z LOS from the observation
gallery (z=2) into the concourse is handled server-side.
@@ -0,0 +1,54 @@
# Location: Maintenance Corridors (smuggling spaces)
# Source: D-093, #313 (Sprint 12 spatial layout)
# Zone palette: surface #4e5054 / fog tint #101214
# z=0 (Era 1, below main structures)
canonical_id: "van-maanens-star.sova.transit.location.maintenance-corridors"
display_name: "Maintenance Corridors"
description: >
Era 1 maintenance infrastructure beneath the transit district. A long
transition corridor connects the logistics hub to the bar district.
Restricted storage at the west end is shared with The Terminal above.
A maintenance hatch at the east end provides the cross-z connection
to the main level. Everything reads as mundane maintenance — the ring
operates here because nobody looks twice.
tile_bounds:
x_min: 0
y_min: 0
x_max: 57
y_max: 5
z: 0
# Legend:
# F = Floor (walkable) W = Wall (solid, blocks LOS)
# R = Restricted (access-tier gated)
#
# Layout (58 wide x 6 tall):
# Row 0: North wall
# Row 1: Restricted storage (west, 8 tiles) | wall | corridor (40 tiles) | wall | hatch room (east, 6)
# Row 2: Doors connect rooms (F in wall positions at cols 9 and 50)
# Row 3-4: Same as row 1 (walls between rooms)
# Row 5: South wall
#
# Corridor width: 2vt visible at rows 1-4 (internal height, maintenance standard)
# Transition corridor: 40 tiles (~40m at 1m/vt) between storage and hatch per D-093
# Restricted storage: R tiles for access restriction
# Maintenance hatch: F tiles (cross-z connection is future movement feature)
# Design: mundane maintenance appearance per D-093 G-08
tiles:
- "WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
- "WRRRRRRRRWFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFWFFFFFFW"
- "WRRRRRRRRFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFW"
- "WRRRRRRRRWFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFWFFFFFFW"
- "WRRRRRRRRWFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFWFFFFFFW"
- "WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
sightlines:
open: false
notes: >
Long straight corridor (40 tiles) with limited concealment. Storage and
hatch rooms are separated by walls with single-tile doors at row 2.
Mundane appearance per D-093 G-08 — no visually suspicious tile
arrangements.
@@ -0,0 +1,71 @@
# Location: The Last Shift (bar)
# Source: D-093, #312 (Sprint 12 spatial layout)
# Zone palette: surface #6b4018 / fog tint #200c04
canonical_id: "van-maanens-star.sova.transit.location.the-last-shift"
display_name: "The Last Shift"
description: >
A converted maintenance bay turned bar. The long counter runs along the
west wall with full sightlines across the room. A corner booth in the
northeast sees the bar, card table, entrance, and back room — prime
observation real estate. Scattered tables fill the main floor. A back
room with an alley exit provides the key traversal route for the ring.
tile_bounds:
x_min: 0
y_min: 0
x_max: 33
y_max: 21
z: 1
# Legend:
# F = Floor (walkable) W = Wall (solid, blocks LOS)
#
# Layout (34 wide x 22 tall):
# Row 0: North exterior wall
# Rows 1-4: Main floor + corner booth (NE, cols 26-31, walled alcove)
# Row 5: Bar counter starts (cols 1-2 = W fixture)
# Rows 6-10: Bar counter (cols 1-2 W), tables (W stubs), card table (col 25)
# Row 11: Open transition floor
# Rows 12-14: Table clusters (W stubs at cols 8, 16, 24)
# Row 15: News ticker mount (col 31 = W stub)
# Row 16: Open floor
# Row 17: Back room north wall with door (col 22 = F)
# Rows 18-20: Main floor (west) + back room (east, cols 22-32)
# Row 21: South wall with alley exit gap (cols 29-32 = F)
tiles:
- "WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW"
- "WFFFFFFFFFFFFFFFFFFFFFFFFFWFFFFFFW"
- "WFFFFFFFFFFFFFFFFFFFFFFFFFWFFFFFFW"
- "WFFFFFFFFFFFFFFFFFFFFFFFFFWFFFFFFW"
- "WFFFFFFFFFFFFFFFFFFFFFFFFFWFFFFFFW"
- "WWWFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFW"
- "WWWFFFFFFFFFFFFFFFFFFFFFFWFFFFFFFW"
- "WWWFFFFFFFWFFFFFFFWFFFFFFWFFFFFFFW"
- "WWWFFFFFFFWFFFFFFFWFFFFFFFFFFFFFFW"
- "WWWFFFFFFFFFFFWFFFFFFFFFFFFFFFFFFW"
- "WWWFFFFFFFFFFFWFFFFFFFFFFFFFFFFFFW"
- "WFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFW"
- "WFFFFFFFWFFFFFFFWFFFFFFFWFFFFFFFFW"
- "WFFFFFFFWFFFFFFFWFFFFFFFWFFFFFFFFW"
- "WFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFW"
- "WFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFWFW"
- "WFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFW"
- "WFFFFFFFFFFFFFFFFFFFFWFWFFFFFFFFFW"
- "WFFFFFFFFFFFFFFFFFFFFWFFFFFFFFFFFW"
- "WFFFFFFFFFFFFFFFFFFFFWFFFFFFFFFFFW"
- "WFFFFFFFFFFFFFFFFFFFFWFFFFFFFFFFFW"
- "WWWWWWWWWWWWWWWWWWWWWWWWWWWWWFFFFW"
sightlines:
open: false
notes: >
Corner booth (NE alcove, rows 1-4) has LOS to bar counter, card table
area, main entrance, and back room door. Bar counter along west wall
(cols 1-2, rows 5-10) gives staff full sightlines across the main
floor. Back room is partially occluded by wall at col 21. Back room
door at col 22. Table W-stubs create partial cover but do not fully
block sightlines.
social_site: "bar"
@@ -0,0 +1,77 @@
# Location: The Terminal (logistics hub)
# Source: D-093, #311 (Sprint 12 spatial layout)
# Zone palette: surface #7a8490 / fog tint #0d1520
canonical_id: "van-maanens-star.sova.transit.location.the-terminal"
display_name: "The Terminal"
description: >
Sova's freight logistics hub. Scanner bays filter incoming cargo at the
south entrance; a wide main corridor runs north through the manifest
processing floor. The break room sits in the northeast. The supervisor's
office overlooks the corridor through a large interior window. Restricted
storage in the northwest corner is where the ring hides re-tagged cargo.
tile_bounds:
x_min: 0
y_min: 0
x_max: 43
y_max: 27
z: 1
# Legend:
# F = Floor (walkable) W = Wall (solid, blocks LOS)
# V = Void (outside building) R = Restricted (access-tier gated)
#
# Layout (44 wide x 28 tall):
# Rows 0: North exterior wall
# Rows 1-4: Restricted storage (NW, 11 tiles) + corridor + supervisor office (NE, 9 tiles)
# Row 5: Storage south wall; corridor + office continue
# Rows 6-8: Open corridor; supervisor office east side
# Row 7: ** Supervisor window — col 28 is F (LOS gap into office) **
# Row 9: Supervisor office south wall
# Rows 10-11: Main corridor (full width chokepoint — high sightline value)
# Rows 12-17: Manifest processing (west, 14 tiles) + break room (east, 13 tiles)
# Row 18: Break room south wall; manifest open to corridor
# Rows 19-21: South corridor
# Row 22: Scanner bay north walls with entry gaps
# Rows 23-26: Scanner bay interiors (3 bays)
# Row 27: South exterior wall
tiles:
- "VVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWVVVVV"
- "VVVVVWRRRRRRRRRRRWFFFFFFFFFFWFFFFFFFFFWVVVVV"
- "VVVVVWRRRRRRRRRRRWFFFFFFFFFFWFFFFFFFFFWVVVVV"
- "VVVVVWRRRRRRRRRRRWFFFFFFFFFFWFFFFFFFFFWVVVVV"
- "VVVVVWRRRRRRRRRRRWFFFFFFFFFFWFFFFFFFFFWVVVVV"
- "VVVVVWWWWWWWWWWWWWFFFFFFFFFFWFFFFFFFFFWVVVVV"
- "VVVVVWFFFFFFFFFFFFFFFFFFFFFFWFFFFFFFFFWVVVVV"
- "VVVVVWFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFWVVVVV"
- "VVVVVWFFFFFFFFFFFFFFFFFFFFFFWFFFFFFFFFWVVVVV"
- "VVVVVWFFFFFFFFFFFFFFFFFFFFFFWWWWWWWWWWWVVVVV"
- "VVVVVWFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFWVVVVV"
- "VVVVVWFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFWVVVVV"
- "VVVVVWFFFFFFFFFFFFFFWFFFWFFFFFFFFFFFFFWVVVVV"
- "VVVVVWFFFFFFFFFFFFFFWFFFWFFFFFFFFFFFFFWVVVVV"
- "VVVVVWFFFFFFFFFFFFFFWFFFWFFFFFFFFFFFFFWVVVVV"
- "VVVVVWFFFFFFFFFFFFFFWFFFWFFFFFFFFFFFFFWVVVVV"
- "VVVVVWFFFFFFFFFFFFFFWFFFWFFFFFFFFFFFFFWVVVVV"
- "VVVVVWFFFFFFFFFFFFFFWFFFWFFFFFFFFFFFFFWVVVVV"
- "VVVVVWFFFFFFFFFFFFFFFFFFWWWWWWWWWWWWWWWVVVVV"
- "VVVVVWFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFWVVVVV"
- "VVVVVWFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFWVVVVV"
- "VVVVVWFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFWVVVVV"
- "VVVVVWWWWFFFFFFWWWWFFFFFFFFWWWWFFFFFFFWVVVVV"
- "VVVVVWFFFFFFFFFWFFFFFFFFFFFWFFFFFFFFFFWVVVVV"
- "VVVVVWFFFFFFFFFWFFFFFFFFFFFWFFFFFFFFFFWVVVVV"
- "VVVVVWFFFFFFFFFWFFFFFFFFFFFWFFFFFFFFFFWVVVVV"
- "VVVVVWFFFFFFFFFWFFFFFFFFFFFWFFFFFFFFFFWVVVVV"
- "VVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWVVVVV"
sightlines:
open: false
notes: >
Supervisor office window faces main corridor at row 7, col 28 (F gap in
wall line). Player standing in the corridor has direct LOS into the
office interior. This is the primary investigative discovery moment.
social_site: "logistics-hub"
@@ -0,0 +1,2 @@
# NPC daily routine schedules — Sova Transit District
# All NPC schedules in one file for cross-NPC scheduling validation
@@ -0,0 +1,101 @@
# Social site template: The Last Shift (bar)
# D-025: functional cluster as atomic template unit
# 4 role slots, 4+ NPCs in v0.1 (regulars are reference links). 4-8 NPC capacity.
template_id: bar
display_name: "The Last Shift"
description: >
Mid-grade bar in Sova Transit District. Converted maintenance staging area.
Irregular layout, long bar, corner booth. Where working people go after shift.
Informally known as "Lera's." The social nexus where investigation and
mundane life overlap.
location: the-last-shift
capacity:
min: 4
max: 8
role_slots:
- role: bar-owner
display_name: "Bar Owner"
count: 1
required: true
description: >
Owns and operates the bar. Observant, careful, knows everyone's business.
ANCHOR pattern — the stabilizing social presence. Hears everything,
says little. Access tier: insider for regulars.
pool_ref: null
flags:
- social_anchor
- information_hub
- bar_permanent
- role: bartender
display_name: "Bartender"
count: 1
required: true
description: >
Serves drinks, manages the floor. Different from the owner — the
bartender is staff, not the proprietor. Younger, less established.
pool_ref: null
flags:
- bar_permanent
- role: bar-regular
display_name: "Bar Regular"
count:
min: 2
max: 5
required: true
description: >
Off-duty workers and social visitors. Regulars are typically owned by
other templates (logistics hub, Commission) with reference links here.
Their presence during bar_evening creates the social observation space.
pool_ref: "transit:bar_regulars"
flags:
- evening_presence
- cross_template
# v0.1 NPC assignments
v01_assignments:
bar-owner: "npc:lera-sessik"
bartender: "npc:pell"
bar-regular-1: "npc:sera-venn" # Reference: Commission field tech, evening regular
bar-regular-2: "npc:resha" # Owned by bar template
# Additional regulars via reference links:
# npc:kael-davan (from logistics-hub, evening presence)
# npc:torek-lintar (from Commission, evening presence)
# npc:drin (from logistics-hub, occasional)
# Reference links — NPCs owned by other templates who visit the bar
reference_links:
- npc: "npc:sera-venn"
owning_template: null # Sera is Commission, not bar staff
relationship: "social anchor — evening regular"
presence_phases: [evening]
- npc: "npc:kael-davan"
owning_template: logistics-hub
relationship: "after-shift regular"
presence_phases: [evening]
- npc: "npc:torek-lintar"
owning_template: null # Commission inspector
relationship: "off-duty regular, gambling participant"
presence_phases: [evening]
- npc: "npc:drin"
owning_template: logistics-hub
relationship: "occasional visitor"
presence_phases: [evening]
triangle_constraints:
- triangle: bar-tensions
required_roles:
- bar-owner # Lera: owner mediating
- bar-regular # Resha: regular with grievance
- bartender # Pell: caught in the middle
- triangle: worried-knowledge
required_roles:
- bar-regular # Sera: avoiding Torek at the bar
dialogue_pools:
- location: the-last-shift
roles: [bar-owner, bartender, bar-regular]
@@ -0,0 +1,106 @@
# Social site template: The Terminal (logistics hub)
# D-025: functional cluster as atomic template unit
# 5 role slots, 6 NPCs in v0.1. 4-8 NPC capacity.
template_id: logistics-hub
display_name: "The Terminal"
description: >
Freight logistics hub — the beating heart of Sova Transit District. Cargo
processing, manifest management, shift rotations. The smuggler's workplace
and the ring's operational cover.
location: the-terminal
# Capacity range per D-025: 4-8 NPCs in connected space with internal sightlines
capacity:
min: 4
max: 8
role_slots:
- role: shift-supervisor
display_name: "Shift Supervisor"
count: 1
required: true
description: >
Authority figure. Oversees dock operations, manages shift schedules,
enforces procedures. Access tier: authority within the hub.
pool_ref: null # Fixed assignment in v0.1
flags:
- authority_figure
- hub_permanent
- role: dock-worker
display_name: "Dock Worker"
count:
min: 2
max: 4
required: true
description: >
Core workforce. Processes cargo, handles manifests, operates equipment.
One dock-worker slot is reserved for the smuggler's FRIEND (pool draw).
pool_ref: "transit:friend_smuggler" # One slot drawn from FRIEND pool
flags:
- hub_permanent
- ring_candidate
- role: new-hire
display_name: "New Hire"
count: 1
required: false
description: >
Recent arrival to the logistics hub. Asks questions, doesn't know the
social norms yet, provides a fresh perspective. CATALYST pattern.
pool_ref: null
flags:
- catalyst
- newcomer
- role: scheduler
display_name: "Freight Scheduler"
count: 1
required: true
description: >
Manages freight scheduling and manifest coordination. Has access to
cargo records — a key information source for both smuggler and detective.
pool_ref: null
flags:
- hub_permanent
- information_access
- role: courier
display_name: "Courier"
count: 1
required: false
description: >
Moves between locations. Off-duty security or delivery runner.
Bridge NPC who connects the hub to other social sites.
pool_ref: null
flags:
- bridge_npc
# v0.1 NPC assignments (matches seed config design doc section 4.4)
v01_assignments:
shift-supervisor: "npc:voss"
dock-worker-1: "npc:kael-davan"
dock-worker-2: "npc:drin"
new-hire: "npc:renn"
scheduler: "npc:maret-korr"
courier: "npc:harek"
# Triangles that involve members of this template
triangle_constraints:
- triangle: hub-power
required_roles:
- shift-supervisor # Voss: authority
- dock-worker # Kael: subordinate
- scheduler # Maret: caught-between
- triangle: worried-partner
required_roles:
- dock-worker # Kael: partner under ring pressure
- triangle: informant-question
required_roles:
- dock-worker # Drin: notices Torek's inspection irregularities
# Dialogue pool locations (maps to dialogue/ subdirectory)
dialogue_pools:
- location: the-terminal
roles: [shift-supervisor, dock-worker, new-hire, scheduler, courier]
@@ -0,0 +1,88 @@
# Social site template: Smuggling Ring (maintenance corridors)
# D-025: functional cluster as atomic template unit
# Smallest template: 2-4 NPCs. Operates in infrastructure gaps.
template_id: smuggling-ring
display_name: "The Ring"
description: >
Smuggling operation using repurposed maintenance infrastructure. Not a
dedicated room — a corridor between hub sections where old and new
construction don't quite meet. Access through service hatches. The ring
didn't build this space; they found it. Operates during night shift and
shift transitions when oversight is thinnest.
location: maintenance-corridors
capacity:
min: 2
max: 4
role_slots:
- role: ring-operative
display_name: "Ring Coordinator"
count: 1
required: true
description: >
Coordinates ring operations. HANDLER motivation — manages logistics,
maintains contacts, makes decisions. Capable, not theatrical.
pool_ref: null
flags:
- ring_leader
- night_presence
- restricted_access
- role: ring-contact
display_name: "Ring Contact"
count:
min: 1
max: 2
required: true
description: >
Active ring member with dual role — legitimate job at the logistics hub
by day, ring operations by night. Reference link from logistics-hub
template. Their presence here is the core secret the smuggler protects
and the detective investigates.
pool_ref: "transit:friend_smuggler" # The FRIEND is the primary ring contact
flags:
- dual_role
- night_presence
- ring_member
- role: external-contact
display_name: "External Contact"
count: 1
required: false
description: >
Off-station connection. Arrives with shipments, departs quickly.
Not a permanent presence — appears during ring operation windows.
pool_ref: null
flags:
- transient
- external
# v0.1 NPC assignments
v01_assignments:
ring-operative: "npc:devra"
ring-contact: "npc:kael-davan" # Reference from logistics-hub (dual role)
external-contact: "npc:sabel" # Off-system contact
reference_links:
- npc: "npc:kael-davan"
owning_template: logistics-hub
relationship: "ring member — dual role, night operations"
presence_phases: [night]
- npc: "npc:sabel"
owning_template: null # External, transient
relationship: "off-station buyer/receiver"
presence_phases: [night] # Irregular, tied to shipments
triangle_constraints:
- triangle: worried-partner
required_roles:
- ring-contact # Kael: under pressure from ring work
- triangle: hub-power
required_roles:
- ring-contact # Kael: subordinate to Voss by day, ring by night
dialogue_pools:
- location: maintenance-corridors
roles: [ring-operative]
@@ -0,0 +1,242 @@
# News ticker headline pool — The Last Shift bar
# Meridian Feed (Van Maanen's Star local news network)
# 30 lines total | Categories: freight (9), politics (4), infrastructure (5), sports (3),
# commission (5), community (4) — see dual_lens notes on each line
# Dual-lens content: each headline reads differently to smuggler vs detective.
# Ticket: #306 | Sprint: 12 | Owner: Mellanie + Miri
# v0.1: static background text. v0.2: cycling ticker system.
location: the-last-shift
feed: meridian
headlines:
# --- Freight / Commodity (6) ---
- id: ticker_001
text: "VAN MAANEN FREIGHT INDEX: Lattice components +12% on Syndic supply restrictions"
category: freight
dual_lens:
smuggler: "Prices up. Every run is worth more — and every run is riskier."
detective: "Supply restrictions mean increased black market pressure. Watch for volume spikes."
- id: ticker_002
text: "SOVA DOCKING: Revised rates effective cycle 14 — bulk freight +0.8 cred/tonne"
category: freight
dual_lens:
smuggler: "Costs going up. Nils won't be happy. Margins are already thin."
detective: "Administrative noise. But fee changes affect which routes are economically viable."
- id: ticker_003
text: "ROUTE ADVISORY: Span gate maintenance on Van Maanen's Star-Havara corridor — 48hr delays"
category: freight
dual_lens:
smuggler: "Havara corridor's down. If Sabel's shipments are routed through there, we wait."
detective: "Transit disruption changes shipping patterns. New routes create new anomalies."
- id: ticker_004
text: "COMMODITY ALERT: Medical-grade neural components — backorder extends to 6 cycles"
category: freight
dual_lens:
smuggler: "Six cycles. People need those replacements now. That's why we do this."
detective: "Extended shortage increases incentive for diversion. Motive for the operation."
- id: ticker_005
text: "FREIGHT QUARTERLY: Sova throughput up 3% year-on-year — transit district credited"
category: freight
dual_lens:
smuggler: "More volume, more cover. Good news for us."
detective: "Increased throughput makes statistical anomalies harder to spot. More noise."
- id: ticker_006
text: "INSURANCE: Premium review for manifest discrepancy incidents — sector-wide audit"
category: freight
dual_lens:
smuggler: "Manifest discrepancies. If the insurers are looking, the Commission's next."
detective: "Insurance sector flagging the same pattern I'm seeing. Independent confirmation."
# --- Assembly Politics (4) ---
- id: ticker_007
text: "ASSEMBLY: Lattice regulation amendments tabled — vote deferred to next session"
category: politics
dual_lens:
smuggler: "Deferred. Status quo holds. The demand stays, the supply stays illegal."
detective: "Regulatory gap continues. No political will to address the root cause."
- id: ticker_008
text: "ASSEMBLY VOTE: Infrastructure bill passes 312-287 — Reach districts gain allocations"
category: politics
dual_lens:
smuggler: "More money for the Reach. Maybe Sova gets a refit. Maybe things change."
detective: "Allocation shifts. New infrastructure means new oversight — or new blind spots."
- id: ticker_009
text: "DELEGATE PROFILE: Rep. Hask (Van Maanen's Star) calls for Commission oversight review"
category: politics
dual_lens:
smuggler: "Commission oversight review. Could mean more patrols. Could mean fewer. Either way, noise."
detective: "Political pressure on Commission operations. Budget review affects field resources."
- id: ticker_010
text: "POLICY WATCH: Cross-system freight harmonization bill enters second reading"
category: politics
dual_lens:
smuggler: "Harmonization means standardization. Standardization means fewer gaps in the paperwork."
detective: "Cross-system data sharing would connect manifest anomalies across jurisdictions."
# --- Local Infrastructure (4) ---
- id: ticker_011
text: "SOVA STATION: Deck 4 ventilation overhaul — expect cycled air disruptions"
category: infrastructure
dual_lens:
smuggler: "Construction crews on Deck 4. More people in the corridors. Watch the routes."
detective: "Infrastructure work. Construction means altered access patterns."
- id: ticker_012
text: "TRANSIT: Corridor B maintenance scheduled cycle 16-18 — alternate routing posted"
category: infrastructure
dual_lens:
smuggler: "Corridor B. That's our route. Maintenance means official access. We shut down for three cycles."
detective: "Scheduled maintenance on a corridor near the freight bays. Who requested it?"
- id: ticker_013
text: "WATER RECYCLING: Stage 2 filter replacement ahead of schedule — capacity at 97%"
category: infrastructure
dual_lens:
smuggler: "Good. One less thing to worry about."
detective: "Infrastructure baseline. Station systems functioning normally."
- id: ticker_014
text: "POWER GRID: Outer ring voltage fluctuations traced to span gate resonance"
category: infrastructure
dual_lens:
smuggler: "Voltage fluctuations in the outer ring. Cameras might glitch. Useful."
detective: "Power issues could affect surveillance systems. Note the timing."
# --- Sports (3) ---
- id: ticker_015
text: "GRAV-BALL: Sova Drifters fall to Havara United 3-1 — playoff hopes dim"
category: sports
dual_lens:
smuggler: "Drifters lost again. Lera's going to be in a mood."
detective: "Sports. The universal social lubricant. File under 'conversation openers.'"
- id: ticker_016
text: "LEAGUE TABLE: Van Maanen's Star Conference — Sova 4th, Mirren Station leads"
category: sports
dual_lens:
smuggler: "Fourth. We were second last season. This place is sliding."
detective: "Local standings. Note who cares about the Drifters — it's a belonging marker."
- id: ticker_017
text: "HIGHLIGHT: Drifters' Pael Tev named to All-Reach reserve squad"
category: sports
dual_lens:
smuggler: "Tev made the reserves. Good for him. At least someone's getting out."
detective: "The name Tev — any relation to dock personnel? Check roster."
# --- Commission Advisories (3) ---
- id: ticker_018
text: "COMMISSION: Manifest compliance audits scheduled — Sova Transit, cycles 15-20"
category: commission
dual_lens:
smuggler: "Compliance audits. Cycle 15. That's five cycles from now. We need to be clean by then."
detective: "Scheduled audits. Standard, but the timing aligns with my investigation window."
- id: ticker_019
text: "ADVISORY: Unlicensed lattice modifications carry Category 3 penalties — report anonymously"
category: commission
dual_lens:
smuggler: "Category 3. Years in detention. Same poster, same message, same empty threat. Until it isn't."
detective: "Public messaging campaign. Commission HQ wants visible enforcement. Pressure from above."
- id: ticker_020
text: "ENFORCEMENT: Commission confirms 'routine assessment' of Reach freight operations"
category: commission
dual_lens:
smuggler: "'Routine assessment.' Is that the detective? Is that why he's here?"
detective: "That's my cover story. Or headquarters' way of telling me the clock is running."
# --- Local Community (4) — added Sprint 12, Mellanie ---
- id: ticker_021
text: "SECTOR 3: Sova Station Admin acknowledges ventilation review — timeline 'under discussion'"
category: infrastructure
dual_lens:
smuggler: "Under discussion. Same thing they said last cycle. Seven years of under discussion."
detective: "Deferred maintenance, seven-year backlog, workers frustrated. That's a community with grievances. File that."
- id: ticker_022
text: "WORKERS: Cargo Workers' Association calls for review of thirty-minute shift handoff protocols"
category: community
dual_lens:
smuggler: "Workers pushing back on the transition window. If they shorten it, we lose our gap."
detective: "Workers know the window is too short. And they're right. The question is who else knows it."
- id: ticker_023
text: "SOVA LOCAL: Missing persons — Vessels Tamm, Sova Transit District, Month 11. Contact Sova liaison."
category: community
dual_lens:
smuggler: "Vessels Tamm. That name — any connection to Naia's family? Don't chase ghosts."
detective: "Tamm. Naia Tamm is the name in the case file as Kael Davan's partner. Related? Flag."
notes: >
Connects to notice board in the-last-shift environmental text (env_bar_003).
Detective's reaction sets up the Naia-Tamm connection thread.
- id: ticker_024
text: "HEALTH: Re-embodiment wait times at Sova Clinic — non-emergency cases: 4-6 cycles. Main station for urgent."
category: community
dual_lens:
smuggler: "Four cycles. If something goes wrong on a run, four cycles at the clinic before you're back. Remember that."
detective: "Healthcare routing. Non-urgent cases handled locally, urgent cases moved off-station. Operational detail."
# --- Lattice Economy (3) — added Sprint 12, Mellanie ---
- id: ticker_025
text: "LATTICE: Commission-approved upgrade costs rise — standard lattice enhancement up 18% this cycle"
category: freight
dual_lens:
smuggler: "Eighteen percent. That's why the waiting list for off-book components keeps growing. We're providing a service."
detective: "Price pressure on approved upgrades. Economic driver for the unlicensed market. Motive confirmed."
- id: ticker_026
text: "LATTICE COMMISSION: Public access modification registry now mandatory — self-report deadline cycle 20"
category: commission
dual_lens:
smuggler: "Self-report. Right. The people who bought off-book components are definitely filing that form."
detective: "Mandatory registry. Anyone who doesn't file either doesn't have mods or is hiding them. Narrow that list."
- id: ticker_027
text: "HEALTHCARE: Medical-grade lattice component recall — batch 44xx — contact nearest clinic for assessment"
category: community
dual_lens:
smuggler: "Batch 44xx. Kael's last shipment was 4471 series components. Are they in that range? Check."
detective: "Batch 44xx recall. Container 4471 in the manifest anomaly. Cross-reference. This could be the thread."
notes: >
High-value dual-lens trigger. Smuggler worries about operational risk; detective spots the
evidence connection. The 44xx range is intentionally ambiguous — might match, might not.
# --- Van Maanen's Star / Setting (2) — added Sprint 12, Mellanie ---
- id: ticker_028
text: "VELEN WEATHER: Coastal fog advisories in effect — Sova orbital approach window reduced, gate scheduling adjusted"
category: infrastructure
dual_lens:
smuggler: "Fog on Velen. Gate scheduling adjusted — means transit timing shifts. The window might move."
detective: "Environmental factors affecting gate operations. Adjust surveillance timing accordingly."
- id: ticker_029
text: "REACH ECONOMY: Van Maanen's Star trade volume up 7% — analysts attribute to 'informal market activity'"
category: freight
dual_lens:
smuggler: "Informal market activity. They know. The whole Reach knows. And still the demand keeps climbing."
detective: "'Informal market.' The analysts see the pattern but can't name it. I can."
- id: ticker_030
text: "ASSEMBLY: Severance technology moratorium extended — counter-surveillance devices remain Category 2 restricted"
category: politics
dual_lens:
smuggler: "Moratorium extended. Good. Severance equipment costs keep the Commission from blanketing everything."
detective: "Counter-surveillance devices still legally restricted. Anyone running them is committing a documented infraction."
@@ -0,0 +1,49 @@
# Triangle 3: Bar Tensions — mundane social friction at The Last Shift
# Passive — runs on background simulation, no storyteller intervention
canonical_id: bar-tensions
display_name: "Bar Tensions"
description: >
Mundane social friction at The Last Shift. Lera Sessik (bar owner) runs
a tight establishment. Resha (regular) has a grievance — could be about
the bar, another regular, or community politics. Pell (bartender) is
caught in the middle, trying to keep both the boss and the customers
happy. This is the 50% of life that has nothing to do with conspiracy —
the noise floor that makes investigation signal meaningful.
members:
- npc: "npc:lera-sessik"
role: "owner — mediates disputes, protects her establishment"
- npc: "npc:resha"
role: "regular — has a grievance, vocal about it"
- npc: "npc:pell"
role: "bartender — caught between boss and customers"
forks:
- id: grievance-escalation
condition: >
Resha's grievance reaches a tipping point. Lera must decide whether
to take sides or maintain neutrality. Pell gets drawn in.
outcomes:
- id: lera-sides-with-resha
description: >
Lera validates Resha's complaint. Pell adjusts service accordingly.
Social dynamics shift — Resha becomes more central, the bar's
atmosphere changes slightly.
effects:
- "resha.behavior_flags += vindicated"
- "pell.behavior_flags += accommodating"
- "bar atmosphere = tense but resolving"
- id: lera-shuts-it-down
description: >
Lera tells Resha to drop it. Her bar, her rules. Resha sulks.
Pell is relieved. The grievance goes underground.
effects:
- "resha.behavior_flags += resentful,quiet"
- "pell.behavior_flags += relieved"
- "bar atmosphere = business as usual"
resolution_states:
- id: grievance-resolved
description: The dispute is settled one way or another. Normal bar dynamics resume.
- id: grievance-simmering
description: The issue goes underground. Occasional flare-ups provide social texture.
@@ -0,0 +1,70 @@
# Triangle 1: Hub Power — workplace hierarchy under ring pressure
# Active fork — smuggler decision (3 paths, self-contained per D-053/A-17)
canonical_id: hub-power
display_name: "Hub Power"
description: >
Workplace hierarchy tension at The Terminal. Voss (shift supervisor) has
positional authority but takes operational orders from the ring. Kael
(dock worker, THE FRIEND) is caught between his boss and the ring's demands.
Maret (freight scheduler) sees manifest discrepancies and doesn't know
whom to tell. The triangle's resting tension: Voss needs quiet, Kael
needs everything to hold together, Maret is too smart not to notice.
members:
- npc: "npc:voss"
role: "authority — shift supervisor with ring complicity"
- npc: "npc:kael-davan"
role: "subordinate — dock worker, ring member, caught between boss and ring"
- npc: "npc:maret-korr"
role: "caught-between — freight scheduler who sees the discrepancies"
forks:
- id: volume-escalation
condition: >
Ring demands double-volume shipment via intermediary. Smuggler
must decide how to handle the pressure on Voss and Kael.
outcomes:
- id: escalate
description: >
Side with ring (escalate). Convince Voss to widen the shift gap.
Investigation accelerates — manifest discrepancies spike, Voss
becomes visibly anxious. Detective reads organizational stress.
effects:
- "voss.behavior_flags += nervous,schedule_changes,evasive"
- "voss.position_integrity = thin"
- "ring.exposure_risk increases"
- "detective.investigation_pace = accelerated"
- id: stabilize
description: >
Side with Voss (stabilize). Reject or delay the double shipment.
Hub runs quiet but Kael absorbs redirected pressure from ring
coordinator. Detective reads personal stress on Kael instead.
effects:
- "kael.behavior_flags += lattice_checking,distracted,evasive"
- "kael.trust_level (from ring) drops"
- "friend_arc timing = accelerated"
- "detective.investigation_pace = slowed"
- id: mediate
description: >
Compromise — half volume, phased across two shipments. Nobody's
happy, nobody's exposed. Detective reads inconsistent operational
tempo. Creates a deferred second decision point.
effects:
- "ring.exposure_risk = moderate"
- "smuggler.operational_trust (from ring) drops"
- "kael.behavior_flags += uncertain,distracted"
- "detective reads organizational confusion"
resolution_states:
- id: ring-exposed-via-voss
description: >
Voss's anxiety becomes the detective's thread to pull. Investigation
arrives at the ring through institutional signals.
- id: ring-exposed-via-kael
description: >
Kael's personal strain becomes the detective's signal. Investigation
arrives through behavioral tells on THE FRIEND.
- id: ring-exposed-via-inconsistency
description: >
Irregular operational tempo reveals internal disagreement. Detective
infers organizational structure from pattern disruption.
@@ -0,0 +1,68 @@
# Triangle 5: Worried Partner — ring pressure on personal relationships
# Passive tension (D-087) — background pressure, not a direct player decision point
canonical_id: worried-partner
display_name: "Worried Partner"
classification: passive_tension
description: >
Kael Davan (dock worker, ring member, smuggler's FRIEND) is under
increasing ring pressure from Devra (ring coordinator). Naia Tamm
(Kael's partner) is worried about his late nights and evasive answers.
The smuggler knows why Kael is busy and can't say. This is the most
emotionally loaded triangle — it connects THE FRIEND's contradiction
arc to personal relationships. If Naia asks the smuggler directly,
there's no good answer.
members:
- npc: "npc:kael-davan"
role: "partner under pressure — ring work destroying home life"
- npc: "npc:naia-tamm"
role: "worried — sees the changes, doesn't understand the cause"
- npc: "npc:devra"
role: "cause — ring coordinator whose demands increase Kael's burden"
forks:
- id: naia-confronts
condition: >
Naia's worry reaches a threshold. She confronts Kael directly, or
asks the smuggler what's going on. The smuggler faces a loyalty test.
outcomes:
- id: smuggler-deflects
description: >
Smuggler deflects Naia's questions. Protects Kael's cover but
damages trust with Naia. Kael is grateful but the lie costs.
effects:
- "naia.trust_level (toward smuggler) drops"
- "kael.behavior_flags += relieved,guilty"
- "smuggler.moral_weight (toward naia) = complicit"
- id: smuggler-hints
description: >
Smuggler gives Naia a partial truth — Kael's under work pressure,
it'll pass. Not a lie, but not the truth. Naia is temporarily
reassured but the pattern continues.
effects:
- "naia.behavior_flags += cautiously_reassured"
- "kael.behavior_flags += unaware"
- "smuggler.moral_weight (toward naia) = peripheral"
- id: kael-snaps
description: >
Before the smuggler can intervene, Kael snaps at Naia under
pressure. The argument is public enough to be observed. Devra's
pressure has become visible through personal fallout.
effects:
- "kael.behavior_flags += agitated,public_argument"
- "naia.behavior_flags += hurt,withdrawn"
- "detective observes domestic stress (behavioral signal)"
resolution_states:
- id: relationship-strained
description: >
Kael and Naia's relationship is visibly strained. The domestic
tension becomes an observable signal for the detective.
- id: temporary-calm
description: >
The immediate crisis passes but the underlying cause remains.
Another confrontation is inevitable.
- id: naia-investigates
description: >
Naia starts looking into Kael's activities independently. She
becomes a potential variable the ring didn't account for.
@@ -0,0 +1,7 @@
# Station Sova metadata (D-036)
display_name: "Station Sova"
description: >
A freight logistics station in Van Maanen's Star. 40-year-old prefab-modular
facility serving the span gate's cargo throughput. ~12,000 population.
districts:
- "transit"
@@ -0,0 +1,8 @@
# Van Maanen's Star metadata (D-036)
display_name: "Van Maanen's Star"
description: >
A mid-tier system connected via the Sova span gate. Industrial economy
centered on freight logistics and lattice component trade. ~2.4M population,
~180 years settled.
stations:
- "sova"