From 4d0e3d0f319ac3bf78442d50960fe230fb4f0a67 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Fri, 13 Mar 2026 14:45:21 +0100 Subject: [PATCH 01/28] docs(docs): add description field to wiki templates and character exemplar All 14 wiki templates now include a `description` frontmatter field for context-aware document loading. Agents can filter by description before loading full files, reducing context window pressure. Added character-exemplar.md preserving the Kael Davan Tier 1 profile as generator quality target (D-122). Updated GOVERNANCE.md to document the new field in the entry creation workflow. Co-Authored-By: Claude Opus 4.6 --- wiki/GOVERNANCE.md | 7 +- wiki/_templates/character-exemplar.md | 347 ++++++++++++++++++++++++++ wiki/_templates/character.md | 1 + wiki/_templates/concept.md | 1 + wiki/_templates/contraband.md | 1 + wiki/_templates/cultural-group.md | 1 + wiki/_templates/district.md | 1 + wiki/_templates/faction.md | 1 + wiki/_templates/institution.md | 1 + wiki/_templates/location.md | 1 + wiki/_templates/lore.md | 1 + wiki/_templates/species.md | 1 + wiki/_templates/star-system.md | 1 + wiki/_templates/station.md | 1 + wiki/_templates/technology.md | 1 + wiki/_templates/triangle.md | 1 + 16 files changed, 365 insertions(+), 3 deletions(-) create mode 100644 wiki/_templates/character-exemplar.md diff --git a/wiki/GOVERNANCE.md b/wiki/GOVERNANCE.md index 2098ebaef..905bc73d1 100644 --- a/wiki/GOVERNANCE.md +++ b/wiki/GOVERNANCE.md @@ -25,9 +25,10 @@ Every wiki entry has a `status` field in its YAML frontmatter: 1. Copy the appropriate template from `_templates/` 2. Fill in the YAML frontmatter (all fields) -3. Set `status: proposed` -4. Write the content following the template structure -5. Submit for review +3. Write a concise `description` — one line that captures what makes this entry distinct. This field enables context-aware loading (agents filter by description before loading full files). +4. Set `status: proposed` +5. Write the content following the template structure +6. Submit for review **Templates available:** `star-system`, `station`, `district`, `location`, `character`, `faction`, `technology`, `cultural-group`, `contraband`, `institution`, `species`, `lore`, `concept`, `triangle` diff --git a/wiki/_templates/character-exemplar.md b/wiki/_templates/character-exemplar.md new file mode 100644 index 000000000..221412836 --- /dev/null +++ b/wiki/_templates/character-exemplar.md @@ -0,0 +1,347 @@ +--- +title: "Kael Davan" +description: "EXEMPLAR — Tier 1 FRIEND (smuggler), dock worker entangled in smuggling ring. Use as reference for generator output quality." +slug: kael-davan +canonical_id: "npc:kael-davan" +category: character +status: exemplar +created: 2026-02-12 +updated: 2026-03-13 +tier: 1 +pattern: "FRIEND" +motivation: "OPERATOR" +social_sites: [logistics-hub, smuggling-ring] +entanglement: "Entangled" +triangles: [hub-power, worried-partner] +home_district: transit +tags: [generator-exemplar] +decision_refs: [D-024, D-034, D-122] +cross_refs: [nils-davan, naia-tamm, sera-venn, voss, renn] +--- + + + +# Kael Davan — THE FRIEND (Smuggler) + +**Tier 1 Production-Level NPC** | Logistics Hub + Smuggling Ring | Entangled + +--- + +## Core Identity + +**Name**: Kael Davan +**Age**: 34 +**Role**: Dock worker, Sova Transit District Logistics Hub +**System Origin**: Krenn System, born on Station Sova +**Cultural Group**: Krenn System culture (compact names, first-name-primary, pragmatic, mind-your-business ethos) +**Lattice Tier**: Baseline +**Employer**: Sova Logistics Consortium (legitimate cover); The Arrangement (smuggling ring, informal) + +--- + +## 10-Axis Profile + +### 1. Want + +**Primary**: Protect the operation and the people in it. + +Kael didn't join the ring for ideology or ambition. He joined because Nils (his older sibling) asked, because the money helped, and because it felt manageable. Two years in, Kael is good at it — efficient, careful, reliable. But the operation is escalating (higher volume, tighter margins, more risk), and Kael's Want is shifting from "keep things running" to "keep people safe." + +**Secondary**: Protect Naia (partner) from the truth and the consequences. + +Naia doesn't know about the smuggling. Kael's late nights and evasive answers are creating anxiety at home. Kael Wants to shield Naia from danger, but the shielding itself is the danger. + +--- + +### 2. Secret / Vulnerability + +**Surface secret** (smuggler knows, detective suspects): Ring member. Handles physical cargo — routing flagged containers, managing dock-side handoffs. + +**Deep secret** (nobody knows except the unknown contact): Kael is trying to **exit the ring**. Naia's worry has become unbearable. Kael contacted someone from a different district (not Sabel, not anyone the ring knows) who's offered to help Kael get out — for a price. The unknown contact is leverage (they know Kael is in the ring), extraction support (they have connections), and a massive security breach (unauthorized contact is grounds for ring elimination). + +**Vulnerability**: The exit attempt. If Nils finds out, Kael is out — violently. If the smuggler (if playing ring-member path) finds out, trust collapses. If the detective finds out, Kael is the perfect informant (desperate, motivated, already halfway to cooperation). + +--- + +### 3. Relationships + +**Relationship 1: Nils Davan** (older sibling, ring coordinator) +- **Type**: Blood loyalty, complicated by power dynamic +- **History**: Nils brought Kael into the ring. "It's just moving containers. You're good at logistics. We take care of our own." +- **Current tension**: Nils is pushing for higher volume. Kael thinks it's too fast, too risky. Kael can't say no to Nils (family), but resents being pushed. +- **Mechanical relevance**: If Kael's exit attempt is discovered, Nils is the primary threat. + +**Relationship 2: Naia** (partner, teacher, civilian) +- **Type**: Domestic partnership, 6 years +- **History**: Met at a community event. Naia teaches station kids, represents ordinary life, stability, the future Kael wants but smuggling threatens. +- **Current tension**: Naia knows something's wrong. The late nights, the evasive answers, the money that doesn't quite track. Naia has confided in Sera (friend, Commission field tech). Kael is oblivious to how much anxiety he's causing. +- **Mechanical relevance**: Naia is Kael's emotional anchor and his vulnerability. Threaten Naia, Kael breaks. + +**Relationship 3: The Smuggler** (if smuggler is playing ring-member path) +- **Type**: Close colleague, trusted friend, shared risk +- **History**: Work together on legitimate shifts AND ring operations. Cover for each other. Share lunch, drinks at Lera's, the easy camaraderie of people who've been through things together. +- **Current tension**: Kael is lying to the smuggler. The unauthorized contact, the exit attempt — all of it is concealed. The smuggler trusts Kael completely, which makes the betrayal worse when discovered. +- **Mechanical relevance**: THE FRIEND. The relationship phase arc (warmth → trust → doubt → conflict) plays out here. + +--- + +### 4. Tolerance Threshold + +**Moderate** — Kael can handle pressure, but has limits. + +**What Kael tolerates**: +- Routine smuggling operations (manageable risk) +- Voss's resentment and Nils's demands (family and operational necessity) +- Lying to Naia (hates it, but does it to protect) + +**What pushes Kael toward breaking**: +- Escalating volume (feels like the operation is spiraling) +- Naia's increasing worry (guilt accumulation) +- The detective's investigation (paranoia about exposure) + +**What breaks Kael**: +- Direct threat to Naia (if the ring or the detective uses Naia as leverage, Kael flips immediately) +- Nils discovering the exit attempt (Kael either runs or fights, no middle ground) + +--- + +### 5. Daily Routine + +**06:00 - 06:30**: Arrive at Logistics Hub, shift startup +**06:30 - 10:30**: Morning shift, freight handling (legitimate work) +**10:30 - 11:00**: Break room, lunch with smuggler (if applicable) or other dock workers +**11:00 - 14:00**: Afternoon shift +**14:00 - 14:30**: Shift end, sometimes lingers for "overtime" (ring operations during transition window) +**14:30 - 16:00**: Off-shift, heads home or to The Last Shift (bar) +**16:00 - 22:00**: Home with Naia, or occasional ring coordination meetings (Corridor B-7, back room) +**22:00+**: Late-night ring operations (1-2x per week, during night shift transition) + +**Routine deviations** (tells): +- Increased lattice checking (nervous, expecting contact from exit coordinator) +- Shortened social interactions (distracted, avoiding prolonged conversation) +- Late arrivals home (Naia notices, worries) +- Unauthorized presence in Corridor B-7 (the contradiction discovery moment for smuggler) + +--- + +### 6. Information Inventory + +**Knows** (KnowsDetails or Direct): +- Ring structure: Nils coordinates, Voss provides scheduling cover, Renn handles courier work, Lera provides handoff point, Devra manages external contacts +- Smuggling routes: freight bay → service corridor → temp storage → bar back room +- Shift schedules and coverage gaps (operational knowledge) +- Manifest doctoring process (Maret processes, Voss approves) +- Drin's compromise (gambling debt to Harek, looks away during inspections) +- Naia's worry (knows Naia suspects something, doesn't know Naia talked to Sera) + +**Doesn't know**: +- The detective is investigating (unless playing detective path and Kael has been flagged) +- Sera is sitting on unreported evidence about Kael's manifest discrepancies (protects Naia by not reporting) +- Pell is considering turning informant (internal ring threat) +- The full supply chain (Kael knows cargo comes from Sabel off-station, doesn't know upstream Syndic sources) + +--- + +### 7. Contentment + +**Moderate-low** (D-024 thematic axis). + +Kael is *comfortable enough to function* but not happy. The smuggling pays well, the work is manageable, the team (Nils, smuggler, Renn) is solid. But the guilt about lying to Naia is corrosive. The escalating volume makes every shift feel riskier. The exit attempt is itself a contentment signal: Kael wants out because "enough" isn't enough anymore — the cost is too high. + +**Contentment trajectory**: Declining. Two years ago, Kael was moderate (the operation was stable, Naia didn't suspect). Now, Kael is low and falling. The exit attempt is a desperate grab for a future that doesn't involve looking over his shoulder. + +--- + +### 8. Personality Traits + +**Primary: Loyal** — to people, not institutions. Kael's loyalty is personal (Nils, Naia, the smuggler) and situational (the ring, because the people he cares about are in it). If forced to choose between the ring and a person, Kael chooses the person. + +**Secondary: Protective** — defaults to shielding others from consequences. Lies to Naia to protect. Tries to exit the ring to protect Naia from future fallout. Would cover for the smuggler even at personal cost. + +**Tertiary: Pragmatic** — doesn't waste words, doesn't dramatize. Handles problems as they arise. The exit attempt is Kael being pragmatic: "This situation is unsustainable. I need a way out. I'll find one." + +--- + +### 9. Tell System + +**Observable behavioral changes that signal Kael's internal state:** + +| Tell | Trigger | Observable To | Mechanical Flag | +|------|---------|---------------|-----------------| +| **Increased lattice checking** | Expecting contact from exit coordinator | Smuggler (if observant), Detective (if tracking behavioral patterns) | `behavior_flags: lattice_checking` | +| **Shortened social interactions** | Distracted, avoiding prolonged conversation where lies might surface | Smuggler, Naia, bar regulars | `behavior_flags: distracted,evasive` | +| **Looks left before answering** | Lying or deflecting (Kael's personal tell, smuggler knows this from history) | Smuggler (recognizes the tell from experience) | `tell_observed: looks_left_when_lying` | +| **Unauthorized spatial presence** | Meeting unknown contact in Corridor B-7 (restricted area, not part of normal routine) | Smuggler (direct observation), Detective (if surveillance active) | `contradiction_flagged: meeting_unknown_contact` | + +**Tell progression** (smuggler's perspective): +1. **Week 1-2** (baseline): Kael is normal. Reliable, warm, punctual. +2. **Week 3** (first crack): Kael checks lattice more often. Smuggler monologue: "Kael's distracted today. Probably nothing." +3. **Week 4** (pattern): Shortened lunch conversations. Kael excuses himself early. Smuggler monologue: "Kael's been quiet lately." +4. **Week 5** (the observation): Smuggler sees Kael in Corridor B-7, talking to unknown person. THE FRIEND contradiction discovered. Smuggler monologue: "That wasn't anyone from our rotation. Kael, what are you doing?" + +--- + +### 10. Skill Set + +**Occupational**: Freight logistics, cargo handling, manifest reading, shift coordination. + +**Ring-relevant**: Container routing, timing coordination (knows when surveillance gaps occur), physical cargo movement (lifts, secures, reroutes). + +**Combat tag**: **No**. Kael is not combat-trained. If cornered, Kael runs or capitulates. Violence is not part of Kael's skill set or personality. + +**Lattice capability**: Baseline tier. No enhanced perception, no analytical overlays. Kael uses lattice for communication, shift schedules, and routine queries. + +--- + +## Backstory + +Born on Station Sova. Grew up in the freight district — child of logistics workers, pragmatic Krenn System upbringing. Joined Sova Logistics Consortium at 22, worked the docks for a decade before Nils (older sibling, always more ambitious) brought him into the ring. "It's just moving containers, Kael. You're good at this. We take care of our own." Two years in, Kael is good at it — efficient, careful, trusted. But the operation is escalating, Naia is worried, and Kael realizes he's in deeper than he intended. The exit attempt is Kael trying to reclaim a future that doesn't end in a cell or worse. + +--- + +## Voice Sample + +**Mood: Casual (baseline, smuggler interaction)** +- *"Shift's looking smooth today. Freight's on schedule, no surprises. Let's keep it that way."* + +**Mood: Protective (deflecting Naia's worry)** +- *"I'm fine, Naia. Just work stuff. Long shifts, you know how it is. Don't worry about me."* + +**Mood: Evasive (post-contradiction, smuggler pressing)** +- *"It's nothing. Just a thing. Don't worry about it."* [Looks left before answering — the tell] + +**Mood: Desperate (if cornered by detective or Nils)** +- *"You don't understand. I'm trying to protect someone. If I don't get out, they're at risk. I can't— I can't keep doing this."* + +**Mood: Warm (to smuggler, early game)** +- *"There you are. Good — I was starting to worry. Ready for another day of making the galaxy's freight move?"* [Slight smile, genuine relief] + +--- + +## Dual-Lens Notes + +### How the Smuggler Sees Kael + +**Access tier**: Insider + Peer (if ring-member path) OR Peer (if non-ring civilian smuggler) +**Relationship**: Friendly (baseline) → PersonOfInterest (post-contradiction) +**Monologue tone (baseline)**: Fond, casual. *"Kael's here. Good — always reliable."* +**Monologue tone (post-contradiction)**: Conflicted, analytical. *"Kael's lying to me. I know his tells. What are you hiding?"* + +**What the smuggler knows that the detective doesn't**: Kael is a ring member (if smuggler is also in the ring). Kael's personal tell (looks left when lying). Kael's relationship with Naia. The unauthorized meeting is a *betrayal of operational security*, not just suspicious behavior. + +**Emotional weight**: Maximum. Kael is THE FRIEND. The color shift from green to amber is the moment the smuggler realizes trust has been compromised. + +--- + +### How the Detective Sees Kael + +**Access tier**: Public (baseline) → Authority (if investigation escalates and detective pressures Kael) +**Relationship**: Unknown → Known → PersonOfInterest (if tells accumulate) +**Monologue tone (baseline)**: Clinical, observational. *"Dock worker. Davan, K. Unremarkable on paper."* +**Monologue tone (post-tells)**: Analytical suspicion. *"Davan's nervous. Lattice activity spiked. Behavioral pattern suggests concealment."* + +**What the detective knows that the smuggler doesn't**: Manifest discrepancies tied to Kael's shifts (if Sera has shared or detective has analyzed logs). Naia's worry (if detective talks to Naia or Sera). Kael as a pressure point — partner at risk, potential informant. + +**Emotional weight**: Low initially (just another dock worker). High if Kael becomes the key to cracking the ring (the detective's professional satisfaction vs. Kael's desperation creates tension, but not personal betrayal). + +--- + +## Triangle Roles + +### Hub Power (Voss - Kael - Nils) + +**Kael's function**: The executor. Kael handles the physical work — routing containers, managing dock-side operations. Caught between Voss (shift supervisor, resentful of being managed) and Nils (ring coordinator, Kael's sibling, pushing for escalation). + +**Pressure**: Voss complains to Kael about Nils. Nils gives Kael orders. Kael has to keep both satisfied while doing the actual smuggling work. + +**Player relevance**: Smuggler (if in ring) helps Kael navigate this. Detective sees Kael as efficient and wonders why Voss seems nervous around him. + +--- + +### Worried Partner (Naia - Kael - Sera) + +**Kael's function**: The oblivious cause. Kael's smuggling (late nights, evasive answers) is making Naia worried. Naia confides in Sera. Sera knows enough to connect Kael to the investigation but hasn't reported (loyalty to Naia). Kael doesn't know Naia talked to Sera. + +**Pressure**: Naia's worry is escalating. If Naia confronts Kael directly, Kael has to lie or confess. If Sera reports, Naia's life explodes. Kael is trying to exit the ring to stop the worry, but the exit attempt is itself creating more risk. + +**Player relevance**: Smuggler (if Kael's friend) knows why Kael is busy, can't tell Naia. Detective (if Sera's friend) might hear about Naia's worry from Sera, creating a path to Kael. + +--- + +## Contradiction Arc + +### Phase 1: Comfort (Friendly, baseline) + +**Timing**: 0-10 minutes (game start) +**Observable behavior**: Kael is warm, reliable, present. Greets the smuggler with genuine affection. +**Monologue (smuggler)**: *"Kael's already at the dock. Good. The day's better when he's on shift."* +**Color**: Soft green (Friendly) +**Tell**: None — baseline normal. + +### Phase 2: First Crack (still Friendly, but flags accumulating) + +**Timing**: 10-15 minutes +**Observable behavior**: Kael checks lattice more often than usual. Excuses himself from lunch early. +**Monologue (smuggler)**: *"Kael's distracted today. Probably nothing."* +**Color**: Still green, but `behavior_flags` update to `"lattice_checking,distracted"`. +**Tell**: **Increased lattice checking** (observable if smuggler pays attention). + +### Phase 3: The Observation (Friendly → PersonOfInterest) + +**Timing**: 15-20 minutes +**Trigger**: The smuggler sees Kael in Corridor B-7 talking to an unknown person. +**Monologue (smuggler)**: *"That wasn't anyone from our rotation. And Kael didn't tell me about a meeting. What's going on?"* +**Color shift**: Soft green → amber. **This is the emotional moment.** + +### Phase 4: Confrontation Opportunity (PersonOfInterest, dialogue shift) + +**Timing**: 20-25 minutes +**Trigger**: Smuggler can ask Kael about the meeting. +**Kael's response** (deflection): *"Just a thing. Don't worry about it."* [Looks left — **the tell**] +**Monologue (smuggler)**: *"He looked left. He always looks left when he's making something up. Kael is lying to me."* + +### Phase 5: New Equilibrium (PersonOfInterest, contaminated trust) + +**Timing**: 25-30 minutes +**Observable behavior**: Kael acts normal again. But the smuggler is now **watching**. +**Monologue (smuggler)**: *"Same old Kael. Laughing at the same jokes. ...What are you not telling me?"* + +**Dialogue branches**: +- **Path A (understanding)**: Smuggler confronts gently. Kael might confess. Tone shifts to sympathetic. +- **Path B (betrayal)**: Smuggler reports to Nils. Kael turns hostile. +- **Path C (observation)**: Smuggler watches silently. Tension simmers. + +--- + +## Authoring Notes + +- **Kael's voice**: Direct, practical, short sentences. Doesn't waste words. Uses first names. Warm to people he trusts, evasive when hiding something. +- **The tell** (looks left when lying) must be established early in casual dialogue so the smuggler (and player) recognize it during the contradiction. +- **Naia references**: Kael mentions Naia in casual conversation ("Naia's got a school event tonight, so I'm heading home early"). Establishes the relationship before it becomes load-bearing. +- **Ring operations dialogue** (if smuggler is in ring): Matter-of-fact, operational. "Container 4471 is flagged. I'll reroute it during shift transition." No drama, no theatrics. +- **Deflection dialogue** (post-contradiction): Kael doesn't lie outright. Kael deflects: "It's handled." "Don't worry about it." "Just work stuff." The evasion itself is the tell. +- **Dual-lens discipline**: Every Kael line must work for BOTH the smuggler (who knows Kael personally) AND the detective (who reads Kael analytically). The same sentence lands differently per character. + +--- + +## Pattern / Motivation + +**Pattern (System A):** FRIEND — Trust anchor whose relationship with the player is the emotional core. The FRIEND pattern means betrayal carries maximum emotional weight. +**Motivation (System B):** OPERATOR — Runs ring cargo at the dock level. Routes containers, manages handoffs, coordinates timing. + +**Composition read:** FRIEND + OPERATOR creates the identity betrayal: "I was your friend AND your co-conspirator." The player trusted Kael as a person (FRIEND) while relying on Kael as a functional colleague (OPERATOR). When the contradiction surfaces, the betrayal cuts both relationships simultaneously. diff --git a/wiki/_templates/character.md b/wiki/_templates/character.md index 1fb8b8e1e..52ffa2d4b 100644 --- a/wiki/_templates/character.md +++ b/wiki/_templates/character.md @@ -1,5 +1,6 @@ --- title: "" # Display name (e.g., "Kael Davan") +description: "" # One-line summary for context filtering (e.g., "Tier 1 detective NPC, central to Hub Power triangle") slug: "" # URL-safe identifier (e.g., "kael-davan") canonical_id: "" # e.g., "npc:kael-davan" category: character diff --git a/wiki/_templates/concept.md b/wiki/_templates/concept.md index 43c9f05cf..7c6855db4 100644 --- a/wiki/_templates/concept.md +++ b/wiki/_templates/concept.md @@ -1,5 +1,6 @@ --- title: "" # Display name (e.g., "Knowledge Graph") +description: "" # One-line summary for context filtering (e.g., "Per-character fact tracking system driving asymmetric information gameplay") slug: "" # URL-safe identifier category: concept status: proposed # proposed | draft | canonical diff --git a/wiki/_templates/contraband.md b/wiki/_templates/contraband.md index 2fc1eb1a1..78e7210a0 100644 --- a/wiki/_templates/contraband.md +++ b/wiki/_templates/contraband.md @@ -1,5 +1,6 @@ --- title: "" # Display name (e.g., "Unlicensed Lattice Components") +description: "" # One-line summary for context filtering (e.g., "Black market neural lattice parts with medical and enhancement applications") slug: "" # URL-safe identifier (e.g., "lattice-components") category: contraband status: proposed # proposed | draft | canonical diff --git a/wiki/_templates/cultural-group.md b/wiki/_templates/cultural-group.md index 671db6418..eeba80a44 100644 --- a/wiki/_templates/cultural-group.md +++ b/wiki/_templates/cultural-group.md @@ -1,5 +1,6 @@ --- title: "" # Display name (e.g., "Krenn System Culture") +description: "" # One-line summary for context filtering (e.g., "Industrial frontier culture valuing self-reliance and practical skills") slug: "" # URL-safe identifier (e.g., "krenn-system") category: cultural-group status: proposed # proposed | draft | canonical diff --git a/wiki/_templates/district.md b/wiki/_templates/district.md index 6183b19a7..9e693b78c 100644 --- a/wiki/_templates/district.md +++ b/wiki/_templates/district.md @@ -1,5 +1,6 @@ --- title: "" # Display name (e.g., "Sova Transit District") +description: "" # One-line summary for context filtering (e.g., "Main logistics hub of Station Sova, 12 social sites, high NPC density") slug: "" # URL-safe identifier (e.g., "transit") category: district status: proposed # proposed | draft | canonical diff --git a/wiki/_templates/faction.md b/wiki/_templates/faction.md index cd8001869..5d46b975c 100644 --- a/wiki/_templates/faction.md +++ b/wiki/_templates/faction.md @@ -1,5 +1,6 @@ --- title: "" # Display name (e.g., "The Ring") +description: "" # One-line summary for context filtering (e.g., "Criminal syndicate controlling contraband flow through Transit District") slug: "" # URL-safe identifier (e.g., "the-ring") category: faction status: proposed # proposed | draft | canonical diff --git a/wiki/_templates/institution.md b/wiki/_templates/institution.md index dd56fb1c8..0634e26cb 100644 --- a/wiki/_templates/institution.md +++ b/wiki/_templates/institution.md @@ -1,5 +1,6 @@ --- title: "" # Display name (e.g., "Krenn System Administrator's Office") +description: "" # One-line summary for context filtering (e.g., "Local government office overseeing system-level administration and permits") slug: "" # URL-safe identifier category: institution status: proposed # proposed | draft | canonical diff --git a/wiki/_templates/location.md b/wiki/_templates/location.md index bb293e8f2..c22a9374d 100644 --- a/wiki/_templates/location.md +++ b/wiki/_templates/location.md @@ -1,5 +1,6 @@ --- title: "" # Display name (e.g., "The Terminal") +description: "" # One-line summary for context filtering (e.g., "Main transport hub with high NPC traffic and open sightlines") slug: "" # URL-safe identifier (e.g., "the-terminal") category: location status: proposed # proposed | draft | canonical diff --git a/wiki/_templates/lore.md b/wiki/_templates/lore.md index 2a26c07de..6f41d0104 100644 --- a/wiki/_templates/lore.md +++ b/wiki/_templates/lore.md @@ -1,5 +1,6 @@ --- title: "" # Display name (e.g., "The Founding of the Settled Reach") +description: "" # One-line summary for context filtering (e.g., "Origin story of human expansion through the Horizon Gate network") slug: "" # URL-safe identifier category: lore status: proposed # proposed | draft | canonical diff --git a/wiki/_templates/species.md b/wiki/_templates/species.md index 071a04555..1e3ec9e1f 100644 --- a/wiki/_templates/species.md +++ b/wiki/_templates/species.md @@ -1,5 +1,6 @@ --- title: "" # Display name (e.g., "Human (Baseline)") +description: "" # One-line summary for context filtering (e.g., "Unaugmented human baseline, dominant species in the Settled Reach") slug: "" # URL-safe identifier category: species status: proposed # proposed | draft | canonical diff --git a/wiki/_templates/star-system.md b/wiki/_templates/star-system.md index a20e90547..6d5a443d7 100644 --- a/wiki/_templates/star-system.md +++ b/wiki/_templates/star-system.md @@ -1,5 +1,6 @@ --- title: "" # Display name (e.g., "Krenn System") +description: "" # One-line summary for context filtering (e.g., "Industrial frontier system, home to Station Sova, first playable location") slug: "" # URL-safe identifier (e.g., "krenn") category: star-system status: proposed # proposed | draft | canonical diff --git a/wiki/_templates/station.md b/wiki/_templates/station.md index 7555efb58..d57604cba 100644 --- a/wiki/_templates/station.md +++ b/wiki/_templates/station.md @@ -1,5 +1,6 @@ --- title: "" # Display name (e.g., "Station Sova") +description: "" # One-line summary for context filtering (e.g., "Primary logistics station in Krenn System, 3 districts, mixed-use") slug: "" # URL-safe identifier (e.g., "sova") category: station status: proposed # proposed | draft | canonical diff --git a/wiki/_templates/technology.md b/wiki/_templates/technology.md index 0a66e3137..b66e13f93 100644 --- a/wiki/_templates/technology.md +++ b/wiki/_templates/technology.md @@ -1,5 +1,6 @@ --- title: "" # Display name (e.g., "Neural Lattice") +description: "" # One-line summary for context filtering (e.g., "Brain-computer interface enabling cognitive augmentation and information access") slug: "" # URL-safe identifier (e.g., "neural-lattice") category: technology status: proposed # proposed | draft | canonical diff --git a/wiki/_templates/triangle.md b/wiki/_templates/triangle.md index 15d0b3542..f9e04941d 100644 --- a/wiki/_templates/triangle.md +++ b/wiki/_templates/triangle.md @@ -1,5 +1,6 @@ --- title: "" # Display name (e.g., "Hub Power") +description: "" # One-line summary for context filtering (e.g., "Three-way power struggle over Transit District logistics control") slug: "" # URL-safe identifier (e.g., "hub-power") category: triangle status: proposed # proposed | draft | canonical From e496a99b569ca83e7a627c84fee2a143420d4072 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Fri, 13 Mar 2026 14:45:33 +0100 Subject: [PATCH 02/28] docs(docs): add description frontmatter to all wiki entries Every wiki entry now has a one-line description field for context-aware loading. Covers factions, technology, concepts, contraband, locations, star-systems, authoring guides, and triangles (29 files). Co-Authored-By: Claude Opus 4.6 --- wiki/authoring/environmental-text-examples.md | 1 + wiki/authoring/monologue-guide.md | 1 + wiki/concepts/entity-attributes.md | 1 + wiki/concepts/fact-catalog.md | 1 + wiki/concepts/relationship-states.md | 1 + wiki/contraband/lattice-components.md | 1 + wiki/contraband/medical-grade-replacements.md | 1 + wiki/contraband/severance-equipment.md | 1 + wiki/factions/concord-assembly.md | 1 + wiki/factions/guardians-of-autonomy.md | 1 + wiki/factions/lattice-commission.md | 1 + wiki/factions/syndics.md | 1 + wiki/factions/the-ring.md | 1 + wiki/factions/the-unbound.md | 1 + wiki/factions/veil-institute.md | 1 + wiki/index.md | 1 + wiki/star-systems/krenn/index.md | 1 + wiki/star-systems/krenn/sova/index.md | 1 + wiki/star-systems/krenn/sova/transit/index.md | 1 + wiki/star-systems/krenn/sova/transit/maintenance-corridors.md | 1 + wiki/star-systems/krenn/sova/transit/the-last-shift.md | 1 + wiki/star-systems/krenn/sova/transit/the-terminal.md | 1 + wiki/technology/clone-transfer.md | 1 + wiki/technology/founder-gates.md | 1 + wiki/technology/meridian.md | 1 + wiki/technology/neural-lattice.md | 1 + wiki/technology/severance-tech.md | 1 + wiki/technology/span-gates.md | 1 + wiki/triangles/hub-power.md | 1 + 29 files changed, 29 insertions(+) diff --git a/wiki/authoring/environmental-text-examples.md b/wiki/authoring/environmental-text-examples.md index 1d63bcb75..b2e7d3e5f 100644 --- a/wiki/authoring/environmental-text-examples.md +++ b/wiki/authoring/environmental-text-examples.md @@ -1,5 +1,6 @@ --- title: "Environmental Text Examples" +description: "Worked examples of diegetic environmental text — bar menus, safety notices, news tickers, corridor graffiti — with dual-lens monologue pairings" slug: environmental-text-examples category: authoring-guide status: canonical diff --git a/wiki/authoring/monologue-guide.md b/wiki/authoring/monologue-guide.md index 1461f2508..5d5a15d61 100644 --- a/wiki/authoring/monologue-guide.md +++ b/wiki/authoring/monologue-guide.md @@ -1,5 +1,6 @@ --- title: "Monologue Authoring Guide" +description: "How to write tagged monologue and dialogue content — tag taxonomy, prerequisite format, situation overlap rules, and voice discipline" slug: monologue-guide category: authoring-guide status: canonical diff --git a/wiki/concepts/entity-attributes.md b/wiki/concepts/entity-attributes.md index d7dc47a0e..ef3207a50 100644 --- a/wiki/concepts/entity-attributes.md +++ b/wiki/concepts/entity-attributes.md @@ -1,5 +1,6 @@ --- title: "Entity Knowledge Attributes" +description: "Canonical keys for EntityKnowledge.known_attributes — 16 keys covering identity, social, behavioral, leverage, investigation, and role-perspective data" slug: entity-attributes category: concept status: canonical diff --git a/wiki/concepts/fact-catalog.md b/wiki/concepts/fact-catalog.md index 9835a3965..9cff377c6 100644 --- a/wiki/concepts/fact-catalog.md +++ b/wiki/concepts/fact-catalog.md @@ -1,5 +1,6 @@ --- title: "Knowledge Fact Catalog" +description: "All 27 canonical FactIds for v0.1 with confidence progressions, smuggler/detective starting levels, and mechanical purposes" slug: fact-catalog category: concept status: canonical diff --git a/wiki/concepts/relationship-states.md b/wiki/concepts/relationship-states.md index e198043e8..7d57d0710 100644 --- a/wiki/concepts/relationship-states.md +++ b/wiki/concepts/relationship-states.md @@ -1,5 +1,6 @@ --- title: "Relationship States and Transitions" +description: "Five RelationshipState values, THE FRIEND contradiction arcs, KnowledgeState integration, and dialogue access tier filtering" slug: relationship-states category: concept status: canonical diff --git a/wiki/contraband/lattice-components.md b/wiki/contraband/lattice-components.md index 748b0f637..929232017 100644 --- a/wiki/contraband/lattice-components.md +++ b/wiki/contraband/lattice-components.md @@ -1,5 +1,6 @@ --- title: "Lattice Components" +description: "Primary contraband — aftermarket neural lattice mods bypassing Commission certification, smuggling access rather than weapons" slug: lattice-components category: contraband status: canonical diff --git a/wiki/contraband/medical-grade-replacements.md b/wiki/contraband/medical-grade-replacements.md index 7e26ef9fb..2ee15cc7d 100644 --- a/wiki/contraband/medical-grade-replacements.md +++ b/wiki/contraband/medical-grade-replacements.md @@ -1,5 +1,6 @@ --- title: "Medical-Grade Replacements" +description: "Secondary contraband — diverted Syndic lattice replacement components providing healthcare the legitimate system gates behind cost and bureaucracy" slug: medical-grade-replacements category: contraband status: canonical diff --git a/wiki/contraband/severance-equipment.md b/wiki/contraband/severance-equipment.md index 5d1db4f6b..568382af7 100644 --- a/wiki/contraband/severance-equipment.md +++ b/wiki/contraband/severance-equipment.md @@ -1,5 +1,6 @@ --- title: "Severance Equipment" +description: "Tertiary contraband — Guardian-sourced counter-surveillance hardware that transforms a local smuggling ring into something politically connected" slug: severance-equipment category: contraband status: canonical diff --git a/wiki/factions/concord-assembly.md b/wiki/factions/concord-assembly.md index 55e8fe8ae..6b5c0387d 100644 --- a/wiki/factions/concord-assembly.md +++ b/wiki/factions/concord-assembly.md @@ -1,5 +1,6 @@ --- title: "The Concord Assembly" +description: "The Settled Reach's representative governing body — legislative authority, institutional funding, and the fragile consensus holding the Reach together" slug: concord-assembly category: faction status: canonical diff --git a/wiki/factions/guardians-of-autonomy.md b/wiki/factions/guardians-of-autonomy.md index 4d41bb04d..f4c1b51f9 100644 --- a/wiki/factions/guardians-of-autonomy.md +++ b/wiki/factions/guardians-of-autonomy.md @@ -1,5 +1,6 @@ --- title: "Guardians of Autonomy" +description: "Decentralised counter-institutional movement opposing lattice-mediated surveillance — source of Severance counter-surveillance technology" slug: guardians-of-autonomy category: faction status: canonical diff --git a/wiki/factions/lattice-commission.md b/wiki/factions/lattice-commission.md index c9ce1586e..95d193532 100644 --- a/wiki/factions/lattice-commission.md +++ b/wiki/factions/lattice-commission.md @@ -1,5 +1,6 @@ --- title: "The Lattice Commission" +description: "Regulatory body governing neural lattice technology, imprint protocols, and re-embodiment standards — the detective's employer, the smuggler's adversary" slug: lattice-commission category: faction status: canonical diff --git a/wiki/factions/syndics.md b/wiki/factions/syndics.md index fe8fca263..f0663472c 100644 --- a/wiki/factions/syndics.md +++ b/wiki/factions/syndics.md @@ -1,5 +1,6 @@ --- title: "The Syndics" +description: "Network of commercial interests controlling re-embodiment infrastructure, shipping, and the economic layer of the Reach" slug: syndics category: faction status: canonical diff --git a/wiki/factions/the-ring.md b/wiki/factions/the-ring.md index be509c084..57a0d8a67 100644 --- a/wiki/factions/the-ring.md +++ b/wiki/factions/the-ring.md @@ -1,5 +1,6 @@ --- title: "The Ring (Sova Smuggling Operation)" +description: "Informal smuggling network in Sova Transit District — structure, members, cargo, operations, and community role in v0.1" slug: the-ring category: faction status: canonical diff --git a/wiki/factions/the-unbound.md b/wiki/factions/the-unbound.md index 69ed801e4..0692bb74b 100644 --- a/wiki/factions/the-unbound.md +++ b/wiki/factions/the-unbound.md @@ -1,5 +1,6 @@ --- title: "The Unbound" +description: "Citizens who live without a neural lattice — invisible to institutional systems, accepting permanent death, and challenging the Reach's technological assumptions" slug: the-unbound category: faction status: canonical diff --git a/wiki/factions/veil-institute.md b/wiki/factions/veil-institute.md index 04f27719e..097407d6f 100644 --- a/wiki/factions/veil-institute.md +++ b/wiki/factions/veil-institute.md @@ -1,5 +1,6 @@ --- title: "The Veil Institute" +description: "Semi-autonomous research institution studying Founder Gates, the Interstitium, and Builder phenomena — knows the most, shares the least" slug: veil-institute category: faction status: canonical diff --git a/wiki/index.md b/wiki/index.md index 5c9d31aad..19862302f 100644 --- a/wiki/index.md +++ b/wiki/index.md @@ -1,5 +1,6 @@ --- title: "The Settled Reach — Game Wiki" +description: "Top-level wiki index — navigation hub for all star systems, characters, factions, technology, contraband, concepts, and authoring guides" slug: wiki-index category: index status: canonical diff --git a/wiki/star-systems/krenn/index.md b/wiki/star-systems/krenn/index.md index 88f1f9618..85b447a39 100644 --- a/wiki/star-systems/krenn/index.md +++ b/wiki/star-systems/krenn/index.md @@ -1,5 +1,6 @@ --- title: "Krenn System" +description: "Mid-Reach G3V star system — working-class logistics node, pragmatic culture, and the first named system in the setting" slug: krenn category: star-system status: canonical diff --git a/wiki/star-systems/krenn/sova/index.md b/wiki/star-systems/krenn/sova/index.md index 49d83e3fa..3d69c3dda 100644 --- a/wiki/star-systems/krenn/sova/index.md +++ b/wiki/star-systems/krenn/sova/index.md @@ -1,5 +1,6 @@ --- title: "Station Sova" +description: "Freight logistics hub in the Krenn System — 12k population, layered construction hiding architectural secrets, and the v0.1 setting" slug: sova category: station status: canonical diff --git a/wiki/star-systems/krenn/sova/transit/index.md b/wiki/star-systems/krenn/sova/transit/index.md index 5a912a889..98116fe2b 100644 --- a/wiki/star-systems/krenn/sova/transit/index.md +++ b/wiki/star-systems/krenn/sova/transit/index.md @@ -1,5 +1,6 @@ --- title: "Sova Transit District" +description: "The v0.1 vertical slice setting — 800-person freight district with three social sites, 17 NPCs, and a smuggling ring hiding in plain sight" slug: transit category: district status: canonical diff --git a/wiki/star-systems/krenn/sova/transit/maintenance-corridors.md b/wiki/star-systems/krenn/sova/transit/maintenance-corridors.md index 915341d2e..34f1b2c9b 100644 --- a/wiki/star-systems/krenn/sova/transit/maintenance-corridors.md +++ b/wiki/star-systems/krenn/sova/transit/maintenance-corridors.md @@ -1,5 +1,6 @@ --- title: "Maintenance Corridors" +description: "Forgotten interstitial spaces between construction eras — Corridor B-7 as the primary smuggling route, off-Meridian and off-map" slug: maintenance-corridors category: location status: canonical diff --git a/wiki/star-systems/krenn/sova/transit/the-last-shift.md b/wiki/star-systems/krenn/sova/transit/the-last-shift.md index e33ab4778..99c0e57ae 100644 --- a/wiki/star-systems/krenn/sova/transit/the-last-shift.md +++ b/wiki/star-systems/krenn/sova/transit/the-last-shift.md @@ -1,5 +1,6 @@ --- title: "The Last Shift" +description: "District bar and social hub — the smuggler's refuge, the detective's intelligence goldmine, and the place where information flows faster than the Meridian" slug: the-last-shift category: location status: canonical diff --git a/wiki/star-systems/krenn/sova/transit/the-terminal.md b/wiki/star-systems/krenn/sova/transit/the-terminal.md index d50b1ecfa..92b3f50df 100644 --- a/wiki/star-systems/krenn/sova/transit/the-terminal.md +++ b/wiki/star-systems/krenn/sova/transit/the-terminal.md @@ -1,5 +1,6 @@ --- title: "The Terminal" +description: "Freight logistics hub workplace — where cargo arrives, manifests get doctored, and the smuggling operation hides in the routine of legitimate work" slug: the-terminal category: location status: canonical diff --git a/wiki/technology/clone-transfer.md b/wiki/technology/clone-transfer.md index 2efc39071..6753bf7ce 100644 --- a/wiki/technology/clone-transfer.md +++ b/wiki/technology/clone-transfer.md @@ -1,5 +1,6 @@ --- title: "Clone Transfer" +description: "Death-as-information-loss mechanic — backup systems, body economics, and the mortality gradient between rich and poor" slug: clone-transfer category: technology status: canonical diff --git a/wiki/technology/founder-gates.md b/wiki/technology/founder-gates.md index 007f7527d..8e28be4c6 100644 --- a/wiki/technology/founder-gates.md +++ b/wiki/technology/founder-gates.md @@ -1,5 +1,6 @@ --- title: "Founder Gates" +description: "Pre-human interstellar transit network — alien-built, poorly understood, and the infrastructure that defines the shape of the Settled Reach" slug: founder-gates category: technology status: canonical diff --git a/wiki/technology/meridian.md b/wiki/technology/meridian.md index 26bdb2568..1be48ddb2 100644 --- a/wiki/technology/meridian.md +++ b/wiki/technology/meridian.md @@ -1,5 +1,6 @@ --- title: "Meridian" +description: "Ubiquitous information network — communications, location tracking, institutional systems, and the surveillance infrastructure the ring operates around" slug: meridian category: technology status: canonical diff --git a/wiki/technology/neural-lattice.md b/wiki/technology/neural-lattice.md index 1edad0080..c98f1e87f 100644 --- a/wiki/technology/neural-lattice.md +++ b/wiki/technology/neural-lattice.md @@ -1,5 +1,6 @@ --- title: "Neural Lattice" +description: "Universal biotech brain implant with tiered perception modes — foundational technology, Commission-regulated, and the reason lattice smuggling exists" slug: neural-lattice category: technology status: canonical diff --git a/wiki/technology/severance-tech.md b/wiki/technology/severance-tech.md index eae0bd785..66093f338 100644 --- a/wiki/technology/severance-tech.md +++ b/wiki/technology/severance-tech.md @@ -1,5 +1,6 @@ --- title: "Severance Technology" +description: "Counter-surveillance devices that block lattice functions and Meridian connectivity — illegal, politically charged, and the ring's most dangerous cargo" slug: severance-tech category: technology status: canonical diff --git a/wiki/technology/span-gates.md b/wiki/technology/span-gates.md index c92347a20..c2c8cb5ca 100644 --- a/wiki/technology/span-gates.md +++ b/wiki/technology/span-gates.md @@ -1,5 +1,6 @@ --- title: "Span Gates" +description: "Human-built intra-system transit gates — the freight chokepoints through which smuggling operates, and the source of Sova's omnipresent hum" slug: span-gates category: technology status: canonical diff --git a/wiki/triangles/hub-power.md b/wiki/triangles/hub-power.md index fa2dd8206..fbe78b85f 100644 --- a/wiki/triangles/hub-power.md +++ b/wiki/triangles/hub-power.md @@ -1,5 +1,6 @@ --- title: "Hub Power" +description: "Triangle 1 (Voss/Kael/Nils) — volume escalation fork with three smuggler paths that change investigation timing and observability" slug: hub-power category: triangle status: canonical From f20c11a5a931afc50ce77ca9d3991571d0bd0a1c Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Fri, 13 Mar 2026 14:45:53 +0100 Subject: [PATCH 03/28] chore(docs): remove v0.1 hand-authored character files Per D-122 (all NPCs generated), these 18 character profiles and roster index are superseded by the generator pipeline. Keeping named NPCs in the wiki anchors generators to specific patterns instead of exploring the design space. The Kael Davan profile is preserved as a generator quality exemplar in wiki/_templates/character-exemplar.md. Co-Authored-By: Claude Opus 4.6 --- wiki/characters/devra.md | 148 ----------- wiki/characters/drin.md | 160 ------------ wiki/characters/harek.md | 142 ----------- wiki/characters/index.md | 282 --------------------- wiki/characters/kael-davan.md | 426 -------------------------------- wiki/characters/lera-sessik.md | 146 ----------- wiki/characters/maret-korr.md | 146 ----------- wiki/characters/naia-tamm.md | 146 ----------- wiki/characters/nils-davan.md | 128 ---------- wiki/characters/olin.md | 76 ------ wiki/characters/pell.md | 147 ----------- wiki/characters/renn.md | 144 ----------- wiki/characters/resha.md | 142 ----------- wiki/characters/sabel.md | 74 ------ wiki/characters/sera-venn.md | 426 -------------------------------- wiki/characters/sess.md | 76 ------ wiki/characters/tav.md | 78 ------ wiki/characters/torek-lintar.md | 142 ----------- wiki/characters/voss.md | 149 ----------- 19 files changed, 3178 deletions(-) delete mode 100644 wiki/characters/devra.md delete mode 100644 wiki/characters/drin.md delete mode 100644 wiki/characters/harek.md delete mode 100644 wiki/characters/index.md delete mode 100644 wiki/characters/kael-davan.md delete mode 100644 wiki/characters/lera-sessik.md delete mode 100644 wiki/characters/maret-korr.md delete mode 100644 wiki/characters/naia-tamm.md delete mode 100644 wiki/characters/nils-davan.md delete mode 100644 wiki/characters/olin.md delete mode 100644 wiki/characters/pell.md delete mode 100644 wiki/characters/renn.md delete mode 100644 wiki/characters/resha.md delete mode 100644 wiki/characters/sabel.md delete mode 100644 wiki/characters/sera-venn.md delete mode 100644 wiki/characters/sess.md delete mode 100644 wiki/characters/tav.md delete mode 100644 wiki/characters/torek-lintar.md delete mode 100644 wiki/characters/voss.md diff --git a/wiki/characters/devra.md b/wiki/characters/devra.md deleted file mode 100644 index 17e455d9d..000000000 --- a/wiki/characters/devra.md +++ /dev/null @@ -1,148 +0,0 @@ ---- -title: "Devra Talsen" -slug: devra -canonical_id: "npc:devra" -category: character -status: canonical -created: 2026-02-12 -updated: 2026-02-13 -tier: 2 -pattern: "THRESHOLD" -motivation: "HANDLER" -social_sites: [] -entanglement: "Entangled" -triangles: [] -home_district: transit -tags: [v0.1] -decision_refs: [D-024] -cross_refs: [] ---- - -# Devra Talsen - -**Tier 2 NPC** | Smuggling Ring + The Last Shift (Bar) | Entangled - ---- - -## Core Identity - -**Name**: Devra Talsen -**Age**: 38 -**Role**: Ring coordinator (manages external contacts, logistics planning); publicly, a freelance supply broker with a regular seat at The Last Shift -**System Origin**: Krenn System, born off-station (Orbital Manufacturing Platform 3), relocated to Sova 5 years ago -**Lattice Tier**: Standard professional (commercial-grade communication and logistics tools) -**Employer**: Self-employed (supply brokering — legitimate cover); The Arrangement (ring coordination, operational) - ---- - -## 10-Axis Profile - -### 1. Want - -**Primary**: Keep the operation running smoothly and profitably. - -Devra is the ring's operational brain. She manages the external supply chain — coordinating with Sabel (off-station contact) for incoming shipments, scheduling handoffs, managing the timeline between gate transits and dock processing. She's good at this. Better than Nils, frankly, though she'd never say it. - -**Secondary**: Maintain her legitimate cover. - -The supply brokering business isn't just cover — it's real income and real social capital. Devra brokers small freight contracts for independent operators. This gives her a legitimate reason to know shipping schedules, gate transit windows, and cargo volumes. The line between her legal and illegal work is intentionally blurred. - -### 2. Secret / Vulnerability - -**Surface secret**: The supply brokering business is partly a cover for ring logistics. Visible to anyone who tracks how much time Devra spends on freight details that don't match her client list. - -**Deep secret**: Devra manages the relationship with Sabel, the off-station supplier. If the chain is traced upstream, it runs through Devra. She's more exposed than anyone except Nils. - -**Vulnerability**: The external contact chain. Devra is the single point of failure between the local ring and the supply source. If Sabel is compromised, Devra is the next link. If the detective traces cargo origins, Devra's brokering records are the thread to pull. - -### 3. Relationships - -**Nils Davan** (off-stage): Ring coordinator (strategic). Devra handles operations; Nils handles personnel and security. They respect each other's competence but disagree on risk tolerance — Devra favors steady volume, Nils pushes for escalation. - -**Sabel** (off-station, Tier 3): External supplier. Devra's primary off-station contact. Professional, efficient, no personal warmth. Sabel delivers; Devra pays. The relationship is transactional. - -**Lera Sessik**: The bar is Devra's social stage. She drinks there, brokers small deals publicly, maintains the image of a working professional. Lera knows Devra uses the back room but doesn't know for what. - -### 4. Tolerance Threshold - -**High**. Devra is calm under pressure, thinks operationally, and doesn't panic. What breaks her tolerance: Pell's wavering (internal security threat), unexpected Commission presence (the detective's arrival is exactly the kind of disruption Devra planned to avoid), and Nils pushing volume too fast. - -### 5. Daily Routine - -**08:00 - 12:00**: Supply brokering work (lattice calls, contract negotiation, legitimate business) -**12:00 - 14:00**: Lunch, sometimes at the hub (maintaining visibility near freight operations) -**14:00 - 17:00**: Bar (The Last Shift) — social presence, quiet coordination -**17:00 - 19:00**: Back room meetings (1-2x per week, ring business) -**19:00+**: Home or continued brokering -**Night operations**: Coordinates gate transit timing with Sabel during off-peak windows (lattice communication from home) - -### 6. Information Inventory - -**Knows**: Ring structure (all operational details), supply chain from Sabel through dock to distribution, which containers are flagged, gate transit schedules, who in the ring is reliable and who isn't. Knows Pell is wavering (Renn reported suspicions to Nils, who told Devra). Knows Kael handles dock-side operations efficiently. - -**Doesn't know**: Kael's exit attempt (Kael concealed this from everyone in the ring), Sera's compliance check, the detective's investigation details, Maret's growing suspicion about manifests. - -### 7. Contentment - -**Moderate-high**. Devra is competent and knows it. The operation runs well. The money is good. The brokering cover is solid. Her contentment would drop sharply if the operation were threatened — not because she loves the work, but because she's built her entire life in the district around it. - -### 8. Personality Traits - -**Primary: Strategic** — thinks in logistics, plans contingencies, manages complexity. -**Secondary: Controlled** — doesn't show stress, maintains composure, presents a professional face. -**Tertiary: Ambitious** — wants the operation to grow (at a sustainable pace), not just survive. - -### 9. Tell System - -| Tell | Trigger | Observable To | -|------|---------|---------------| -| **Increased lattice activity** | Coordinating with Sabel about incoming shipment timing | Smuggler (if ring member, recognizes the pattern), Detective (if tracking lattice traffic) | -| **Back room usage** | Ring coordination meetings — Devra enters, door closes, 30-60 minutes | Lera (knows the door is closed), Sess (observes from behind the bar), Detective (if tracking movement patterns in the bar) | -| **Professional demeanor shift** | When discussing ring business, Devra's casual bar persona drops — sentences get shorter, eye contact increases | Smuggler (recognizes the operational mode), anyone paying close attention | - -### 10. Skill Set - -**Occupational**: Supply chain logistics, contract negotiation, freight brokering, commercial communication. -**Ring-relevant**: External coordination, timing management, operational planning, information compartmentalization. -**Combat tag**: **No**. Devra is not physical. If threatened, she leverages connections and information, not force. -**Lattice capability**: Standard professional (commercial-grade, not military or investigative). - ---- - -## Voice Sample - -**Mood: Professional (public bar persona)** -- *"I've got a freight contract clearing through Gate 2 next cycle. Standard components. Nothing exciting, but it pays the rent."* - -**Mood: Operational (ring coordination)** -- *"The window is tight. Sabel confirms transit for the 22:00 cycle. Renn handles pickup. Nobody else needs to be involved."* - -**Mood: Concerned (about Pell)** -- *"Pell's been quiet. Too quiet. When someone stops complaining, that's when I worry."* - ---- - -## Dual-Lens Notes - -**Smuggler**: Devra is the operational heart of the ring. The smuggler respects her competence and relies on her coordination. If the smuggler is a ring member, Devra is the colleague who keeps things running. *"Devra's got the next shipment scheduled. She's reliable — more reliable than Nils, honestly."* - -**Detective**: Devra is a freelance supply broker who spends a lot of time at the bar and knows freight schedules in unusual detail. The detective initially reads her as a local businesswoman. Only deeper investigation reveals the brokering is partly cover. *"Freelance broker. Devra, no family name offered. Knows freight schedules better than most hub workers. Interesting."* - ---- - -## Triangle Roles - -**Not a formal v0.1 triangle member.** Devra's role is connective — she links the ring's internal operations to the external supply chain. She's referenced in multiple triangles without being a node in one. Her significance is operational, not interpersonal. - ---- - -## Pattern / Motivation - -**Pattern (System A):** THRESHOLD — Devra is the ring's gatekeeper. Access to the operation's logistics, to Sabel's supply chain, to Nils's strategic direction — all of it runs through Devra. She is the person you go through or you do not go. For the detective, reaching the ring's operational layer means getting past Devra's cover. For the smuggler, coordination with the upstream supply means working through Devra's scheduling. -**Motivation (System B):** HANDLER — Devra manages operations from above. She conveys Nils's strategy, coordinates with Sabel, manages internal ring logistics, and delivers escalation demands to Voss and Kael. She applies pressure downward on behalf of the off-stage authority. She does not run day-to-day dock operations — she manages the people who do. - -**Composition read:** THRESHOLD + HANDLER creates the obstacle with authority: "You go through her or you don't go." Devra gates access to the ring (THRESHOLD) while applying top-down operational pressure (HANDLER). This dual function makes her the most structurally important ring member on-station — she is both the wall and the hand pushing people against it. Her competence makes her formidable; her ambition (she could run this better than Nils) makes her interesting. The player who tries to reach the ring's inner workings must reckon with Devra twice: once as a barrier, once as a manager. - ---- - -**Cross-References:** [Renn](renn.md), [Pell](pell.md), [Lera Sessik](lera-sessik.md), [Sabel](sabel.md) diff --git a/wiki/characters/drin.md b/wiki/characters/drin.md deleted file mode 100644 index eebc56cce..000000000 --- a/wiki/characters/drin.md +++ /dev/null @@ -1,160 +0,0 @@ ---- -title: "Drin Rosta" -slug: drin -canonical_id: "npc:drin" -category: character -status: canonical -created: 2026-02-12 -updated: 2026-02-13 -tier: 2 -pattern: "SYSTEM" -motivation: "TURNCOAT" -social_sites: [] -entanglement: "Mundane" -triangles: [] -home_district: transit -tags: [v0.1] -decision_refs: [D-024] -cross_refs: [] ---- - -# Drin Rosta - -**Tier 2 NPC** | Logistics Hub (The Terminal) | Mundane - ---- - -## Core Identity - -**Name**: Drin Rosta -**Age**: 40 -**Role**: Maintenance tech + dock inspector, Sova Transit District Logistics Hub -**System Origin**: Krenn System, Station Sova -**Lattice Tier**: Baseline -**Employer**: Sova Logistics Consortium - ---- - -## 10-Axis Profile - -### 1. Want - -**Primary**: Clear the debt. Stop looking over his shoulder. - -Drin is a maintenance tech who also handles dock inspections. He's competent at both. The problem is the gambling debt to Harek — a significant sum from the bar card games that Drin can't repay on his salary. The debt doesn't require Drin to do anything explicitly illegal. It just means Drin is slow during inspections of certain containers. He doesn't open them. He doesn't look hard. The ring has noticed this pattern and relies on it. Drin is compromised by omission, not commission. - -**Secondary**: Return to when the job was just a job. - -Drin remembers the period before the debt. Maintenance rounds, dock inspections, clocking out, going home. The work was repetitive and that was fine. Drin liked the repetition. Now every inspection cycle carries a second calculation running underneath — which containers to skip, which bays to clear without looking, how to file a report that says nothing happened when something might have. He wants the old version of the job back. He doesn't know how to get there. - -### 2. Secret / Vulnerability - -**Surface secret**: Gambling debt to Harek. Known to bar regulars, card game circle. Nobody thinks much of it — debts are common on Sova. - -**Deep secret**: Drin's inspection negligence is being exploited by the ring. Drin understands that someone benefits from his looking the other way — containers move through his shifts without scrutiny and nobody complains. But he doesn't know the ring's structure, doesn't know Kael's role, doesn't know the scope of the operation his silence enables. He thinks it's smaller than it is. - -**Vulnerability**: Compromised by omission. Drin never actively smuggled anything. He failed to inspect. The distinction feels meaningful to him and would not feel meaningful to an investigator. If confronted with the scale of what his negligence enabled, Drin's self-narrative collapses. - -### 3. Relationships - -**Harek Valde**: Debt holder, inadvertent coercer. Fear-based, asymmetric. Harek doesn't press aggressively — he keeps the debt active, invites Drin to card games, covers a round. The relationship is social on the surface and transactional underneath. Drin likes Harek personally, which makes the dynamic worse. It's hard to resent someone who buys you drinks and never explicitly threatens you. The ring noticed the power dynamic and exploits it without Harek fully understanding what he built. - -**Arvo Voss**: Shift supervisor. Professional, strained. Voss needs Drin functional and quiet. Drin senses that Voss knows something about why the inspection negligence is useful but doesn't want to test that suspicion. They interact procedurally — shift handoffs, maintenance reports, inspection schedules. The professional distance is mutual and deliberate. - -**Maret Korr**: Freight scheduler, colleague. Guilt-adjacent. Maret processes manifests. Drin knows his inspection reports feed into Maret's reconciliation workflow. He also senses — without proof — that Maret has noticed the reports are too clean. The discomfort is unspoken. Drin avoids extended interaction with Maret because her attention feels like scrutiny, even when it isn't. - -### 4. Tolerance Threshold - -**Low — already past breaking.** The compromise IS Drin's post-threshold state. He crossed the line the first time he filed an inspection report he knew was incomplete, and he's been living past the threshold ever since. - -**What he tolerates**: The routine guilt. The mechanical compliance. Harek's passive leverage. Inspecting containers he knows he shouldn't clear and clearing them anyway. The daily rhythm of knowing and not acting. - -**What breaks him**: Direct confrontation — the detective asking pointed questions about specific inspections. Escalating demands — if the ring asks Drin to do MORE than look away (actively falsify, handle cargo, participate). Harek pressing the debt publicly — rupturing the social fiction that the debt is just a card game thing between friends. Any of these collapses the distinction between omission and commission that Drin needs to function. - -### 5. Daily Routine - -**05:50**: Arrives at hub. Checks maintenance board for overnight issues. -**06:00 - 10:00**: Maintenance rounds — environmental systems, loading equipment, pipe and wiring repairs. Drin moves through the facility with tools and purpose. This is the part of the job he still enjoys. -**10:00 - 10:30**: Break room. Eats alone or with other maintenance crew. Avoids Harek if Harek is on-site. Avoids prolonged conversation with Maret. -**10:30 - 14:00**: Dock inspections — scheduled bay checks, container verification, freight condition reports. This is where the compromise lives. Certain shifts, certain bays, certain containers get shorter inspections. Drin's timing on compromised inspections is measurably faster than his legitimate ones. -**14:00 - 14:30**: Post-shift — files reports, updates maintenance log. The inspection reports are filed here. Clean. Complete. Unremarkable. -**14:30 - 16:00**: Home, or bar on card game nights (2x per week). -**Night**: Home. Worrying about the debt. Not sleeping well. - -### 6. Information Inventory - -**Knows**: Inspection schedule gaps — which bays, which shifts, which timing windows he's been "slow" on. Harek's debt amount and the social dynamics around it. That SOMEONE benefits from his negligence — containers move through his shifts without scrutiny and nobody complains about the results. Hub maintenance infrastructure in detail — access corridors, environmental systems, loading equipment condition. - -**Doesn't know**: Kael's role in the ring. Ring organizational structure. The contraband itself (Drin doesn't open the containers, so he doesn't know what's inside). The detective's investigation. Pell's wavering. That Pell might approach him as an institutional contact — someone with inspection authority who could receive a report. Maret's private discrepancy log. - -### 7. Contentment - -**Very low.** Trapped. Drin remembers when the job was just maintenance — fixing things, inspecting things, filing reports that reflected what he actually saw. The gambling was supposed to be social. Card nights at The Last Shift, a few drinks, something to do after work that involved other people. Now every inspection is a moral compromise he can't talk about. The contentment axis reads as a man going through the motions of a life that stopped working months ago. He hasn't adjusted; he's just enduring. - -### 8. Personality Traits - -**Primary: Quiet / Avoidant** — Drin doesn't volunteer information, doesn't seek attention, doesn't engage in conversations he can't control. His silence is both personality and survival strategy. Before the debt, the silence was just who he was. Now it serves a function. - -**Secondary: Methodical** — Drin fixes things. Pipes, wiring, environmental systems, loading equipment. He follows procedures, uses checklists, documents his work. The irony: his methodical nature makes the compromised inspections more visible by contrast. When Drin is thorough, he's very thorough. When he's not, the gap is measurable. - -**Tertiary: Anxious (suppressed)** — The anxiety doesn't manifest as nervousness or fidgeting. It manifests as silence. Shorter responses. Fewer interactions. A man shrinking his social footprint so there are fewer opportunities to say the wrong thing. The anxiety is structural, not behavioral — it shapes what Drin avoids rather than what he does. - -### 9. Tell System - -| Tell | Trigger | Observable To | -|------|---------|---------------| -| **Route changes when Harek is present** | Harek on-site at the hub or arriving at the bar — Drin adjusts his path to avoid casual contact | Bar regulars, Detective (if tracking social dynamics), Smuggler (if observant) | -| **Shorter inspection times on specific shifts** | Compromised inspections — Drin clears certain bays faster than his baseline rate | Maret (correlates with manifest discrepancies), Detective (if tracking inspection timing data) | -| **Increased break frequency** | Stress response — Drin takes more breaks during shifts that include compromised inspections | Voss (tracks shift productivity), Resha (notices the pattern as a new hire learning routines) | -| **Eye contact avoidance during compromised inspections** | Filing reports he knows are incomplete — Drin doesn't look at the person receiving the paperwork | Voss (if attentive), Detective (if observing the filing process) | - -### 10. Skill Set - -**Occupational**: Maintenance tech — environmental systems, pipe and wiring repair, loading equipment servicing, mechanical diagnostics. Dock inspection — container verification, freight condition assessment, safety compliance. -**Combat tag**: **No**. Drin is not physical. If confronted, he retreats into silence and compliance. -**Lattice capability**: Baseline. - ---- - -## Voice Sample - -**Mood: Professional (baseline)** -- *"Coupling on the Bay 4 loader is wearing. I'll flag it for replacement on the next maintenance cycle. Should hold until then."* -- *"I just do maintenance. Inspections are part of the schedule. I run them by the book."* - -**Mood: Under pressure (Harek nearby, or debt-adjacent conversation)** -- *"I'm fine. Busy shift. A lot of bays to get through before the afternoon handoff."* -- *"Cards? I don't know. Maybe. I'll see how the week goes."* - -**Mood: Cornered (detective asking about inspections)** -- *"My reports are filed. They're complete. If there's a question about a specific bay, I can pull the documentation. But I don't know what you're looking for that isn't already there."* -- *"I inspect what's on the schedule. I file what I find. That's the job."* - ---- - -## Dual-Lens Notes - -**Smuggler**: Drin is a tool — compromised and reliable because of it. The ring doesn't interact with Drin directly; they don't need to. Harek's debt does the work. As long as Drin stays quiet and slow on the right shifts, the dock-side processing runs clean. The smuggler reads Drin as a solved problem — a cog that turns the right way without needing to be told. *"Drin's on inspection today. We're good. He doesn't ask questions and he doesn't open the wrong containers. Best kind of help — the kind that doesn't know it's helping."* - -**Detective**: Drin is a data point — his inspection reports are too clean for the volume of freight he processes. A maintenance tech pulling double duty as dock inspector should have equipment failures, missed checks, variance in his reports. Drin's are spotless. That level of consistency in a high-throughput environment is itself an anomaly. The detective reads Drin not as corrupt but as a process that isn't performing correctly. *"The inspector — Drin. Maintenance tech pulling double duty. Reports are spotless. Nobody's reports are that spotless. Either he's the best inspector on the station or he's not inspecting."* - ---- - -## Triangle Roles - -**Triangle 2: Worried Knowledge (Maret - Drin - Voss)** — The compromised inspector. Drin is the institutional process that is supposed to catch irregularities, and his compromise means the process is hollow. Maret sees the output — inspection reports that are too clean — and files it as another data point in her growing suspicion. Voss needs Drin functional and quiet because Drin's cooperation (willing or not) is what makes the schedule manipulation possible. Drin sits between two people who need different things from him: Maret needs the truth (which Drin can't give without exposing himself), and Voss needs the silence (which Drin provides because the alternative is worse). Harek, outside the triangle, holds the leverage that keeps Drin compliant. - -**Triangle 5: The Informant Question (Pell - Renn - Drin) [Cross-Template]** — The institutional contact who is already compromised. Pell is considering cooperation with authorities and might approach Drin as someone with inspection authority — a legitimate institutional figure who could receive information about irregularities. The irony is structural: the one person Pell might turn to for institutional protection is already under the ring's indirect control. If Pell approaches Drin, several things could happen. Drin might freeze (avoidant personality meets impossible situation). Drin might inadvertently warn the ring by behaving differently after the approach. Or Drin, confronted with the scope of what his negligence enables, might finally crack — and Pell's approach becomes the catalyst that breaks both of them free. The triangle's danger is that all three unraveling paths (Pell turns, Drin breaks, Renn's suspicion creates internal conflict) converge on the same question: what happens when the compromised system meets the desperate informant? - ---- - -## Pattern / Motivation - -**Pattern (System A):** SYSTEM — Drin is the dock inspector. He IS the inspection system — his reports, his sign-offs, his presence at the freight bays constitute the institutional process that is supposed to catch irregularities. When Drin is compromised, the system itself is corrupted. This is not a person failing at a job; it is an institution rotting from within. -**Motivation (System B):** TURNCOAT — Drin's loyalty has shifted under coercion. The gambling debt to Harek created a vulnerability that the ring exploits through omission: Drin does not actively smuggle, he simply fails to inspect. His turncoat status is passive — he was turned not by ideology or ambition but by debt and avoidance. - -**Composition read:** SYSTEM + TURNCOAT creates institutional rot: "The inspection system is broken because the inspector is broken." Drin embodies the institution (SYSTEM) and has betrayed it (TURNCOAT), meaning the legitimate oversight mechanism and the criminal exploitation of it exist in the same person. For the detective, cracking Drin means cracking the system — his compromise is the proof that the hub's operations are not what they appear. For the smuggler, keeping Drin quiet means keeping the system working in the ring's favor. The composition is the most mechanically productive in the set because the same NPC serves inverted functions for the two player characters. - ---- - -**Cross-References:** [Harek](harek.md), [Maret Korr](maret-korr.md), [Voss](voss.md), [Pell](pell.md), [Renn](renn.md) diff --git a/wiki/characters/harek.md b/wiki/characters/harek.md deleted file mode 100644 index 8846afa3b..000000000 --- a/wiki/characters/harek.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -title: "Harek Valde" -slug: harek -canonical_id: "npc:harek" -category: character -status: canonical -created: 2026-02-12 -updated: 2026-02-13 -tier: 2 -pattern: "ANCHOR" -motivation: "HANDLER" -social_sites: [] -entanglement: "Mundane" -triangles: [] -home_district: transit -tags: [v0.1] -decision_refs: [D-024] -cross_refs: [] ---- - -# Harek Valde - -**Tier 2 NPC** | The Last Shift (Bar) + Logistics Hub | Mundane - ---- - -## Core Identity - -**Name**: Harek Valde -**Age**: 44 -**Role**: Station Security officer (off-duty at bar, on-duty at hub perimeter) -**System Origin**: Krenn System, Station Sova -**Lattice Tier**: Standard security (patrol monitoring, incident reporting) -**Employer**: Sova Station Security - ---- - -## 10-Axis Profile - -### 1. Want - -**Primary**: Maintain his comfortable position. - -Harek has a good thing: security officer with a predictable schedule, card games at the bar after shift, and enough social capital to be respected without being scrutinized. He doesn't want promotions (more responsibility, more visibility). He doesn't want trouble. He wants the steady, predictable life of a man who knows exactly how much effort each day requires. - -**Secondary**: Keep Drin's debt leverageable. - -Drin owes Harek money from card games — a significant sum that Drin can't easily repay. Harek doesn't press the debt aggressively; he keeps it active. A security officer with a dock inspector who owes him favors is useful. Harek hasn't explicitly traded the debt for inspection negligence, but the debt's existence creates a power dynamic that the ring has noticed and exploited. - -### 2. Secret / Vulnerability - -**Surface secret**: Holds Drin's gambling debt. Known to bar regulars. Nobody thinks much of it — people owe each other money on Sova. - -**Deep secret**: Harek knows (or suspects) that Drin's inspection negligence is being leveraged by someone else. He sees the dynamic: Drin owes him, Drin looks away during inspections, the ring benefits. Harek hasn't connected all the dots, but he understands that his card game created a tool that others are using. - -**Vulnerability**: Complicity by inaction. Harek hasn't done anything illegal. But a security officer who notices a dock inspector being leveraged and doesn't report it is, at minimum, negligent. If investigated, Harek's position crumbles. - -### 3. Relationships - -**Drin**: Card game partner, debtor. Harek likes Drin personally — they've played cards for years. The debt complicates this, but Harek doesn't see himself as a predator. He sees a friend who's bad at cards and bad at saying no. - -**Lera Sessik**: Bar owner. Professional familiarity. Harek's card games bring customers. Lera facilitates. Mutually beneficial. - -**Torek Lintar**: Card game regular. Harek has noticed Torek's spending but doesn't flag it — Torek's money at the card table is Harek's entertainment. - -### 4. Tolerance Threshold - -**Moderate-high**. Harek is comfortable and complacent. He tolerates a lot because engagement is effort. What breaks his tolerance: direct institutional pressure (Commission or Security command asking about Drin), or violence (Harek takes safety seriously even if he's loose on contraband). - -### 5. Daily Routine - -**06:00 - 14:00**: Security patrol — hub perimeter and freight bay access points (day shift) -**14:00 - 14:30**: Shift transition -**14:30 - 20:00**: Bar (The Last Shift) — drinks, card games (2-3 times per week) -**20:00+**: Home - -### 6. Information Inventory - -**Knows**: Security patrol routes, hub access protocols, freight bay entry logs, which areas have Meridian coverage and which don't. Drin's debt and behavioral changes. Torek's spending. Bar social dynamics. - -**Doesn't know**: Ring structure, specific smuggling operations, manifest details, Kael's exit attempt, Sera's compliance check. Harek knows something is going on at the hub — he's a security officer, he's not blind — but he's chosen not to investigate because investigating would mean confronting what Drin's debt has become. - -### 7. Contentment - -**Moderate-high**. Harek is the quintessential "comfortable enough not to rock the boat." He has a stable job, social standing, entertainment, and just enough willful ignorance to keep his conscience manageable. - -### 8. Personality Traits - -**Primary: Complacent** — takes the path of least resistance. -**Secondary: Sociable** — enjoys the card games, the bar crowd, the community. -**Tertiary: Perceptive** — sees more than he admits. His training doesn't turn off, even when his ethics do. - -### 9. Tell System - -| Tell | Trigger | Observable To | -|------|---------|---------------| -| **Watches Drin more carefully** | When Drin is stressed or evasive — Harek monitors his investment | Detective (if tracking the Harek-Drin dynamic), bar regulars | -| **Steers conversation away from security topics** | When someone (especially the detective) asks about hub access or patrol gaps | Detective (classic deflection tell) | -| **Card game invitation** | Harek invites people to play cards — this is social intelligence gathering wrapped in entertainment | Detective (if they recognize the information exchange happening at the table) | - -### 10. Skill Set - -**Occupational**: Security patrol, access control, incident response, observation training. -**Combat tag**: **Yes** (basic). Station security training — non-lethal restraint, de-escalation, emergency response. Not tactical. -**Lattice capability**: Standard security (patrol monitoring, incident reporting, basic surveillance access). - ---- - -## Voice Sample - -**Mood: Sociable (baseline)** -- *"Cards tonight? I've got a good feeling. Drin — you in? Don't worry about the tab, I'll cover your first round."* - -**Mood: Deflective (security questions)** -- *"Hub security's solid. We run standard patrols, standard protocols. Nothing unusual. You want specifics, talk to my supervisor — I just walk the route."* - ---- - -## Dual-Lens Notes - -**Smuggler**: Harek is a known quantity — off-duty security who doesn't look too hard. The smuggler reads Harek's card games as harmless social activity and his complacency as a feature, not a bug. *"Harek's at the bar. Security badge off, drink in hand. As long as he stays that way, we're fine."* - -**Detective**: Harek is a security officer who socializes with the people he's supposed to monitor. His card games create financial relationships that could be leverage vectors. His patrol routes create knowledge of hub access patterns. Harek is either an asset (could be turned to provide patrol gap data) or a problem (if he's actively complicit). *"Station Security — Harek. Off-duty, but the training doesn't turn off. He sees the same things I'd see. The question is what he does with it."* - ---- - -## Triangle Roles - -**Triangle 2: Worried Knowledge (Maret - Drin - Voss)** — Harek is not a triangle member but is the external pressure on Drin. Harek's debt creates the vulnerability that the ring exploits. He's the unseen fourth wall of Triangle 2. - ---- - -## Pattern / Motivation - -**Pattern (System A):** ANCHOR — Harek is physically present and complacent. He is at the bar playing cards, drinking, enjoying a stable life he has no desire to change. His contentment is genuine and unexamined — Harek has enough, wants nothing more, and has never thought to ask whether "enough" is the right question. The ANCHOR pattern means Harek represents the social floor that the investigation disturbs. -**Motivation (System B):** HANDLER — Harek uses leverage as a structural mechanism. The gambling debt Drin owes him creates a power dynamic that the ring exploits, even though Harek did not design it as a tool. A security officer with a dock inspector who owes him favors is useful — and that usefulness has been noticed by people with operational intent. Harek holds the lever without fully understanding the machine it operates. - -**Composition read:** ANCHOR + HANDLER creates the unconscious lever: "Harek doesn't know his card games built a weapon." Harek's complacent contentment (ANCHOR) generated a tool of coercion (HANDLER) without deliberate intent. He did not set out to compromise Drin — he won card games, extended credit, and maintained a social dynamic that happened to produce leverage. The ring noticed and exploited the result. This structural role is what makes Harek uniquely important: he bridges the bar (social presence, card games, community standing) and the hub (security authority, patrol knowledge, access awareness). His HANDLER motivation means the debt functions as a mechanism, not a personal project — Harek does not use it for personal gain beyond the social capital of being owed. But the structural consequence is that Drin's inspection negligence, which enables the entire smuggling operation's dock-side processing, traces back to Harek's card table. For the detective, connecting Harek's debt to Drin's compromised inspections is the path from social observation to operational evidence. For the smuggler, Harek's complacency is an asset — as long as Harek stays comfortable and unquestioning, the leverage on Drin remains stable and invisible. - ---- - -**Cross-References:** [Drin](drin.md), [Lera Sessik](lera-sessik.md), [Torek Lintar](torek-lintar.md), [Voss](voss.md) diff --git a/wiki/characters/index.md b/wiki/characters/index.md deleted file mode 100644 index 72c2f7002..000000000 --- a/wiki/characters/index.md +++ /dev/null @@ -1,282 +0,0 @@ ---- -title: "NPC Roster — Sova Transit District" -slug: npc-index -category: index -status: canonical -created: 2026-02-12 -updated: 2026-02-13 -tags: [v0.1] ---- - -# NPC Roster — Sova Transit District - -18 NPCs across 3 social sites (Logistics Hub, The Last Shift, Smuggling Ring). Tier 1 = full production depth (THE FRIEND), Tier 2 = working profile, Tier 3 = sketch, Off-Stage = present through mediated references only. - -## Roster Table - -| # | Name | Role | Social Site | Tier | Pattern | Motivation | Entanglement | Triangles | -|---|------|------|-------------|------|---------|------------|--------------|-----------| -| 1 | **Kael Davan** | Dock Worker | Hub + Ring | **Tier 1 (FRIEND)** | FRIEND | OPERATOR | Entangled | Hub Power, Worried Partner | -| 2 | **Sera Venn** | Commission Field Tech | Bar | **Tier 1 (FRIEND)** | FRIEND | WITNESS | Mundane | Worried Partner | -| 3 | Arvo Voss | Shift Supervisor | Hub | Tier 2 | SYSTEM | OPERATOR | Mundane | Hub Power, Worried Knowledge | -| 4 | Lera Sessik | Bar Owner | Bar | Tier 2 | ANCHOR | OPERATOR | Mundane | Bar Tensions | -| 5 | Torek Lintar | Dock Worker / Bar Regular | Bar + Hub | Tier 2 | CATALYST | CIVILIAN | Mundane | Bar Tensions | -| 6 | Devra Talsen | Ring Coordinator | Ring + Bar | Tier 2 | THRESHOLD | HANDLER | Entangled | (Referenced, not triangle member in v0.1) | -| 7 | Maret Korr | Freight Scheduler | Hub | Tier 2 | WITNESS | SKEPTIC | Mundane | Worried Knowledge | -| 8 | Resha Neven | New Hire Dock Worker | Hub | Tier 2 | CATALYST | CIVILIAN | Mundane | (Background tension, not formal triangle) | -| 9 | Naia Tamm | Teacher (Kael's Partner) | Bar | Tier 2 | MIRROR | CIVILIAN | Mundane | Worried Partner | -| 10 | Drin Rosta | Maintenance Tech | Hub | Tier 2 | SYSTEM | TURNCOAT | Mundane | Worried Knowledge, Informant Question | -| 11 | Sess Kolvur | Bartender | Bar | Tier 3 | ANCHOR | CIVILIAN | Flat | None | -| 12 | Olin Tavren | Drifter / New Arrival | Bar | Tier 3 | CATALYST | CIVILIAN | Flat | Bar Tensions | -| 13 | Renn Harsk | Courier | Ring + Hub | Tier 2 | THRESHOLD | OPERATOR | Entangled | Informant Question | -| 14 | Pell Torssen | Wavering Ring Member | Ring | Tier 2 | CATALYST | TURNCOAT | Entangled | Informant Question | -| 15 | Harek Valde | Off-Duty Security | Bar + Hub | Tier 2 | ANCHOR | HANDLER | Mundane | None (external pressure on Triangle 2) | -| 16 | Sabel Hersk | Off-Station Fence | Ring (off-station) | Tier 3 | GHOST | OPERATOR | Flat | None (off-station) | -| 17 | Tav Merik | Lookout | Ring + Hub | Tier 3 | SYSTEM | CIVILIAN | Flat | None | -| 18 | Nils Davan | Ring Coordinator (Off-Stage) | Ring (off-station) | Off-Stage | GHOST | HANDLER | Entangled | Hub Power | - -**Entanglement breakdown**: -- **Tier 1 (THE FRIEND)**: 2 NPCs (Kael, Sera) — 1 entangled, 1 mundane -- **Tier 2**: 11 NPCs — 3 entangled (Devra, Renn, Pell), 8 mundane -- **Tier 3**: 4 NPCs (Sess, Olin, Sabel, Tav) — all flat -- **Off-Stage**: 1 NPC (Nils) — entangled - -**Total**: 5 entangled (28%), 9 mundane (50%), 4 flat (22%). Off-stage NPC (Nils) adds entanglement without on-screen presence. - ---- - -## Triangle Diagrams - -### Triangle 1: Hub Power (Voss - Kael - Nils) - -``` - Voss (Shift Supervisor) - / \ - resents being takes cut, - managed by smooths inspections - subordinate | - / | - / | - Kael (Dock Worker) <--blood loyalty--> Nils (Ring Coordinator, off-stage) - handles cargo, - uncomfortable with - escalation -``` - -**Tension**: Voss has positional authority but takes orders from Nils (via intermediaries). Kael is caught between shift supervisor (Voss) and ring coordinator (Nils, Kael's older sibling). Nils pushes for higher volume; Voss wants stability; Kael wants everyone to calm down. - -**Volume Escalation Fork**: See [Triangle 1: Hub Power — Volume Escalation Fork](../triangles/triangle-1-hub-power.md) for the full smuggler decision fork (3 paths: escalate, stabilize, mediate), NPC state changes, detective observation consequences, and authored dialogue. - -**Player relevance**: -- **Smuggler**: Navigates this daily. Knows the resentments, smooths tensions. -- **Detective**: Sees Voss's anxiety, doesn't know why. Kael is efficient, unremarkable. Doesn't know Nils exists initially. - ---- - -### Triangle 2: Worried Knowledge (Maret - Drin - Voss) - -``` - Maret (Freight Scheduler) - / \ - notices processes manifests, - manifest sees discrepancies, - discrepancies hasn't reported - | | - | | - Voss (Shift Supervisor) <--needs both quiet--> Drin (Dock Inspector) - maintains schedule gambling debt, - that creates windows compromised by Harek -``` - -**Tension**: Maret is smart and worried. She's not in the ring — she just sees the numbers don't add up. Drin has been compromised (debt to Harek) into looking away during inspections. Voss needs both of them functional and silent. Maret suspects but doesn't know whom to tell. Drin might crack under pressure. - -**Player relevance**: -- **Smuggler**: Knows Maret is a risk (observant). Knows Drin is a tool (compromised). Must manage both. -- **Detective**: Maret is a potential cooperative witness. Drin is a potential turned asset. Both paths lead toward the operation. - ---- - -### Triangle 3: Bar Tensions (Lera - Torek - Olin) - -``` - Lera (Bar Owner) - / \ - protective of tolerates because - regulars, worried spending = business - about attention | - | | - | | - Torek (Regular) <--asks questions--> Olin (Drifter) - spending beyond new in district, - means, visible ambiguous intent -``` - -**Tension**: Torek has been spending visibly beyond a standard dock worker's income (new jacket, buying rounds, lattice accessories). Lera is protective but profit-driven — Torek's spending keeps the bar viable. Olin (new arrival) asks questions that could be innocent job-seeking or something else. Is Olin competition? An informant? Just looking for work? - -**Player relevance**: -- **Smuggler**: Torek's spending is a liability (exposure risk). Olin is an unknown variable (threat assessment). Lera is an ally who needs managing. -- **Detective**: Torek's spending is a financial tell. Olin is a potential fresh source. Lera is the social hub who sees everything. - -**Note**: Mundane triangle with *potential* entanglement. Torek's money could be from the ring, or a side hustle, or an inheritance. The ambiguity is load-bearing. - ---- - -### Triangle 4: The Worried Partner (Naia - Kael - Sera) - -``` - Naia (Teacher, Kael's Partner) - / \ - worried about confides in friend - Kael's late nights, | - evasive answers | - | | - Kael (Dock Worker) <--friendship--> Sera (Commission Field Tech) - oblivious to anxiety hears Naia's worries, - he's causing at home connects to investigation?, - loyalty vs. duty -``` - -**Tension**: Naia's loyalty to Kael vs. growing suspicion. Sera's friendship with Naia vs. institutional duty (Sera is Commission, sitting on unreported evidence). Kael is oblivious to the anxiety he's causing. If Naia asks the smuggler (if smuggler is Kael's friend) about Kael's behavior, there's no good answer. If the detective asks Sera about Naia, Sera faces a loyalty test. - -**Player relevance**: -- **Smuggler**: Most emotionally loaded triangle. Kael is THE FRIEND. Naia is Kael's partner. The smuggler knows why Kael is busy and can't say. Protecting Kael means lying to Naia. -- **Detective**: Sera is THE FRIEND. Naia is a potential source (partner who suspects something). If the detective asks Sera about Naia, Sera must choose: friend or duty. - -**THE FRIEND integration**: Both FRIEND NPCs (Kael, Sera) are nodes in this triangle. The triangle *is* the contradiction structure. - ---- - -### Triangle 5: The Informant Question (Pell - Renn - Drin) [CROSS-TEMPLATE] - -``` - Pell (Wavering Ring Member) - / \ -considering suspects Pell -cooperation with is unreliable, -authorities told Nils/Devra - | | - | | - Drin (Dock Inspector) <--three unraveling paths--> Renn (Courier) -compromised (debt), moves product, -could receive Pell's physical risk, -information if Pell turns loyal to ring - -``` - -**Tension**: Three ways the ring unravels: -1. **Pell turns informant** (from inside) -2. **Drin breaks under pressure** and cooperates (institutional corruption cracks) -3. **Renn's suspicion of Pell** creates internal ring conflict that becomes observable - -**Player relevance**: -- **Smuggler**: Pell is the biggest threat. Must decide: support Pell (reduce pressure), report to Nils/Devra (eliminate threat), or try to calm them down (risky). Each choice has cascading consequences. -- **Detective**: Doesn't know any of this yet. But the consequences — nervous behavior, hushed arguments, people avoiding each other — are the observable signals the investigation follows. - -**Cross-template**: Spans all three social sites. Pell (ring), Renn (ring + hub), Drin (hub + bar). Information and tension propagate across the entire district. - ---- - -## NPC Coverage by Social Site - -### Logistics Hub (The Terminal) - -- Voss (Shift Supervisor) — authority figure -- Kael Davan (Dock Worker, THE FRIEND) — ring member, smuggler's anchor -- Maret Korr (Freight Scheduler) — worried, processes manifests -- Resha (New Hire) — asks too many questions -- Drin (Maintenance Tech / Dock Inspector) — compromised, inspection negligence, says nothing -- Torek Lintar (bridge to bar) — off-shift presence -- Renn (bridge to ring) — courier, moves cargo -- Harek (bridge to bar) — off-duty security, debt leverage on Drin - -**Total**: 8 NPCs (5 primary, 3 bridge) - ---- - -### The Last Shift (Bar) - -- Lera Sessik (Bar Owner) — knows everyone, willful ignorance -- Sera Venn (Commission Field Tech, THE FRIEND) — detective's anchor -- Naia (Teacher) — Kael's partner, worried -- Torek Lintar (Regular) — spending beyond means -- Harek (Off-duty Security) — card games, debt holder -- Sess (Bartender) — flat, observant, discreet -- Olin (Drifter) — flat, ambiguous, new arrival - -**Total**: 7 NPCs (5 primary, 2 bridge via Torek/Harek overlap with hub) - ---- - -### Smuggling Ring (The Arrangement) - -- Devra (Ring Coordinator) — legitimate business front at bar, criminal operations -- [Nils Davan](nils-davan.md) (Kael's older sibling, off-stage in v0.1) — gives orders via lattice messages and intermediaries, never physically present -- Kael Davan (bridge to hub) — handles cargo -- Renn (Courier, bridge to hub) — moves product -- Pell (Wavering Member) — considering cooperation, cracking under tolerance threshold -- Sabel (Off-station fence) — external supplier, mostly off-stage, 1-2 brief visits in v0.1 -- Tav (Lookout) — watches entry points during corridor operations - -**Total**: 7 NPCs (1 primary ring-only, 1 off-stage, 3 bridge, 2 peripheral) - ---- - -## Bridge NPCs (Cross-Template Connections) - -| NPC | Home Template | Connected To | Bridge Function | -|-----|---------------|-------------|-----------------| -| **Kael Davan** | Hub | Ring | Day job at hub, ring member after hours. THE FRIEND for smuggler. | -| **Sera Venn** | Bar | (Institutional bridge to Commission) | Social at bar, institutional access. THE FRIEND for detective. | -| **Torek Lintar** | Bar | Hub | Off-shift bar regular, works at hub. Spending tells. | -| **Harek** | Bar | Hub | Social at bar, authority at hub (security). Sees things in both contexts. | -| **Renn** | Ring | Hub | Criminal at ring, logistics at hub. Physical movement connects sites. | -| **Devra** | Ring | Bar | Criminal at ring, legitimate at bar. Public face conceals operation. | - -**6 bridge connections** across 3 templates. Information, tension, and consequences propagate in multiple directions. - ---- - -## Content Deliverables per Tier - -### Tier 1 (THE FRIEND — Kael, Sera) - -**Per NPC**: -- Full 10-axis profile (Want, Secret, Relationships 1-3, Tolerance, Routine, Information, Contentment, Personality, Tell, Skills) -- Backstory paragraph (3-5 sentences) -- Voice sample (3-5 lines covering different moods) -- Dual-lens notes (how smuggler sees them vs. how detective sees them) -- Triangle role notes (function in each triangle, pressures faced) -- Secret (what they're hiding, from whom, consequences if exposed) -- Contradiction arc (3+ phases, observable tells, dialogue shifts pre/post discovery) -- ~70-100 authored lines (25-35 dialogue, 15-20 trust-gated, 5-8 unprompted, 10-15 monologue per character, 5-8 tell observations, 3-5 contradiction discovery lines) - -**Total**: ~2 pages per NPC. **No generation expansion** — all hand-authored. - ---- - -### Tier 2 (Working Profile — Voss, Lera, Torek, Devra, Maret, Resha, Naia Tamm, Drin, Renn, Pell, Harek) - -**Per NPC**: -- 10-axis data (all axes populated) -- Voice sample (2-3 lines) -- Dual-lens notes (brief, 1-2 sentences per lens) -- Triangle role notes (function in triangles) -- ~40-60 authored lines (15-20 dialogue, 8-12 trust-gated, 5-8 unprompted, 5-8 monologue per character if relevant) - -**Total**: ~0.5-1 page per NPC. Generation expansion 4x (write 15, generate to 60). - ---- - -### Tier 3 (Sketch — Sess, Olin, Sabel, Tav) - -**Per NPC**: -- Essential axes only (Want, Routine, Personality) -- Voice hint (1 line) -- Function note (why they exist, atmospheric role) -- ~10-15 authored lines (greetings, stock responses, atmospheric presence) - -**Total**: ~0.25 page per NPC. Generation expansion 4x (write 3-4, generate to 12-15). - ---- - -**Next files**: Individual NPC profiles starting with THE FRIEND NPCs at full Tier 1 depth. diff --git a/wiki/characters/kael-davan.md b/wiki/characters/kael-davan.md deleted file mode 100644 index 2050631a2..000000000 --- a/wiki/characters/kael-davan.md +++ /dev/null @@ -1,426 +0,0 @@ ---- -title: "Kael Davan" -slug: kael-davan -canonical_id: "npc:kael-davan" -category: character -status: canonical -created: 2026-02-12 -updated: 2026-02-13 -tier: 1 -pattern: "FRIEND" -motivation: "OPERATOR" -social_sites: [] -entanglement: "Entangled" -triangles: [] -home_district: transit -tags: [v0.1] -decision_refs: [D-024] -cross_refs: [] ---- - -# Kael Davan — THE FRIEND (Smuggler) - -**Tier 1 Production-Level NPC** | Logistics Hub + Smuggling Ring | Entangled - ---- - -## Core Identity - -**Name**: Kael Davan -**Age**: 34 -**Role**: Dock worker, Sova Transit District Logistics Hub -**System Origin**: Krenn System, born on Station Sova -**Cultural Group**: Krenn System culture (compact names, first-name-primary, pragmatic, mind-your-business ethos) -**Lattice Tier**: Baseline -**Employer**: Sova Logistics Consortium (legitimate cover); The Arrangement (smuggling ring, informal) - ---- - -## 10-Axis Profile - -### 1. Want - -**Primary**: Protect the operation and the people in it. - -Kael didn't join the ring for ideology or ambition. He joined because Nils (his older sibling) asked, because the money helped, and because it felt manageable. Two years in, Kael is good at it — efficient, careful, reliable. But the operation is escalating (higher volume, tighter margins, more risk), and Kael's Want is shifting from "keep things running" to "keep people safe." - -**Secondary**: Protect Naia (partner) from the truth and the consequences. - -Naia doesn't know about the smuggling. Kael's late nights and evasive answers are creating anxiety at home. Kael Wants to shield Naia from danger, but the shielding itself is the danger. - ---- - -### 2. Secret / Vulnerability - -**Surface secret** (smuggler knows, detective suspects): Ring member. Handles physical cargo — routing flagged containers, managing dock-side handoffs. - -**Deep secret** (nobody knows except the unknown contact): Kael is trying to **exit the ring**. Naia's worry has become unbearable. Kael contacted someone from a different district (not Sabel, not anyone the ring knows) who's offered to help Kael get out — for a price. The unknown contact is leverage (they know Kael is in the ring), extraction support (they have connections), and a massive security breach (unauthorized contact is grounds for ring elimination). - -**Vulnerability**: The exit attempt. If Nils finds out, Kael is out — violently. If the smuggler (if playing ring-member path) finds out, trust collapses. If the detective finds out, Kael is the perfect informant (desperate, motivated, already halfway to cooperation). - ---- - -### 3. Relationships - -**Relationship 1: Nils Davan** (older sibling, ring coordinator) -- **Type**: Blood loyalty, complicated by power dynamic -- **History**: Nils brought Kael into the ring. "It's just moving containers. You're good at logistics. We take care of our own." -- **Current tension**: Nils is pushing for higher volume. Kael thinks it's too fast, too risky. Kael can't say no to Nils (family), but resents being pushed. -- **Mechanical relevance**: If Kael's exit attempt is discovered, Nils is the primary threat. - -**Relationship 2: Naia** (partner, teacher, civilian) -- **Type**: Domestic partnership, 6 years -- **History**: Met at a community event. Naia teaches station kids, represents ordinary life, stability, the future Kael wants but smuggling threatens. -- **Current tension**: Naia knows something's wrong. The late nights, the evasive answers, the money that doesn't quite track. Naia has confided in Sera (friend, Commission field tech). Kael is oblivious to how much anxiety he's causing. -- **Mechanical relevance**: Naia is Kael's emotional anchor and his vulnerability. Threaten Naia, Kael breaks. - -**Relationship 3: The Smuggler** (if smuggler is playing ring-member path) -- **Type**: Close colleague, trusted friend, shared risk -- **History**: Work together on legitimate shifts AND ring operations. Cover for each other. Share lunch, drinks at Lera's, the easy camaraderie of people who've been through things together. -- **Current tension**: Kael is lying to the smuggler. The unauthorized contact, the exit attempt — all of it is concealed. The smuggler trusts Kael completely, which makes the betrayal worse when discovered. -- **Mechanical relevance**: THE FRIEND. The relationship phase arc (warmth → trust → doubt → conflict) plays out here. - ---- - -### 4. Tolerance Threshold - -**Moderate** — Kael can handle pressure, but has limits. - -**What Kael tolerates**: -- Routine smuggling operations (manageable risk) -- Voss's resentment and Nils's demands (family and operational necessity) -- Lying to Naia (hates it, but does it to protect) - -**What pushes Kael toward breaking**: -- Escalating volume (feels like the operation is spiraling) -- Naia's increasing worry (guilt accumulation) -- The detective's investigation (paranoia about exposure) - -**What breaks Kael**: -- Direct threat to Naia (if the ring or the detective uses Naia as leverage, Kael flips immediately) -- Nils discovering the exit attempt (Kael either runs or fights, no middle ground) - ---- - -### 5. Daily Routine - -**06:00 - 06:30**: Arrive at Logistics Hub, shift startup -**06:30 - 10:30**: Morning shift, freight handling (legitimate work) -**10:30 - 11:00**: Break room, lunch with smuggler (if applicable) or other dock workers -**11:00 - 14:00**: Afternoon shift -**14:00 - 14:30**: Shift end, sometimes lingers for "overtime" (ring operations during transition window) -**14:30 - 16:00**: Off-shift, heads home or to The Last Shift (bar) -**16:00 - 22:00**: Home with Naia, or occasional ring coordination meetings (Corridor B-7, back room) -**22:00+**: Late-night ring operations (1-2x per week, during night shift transition) - -**Routine deviations** (tells): -- Increased lattice checking (nervous, expecting contact from exit coordinator) -- Shortened social interactions (distracted, avoiding prolonged conversation) -- Late arrivals home (Naia notices, worries) -- Unauthorized presence in Corridor B-7 (the contradiction discovery moment for smuggler) - ---- - -### 6. Information Inventory - -**Knows** (KnowsDetails or Direct): -- Ring structure: Nils coordinates, Voss provides scheduling cover, Renn handles courier work, Lera provides handoff point, Devra manages external contacts -- Smuggling routes: freight bay → service corridor → temp storage → bar back room -- Shift schedules and coverage gaps (operational knowledge) -- Manifest doctoring process (Maret processes, Voss approves) -- Drin's compromise (gambling debt to Harek, looks away during inspections) -- Naia's worry (knows Naia suspects something, doesn't know Naia talked to Sera) - -**Doesn't know**: -- The detective is investigating (unless playing detective path and Kael has been flagged) -- Sera is sitting on unreported evidence about Kael's manifest discrepancies (protects Naia by not reporting) -- Pell is considering turning informant (internal ring threat) -- The full supply chain (Kael knows cargo comes from Sabel off-station, doesn't know upstream Syndic sources) - ---- - -### 7. Contentment - -**Moderate-low** (D-024 thematic axis). - -Kael is *comfortable enough to function* but not happy. The smuggling pays well, the work is manageable, the team (Nils, smuggler, Renn) is solid. But the guilt about lying to Naia is corrosive. The escalating volume makes every shift feel riskier. The exit attempt is itself a contentment signal: Kael wants out because "enough" isn't enough anymore — the cost is too high. - -**Contentment trajectory**: Declining. Two years ago, Kael was moderate (the operation was stable, Naia didn't suspect). Now, Kael is low and falling. The exit attempt is a desperate grab for a future that doesn't involve looking over his shoulder. - ---- - -### 8. Personality Traits - -**Primary: Loyal** — to people, not institutions. Kael's loyalty is personal (Nils, Naia, the smuggler) and situational (the ring, because the people he cares about are in it). If forced to choose between the ring and a person, Kael chooses the person. - -**Secondary: Protective** — defaults to shielding others from consequences. Lies to Naia to protect. Tries to exit the ring to protect Naia from future fallout. Would cover for the smuggler even at personal cost. - -**Tertiary: Pragmatic** — doesn't waste words, doesn't dramatize. Handles problems as they arise. The exit attempt is Kael being pragmatic: "This situation is unsustainable. I need a way out. I'll find one." - ---- - -### 9. Tell System - -**Observable behavioral changes that signal Kael's internal state:** - -| Tell | Trigger | Observable To | Mechanical Flag | -|------|---------|---------------|-----------------| -| **Increased lattice checking** | Expecting contact from exit coordinator | Smuggler (if observant), Detective (if tracking behavioral patterns) | `behavior_flags: lattice_checking` | -| **Shortened social interactions** | Distracted, avoiding prolonged conversation where lies might surface | Smuggler, Naia, bar regulars | `behavior_flags: distracted,evasive` | -| **Looks left before answering** | Lying or deflecting (Kael's personal tell, smuggler knows this from history) | Smuggler (recognizes the tell from experience) | `tell_observed: looks_left_when_lying` | -| **Unauthorized spatial presence** | Meeting unknown contact in Corridor B-7 (restricted area, not part of normal routine) | Smuggler (direct observation), Detective (if surveillance active) | `contradiction_flagged: meeting_unknown_contact` | - -**Tell progression** (smuggler's perspective): -1. **Week 1-2** (baseline): Kael is normal. Reliable, warm, punctual. -2. **Week 3** (first crack): Kael checks lattice more often. Smuggler monologue: "Kael's distracted today. Probably nothing." -3. **Week 4** (pattern): Shortened lunch conversations. Kael excuses himself early. Smuggler monologue: "Kael's been quiet lately." -4. **Week 5** (the observation): Smuggler sees Kael in Corridor B-7, talking to unknown person. THE FRIEND contradiction discovered. Smuggler monologue: "That wasn't anyone from our rotation. Kael, what are you doing?" - ---- - -### 10. Skill Set - -**Occupational**: Freight logistics, cargo handling, manifest reading, shift coordination. - -**Ring-relevant**: Container routing, timing coordination (knows when surveillance gaps occur), physical cargo movement (lifts, secures, reroutes). - -**Combat tag**: **No**. Kael is not combat-trained. If cornered, Kael runs or capitulates. Violence is not part of Kael's skill set or personality. - -**Lattice capability**: Baseline tier. No enhanced perception, no analytical overlays. Kael uses lattice for communication, shift schedules, and routine queries. - ---- - -## Backstory - -Born on Station Sova. Grew up in the freight district — child of logistics workers, pragmatic Krenn System upbringing. Joined Sova Logistics Consortium at 22, worked the docks for a decade before Nils (older sibling, always more ambitious) brought him into the ring. "It's just moving containers, Kael. You're good at this. We take care of our own." Two years in, Kael is good at it — efficient, careful, trusted. But the operation is escalating, Naia is worried, and Kael realizes he's in deeper than he intended. The exit attempt is Kael trying to reclaim a future that doesn't end in a cell or worse. - ---- - -## Voice Sample - -**Mood: Casual (baseline, smuggler interaction)** -- *"Shift's looking smooth today. Freight's on schedule, no surprises. Let's keep it that way."* - -**Mood: Protective (deflecting Naia's worry)** -- *"I'm fine, Naia. Just work stuff. Long shifts, you know how it is. Don't worry about me."* - -**Mood: Evasive (post-contradiction, smuggler pressing)** -- *"It's nothing. Just a thing. Don't worry about it."* [Looks left before answering — the tell] - -**Mood: Desperate (if cornered by detective or Nils)** -- *"You don't understand. I'm trying to protect someone. If I don't get out, they're at risk. I can't— I can't keep doing this."* - -**Mood: Warm (to smuggler, early game)** -- *"There you are. Good — I was starting to worry. Ready for another day of making the galaxy's freight move?"* [Slight smile, genuine relief] - ---- - -## Dual-Lens Notes - -### How the Smuggler Sees Kael - -**Access tier**: Insider + Peer (if ring-member path) OR Peer (if non-ring civilian smuggler) - -**Relationship**: Friendly (baseline) → PersonOfInterest (post-contradiction) - -**Monologue tone (baseline)**: Fond, casual. *"Kael's here. Good — always reliable."* - -**Monologue tone (post-contradiction)**: Conflicted, analytical. *"Kael's lying to me. I know his tells. What are you hiding?"* - -**What the smuggler knows that the detective doesn't**: Kael is a ring member (if smuggler is also in the ring). Kael's personal tell (looks left when lying). Kael's relationship with Naia. The unauthorized meeting is a *betrayal of operational security*, not just suspicious behavior. - -**Emotional weight**: Maximum. Kael is THE FRIEND. The color shift from green to amber is the moment the smuggler realizes trust has been compromised. - ---- - -### How the Detective Sees Kael - -**Access tier**: Public (baseline) → Authority (if investigation escalates and detective pressures Kael) - -**Relationship**: Unknown → Known → PersonOfInterest (if tells accumulate) - -**Monologue tone (baseline)**: Clinical, observational. *"Dock worker. Davan, K. Unremarkable on paper."* - -**Monologue tone (post-tells)**: Analytical suspicion. *"Davan's nervous. Lattice activity spiked. Behavioral pattern suggests concealment."* - -**What the detective knows that the smuggler doesn't**: Manifest discrepancies tied to Kael's shifts (if Sera has shared or detective has analyzed logs). Naia's worry (if detective talks to Naia or Sera). Kael as a pressure point — partner at risk, potential informant. - -**Emotional weight**: Low initially (just another dock worker). High if Kael becomes the key to cracking the ring (the detective's professional satisfaction vs. Kael's desperation creates tension, but not personal betrayal). - ---- - -## Triangle Roles - -### Triangle 1: Hub Power (Voss - Kael - Nils) - -**Kael's function**: The executor. Kael handles the physical work — routing containers, managing dock-side operations. Caught between Voss (shift supervisor, resentful of being managed) and Nils (ring coordinator, Kael's sibling, pushing for escalation). - -**Pressure**: Voss complains to Kael about Nils. Nils gives Kael orders. Kael has to keep both satisfied while doing the actual smuggling work. - -**Player relevance**: Smuggler (if in ring) helps Kael navigate this. Detective sees Kael as efficient and wonders why Voss seems nervous around him. - ---- - -### Triangle 4: The Worried Partner (Naia - Kael - Sera) - -**Kael's function**: The oblivious cause. Kael's smuggling (late nights, evasive answers) is making Naia worried. Naia confides in Sera. Sera knows enough to connect Kael to the investigation but hasn't reported (loyalty to Naia). Kael doesn't know Naia talked to Sera. - -**Pressure**: Naia's worry is escalating. If Naia confronts Kael directly, Kael has to lie or confess. If Sera reports, Naia's life explodes. Kael is trying to exit the ring to stop the worry, but the exit attempt is itself creating more risk. - -**Player relevance**: Smuggler (if Kael's friend) knows why Kael is busy, can't tell Naia. Detective (if Sera's friend) might hear about Naia's worry from Sera, creating a path to Kael. - ---- - -### Triangle 5: Cross-Template (Pell - Renn - Drin) - -**Kael's indirect role**: Not a triangle member, but connected. Kael works with Renn (courier). If Pell (wavering member) turns informant, Kael's name will come up (Pell knows Kael handles cargo). If the ring starts fracturing internally, Kael's exit attempt becomes more dangerous (less trust, more paranoia). - ---- - -## Secret - -**What Kael is hiding**: The exit attempt. Unauthorized contact with someone outside the ring who's offered extraction help. - -**From whom**: Everyone. Nils, the smuggler, Naia (Naia doesn't even know about the ring), Sera, the detective. - -**Consequences if exposed**: -- **Nils finds out**: Kael is eliminated (violently or expelled, either way gone). -- **Smuggler finds out**: Trust collapses. If smuggler reports to Nils, Kael is done. If smuggler protects Kael, smuggler is complicit in a security breach. -- **Detective finds out**: Kael becomes the perfect informant. Desperate, already trying to leave, motivated by protecting Naia. Detective can offer protection in exchange for cooperation. -- **Naia finds out**: Emotional devastation. Naia learns (1) Kael is a smuggler, (2) Kael has been lying for two years, (3) Kael is in danger trying to exit. Trust in the relationship is destroyed, even if Naia understands the motive. - ---- - -## Contradiction Arc - -### Phase 1: Comfort (Friendly, baseline) - -**Timing**: 0-10 minutes (game start) - -**Observable behavior**: Kael is warm, reliable, present. Greets the smuggler with genuine affection. Talks about shift schedules, complains about Voss, asks about the smuggler's weekend. - -**Monologue (smuggler)**: *"Kael's already at the dock. Good. The day's better when he's on shift."* - -**Color**: Soft green (Friendly) - -**Dialogue tone**: Insider-tier, warm. Trust-gated content available. - -**Tell**: None — baseline normal. - ---- - -### Phase 2: First Crack (still Friendly, but flags accumulating) - -**Timing**: 10-15 minutes - -**Observable behavior**: Kael checks lattice more often than usual. Excuses himself from lunch early. Shortened social interactions. - -**Monologue (smuggler)**: *"Kael's distracted today. Probably nothing."* - -**Color**: Still green (Friendly), but `EntityKnowledge.known_attributes["behavior_flags"]` updates to `"lattice_checking,distracted"`. - -**Dialogue tone**: Still warm, but Kael deflects prolonged conversation. - -**Tell**: **Increased lattice checking** (observable if smuggler pays attention). - ---- - -### Phase 3: The Observation (Friendly → PersonOfInterest) - -**Timing**: 15-20 minutes - -**Trigger**: The smuggler sees Kael in Corridor B-7 (restricted maintenance corridor) talking to an unknown person. The person leaves before the smuggler gets close. - -**Observable behavior**: Kael in unexpected location, with unrecognized contact, during off-shift time. - -**Monologue (smuggler)**: *"That wasn't anyone from our rotation. And Kael didn't tell me about a meeting. What's going on?"* - -**Knowledge system**: -- `EntityKnowledge.state` → `KnowledgeState::Contradicted` (prior belief: "Kael operates within ring protocol" conflicts with observation: "Kael meeting unauthorized contact") -- `EntityKnowledge.known_attributes["contradiction_flagged"]` = `"meeting_unknown_contact"` -- `RelationshipState` transitions: `Friendly` → `PersonOfInterest` - -**Color shift**: Soft green → amber. **This is the emotional moment.** The player trusted Kael. Now Kael is amber. - -**Dialogue options unlock**: Confrontation path ("Kael, who was that?"), observation path (don't confront yet, gather more information). - -**Tell**: **Spatial deviation** — presence in restricted area at irregular time. - ---- - -### Phase 4: Confrontation Opportunity (PersonOfInterest, dialogue shift) - -**Timing**: 20-25 minutes - -**Trigger**: Smuggler can ask Kael about the meeting. Dialogue option: *"I saw you in Corridor B-7. Who were you talking to?"* - -**Kael's response** (deflection): *"Just a thing. Don't worry about it."* [Looks left before answering — **the tell**] - -**Monologue (smuggler)**: *"He looked left. He always looks left when he's making something up. Kael is lying to me."* - -**Knowledge system**: -- `EntityKnowledge.known_attributes["tell_observed"]` = `"looks_left_when_lying"` -- `EntityKnowledge.known_attributes["secret_held"]` = `"unauthorized contact, exit attempt?"` -- `EntityKnowledge.known_attributes["secret_confidence"]` = `"confirmed"` (the tell confirms the lie) - -**Dialogue tone**: Kael becomes evasive, subject changes, forced casualness. Trust-tier content locks (Kael won't share real information while hiding the exit attempt). - -**Color**: Remains amber (PersonOfInterest). - ---- - -### Phase 5: New Equilibrium (PersonOfInterest, contaminated trust) - -**Timing**: 25-30 minutes (remainder of vertical slice) - -**Observable behavior**: Kael acts normal again. Same shifts, same greetings, same surface warmth. But the smuggler is now **watching**. - -**Monologue (smuggler)**: *"Same old Kael. Laughing at the same jokes. ...What are you not telling me?"* - -**Dialogue options**: -- **Path A (understanding)**: Smuggler confronts gently: *"Kael, if you're in trouble, I can help."* Kael might confess (exit attempt, protecting Naia). `RelationshipState` remains `PersonOfInterest` (still a problem), but tone shifts to sympathetic. Player gains information, can choose to help Kael exit or report to Nils. -- **Path B (betrayal)**: Smuggler reports to Nils or pressures Kael harshly: *"You broke protocol. Unauthorized contact is grounds for elimination."* Kael turns defensive. `RelationshipState` → `Hostile`. Kael avoids smuggler, might actively obstruct or flee. -- **Path C (observation)**: Smuggler doesn't confront, just watches. Accumulate more evidence, decide later. `RelationshipState` remains `PersonOfInterest`. Tension simmers. - -**Color**: Amber (paths A/C) or Red (path B). - -**Emotional payload**: The warm interactions from Phase 1 are **contaminated**. Every smile, every joke, every "good to see you" is now filtered through doubt. THE FRIEND arc doesn't resolve — it metastasizes. - ---- - -## Content Requirements (Tier 1) - -**~70-100 authored lines total** (no generation expansion): - -- **25-35 dialogue lines**: Greetings (5), shift talk (8), bar casual (6), ring coordination (6 if smuggler is in ring), deflection/evasion (5-8 post-contradiction), confrontation responses (3-5) -- **15-20 trust-gated lines**: Insider-tier (close colleague talk, ring operations), secret-tier (if smuggler earns deep trust pre-contradiction) -- **5-8 unprompted lines**: Kael volunteers information or warnings (early), excuses or deflections (late) -- **10-15 monologue lines per character**: - - Smuggler monologue about Kael: warmth (3), concern (3), contradiction discovery (4), post-confrontation (3-5) - - Detective monologue about Kael: identification (2), behavioral observation (4), suspicion (3), informant potential (2-3) -- **5-8 tell observation lines**: Lattice checking (2), distraction (2), looks-left tell (2), spatial deviation (2) -- **3-5 contradiction discovery lines**: The Corridor B-7 moment from multiple angles (direct observation, monologue reaction, follow-up dialogue) - ---- - -## Authoring Notes - -- **Kael's voice**: Direct, practical, short sentences. Doesn't waste words. Uses first names. Warm to people he trusts, evasive when hiding something. -- **The tell** (looks left when lying) must be established early in casual dialogue so the smuggler (and player) recognize it during the contradiction. -- **Naia references**: Kael mentions Naia in casual conversation ("Naia's got a school event tonight, so I'm heading home early"). Establishes the relationship before it becomes load-bearing. -- **Ring operations dialogue** (if smuggler is in ring): Matter-of-fact, operational. "Container 4471 is flagged. I'll reroute it during shift transition." No drama, no theatrics. -- **Deflection dialogue** (post-contradiction): Kael doesn't lie outright (too risky). Kael deflects: "It's handled." "Don't worry about it." "Just work stuff." The evasion itself is the tell. -- **Dual-lens discipline**: Every Kael line must work for BOTH the smuggler (who knows Kael personally) AND the detective (who reads Kael analytically). The same sentence lands differently per character. - ---- - -## Pattern / Motivation - -**Pattern (System A):** FRIEND — Kael is a trust anchor whose relationship with the player character is the emotional core of the smuggler's experience. The FRIEND pattern means Kael's betrayal (or the smuggler's betrayal of Kael) carries maximum emotional weight. -**Motivation (System B):** OPERATOR — Kael runs ring cargo at the dock level. He routes containers, manages handoffs, coordinates timing. His day-to-day function is operational execution, not strategic direction or pressure application. - -**Composition read:** FRIEND + OPERATOR creates the identity betrayal: "I was your friend AND your co-conspirator." The player trusted Kael as a person (FRIEND) while relying on Kael as a functional colleague (OPERATOR). When the contradiction surfaces — Kael meeting an unauthorized contact, attempting to exit — the betrayal cuts both relationships simultaneously. The warmth was real. The operational reliability was real. The secret exit attempt violates both, and the player cannot separate the personal loss from the professional one. - ---- - -**End Kael Davan Profile**. This is the full Tier 1 production depth. Sera Venn (detective's FRIEND) follows the same structure with different contradiction mechanics. diff --git a/wiki/characters/lera-sessik.md b/wiki/characters/lera-sessik.md deleted file mode 100644 index 51015c470..000000000 --- a/wiki/characters/lera-sessik.md +++ /dev/null @@ -1,146 +0,0 @@ ---- -title: "Lera Sessik" -slug: lera-sessik -canonical_id: "npc:lera-sessik" -category: character -status: canonical -created: 2026-02-12 -updated: 2026-02-13 -tier: 2 -pattern: "ANCHOR" -motivation: "OPERATOR" -social_sites: [] -entanglement: "Mundane" -triangles: [] -home_district: transit -tags: [v0.1] -decision_refs: [D-024] -cross_refs: [] ---- - -# Lera Sessik - -**Tier 2 NPC** | The Last Shift (Bar) | Mundane - ---- - -## Core Identity - -**Name**: Lera Sessik -**Age**: 52 -**Role**: Owner and primary bartender, The Last Shift -**System Origin**: Krenn System, Krenn Prime (surface), relocated to Sova 20 years ago -**Lattice Tier**: Baseline -**Employer**: Self-employed (The Last Shift is her business, her livelihood, her identity) - ---- - -## 10-Axis Profile - -### 1. Want - -**Primary**: Keep the bar viable. - -The Last Shift operates on thin margins. The after-shift crowd is what keeps the lights on. Lera knows that some of her regulars have grey-market income — she doesn't ask where the money comes from because the spending keeps her solvent. Willful ignorance isn't moral failure for Lera; it's business survival. - -**Secondary**: Protect her regulars. - -Lera has been behind this bar for 18 years. She's watched people come and go, relationships form and break, careers rise and stall. Her regulars are her community. She protects them reflexively — warns them when unfamiliar faces show up, signals when conversations are being overheard, remembers who doesn't want to see whom. This protective instinct extends to the ring: not because she's complicit, but because the ring members are also regulars. - -### 2. Secret / Vulnerability - -**Surface secret**: Knows the back room of the bar is used for ring coordination meetings. Hasn't asked what happens there. The arrangement is simple: they pay for the space, they buy drinks, they don't cause trouble. - -**Deep secret**: None. Lera doesn't have conspiracy-level secrets. What she has is accumulated knowledge from 18 years of bartending — fragments of conversations, behavioral patterns, relationship dynamics. She knows more about the district's social fabric than anyone, and what makes her valuable is that she doesn't talk about it. - -**Vulnerability**: The bar itself. Threaten to shut down The Last Shift (health inspection, license review, institutional pressure) and Lera cooperates with whoever is doing the threatening. She has no fallback. - -### 3. Relationships - -**Harek**: Off-duty security officer, bar regular. They have professional familiarity — Harek drinks, plays cards, tips well. Lera tolerates Harek's card games because they bring in customers. She's aware Harek holds debt over Drin but views that as none of her business. - -**Sera Venn**: Bar regular. Lera likes Sera — quiet, polite, tips consistently, doesn't cause trouble. Commission employee who doesn't act like Commission. Lera treats her like any regular. - -**Torek Lintar**: Bar regular. Lera is protective of Torek but worried about his spending. New jacket, buying rounds, lattice accessories — visible generosity that's drawing attention. Lera hasn't said anything directly but is thinking about it. - -### 4. Tolerance Threshold - -**High**. Lera has been bartending for nearly two decades. She tolerates drunks, arguments, gossip, and grey-market activity with professional detachment. What breaks her tolerance: violence in the bar (zero tolerance, immediate ejection), institutional pressure on her business, or a direct threat to a regular she cares about. - -### 5. Daily Routine - -**10:00 - 12:00**: Bar prep (inventory, cleaning, restocking) -**12:00 - 14:00**: Quiet hours (a few early regulars, food prep) -**14:00 - 22:00**: Peak hours (shift transition crowd, evening regulars, card games) -**22:00 - 02:00**: Late crowd (smaller, quieter, ring coordination sometimes uses back room) -**02:00 - 03:00**: Close, clean, home - -### 6. Information Inventory - -**Knows**: Who drinks with whom, who avoids whom, who's spending more than they should, who's been fighting, who's worried. Social intelligence that no one else in the district possesses. The back room is used for meetings she doesn't attend. Torek's spending pattern. Sera's avoidance of Torek. Naia's worry about Kael. - -**Doesn't know**: Ring structure, cargo details, manifest discrepancies, the detective's specific mandate. Lera knows something is going on. She doesn't know what, and she's been careful not to learn. - -### 7. Contentment - -**Moderate**. The bar is viable. Her regulars are loyal. The work is hard but familiar. Lera's contentment is functional — she's not thriving, but she's not miserable. The smuggling economy keeps her bar profitable. If that economy is disrupted, her contentment drops sharply. - -### 8. Personality Traits - -**Primary: Observant** — sees everything, processes quietly, acts selectively. -**Secondary: Protective** — of her bar, her regulars, her community. -**Tertiary: Pragmatic** — makes the moral compromises necessary to keep the lights on. - -### 9. Tell System - -| Tell | Trigger | Observable To | -|------|---------|---------------| -| **Cleans glasses when nervous** | Unfamiliar authority enters the bar, or a conversation at a table gets too loud | Detective, regular patrons | -| **Redirects conversations** | A regular is about to say something incriminating near an outsider | Smuggler (recognizes the signal), Detective (if paying attention to Lera's social management) | -| **Watches the door** | Someone she considers a risk is due to arrive, or the back room is in use | Detective (if tracking Lera's attention patterns) | - -### 10. Skill Set - -**Occupational**: Bar management, customer service, social intelligence, conflict de-escalation. -**Combat tag**: **No**. Lera has a security alarm and knows when to use it. -**Lattice capability**: Baseline. - ---- - -## Voice Sample - -**Mood: Welcoming (baseline)** -- *"Shift's over? You look like you need this. Sit. The ale's fresh."* - -**Mood: Protective (warning a regular)** -- *"New face at the corner table. Asking about work schedules. Probably nothing, but — you know. Thought you should know."* - -**Mood: Guarded (detective asking questions)** -- *"I serve drinks. People talk. I don't take notes. You want information, try the Commission kiosk on Level 3. It's usually empty."* - ---- - -## Dual-Lens Notes - -**Smuggler**: Lera is infrastructure — the bar is a social hub, a meeting point, a place to read the district's mood. The smuggler trusts Lera to protect the community (including them) without being told to. *"Lera's watching the door. Something's up. I'll ask later."* - -**Detective**: Lera is the gatekeeper. She knows everyone and shares nothing voluntarily. The detective can build rapport (become a regular, tip well, ask small questions) or apply pressure (institutional leverage on the bar license). Either approach takes time. *"The bartender — Sessik. Runs this place. She sees everything. Getting her to talk will take patience or leverage."* - ---- - -## Triangle Roles - -**Triangle 3: Bar Tensions (Lera - Torek - Olin)** — The business owner caught between profit and exposure. Torek's spending keeps the bar viable. Olin's questions make everyone nervous. Lera wants the money and the quiet but can't have both if Torek keeps being visible. - ---- - -## Pattern / Motivation - -**Pattern (System A):** ANCHOR — Lera embodies contentment through her bar. Eighteen years behind the same counter, the same regulars, the same rhythms. She represents the stable social infrastructure that the investigation threatens to disrupt. Her version of "Is this enough?" is answered by the bar itself — yes, if nobody asks hard questions. -**Motivation (System B):** OPERATOR — Lera runs The Last Shift. She manages inventory, serves customers, facilitates the social space, and maintains the delicate balance between profit and discretion. Her function is operational: keeping the bar viable, which means keeping the grey-market spending flowing without attracting institutional attention. - -**Composition read:** ANCHOR + OPERATOR creates profitable blindness: "Is this enough? Yes — if I don't look." Lera's contentment (ANCHOR) is sustained by her operational competence (OPERATOR) — she runs the bar well enough that the moral compromises stay manageable. The willful ignorance is not laziness; it is active maintenance of a life she built. When the investigation arrives, it threatens both the emotional equilibrium and the business model simultaneously. Lera must choose between the comfort she's anchored to and the truth she's been operating around. - ---- - -**Cross-References:** [Torek Lintar](torek-lintar.md), [Harek](harek.md), [Sera Venn](sera-venn.md), [Naia Tamm](naia-tamm.md), [Olin](olin.md) diff --git a/wiki/characters/maret-korr.md b/wiki/characters/maret-korr.md deleted file mode 100644 index 42b5a9a8e..000000000 --- a/wiki/characters/maret-korr.md +++ /dev/null @@ -1,146 +0,0 @@ ---- -title: "Maret Korr" -slug: maret-korr -canonical_id: "npc:maret-korr" -category: character -status: canonical -created: 2026-02-12 -updated: 2026-02-13 -tier: 2 -pattern: "WITNESS" -motivation: "SKEPTIC" -social_sites: [] -entanglement: "Mundane" -triangles: [] -home_district: transit -tags: [v0.1] -decision_refs: [D-024] -cross_refs: [] ---- - -# Maret Korr - -**Tier 2 NPC** | Logistics Hub (The Terminal) | Mundane - ---- - -## Core Identity - -**Name**: Maret Korr -**Age**: 41 -**Role**: Freight scheduler, Sova Transit District Logistics Hub -**System Origin**: Krenn System, Station Sova -**Lattice Tier**: Baseline -**Employer**: Sova Logistics Consortium - ---- - -## 10-Axis Profile - -### 1. Want - -**Primary**: Understand what's happening with the manifests. - -Maret processes freight schedules. She reconciles incoming manifests with cargo bay allocations, shift assignments, and gate transit logs. She's meticulous — numbers are her language. And the numbers aren't adding up. Container counts don't match gate logs. Certain bays have manifests revised after the fact. Shifts supervised by Voss have more discrepancies than others. Maret doesn't know what this means, but she knows it means something. - -**Secondary**: Protect herself. Not get involved. - -Maret didn't ask to see the discrepancies. She sees them because that's her job. She hasn't reported because she doesn't know whom to report to (the Commission kiosk is unmanned, station security handles accidents not contraband, and going to Voss feels dangerous). She's paralyzed between duty and self-preservation. - -### 2. Secret / Vulnerability - -**Surface secret**: Maret has noticed manifest discrepancies. She's mentioned it to no one, but her increased attention to certain records is potentially observable. - -**Deep secret**: Maret has started keeping a personal log of discrepancies on her private lattice storage. If discovered, this log is either evidence (for the detective) or a threat (for the ring). - -**Vulnerability**: Knowledge without protection. Maret knows enough to be useful to the detective and dangerous to the ring, but has no institutional backing, no allies in the conflict, and no exit strategy. - -### 3. Relationships - -**Voss**: Shift supervisor. Professional relationship. Maret respects Voss's competence but has noticed the correlation between his schedule adjustments and manifest discrepancies. She hasn't confronted him. She's afraid of what the answer would be. - -**Drin**: Maintenance tech who handles dock inspections. Maret knows Drin gambles at the bar. She's observed that inspection reports from Drin's shifts are consistently clean — too clean for the volume of freight processed. Another data point she's filed and not acted on. - -**Resha**: New hire. Maret is protective of Resha in a distant, professional way — making sure the new worker gets proper training, isn't overloaded. Resha's questions about locked bays and irregular schedules echo Maret's own unspoken concerns. - -### 4. Tolerance Threshold - -**Low-moderate**. Maret is not built for confrontation. She handles data, not people. The discrepancies are eating at her, but she's tolerated them for weeks because action feels more dangerous than silence. What breaks her: the detective asking the right question, or the ring discovering her private log. - -### 5. Daily Routine - -**06:00 - 14:00**: Day shift — freight scheduling, manifest reconciliation, bay allocation -**10:30 - 11:00**: Break room. Maret eats alone or with Resha. Avoids Voss during breaks. -**14:00 - 15:00**: Post-shift, reviews next day's gate schedule -**15:00 - 17:00**: Home or occasional bar visit (not a regular — Maret goes for Naia's company sometimes) -**After hours**: Reviews her private discrepancy log. Adds entries. Worries. - -### 6. Information Inventory - -**Knows**: Manifest processing (entire legitimate system), scheduling patterns, bay allocations, gate transit correlations. The specific discrepancies: container counts that don't reconcile, manifests revised after Voss's schedule adjustments, Drin's suspiciously clean inspection reports. Knows Resha is asking questions. - -**Doesn't know**: Ring structure, who's involved (suspects Voss, suspects something about Kael's shifts, doesn't have names for the operation), the contraband itself, Kael's exit attempt, Sera's compliance check, the detective's presence or mandate. - -### 7. Contentment - -**Low**. Maret was content before the discrepancies became impossible to ignore. She's a person who finds peace in orderly systems, and the manifest irregularities have disrupted that peace. She sleeps poorly. She double-checks everything. The contentment axis reads as anxiety held in check by routine. - -### 8. Personality Traits - -**Primary: Meticulous** — detail-oriented, systematic, can't ignore inconsistencies. -**Secondary: Anxious** — worries about consequences, overthinks, avoids confrontation. -**Tertiary: Honest** — fundamentally wants to do the right thing but is trapped by circumstance. - -### 9. Tell System - -| Tell | Trigger | Observable To | -|------|---------|---------------| -| **Increased manifest checking** | Reviewing the same records multiple times, cross-referencing gate logs she doesn't normally access | Voss (if monitoring staff activity), Detective (if tracking system access patterns) | -| **Avoids Voss during breaks** | Doesn't want casual conversation that might lead to questions about manifests | Resha (notices the social distance), Smuggler (if observant at the hub) | -| **Eats alone more often** | Stress withdrawal — reduces social interactions to minimize the chance of revealing what she knows | Hub workers generally | - -### 10. Skill Set - -**Occupational**: Freight scheduling, manifest reconciliation, data analysis, logistics coordination. -**Combat tag**: **No**. Maret is entirely non-physical. -**Lattice capability**: Baseline with scheduling system access (standard for her role). - ---- - -## Voice Sample - -**Mood: Professional (baseline)** -- *"Bay 3 allocation looks clean for the morning cycle. I've reconciled the gate logs. Should be a smooth shift."* - -**Mood: Anxious (when pressed)** -- *"I just process the schedules. If there's a question about manifest revisions, that's Voss's authorization. I don't — I just run the numbers."* - -**Mood: Tentative (if detective earns trust)** -- *"There are... patterns. In the data. I'm not saying it's anything. But if someone wanted to look at Bay 7 allocations during Voss's shift adjustments, the numbers would be worth comparing."* - ---- - -## Dual-Lens Notes - -**Smuggler**: Maret is a risk. She processes the paperwork that the ring's operations depend on, and she's too smart not to notice. The smuggler reads Maret's anxiety as a threat — someone who knows too much and might talk. *"Maret's been quiet. She's usually all numbers and schedules. When she gets quiet, she's thinking. That's not good."* - -**Detective**: Maret is a potential cooperative witness. She has the data, the context, and the anxiety that suggests she's seen something she shouldn't have. The detective's task is building enough trust that Maret shares what she knows. *"The freight scheduler — Korr. Meticulous. Anxious. She processes the manifests. If there are irregularities in the paperwork, she's seen them."* - ---- - -## Triangle Roles - -**Triangle 2: Worried Knowledge (Maret - Drin - Voss)** — The one who sees the data. Maret processes manifests and has noticed discrepancies she can't explain and can't ignore. Caught between Voss (who authorizes the schedule changes) and Drin (whose inspections are suspiciously clean). Maret has the information to break the ring open — if someone asks the right question. - ---- - -## Pattern / Motivation - -**Pattern (System A):** WITNESS — Maret's v0.1 function is defined by what she has seen, not her institutional role. The player approaches Maret because she carries information — manifest discrepancies, bay allocation anomalies, the correlation between Voss's schedule adjustments and cargo irregularities. WITNESS describes her story function: she observed something she was not meant to observe. -**Motivation (System B):** SKEPTIC — Maret doubts the numbers. Not passively — she is actively re-checking manifests, cross-referencing gate logs, building a private discrepancy log. Her skepticism is data-driven and escalating. She has not yet acted on her doubt, but the doubt itself makes her dangerous because it means she might. - -**Composition read:** WITNESS + SKEPTIC creates dangerous knowledge: "She saw something and she can't stop questioning it." Maret did not choose to witness the discrepancies (WITNESS) — her job put the data in front of her. But her response is not passive acceptance; it is systematic doubt (SKEPTIC). The combination means Maret is a time bomb with her own fuse: she is gathering evidence not because anyone asked her to, but because her meticulous nature will not let her stop. For the detective, Maret is the cooperative witness who has already done half the work. For the smuggler, Maret is the threat you cannot neutralize without revealing why the numbers matter. - ---- - -**Cross-References:** [Voss](voss.md), [Drin](drin.md), [Resha](resha.md), [Naia Tamm](naia-tamm.md) diff --git a/wiki/characters/naia-tamm.md b/wiki/characters/naia-tamm.md deleted file mode 100644 index da9f99b2e..000000000 --- a/wiki/characters/naia-tamm.md +++ /dev/null @@ -1,146 +0,0 @@ ---- -title: "Naia Tamm" -slug: naia-tamm -canonical_id: "npc:naia-tamm" -category: character -status: canonical -created: 2026-02-12 -updated: 2026-02-13 -tier: 2 -pattern: "MIRROR" -motivation: "CIVILIAN" -social_sites: [] -entanglement: "Mundane" -triangles: [] -home_district: transit -tags: [v0.1] -decision_refs: [D-024] -cross_refs: [] ---- - -# Naia Tamm - -**Tier 2 NPC** | The Last Shift (Bar) | Mundane - ---- - -## Core Identity - -**Name**: Naia Tamm -**Age**: 33 -**Role**: Teacher, Station Sova community school (Residential Radial A) -**System Origin**: Krenn System, Krenn Prime (surface), relocated to Station Sova 8 years ago -**Lattice Tier**: Baseline -**Employer**: Sova Station Education Services - ---- - -## 10-Axis Profile - -### 1. Want - -**Primary**: Understand what's happening with Kael. - -Naia and Kael have been together 6 years. It was good — stable, warm, predictable. Then Kael started coming home late. Evasive answers. Money that didn't match the hours. Stress that Kael won't explain. Naia doesn't know about the ring. Naia knows that the person they share a life with is hiding something, and the not-knowing is worse than almost any truth. - -**Secondary**: Protect the life they've built. - -Naia teaches station kids. Has a community, a reputation, a daily rhythm. Whatever Kael is hiding, Naia wants it resolved without destroying everything — the home, the relationship, the stability that took years to build. This is why Naia confides in Sera instead of confronting Kael directly: Naia wants advice, not a fight. - -### 2. Secret / Vulnerability - -**Surface secret**: Worried about Kael. Visible to anyone who sees Naia's stress — Sera, bar regulars, anyone paying attention. - -**Deep secret**: Naia confided in Sera about Kael's behavior. This is the action that set Sera's compliance check in motion, though Naia doesn't know that. Naia shared a personal worry with a trusted friend. That trusted friend had institutional access. - -**Vulnerability**: Emotional exposure. Naia's worry is genuine, visible, and exploitable. The detective can cultivate Naia as a source by being sympathetic. The smuggler (if Kael's friend) feels guilt seeing Naia's distress. Naia is the emotional center of Triangle 4 — the person everyone wants to protect and nobody can protect without making it worse. - -### 3. Relationships - -**Kael Davan**: Partner, 6 years. Deep love, growing anxiety. Naia doesn't question Kael's character — just Kael's honesty. The relationship is the strongest bond in Naia's life and the source of the greatest stress. - -**Sera Venn**: Close friend, 10 months. Met at the bar after Sera transferred. Genuine friendship — Sera is smart, calm, from outside the district's close-knit social web. Naia trusts Sera as someone who can give perspective without gossip. - -**Lera Sessik**: Bar acquaintance. Naia isn't a heavy drinker but comes to The Last Shift for the social environment. Lera is warm to Naia — the kind of protective attention a good bartender gives to someone who's visibly struggling. - -### 4. Tolerance Threshold - -**Moderate**. Naia is patient — teaching station kids requires it. But the patience is fraying. Every evasive answer from Kael, every late night, every "it's just work" chips at Naia's tolerance. If pushed to a breaking point, Naia confronts Kael directly — which could trigger Kael's crisis, force Sera's hand, or give the detective an opening. - -### 5. Daily Routine - -**07:00 - 15:00**: Teaching (community school, Residential Radial A — tram to Transit District) -**15:00 - 15:30**: Commute back to Transit District -**15:30 - 17:30**: Bar (The Last Shift) — meets Sera, social time, decompresses -**17:30 - 22:00**: Home. Waits for Kael. Sometimes Kael is there, sometimes not. -**Late evenings**: Alone in the apartment, wondering where Kael is. - -### 6. Information Inventory - -**Knows**: Kael's normal routine (6 years of partnership). Kael's recent deviations (late nights, evasive answers, unexplained stress). Sera's Commission role (knows Sera is a tech, not an investigator). Bar social dynamics from Sera's descriptions. The school community, kids' families, education bureaucracy. - -**Doesn't know**: Ring, smuggling, Kael's membership, manifest discrepancies, Sera's compliance check, the detective's investigation. Naia lives in the civilian layer of the district where none of this is visible — until it becomes personal. - -### 7. Contentment - -**Low** — and declining. Naia was content: stable job, loving partner, community. Now the relationship anxiety is coloring everything. Teaching is harder when you're distracted. The bar visits are tinged with worry. Home is where the absence lives. Naia's contentment trajectory mirrors Kael's — both declining, for connected but different reasons. - -### 8. Personality Traits - -**Primary: Caring** — genuinely invested in other people's wellbeing (students, Kael, Sera). -**Secondary: Patient** — tolerates uncertainty longer than most, but not indefinitely. -**Tertiary: Perceptive** — reads emotional states well. Knows when Kael is lying even if Naia can't prove it. - -### 9. Tell System - -| Tell | Trigger | Observable To | -|------|---------|---------------| -| **Visible stress** | Tired eyes, distracted conversation, checking lattice for messages from Kael | Sera, Lera, Detective (if visiting the bar), bar regulars | -| **Mentions Kael unprompted** | Worry overflowing into conversation — "Kael was late again" or "I don't know what's going on at the hub" | Sera (primary recipient), Detective (if sitting nearby or in conversation) | -| **Increased bar presence** | Coming to the bar more often and staying longer — avoiding the empty apartment | Lera (notices the pattern), Sera (recognizes the coping mechanism) | - -### 10. Skill Set - -**Occupational**: Teaching, community engagement, youth education, curriculum management. -**Combat tag**: **No**. Naia is entirely civilian. -**Lattice capability**: Baseline. - ---- - -## Voice Sample - -**Mood: Worried (to Sera)** -- *"Kael was home at midnight again. Said it was overtime. There's no overtime posted for this week — I checked. Sera, what do I do?"* - -**Mood: Warm (baseline social)** -- *"The kids are doing better with the new math curriculum. Kael helped me set up the practice modules last month — back when Kael had time for things like that."* - -**Mood: Brittle (close to breaking point)** -- *"I'm not asking for much. Just — tell me the truth. Whatever it is. I can handle it. I can't handle not knowing."* - ---- - -## Dual-Lens Notes - -**Smuggler**: Naia is emotional collateral. The smuggler knows why Kael is busy and can't say. Seeing Naia's worry creates guilt — especially if the smuggler is Kael's friend. If Naia asks the smuggler about Kael, there's no good answer. *"Naia's at the bar again. Alone. Looking at the door every time it opens. I know where Kael is. I can't say."* - -**Detective**: Naia is a potential source. A partner who suspects their loved one is hiding something is a classic entry point for investigation. The detective can cultivate Naia's trust by being sympathetic — listen, validate, gently probe. Naia might not know specifics, but Naia knows Kael's routine, habits, and recent changes better than anyone. *"The partner — Naia Tamm. Teacher. Visibly stressed. Keeps looking at the door. If Davan is involved, this partner knows something changed, even if they don't know what."* - ---- - -## Triangle Roles - -**Triangle 4: Worried Partner (Naia - Kael - Sera)** — The emotional center. Naia's worry about Kael triggered Sera's investigation. Naia's trust in Sera makes Sera's concealment more painful. Naia connects the detective's investigation to Kael's personal life — through Sera, through Naia's own observations, through the simple fact that a worried partner is the best witness to behavioral change. - ---- - -## Pattern / Motivation - -**Pattern (System A):** MIRROR — Naia has no contradiction arc, no secret, no hidden agenda. She is exactly what she appears to be: a teacher worried about her partner. The MIRROR pattern means Naia reflects the truth of the district back at the player without distortion. In a world where everyone is hiding something, Naia's honesty is both a relief and a weapon — her transparency makes the concealment around her more painful. -**Motivation (System B):** CIVILIAN — Naia is uninvolved in any conspiracy or operation. She teaches station kids, worries about Kael, confides in Sera, and goes to the bar. Her civilian status is not a simplification — it is the source of her narrative power. The damage done to Naia is devastating precisely because she did nothing to invite it. - -**Composition read:** MIRROR + CIVILIAN creates honest transparency surrounded by liars: "The one person not lying — surrounded by liars." Naia's reflective honesty (MIRROR) combined with her complete uninvolvement (CIVILIAN) means she is the emotional baseline against which all deception is measured. When events drag Naia into the conspiracy through Kael's ring involvement and Sera's concealment, the damage is devastating because Naia was genuine. For the smuggler, Naia is the face of guilt — the person whose life is being destroyed by what the smuggler helps maintain. For the detective, Naia is a source whose value comes from her innocence, and cultivating that innocence as an investigative asset carries its own moral cost. - ---- - -**Cross-References:** [Kael Davan](kael-davan.md), [Sera Venn](sera-venn.md), [Lera Sessik](lera-sessik.md) diff --git a/wiki/characters/nils-davan.md b/wiki/characters/nils-davan.md deleted file mode 100644 index ea6d7b955..000000000 --- a/wiki/characters/nils-davan.md +++ /dev/null @@ -1,128 +0,0 @@ ---- -title: "Nils Davan" -slug: nils-davan -canonical_id: "npc:nils-davan" -category: character -status: canonical -created: 2026-02-12 -updated: 2026-02-13 -tier: 0 -pattern: "GHOST" -motivation: "HANDLER" -social_sites: [] -entanglement: "Entangled" -triangles: [] -home_district: transit -tags: [v0.1] -decision_refs: [D-024] -cross_refs: [] ---- - -# Nils Davan - -**Off-Stage NPC** | Smuggling Ring | Entangled - ---- - -## Core Identity - -**Name**: Nils Davan -**Age**: ~38 -**Role**: Ring Coordinator (upstream authority) — strategic direction, personnel decisions, volume targets -**System Origin**: Krenn System (same as Kael — siblings) -**Current Location**: Off-station (exact location unknown to most ring members) -**Lattice Tier**: Unknown (operates through lattice messages; communication protocols managed by Devra) -**Employer**: The Arrangement (ring leadership, operational) - ---- - -## Essential Function - -Nils is the **off-stage authority figure** in the smuggling ring. He does not appear physically in any v0.1 scene. His presence is felt entirely through: - -- **Lattice messages to Kael** (~5-8 authored lines): operational instructions, volume pressure, occasional personal/familial notes -- **References in NPC dialogue**: ring members mention Nils by name or by implication ("the coordinator", "your brother", "someone above Devra") -- **Reputation and operational pressure**: the escalation that drives Triangle 1 originates with Nils - -Nils is the **escalation pressure source**. He pushes for higher volume, tighter schedules, more throughput. This pressure cascades down through Devra (who executes), Kael (who handles dock-side operations), and Voss (who adjusts shift schedules to create coverage windows). Every character in the ring feels Nils's influence without seeing him. - ---- - -## Relationships - -### Kael Davan (younger sibling, ring member) - -- **Type**: Blood loyalty, complicated by power dynamic -- **History**: Nils recruited Kael into the ring. "It's just moving containers. You're good at logistics. We take care of our own." -- **Current dynamic**: Genuine familial bond, but Nils puts the operation first. Pushes Kael for higher volume. Doesn't know Kael is trying to exit the ring. -- **Mechanical relevance**: If Kael's exit attempt is discovered, Nils is the primary threat. Nils's reaction — family loyalty vs. operational security — is undefined in v0.1 but implied to be dangerous. - -### Devra Talsen (on-station coordinator) - -- **Type**: Professional respect, operational partnership -- **Dynamic**: Nils gives strategic direction; Devra handles execution. They respect each other's competence but disagree on risk tolerance — Devra favors steady volume, Nils pushes for escalation. -- **Communication**: Lattice messages, operational protocols. Devra is Nils's primary on-station voice. - -### Arvo Voss (shift supervisor) - -- **Type**: Resource exploitation, no personal relationship -- **Dynamic**: Nils exploits Voss's schedule authority to create coverage windows for ring operations. Voss resents the invisible hand above him — has positional authority on the floor, but the ring's needs override his scheduling decisions. Voss complies because the money is good and because refusing Nils has consequences he doesn't want to test. -- **Nils's view**: Voss is a resource, not a person. Functional, replaceable. - -### The Smuggler (PC, if ring-member path) - -- **Type**: Unseen boss -- **Dynamic**: If the smuggler is a ring member, Nils is the authority known by reputation and felt through operational pressure. The smuggler has never met Nils but follows orders relayed through Devra and Kael. - ---- - -## Known Attributes by Other NPCs - -| NPC | What They Know About Nils | -|-----|---------------------------| -| **Kael** | Sibling, ring leader, pushing for higher volume, cares about family but puts operation first. Recruited Kael personally. | -| **Devra** | Full operational picture. Communication protocols. Nils's identity, strategic priorities, risk tolerance. Primary on-station contact. | -| **Voss** | "Someone above Devra" giving orders. Never met Nils. Resents the pressure. Knows consequences of refusal exist. | -| **Renn** | Ring coordinator exists. Follows orders relayed through Devra. Minimal direct knowledge. | -| **Pell** | Knows the ring has leadership above local operations. No personal details. | -| **Smuggler (if ring)** | Nils exists, gives orders, is Kael's older sibling. Known by reputation. | -| **Nobody in Sova** | Nils's exact location, the full supply chain above Nils, Nils's broader network. | - ---- - -## Pattern / Motivation - -**Pattern (System A):** GHOST — Nils is physically absent from Sova Transit District. His power is felt exclusively through intermediaries — lattice messages to Kael, relayed orders through Devra, operational pressure that cascades through the entire ring. No one outside the inner circle (Kael, Devra) has met Nils in person. The GHOST pattern means Nils shapes events without being present to confront, cultivate, or observe. -**Motivation (System B):** HANDLER — Nils manages ring operations from above. He sets volume targets, applies escalation pressure, makes personnel decisions, and drives the strategic direction that everyone on-station must execute. The ring's growth imperative comes from Nils; the consequences of that imperative fall on others. - -**Composition read:** GHOST + HANDLER creates absent authority applying pressure through intermediaries. Nils's physical absence (GHOST) combined with his top-down management style (HANDLER) means the ring's most dangerous decisions are made by someone who never sees their consequences. He pushes for higher volume without experiencing the anxiety it creates in Voss, the risk it imposes on Kael, or the instability it breeds in Pell. For the smuggler, Nils is the unseen boss whose demands shape every operational day. For the detective, Nils is the name that surfaces late in the investigation — the coordinator behind the coordinator, the authority that explains why everyone on-station is afraid. - ---- - -## v0.1 Presence - -Nils is **never physically present** in any v0.1 game scene. His entire existence in the vertical slice is mediated: - -### Lattice Messages (~5-8 authored lines) - -Operational instructions to Kael. Pressure to increase volume. Occasional personal/familial note that humanizes the authority figure. These messages are a plot device — the player (as smuggler) may see or hear about them through Kael. - -### Dialogue References - -NPCs mention Nils by name or by implication: -- Kael: references "my brother" or "Nils" in ring contexts -- Voss: "another adjustment" from above, resentment toward unseen authority -- Devra: operational coordination, professional references -- Generic ring dialogue: "Nils says to push through more this cycle" - -### Triangle 1 Volume Escalation Fork (Ticket #377) - -Nils's transmitted message serves as a **plot device** — the escalation order that forces Triangle 1 (Voss - Kael - Nils) into active tension. The fork is triggered by Nils's demand for higher volume, which Kael must relay to Voss, who must adjust schedules, creating observable disruption. - ---- - -## Cross-References - -- [Kael Davan](kael-davan.md) — younger sibling, ring member, dock-side operator -- [Devra Talsen](devra.md) — on-station coordinator, executes Nils's strategic direction -- [Arvo Voss](voss.md) — shift supervisor, resents Nils's influence over his scheduling authority diff --git a/wiki/characters/olin.md b/wiki/characters/olin.md deleted file mode 100644 index 024833ae2..000000000 --- a/wiki/characters/olin.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: "Olin Tavren" -slug: olin -canonical_id: "npc:olin" -category: character -status: canonical -created: 2026-02-12 -updated: 2026-02-13 -tier: 3 -pattern: "CATALYST" -motivation: "CIVILIAN" -social_sites: [] -entanglement: "Flat" -triangles: [] -home_district: transit -tags: [v0.1] -decision_refs: [D-024] -cross_refs: [] ---- - -# Olin Tavren - -**Tier 3 NPC** | The Last Shift (Bar) | Flat - ---- - -## Essential Axes - -### Want - -Find work. Settle in. Start over. - -Olin arrived in Sova Transit District recently — a drifter from another district (or another station, stories vary). Looking for freight work, asking around, buying the occasional drink. Olin's story is plausible: contract work dried up elsewhere, heard Sova had openings, showed up. The story is also convenient — and in a district where new faces attract attention, convenience is suspicious. - -### Routine - -**Variable**: No fixed schedule. Olin appears at the bar in the afternoon, sometimes the hub entrance asking about openings, sometimes just walking the district. New arrivals without fixed employment have irregular patterns by nature. - -### Personality - -**Friendly, curious, slightly too interested.** Olin asks questions — about work schedules, shift structures, who runs what, where the good spots are. These are reasonable questions for a job-seeker. They're also the kind of questions a scout, informant, or rival operation would ask. The ambiguity is the point: Olin might be exactly what they claim, or might be something else entirely. The game deliberately does not resolve this for the player. - ---- - -## Voice Hint - -*"I'm just looking for steady work. Know anyone hiring at the hub? I'm good with freight — done it for years."* [Open, direct, a little too eager] - ---- - -## Function Note - -Olin is the **ambiguity NPC** — the new arrival who could be innocent or threatening, depending on how the player reads them. For the smuggler, Olin is a threat assessment: rival operation? Informant? Just a drifter? For the detective, Olin is a potential fresh source: unconnected to local loyalties, might share observations without social filtering. Olin's function is to create productive uncertainty — a new variable in a stable system that forces both characters to evaluate and respond. - -In Triangle 3 (Bar Tensions), Olin's questions and Torek's spending create a combined pressure on Lera: is Olin drawn by Torek's visible wealth? Is Olin asking about the hub because they've heard something? The triangle's tension rises from ambiguity, not certainty. - ---- - -## Dual-Lens Notes - -**Smuggler**: Threat. Unknown variable. *"New face. Asking about hub work. Could be nothing. Could be everything. Watching."* - -**Detective**: Potential source. Unattached. *"New arrival — Olin. No local ties. Fresh eyes, no loyalty obligations. Could be useful if they've seen something the regulars have learned to ignore."* - ---- - -## Pattern / Motivation - -**Pattern (System A):** CATALYST — Olin's arrival forces the district to evaluate a new variable. His questions about work schedules, shift structures, and hub operations create productive uncertainty. Every established character must assess Olin — friend or threat, innocent or planted — and that assessment itself disrupts the stable social equilibrium. -**Motivation (System B):** CIVILIAN — Olin is tagged CIVILIAN for v0.1, meaning no confirmed hidden agenda. At Tier 3 with 10-15 lines of content, there is not enough depth to resolve Olin's ambiguity. The CIVILIAN tag is the safe designation — if Olin is promoted to Tier 2 in v0.2, the hidden motivation can be revealed through dynamic tier promotion. - -**Composition read:** CATALYST + CIVILIAN creates ambiguous disruption: "Friend or threat? The question IS the disruption." Olin forces evaluation (CATALYST) without providing resolution (CIVILIAN). The game deliberately does not confirm whether Olin is a scout, an informant, a rival operator, or genuinely just looking for work. This unresolvable ambiguity is the point — both player characters must spend attention and resources assessing a variable that may never pay off. The disruption is in the assessment itself, not in any action Olin takes. - ---- - -**Cross-References:** [Lera Sessik](lera-sessik.md), [Torek Lintar](torek-lintar.md) diff --git a/wiki/characters/pell.md b/wiki/characters/pell.md deleted file mode 100644 index 0b895cc71..000000000 --- a/wiki/characters/pell.md +++ /dev/null @@ -1,147 +0,0 @@ ---- -title: "Pell Torssen" -slug: pell -canonical_id: "npc:pell" -category: character -status: canonical -created: 2026-02-12 -updated: 2026-02-13 -tier: 2 -pattern: "CATALYST" -motivation: "TURNCOAT" -social_sites: [] -entanglement: "Entangled" -triangles: [] -home_district: transit -tags: [v0.1] -decision_refs: [D-024] -cross_refs: [] ---- - -# Pell Torssen - -**Tier 2 NPC** | Smuggling Ring | Entangled - ---- - -## Core Identity - -**Name**: Pell Torssen -**Age**: 35 -**Role**: Ring member (handles inventory tracking and distribution scheduling for smuggled goods) -**System Origin**: Krenn System, Orbital Manufacturing Platform 3 (relocated to Sova 4 years ago) -**Lattice Tier**: Baseline -**Employer**: Self-employed (freelance logistics consulting — thin cover); The Arrangement (ring operations) - ---- - -## 10-Axis Profile - -### 1. Want - -**Primary**: Get out without getting killed. - -Pell is cracking. The ring seemed manageable when it was small-scale — a few containers per month, modest supplements to a modest income. Now the volume is escalating (Nils pushing for growth), the Commission liaison rotation gap is closing (the detective's arrival signals institutional attention), and Pell is realizing that the risk-to-reward ratio has inverted. Pell is considering cooperation with authorities, but doesn't know how, doesn't know whom to trust, and is terrified of what happens if the ring finds out. - -**Secondary**: Find someone — anyone — who can offer protection in exchange for information. - -Pell is an informant looking for a handler. The detective is the obvious candidate, but Pell doesn't know the detective exists yet (or doesn't know the detective is an investigator). Drin is an institutional contact (dock inspector with authority to receive reports), but Drin is compromised. The irony is thick: the one person Pell might approach is already under the ring's thumb. - -### 2. Secret / Vulnerability - -**Surface secret**: Ring member. Known to the ring; not known to the detective or most civilians. - -**Deep secret**: Pell is considering turning informant. This is the most dangerous secret in the district. If Nils or Devra confirm Renn's suspicion, Pell is dead or disappeared. If Pell successfully cooperates with the detective, the ring collapses. - -**Vulnerability**: Isolation. Pell has no allies in this decision. The ring would kill him. The authorities don't know he exists. He's making the biggest decision of his life completely alone. - -### 3. Relationships - -**Renn**: Fellow ring member. Renn suspects Pell is unreliable and has reported this. Pell doesn't know about Renn's report, but senses the increased scrutiny. The relationship has chilled. - -**Devra**: Ring coordinator. Pell receives scheduling instructions from Devra. Devra is watching Pell more closely since Renn's report. Pell feels the pressure without understanding its specific source. - -**Drin**: Dock inspector. Pell knows Drin processes freight inspections and has institutional authority. Pell has considered approaching Drin — unaware that Drin is compromised through Harek's gambling debt. This potential contact is a trap Pell doesn't see. - -### 4. Tolerance Threshold - -**Exceeded**. Pell is past his tolerance. The escalating volume, the increasing risk, the paranoia — all of it has pushed Pell beyond functional tolerance. He's operating on anxiety and habit, not commitment. Any external pressure (the detective asking the right question, Renn confronting him, Nils summoning him) could trigger the break. - -### 5. Daily Routine - -**Irregular**. Pell's freelance cover doesn't require fixed hours. His ring duties (inventory tracking, distribution scheduling) are done via lattice communication, often from home or from public locations where he blends in. - -**09:00 - 12:00**: Freelance work (legitimate small logistics contracts, sporadic) -**12:00 - 15:00**: Variable — bar (occasionally), residential pod, wandering -**15:00 - 19:00**: Ring communication (lattice-based, encrypted, scheduled by Devra) -**Night**: Ring coordination meetings (bar back room, 1-2x per week) - -**Routine deviations**: Pell's routine is becoming MORE irregular as his anxiety increases — skipping meetings, failing to respond to lattice messages promptly, avoiding locations where ring members congregate. - -### 6. Information Inventory - -**Knows**: Ring operational details (inventory levels, distribution schedules, client lists), Kael's dock-side handling, Renn's courier routes, Devra's coordination patterns. The contraband mix (lattice components, medical-grade replacements). Knows the ring's vulnerabilities from inside — which operations are sloppiest, which timing windows are tightest, which members are essential. - -**Doesn't know**: Kael's exit attempt (Kael concealed from everyone), Sera's compliance check, the detective's identity or investigation scope, Drin's compromise, the supply chain above Sabel. - -### 7. Contentment - -**Very low**. Pell was moderate-low when the ring was manageable. Now he's in crisis. Every interaction with ring members feels dangerous. Every stranger could be an investigator. Every lattice message could be a summons. Pell's contentment is a measure of how far someone can fall when the thing that was supposed to help them (supplementary income from the ring) becomes the thing that threatens to destroy them. - -### 8. Personality Traits - -**Primary: Anxious** — overthinking, paranoid, struggling to maintain composure. -**Secondary: Intelligent** — understands systems, recognizes patterns, can articulate what the ring does and how to dismantle it. -**Tertiary: Desperate** — willing to take risks he wouldn't have considered a year ago. - -### 9. Tell System - -| Tell | Trigger | Observable To | -|------|---------|---------------| -| **Missed meetings** | Failing to show for ring coordination — anxiety and avoidance | Devra (tracks attendance), Renn (confirms suspicion), Smuggler (if ring member) | -| **Nervous behavior in public** | Checking over shoulder, scanning entrances, avoiding eye contact | Bar regulars, Detective (if observing), Lera (if Pell is at the bar) | -| **Irregular schedule** | No consistent pattern — unpredictable location, unreliable availability | Ring members (destabilizing), Detective (anomalous behavior if cross-referenced with other NPC routines) | - -### 10. Skill Set - -**Occupational**: Logistics consulting (legitimate — scheduling, supply chain analysis, inventory management). -**Ring-relevant**: Inventory tracking, distribution scheduling, client relationship management, encrypted communication. -**Combat tag**: **No**. Pell is entirely non-physical. If confronted, he freezes or capitulates. -**Lattice capability**: Baseline with commercial communication tools. - ---- - -## Voice Sample - -**Mood: Anxious (baseline, current state)** -- *"I'm fine. Just — a lot on my mind. Freelance work's been slow. You know how it is."* - -**Mood: Desperate (if found by the detective)** -- *"If I talk — if I tell you what I know — can you protect me? Not just a promise. Actual protection. Because the people I'd be talking about don't forgive."* - ---- - -## Dual-Lens Notes - -**Smuggler**: Pell is the biggest internal threat. The smuggler reads Pell's anxiety as instability — a wavering member who might bring the whole operation down. The decision: support Pell (reduce the pressure), report to Nils (eliminate the threat), or try to calm Pell down (risky, might not work). *"Pell missed another meeting. Renn's right — something's off. If Pell talks, we're all exposed."* - -**Detective**: Pell is initially invisible — a freelance logistics consultant who occasionally drinks at the bar. But the behavioral signals (nervousness, irregular schedule, isolation) read as someone under pressure. If the detective can identify and approach Pell before the ring acts, Pell becomes the case's keystone witness. *"The consultant — Pell. No fixed schedule. Nervous. Avoids eye contact. Either antisocial or scared. If they're scared, I need to know of whom."* - ---- - -## Triangle Roles - -**Triangle 5: The Informant Question (Pell - Renn - Drin) [Cross-Template]** — The wavering member. Pell's potential to turn informant is the ring's existential threat. Renn has flagged the risk. Drin is the compromised institutional contact Pell might approach without knowing the trap. Three ways the ring unravels — and Pell is the trigger for all of them. - ---- - -## Pattern / Motivation - -**Pattern (System A):** CATALYST — Pell's wavering forces the entire ring into crisis response. His anxiety, missed meetings, and irregular schedule compel other ring members to react — Renn reports suspicion, Devra increases surveillance, Nils considers action. Pell is a disruption vector whose instability threatens the operation's equilibrium. -**Motivation (System B):** TURNCOAT — Pell is actively considering cooperation with authorities. His loyalty is shifting under pressure — the escalating volume, the tightening risk, the paranoia that the ring's growth has invited institutional attention. Unlike Drin's passive turncoat status (omission), Pell's is deliberate: he is looking for a handler. - -**Composition read:** CATALYST + TURNCOAT creates maximum instability: "When Pell breaks, everything moves." Pell's disruption (CATALYST) is driven by a deliberate shift in loyalty (TURNCOAT), making him the ring's existential threat. The other catalysts (Torek, Resha, Olin) disrupt accidentally; Pell's disruption is the consequence of a conscious decision to betray. For the smuggler, Pell is the biggest internal threat — the decision to support, report, or manage Pell defines the operation's future. For the detective, finding Pell before the ring acts on Renn's suspicion means gaining the case's keystone witness. The timing is everything, and Pell's anxiety is the countdown. - ---- - -**Cross-References:** [Renn](renn.md), [Drin](drin.md), [Devra](devra.md), [Harek](harek.md) diff --git a/wiki/characters/renn.md b/wiki/characters/renn.md deleted file mode 100644 index 646384db4..000000000 --- a/wiki/characters/renn.md +++ /dev/null @@ -1,144 +0,0 @@ ---- -title: "Renn Harsk" -slug: renn -canonical_id: "npc:renn" -category: character -status: canonical -created: 2026-02-12 -updated: 2026-02-13 -tier: 2 -pattern: "THRESHOLD" -motivation: "OPERATOR" -social_sites: [] -entanglement: "Entangled" -triangles: [] -home_district: transit -tags: [v0.1] -decision_refs: [D-024] -cross_refs: [] ---- - -# Renn Harsk - -**Tier 2 NPC** | Smuggling Ring + Logistics Hub | Entangled - ---- - -## Core Identity - -**Name**: Renn Harsk -**Age**: 26 -**Role**: Courier, Sova Transit District (moves contraband between freight bay, storage, and handoff points) -**System Origin**: Krenn System, Station Sova -**Lattice Tier**: Baseline -**Employer**: Sova Logistics Consortium (legitimate — cargo runner); The Arrangement (ring courier) - ---- - -## 10-Axis Profile - -### 1. Want - -**Primary**: Stay useful to the ring without getting caught. - -Renn is the physical movement in the operation. When Kael routes a flagged container, Renn transfers the contraband to Corridor B-7 or the bar's back room. It's physical work — lifting, carrying, timing runs through maintenance corridors during Meridian dead spots. Renn is young, fit, and takes pride in the execution. The job feels important. - -**Secondary**: Prove loyalty to Nils and Devra. - -Renn came into the ring through Nils — a friend-of-a-friend introduction. He's still earning trust. Running the courier routes is his proving ground. If he performs well, he moves up. If he's caught, he's expendable. - -### 2. Secret / Vulnerability - -**Surface secret**: Ring member. Moves contraband through the district's maintenance corridors. Known to the ring; unknown to the detective initially. - -**Deep secret**: Renn suspects Pell is unreliable. He's reported this to Nils (through Devra). This creates an internal ring tension — Renn has effectively marked Pell as a threat, which may trigger Nils to act against Pell. - -**Vulnerability**: Physical exposure. Renn is the person most likely to be caught in the act — carrying contraband through corridors during off-hours. If security or the detective encounters Renn in a dead spot with cargo, the entire operation is blown. - -### 3. Relationships - -**Kael Davan**: Colleague (ring operations). Kael routes; Renn moves. Functional respect. Not close personally — different shifts, different social circles. Renn admires Kael's competence. - -**Pell**: Fellow ring member. Renn distrusts Pell's reliability. Has reported concerns. This creates a dangerous dynamic — Renn may be right (Pell is wavering) or may be paranoid (Pell is just stressed). - -**Devra**: Ring coordinator. Renn receives timing instructions from Devra. Professional relationship — Devra values Renn's reliability but doesn't invest personally. - -### 4. Tolerance Threshold - -**Moderate**. Renn can handle the physical risk and the pressure. What he can't handle: being abandoned. If the ring distances itself from Renn (because he's exposed or expendable), his loyalty inverts. A courier who feels discarded is a courier who talks. - -### 5. Daily Routine - -**Legitimate**: Day shift at logistics hub as cargo runner (06:00-14:00). Handles legitimate freight movement between bays. This provides cover for knowing the facility's layout and timing. - -**Ring operations**: Night shift transitions (22:00-01:00, 1-2x per week). Moves flagged cargo from temporary storage to Corridor B-7 or bar back room. Uses maintenance corridors and Meridian dead spots. - -**Off-duty**: Bar occasionally, but Renn isn't a regular. Prefers to stay home and keep a low profile between operations. - -### 6. Information Inventory - -**Knows**: Corridor routes (which maintenance corridors have Meridian coverage, which are dead spots), timing windows (when security patrols create gaps), handoff procedures, Kael's routing patterns, Devra's coordination timing. Pell's behavior changes. - -**Doesn't know**: Full ring structure (knows Nils gives orders, Devra coordinates, doesn't know the supply chain above Sabel), manifest details, the contraband's origins or ultimate destination, Kael's exit attempt, the detective's investigation. - -### 7. Contentment - -**Moderate**. Renn is young and feels like he's going somewhere. The ring money supplements his cargo runner salary. The work is exciting in a way the legitimate job isn't. This contentment is precarious — it depends entirely on the ring's stability. - -### 8. Personality Traits - -**Primary: Loyal** — to the people who gave him a chance (Nils, Devra). Loyalty is performance-based, not unconditional. -**Secondary: Alert** — hyperaware of spatial surroundings, patrol timing, corridor traffic. -**Tertiary: Suspicious** — watches people, trusts slowly. The suspicion about Pell comes from this trait. - -### 9. Tell System - -| Tell | Trigger | Observable To | -|------|---------|---------------| -| **Presence in maintenance corridors during off-hours** | Courier run in progress | Detective (if surveillance is active), security patrol (if timing is wrong) | -| **Watches Pell** | Monitoring Pell's behavior for signs of wavering | Smuggler (if ring member, recognizes the surveillance), Pell (if perceptive) | -| **Avoids the bar on operation nights** | Doesn't want to be placed at a social venue when he should be unaccounted for | Lera (might notice the absence pattern), Detective (if tracking NPC schedules) | - -### 10. Skill Set - -**Occupational**: Cargo handling, freight movement, facility navigation. -**Ring-relevant**: Corridor navigation in low/no-Meridian conditions, timing coordination, physical cargo movement, spatial awareness. -**Combat tag**: **No**. Renn runs, doesn't fight. If cornered, he surrenders or flees. -**Lattice capability**: Baseline. - ---- - -## Voice Sample - -**Mood: Operational (ring coordination)** -- *"Route's clear through south maintenance. I'll have it in position by the 22:30 window. Tell Devra I'm on schedule."* - -**Mood: Suspicious (about Pell)** -- *"Pell didn't show for the prep meeting. Third time. I'm not saying anything, but — someone should be asking where Pell goes when they're not where they're supposed to be."* - ---- - -## Dual-Lens Notes - -**Smuggler**: Renn is a known quantity — the runner, the courier, the physical movement. If the smuggler is in the ring, Renn is a colleague to coordinate with. Renn's suspicion about Pell is useful intelligence. *"Renn's reliable. Runs clean, stays quiet. If he says Pell's a problem, Pell's a problem."* - -**Detective**: Renn is initially invisible — just another cargo runner at the hub. But if the detective tracks movement patterns in maintenance corridors during off-hours, Renn is the NPC who appears where he shouldn't be. *"Cargo runner. Night shift movement in restricted corridors doesn't match his posted schedule. Following up."* - ---- - -## Triangle Roles - -**Triangle 5: The Informant Question (Pell - Renn - Drin) [Cross-Template]** — The enforcer of trust. Renn is the one who noticed Pell's wavering and reported it. If Pell does turn informant, Renn's early warning was the system's first immune response. If Renn's suspicion is wrong, he's created paranoia that fractures the ring from inside. - ---- - -## Pattern / Motivation - -**Pattern (System A):** THRESHOLD — Renn controls the physical movement of contraband through the district's corridors. He is the gatekeeper of cargo flow — the person who moves product between freight bay, storage, and handoff points. Tracing Renn means tracing the route. Blocking Renn means blocking the operation's physical pipeline. -**Motivation (System B):** OPERATOR — Renn runs courier routes. He times runs through maintenance corridors, coordinates with Devra's schedule, and executes the physical logistics of moving contraband. His function is execution — hands-on, spatial, operational. - -**Composition read:** THRESHOLD + OPERATOR creates the physical gatekeeper: "Renn moves the product. Trace Renn, find the route." Renn controls access to the smuggling route (THRESHOLD) and personally executes the movement (OPERATOR). Unlike Devra's organizational gatekeeping, Renn's threshold is physical — he is the body in the corridor with the contraband. For the detective, catching Renn in a dead spot with cargo is the most direct path to blowing the operation. For the smuggler, Renn's reliability on courier runs is what keeps the pipeline flowing. His vulnerability is his visibility: a person moving cargo through restricted corridors during off-hours is the most catchable link in the chain. - ---- - -**Cross-References:** [Pell](pell.md), [Devra](devra.md), [Kael Davan](kael-davan.md), [Drin](drin.md) diff --git a/wiki/characters/resha.md b/wiki/characters/resha.md deleted file mode 100644 index 1971d4d1e..000000000 --- a/wiki/characters/resha.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -title: "Resha Neven" -slug: resha -canonical_id: "npc:resha" -category: character -status: canonical -created: 2026-02-12 -updated: 2026-02-13 -tier: 2 -pattern: "CATALYST" -motivation: "CIVILIAN" -social_sites: [] -entanglement: "Mundane" -triangles: [] -home_district: transit -tags: [v0.1] -decision_refs: [D-024] -cross_refs: [] ---- - -# Resha Neven - -**Tier 2 NPC** | Logistics Hub (The Terminal) | Mundane - ---- - -## Core Identity - -**Name**: Resha Neven -**Age**: 23 -**Role**: Dock worker (new hire, 3 months), Sova Transit District Logistics Hub -**System Origin**: Krenn System, Residential Radial B (Station Sova — short-term housing district) -**Lattice Tier**: Baseline -**Employer**: Sova Logistics Consortium - ---- - -## 10-Axis Profile - -### 1. Want - -**Primary**: Do the job well and prove herself. - -Resha is 3 months into her first permanent position at the hub. She came from short-term contract work in other districts — unstable, underpaid, no community. This job matters. She wants to be competent, reliable, valued. She studies the shift protocols, asks questions about procedures, and takes notes. - -**Secondary**: Understand why things don't make sense. - -Resha asks questions because she's learning. Some of those questions — about locked bays, irregular schedule changes, containers that appear on manifests but aren't in the bay — are innocently dangerous. She doesn't know she's asking about the ring's operations. She's asking because the procedures she was taught don't match what she observes. - -### 2. Secret / Vulnerability - -**Surface secret**: None. Resha is transparent — she's new, eager, and has nothing to hide. - -**Deep secret**: None. Resha's significance isn't what she's hiding — it's what she's noticing. - -**Vulnerability**: Naivety. Resha doesn't understand the social dynamics well enough to know which questions are dangerous. Her curiosity makes her a risk to the ring and a potential asset to the detective — neither of which she's aware of. - -### 3. Relationships - -**Voss**: Shift supervisor. Resha respects authority and tries to please Voss. Voss is professionally competent with Resha but wants her to stop asking about irregularities. - -**Kael Davan**: Senior colleague. Kael is patient with Resha — shows her the ropes, answers procedural questions, covers for her mistakes. Resha looks up to Kael. This makes Kael protective, which complicates Kael's position. - -**Maret Korr**: Freight scheduler. Maret gives Resha scheduling data and is protective in a quiet, professional way. Resha's questions about manifest discrepancies echo Maret's own concerns. - -### 4. Tolerance Threshold - -**Low**. Resha hasn't been tested yet. She's never been in a situation where loyalty conflicts with safety. If directly threatened or warned to stop asking questions, Resha would be scared and confused. She doesn't have the experience to navigate institutional pressure. - -### 5. Daily Routine - -**06:00 - 14:00**: Day shift — cargo handling, bay allocation assistance, learning procedures -**10:30 - 11:00**: Break room, often with Kael or other dock workers -**14:00 - 15:00**: Post-shift, sometimes stays late studying shift protocols -**15:00+**: Home (Residential Radial B) or occasionally bar (not a regular — Resha is still establishing social connections) - -### 6. Information Inventory - -**Knows**: Basic hub operations (3 months of learning), shift procedures, which bays handle what cargo, Voss's authority, Kael's reliability. Observations: locked bays that don't appear on her manifest, schedule changes posted after the fact, containers with routing codes she wasn't trained on. - -**Doesn't know**: Ring, smuggling, the significance of her observations, Kael's secret life, Voss's compromise, anything about the bar social dynamics. - -### 7. Contentment - -**Moderate-high**. Resha is happy to have a stable job. The community is welcoming enough. The work is hard but meaningful. Her contentment is that of someone at the beginning of something — optimistic, not yet disillusioned. - -### 8. Personality Traits - -**Primary: Curious** — asks questions, observes, wants to understand systems. -**Secondary: Earnest** — genuine effort, no cynicism, takes the work seriously. -**Tertiary: Observant** — notices details because she's learning, not because she's suspicious. - -### 9. Tell System - -| Tell | Trigger | Observable To | -|------|---------|---------------| -| **Asks questions about locked bays** | Encounters a procedure she wasn't trained for | Voss (nervous), Kael (protective), Smuggler (if at hub) | -| **Takes notes on her lattice** | Recording procedures, schedules, observations — standard for a new hire, but the data she's capturing includes anomalies | Maret (recognizes the pattern), Detective (if accessing Resha's notes) | -| **Looks to Kael for guidance** | Uncertain about a procedure or social situation | Everyone at the hub | - -### 10. Skill Set - -**Occupational**: Cargo handling (learning), bay allocation (basic), manifest reading (training level). -**Combat tag**: **No**. -**Lattice capability**: Baseline. - ---- - -## Voice Sample - -**Mood: Eager (baseline)** -- *"The Bay 7 manifest doesn't list that container. Should I flag it, or is that a late addition? I just want to make sure I'm processing it right."* - -**Mood: Confused (observing irregularity)** -- *"Voss changed the afternoon rotation again. Is that normal? I thought the schedule was set at shift start."* - ---- - -## Dual-Lens Notes - -**Smuggler**: Resha is a variable. Her questions are innocent but dangerous. The smuggler reads Resha as someone who needs to be managed — either brought into confidence (risky) or steered away from sensitive areas (ongoing effort). *"Resha's asking about Bay 7 again. Someone needs to teach her that not every question needs an answer."* - -**Detective**: Resha is a fresh pair of eyes. Uncompromised, observant, and unaware of the social pressures that keep everyone else silent. If the detective talks to Resha early, her observations become data. If the detective talks to Resha late, Resha may have been warned to stop asking questions — and THAT is also data. *"New hire. Three months. Still asking questions the veterans stopped asking years ago. Either naive or useful. Possibly both."* - ---- - -## Triangle Roles - -**Not a formal triangle member.** Resha's function is atmospheric and catalytic — her questions create pressure on Voss and Kael, her observations could feed into the detective's investigation, and her presence reminds the hub workers that the operation is only invisible to people who've learned not to look. - ---- - -## Pattern / Motivation - -**Pattern (System A):** CATALYST — Resha's innocent questions about locked bays, irregular schedules, and unmanifested containers force the ring's infrastructure into defensive reactions. Every question she asks creates pressure on Voss and Kael. She is a disruption vector — not by intent, but by the simple act of trying to learn her job. -**Motivation (System B):** CIVILIAN — Resha is not investigating, not scheming, not cooperating with anyone. She is a new hire trying to understand procedures. Her questions are genuine, not strategic. The CIVILIAN motivation means the disruption is accidental — born of earnestness, not suspicion. - -**Composition read:** CATALYST + CIVILIAN creates innocent disruption: "She just asked. Everyone flinched." Resha disrupts (CATALYST) through pure curiosity (CIVILIAN), which makes her impossible to manage through normal channels. You cannot tell a new hire to stop asking procedural questions without explaining why — and the explanation is the thing that must stay hidden. The system is so compromised that learning it honestly is itself a threat. For the smuggler, Resha is a variable that requires constant steering. For the detective, Resha is a fresh pair of eyes whose observations carry no political filtering — whatever Resha noticed, she noticed because it was genuinely anomalous. - ---- - -**Cross-References:** [Voss](voss.md), [Kael Davan](kael-davan.md), [Maret Korr](maret-korr.md) diff --git a/wiki/characters/sabel.md b/wiki/characters/sabel.md deleted file mode 100644 index d525419e5..000000000 --- a/wiki/characters/sabel.md +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: "Sabel Hersk" -slug: sabel -canonical_id: "npc:sabel" -category: character -status: canonical -created: 2026-02-12 -updated: 2026-02-13 -tier: 3 -pattern: "GHOST" -motivation: "OPERATOR" -social_sites: [] -entanglement: "Flat" -triangles: [] -home_district: transit -tags: [v0.1] -decision_refs: [D-024] -cross_refs: [] ---- - -# Sabel Hersk - -**Tier 3 NPC** | Smuggling Ring (Off-Station) | Flat - ---- - -## Essential Axes - -### Want - -Deliver. Get paid. Maintain the supply chain. - -Sabel is the ring's off-station contact — the external supplier who sends contraband (unlicensed lattice components, medical-grade neural replacements) through legitimate freight shipments to Sova. Sabel operates from elsewhere in the Krenn System (exact location unspecified in v0.1). The relationship with Devra is purely transactional: Sabel confirms transit timing, Devra coordinates local pickup. - -### Routine - -**Not directly observable.** Sabel is referenced, not instantiated in the v0.1 play area. Sabel appears in lattice communications (Devra's coordination), in cargo manifests (origin codes), and in ring members' dialogue ("Sabel says the next shipment is on the 22:00 cycle"). Sabel's physical presence in the district is limited to at most 1-2 brief visits during the vertical slice — enough to be observed, not enough to be interrogated. - -### Personality - -**Professional, efficient, impersonal.** Sabel treats the ring as a business relationship. No personal investment, no loyalty to the local team, no interest in their problems. If the operation on Sova is compromised, Sabel cuts the connection and finds another distribution point. This coldness is itself a narrative signal: Sabel represents the layer above the local ring, the bigger operation that views Sova as replaceable infrastructure. - ---- - -## Voice Hint - -*"Transit confirmed for 22:00. Standard package. Don't be late."* [Flat, operational, no warmth] - ---- - -## Function Note - -Sabel is the **upstream connection** — the thread that leads from the local smuggling operation to the wider criminal supply chain. For the smuggler, Sabel is the voice on the other end of the lattice, the person who keeps the goods flowing. For the detective, Sabel is a ghost — a name in communications, an origin code on freight manifests, a person who exists in the district's data but not in its social fabric. Tracing Sabel is the detective's path to understanding that the ring is not a local phenomenon but part of a larger network. - ---- - -## Dual-Lens Notes - -**Smuggler**: Supply source. Professional respect. *"Sabel's reliable. The timing is always clean. Whatever happens on this end, the supply keeps coming."* - -**Detective**: Data point. Ghost. *"Origin codes on flagged manifests trace to off-station. Someone's sending this cargo. Finding who could crack the upstream network."* - ---- - -## Pattern / Motivation - -**Pattern (System A):** GHOST — Sabel is off-station, physically absent from the play area. The player does not interact with Sabel directly in any meaningful way. Sabel's power is felt through supply chain influence — origin codes on manifests, timing confirmations via lattice, references in ring members' dialogue. The GHOST pattern means Sabel shapes events from elsewhere without being present to confront or cultivate. -**Motivation (System B):** OPERATOR — Sabel runs the supply chain. Transit confirmations, shipment scheduling, cargo preparation — all operational execution from a remote position. Sabel's function is logistics, not strategy or pressure. The supply keeps coming regardless of what happens on Sova. - -**Composition read:** GHOST + OPERATOR creates distant machinery: "Sabel shapes events from elsewhere." Sabel's absent power (GHOST) is exercised through operational execution (OPERATOR) — a supply chain that functions without requiring Sabel's physical presence on-station. For the detective, Sabel is a data phantom: origin codes, transit records, freight patterns that point to an upstream source the detective cannot reach within the vertical slice. For the smuggler, Sabel is the reliable engine that keeps the product flowing — professional, impersonal, and indifferent to the human consequences on the ground. Sabel's coldness is narrative content: the ring is disposable to its supplier. - ---- - -**Cross-References:** [Devra](devra.md), [Renn](renn.md) diff --git a/wiki/characters/sera-venn.md b/wiki/characters/sera-venn.md deleted file mode 100644 index 0b0bd7f5a..000000000 --- a/wiki/characters/sera-venn.md +++ /dev/null @@ -1,426 +0,0 @@ ---- -title: "Sera Venn" -slug: sera-venn -canonical_id: "npc:sera-venn" -category: character -status: canonical -created: 2026-02-12 -updated: 2026-02-13 -tier: 1 -pattern: "FRIEND" -motivation: "WITNESS" -social_sites: [] -entanglement: "Mundane" -triangles: [] -home_district: transit -tags: [v0.1] -decision_refs: [D-024] -cross_refs: [] ---- - -# Sera Venn — THE FRIEND (Detective) - -**Tier 1 Production-Level NPC** | The Last Shift (Bar) + Commission | Mundane - ---- - -## Core Identity - -**Name**: Sera Venn -**Age**: 31 -**Role**: Lattice Commission field technician, Sova Transit District -**System Origin**: Krenn System, born on Krenn Prime (surface), transferred to Station Sova 14 months ago -**Cultural Group**: Krenn System culture (compact names, first-name-primary, pragmatic) -**Lattice Tier**: Standard professional (Commission-grade diagnostic tools, not investigative) -**Employer**: Lattice Commission, Krenn System field office (posted to Sova for routine compliance maintenance) - ---- - -## 10-Axis Profile - -### 1. Want - -**Primary**: Keep her life stable and her friendships intact. - -Sera transferred to Sova after a stressful posting on a border-system relay station — too many compliance violations, too many confrontations with people running unlicensed lattice modifications. Sova was supposed to be quiet. Routine calibration checks, scheduled inspections, paperwork. A posting where nobody yells at you and you go home at a reasonable hour. For 12 months, it was exactly that. - -**Secondary**: Protect Naia from the consequences of what Sera has discovered. - -Naia is Sera's closest friend on the station. When Naia started confiding worry about Kael's late nights and evasive behavior, Sera did what a Commission tech can do that a civilian can't — she ran an unofficial diagnostic on Kael's work patterns through the compliance system. What she found (manifest discrepancies tied to Kael's shifts) pointed to something she didn't want to see. Reporting it would mean Kael gets investigated, possibly arrested, and Naia's life falls apart. Not reporting it means Sera is sitting on evidence. The quiet life she wanted is gone. - ---- - -### 2. Secret / Vulnerability - -**Surface secret** (detective eventually suspects, smuggler may notice): Sera is a Commission employee who socializes at the bar but avoids certain people — specifically Torek Lintar. Her avoidance pattern is visible to anyone paying attention. - -**Deep secret** (nobody knows except Sera): Sera ran an unauthorized compliance check on Kael Davan's freight handling records after Naia confided worry about Kael's behavior. She found manifest discrepancies — containers logged by Kael's shifts that don't reconcile with incoming freight manifests. This is reportable evidence. Sera has not reported it. She has been sitting on this information for approximately 6 weeks, protecting Naia from the consequences of her partner being investigated. - -**Vulnerability**: The unreported evidence. If the detective discovers Sera's concealment, Sera faces institutional consequences (dereliction of duty, obstruction). If the ring discovers that a Commission employee has their manifests flagged, Sera becomes a target. If Naia discovers Sera investigated Kael behind their back, the friendship is damaged regardless of Sera's motivation. - ---- - -### 3. Relationships - -**Relationship 1: The Detective** (pre-existing institutional contact, friend) -- **Type**: Professional-turned-personal. They trained at adjacent postings, overlapped on a compliance sweep two years ago. Genuine mutual respect. -- **History**: The detective is one of few people who understands institutional culture — the protocols, the frustrations, the isolation of being Commission on a station that views you as the compliance police. When the detective arrives in the district, Sera is genuinely glad. A familiar face. Someone who speaks her language. -- **Current tension**: Sera is now keeping evidence from the detective. Every helpful tip, every piece of background she shares, is contaminated by the thing she's NOT sharing. The detective trusts Sera completely, which makes the concealment worse. -- **Mechanical relevance**: THE FRIEND. The relationship phase arc (trust > pattern observation > confrontation > contaminated trust) plays out here. - -**Relationship 2: Naia** (close friend, civilian) -- **Type**: Personal friendship, 10 months. Met at the bar shortly after Sera's transfer. -- **History**: Naia teaches station kids, represents the community Sera embedded herself in. They drink together after Naia's school day and Sera's shift, swap complaints about work, talk about Naia's relationship with Kael. Naia is the reason Sova feels like home instead of just another posting. -- **Current tension**: Naia confided in Sera about Kael's behavior (late nights, evasion, unexplained stress). This is what triggered Sera's unofficial compliance check. Sera now knows more about Kael's situation than Naia does — and can't share it without destroying everything. -- **Mechanical relevance**: Naia is the emotional anchor that makes Sera's concealment sympathetic. Sera isn't hiding evidence to protect a criminal. She's hiding evidence to protect her friend's partner. - -**Relationship 3: Torek Lintar** (avoidance target, unintentional connection) -- **Type**: Avoidance. Sera doesn't have a relationship with Torek — she has an anti-relationship. -- **History**: When Sera ran her unofficial compliance check, she didn't just find Kael's discrepancies. She found that the manifest irregularities correlate with shifts where Torek Lintar handles dock inspections. Torek is a thread she doesn't want to pull. Being seen near Torek while sitting on unreported evidence about his inspection patterns feels like compounding the risk. -- **Current tension**: Sera leaves the bar when Torek arrives. Every time. Different excuses. She doesn't realize how visible this pattern is becoming. -- **Mechanical relevance**: The avoidance pattern IS the contradiction the detective discovers. Sera's attempt to minimize risk is itself creating observable risk. - ---- - -### 4. Tolerance Threshold - -**High** — Sera is disciplined and emotionally controlled. But she's managing an impossible situation. - -**What Sera tolerates**: -- Institutional isolation (being the Commission person on a station that views Commission as an imposition) -- Minor ethical compromises (running the unofficial check was already outside protocol) -- The cognitive dissonance of helping the detective while hiding evidence from them - -**What pushes Sera toward breaking**: -- The detective asking specifically about manifest discrepancies (too close to what Sera already knows) -- Naia's worry escalating into direct action (if Naia confronts Kael, or asks the detective for help) -- Torek behaving in ways that make Sera's concealment feel more dangerous (if Torek's spending becomes even more visible, the investigation will reach him, and Sera's connection becomes harder to deny) - -**What breaks Sera**: -- Direct confrontation from the detective with evidence of the concealment (Sera can't lie to the detective's face — she'll deflect, but she won't fabricate) -- Naia being hurt by the consequences Sera was trying to prevent (if Kael is arrested and Naia blames Sera for not warning them) -- Institutional pressure from Commission (if a superior notices the compliance check was run but never filed) - ---- - -### 5. Daily Routine - -**07:30 - 08:00**: Morning lattice diagnostics at Commission kiosk (Level 3, unmanned — Sera runs calibration checks remotely) -**08:00 - 12:00**: Field rounds — compliance verification at assigned locations (logistics hub equipment, bar terminal, residential nodes) -**12:00 - 13:00**: Lunch, usually at a vendor near the logistics hub -**13:00 - 15:00**: Afternoon rounds or report filing at Commission kiosk -**15:00 - 15:30**: Off-shift. Returns to residential pod briefly. -**15:30 - 18:00**: Bar (The Last Shift). Sera is an early-evening regular. Meets Naia here most days. Occupies the same corner booth. -**18:00 - 22:00**: Home or occasional return to bar for quieter late-evening drink. - -**Routine deviations** (tells): -- Leaving the bar abruptly when Torek Lintar arrives (the contradiction pattern — three occurrences in the vertical slice) -- Increased helpfulness to the detective (overcompensation — Sera shares MORE district background after the concealment begins, as if making up for what she's withholding) -- Avoiding the logistics hub during certain shifts (the shifts where Kael's discrepancies are concentrated — Sera doesn't want to observe anything else she'd have to not-report) -- Extended time at Commission kiosk (re-checking the compliance data she ran, compulsive verification that she hasn't been caught) - ---- - -### 6. Information Inventory - -**Knows** (KnowsDetails or Direct): -- Manifest discrepancies tied to Kael Davan's shifts (unauthorized compliance check, 6 weeks ago) -- Torek Lintar's inspection shifts correlate with manifest irregularities (pattern analysis from same check) -- Naia is worried about Kael's behavior (direct confidence from Naia, multiple conversations) -- The Commission kiosk on Level 3 has diagnostic access to freight manifest systems (institutional knowledge — standard for her role) -- The district's Commission presence is minimal (she's the only Commission employee in the district most days) -- Detective's background (professional history, approach, institutional reputation — pre-existing relationship) -- Bar regulars' names, habits, social patterns (10 months of observation as a regular) - -**Doesn't know**: -- Kael is a ring member (Sera found manifest discrepancies, not ring membership — she suspects smuggling but doesn't know the organizational structure) -- Kael is attempting to exit the ring (Sera doesn't know the ring exists, let alone that Kael wants out) -- The smuggler's identity or role (if the smuggler is a ring member, Sera has no reason to flag them) -- Devra, Renn, Pell, or any ring operational details (Sera's compliance check caught freight data anomalies, not personnel) -- Drin's gambling debt and compromise (Sera's check was focused on Kael's shifts, not Drin's inspections — though Drin's data is in the system if she looked harder) - ---- - -### 7. Contentment - -**Moderate** (D-024 thematic axis) — declining. - -Sera was content. Sova was the calm posting she needed after the stressful border station. She had a routine, a friend (Naia), a social life at the bar, competent work that didn't demand too much. For her first 10 months, contentment was high. - -Now it's eroding. The compliance check changed everything. Sera can't un-know what she found. Every evening at the bar is shadowed by the evidence she's concealing. Every conversation with Naia is a reminder of why she's concealing it. Every interaction with the detective is a test of how much longer she can sustain the concealment without being caught. - -**Contentment trajectory**: Declining. Before the compliance check: high. After the check: moderate. After the detective arrives and starts asking questions: moderate-low and falling. Sera is experiencing the slow erosion of a life she built specifically to be calm — and she did it to herself. - ---- - -### 8. Personality Traits - -**Primary: Competent** — Sera is good at her job. She runs clean diagnostics, files thorough reports (when she files them), and understands Commission systems at a technical level most field techs don't bother with. This competence is what enabled the unofficial check — and what makes the concealment so damaging. She found the discrepancies because she's good. She's hiding them because she's human. - -**Secondary: Loyal** — to people, not institutions. Sera joined the Commission because it was stable work with good benefits, not because she believes in regulatory perfection. Her loyalty to Naia outweighs her institutional obligation. This surprises even Sera — she thought she was a by-the-book person until she had to choose between the book and a friend. - -**Tertiary: Controlled** — Sera manages her presentation carefully. She doesn't panic, doesn't raise her voice, doesn't show stress visibly. This control is professional training (Commission field techs deal with hostile communities regularly) and personal temperament. It makes her excellent at deflection — and makes the avoidance pattern (leaving when Torek arrives) more striking precisely because it breaks her usual composure. - ---- - -### 9. Tell System - -**Observable behavioral changes that signal Sera's internal state:** - -| Tell | Trigger | Observable To | Mechanical Flag | -|------|---------|---------------|-----------------| -| **Avoidance of Torek Lintar** | Torek enters the bar. Sera makes an excuse and leaves within 2-3 minutes. | Detective (pattern recognition across 3 occurrences), Naia (if paying attention), bar regulars | `behavior_flags: avoidance_pattern` | -| **Increased helpfulness** | Detective asks about the district. Sera volunteers extra information, background context, names and routines of regulars. | Detective (might read as genuine helpfulness OR overcompensation) | `behavior_flags: overcompensating` | -| **Topic deflection on manifests** | Anyone mentions freight, manifests, compliance, or cargo irregularities. Sera changes the subject smoothly. | Detective (if tracking topic avoidances), Naia (might notice Sera steering away from Kael-adjacent topics) | `behavior_flags: topic_avoidance` | -| **Extended kiosk time** | Sera spends longer at the Commission kiosk than her duties require. Visible to hub workers. | Detective (if tracking Sera's routine), Voss or Maret (if observant about who's at the kiosk) | `tell_observed: extended_kiosk_access` | - -**Tell progression** (detective's perspective): -1. **Visit 1-2** (baseline): Sera is warm, informative, comfortable. A welcome familiar face. Detective monologue: "Good to see Sera. She always was the reliable one." -2. **Visit 2-3** (background data): Sera mentions Naia as "a friend from the district." Naia joins them once. Sera and Naia have obvious genuine rapport. Detective notes Sera is socially connected — useful. -3. **Visit 3** (first avoidance): Torek enters. Sera says "Early shift tomorrow." Leaves. Detective barely notices. Monologue: "Sera headed out. Long day, probably." -4. **Visit 4** (second avoidance): Torek enters. Sera says "Headache. Going to lie down." Detective notes it but doesn't flag it. Monologue: "Sera left again. She's been tired lately." -5. **Visit 5** (third avoidance — the pattern): Torek enters. Sera says "Need to check on something at the kiosk." Detective's training fires. Monologue: "That's the third time. Sera leaves when Torek arrives. Three different excuses. That's not coincidence." - ---- - -### 10. Skill Set - -**Occupational**: Lattice diagnostic and calibration, compliance documentation, field equipment maintenance, Commission data systems access (read-only for most functions, diagnostic-level write for calibration records). - -**Investigation-relevant**: Sera can look things up in Commission systems that civilians can't access. Manifest cross-referencing, lattice registration queries, compliance history searches. She's not an investigator — she can't issue warrants or access sealed records — but she has diagnostic access that is functionally useful for someone who knows what to look for. - -**Combat tag**: **No**. Sera has standard Commission self-defense training (all field personnel) but has never used it operationally. If threatened, Sera's first instinct is to leave, not fight. - -**Lattice capability**: Standard professional tier. Commission diagnostic overlays, system access tools, compliance reporting interface. No investigative or analytical upgrades — those are reserved for Commission investigators, not field techs. - ---- - -## Backstory - -Born on Krenn Prime surface. Grew up in a mid-sized settlement where the Commission maintained a regional office — lattice infrastructure was part of daily life, and the people who maintained it were respected, ordinary workers. Sera joined the Commission at 21 as a field technician trainee, graduated to full field tech at 23. Spent 6 years on various postings — mostly routine, one stressful border-system relay where unlicensed lattice modifications were endemic and the local population viewed Commission as an occupying force. That posting burned Sera out. She requested a transfer to a quiet logistics hub. Station Sova, Krenn System. Home territory. Routine calibration checks, minimal confrontation. For 10 months, it was exactly what she needed. Then Naia started talking about Kael, and Sera's competence made her curious, and her curiosity made her compromised. - ---- - -## Voice Sample - -**Mood: Casual (baseline, detective interaction at bar)** -- *"There you are. Grab a seat — Naia was here earlier, you just missed them. Lera's doing that thing with the grain spirit again. Don't ask, just trust me and order the ale."* - -**Mood: Informative (sharing district knowledge)** -- *"Voss runs the day shift at the hub. Tight schedule, doesn't like surprises. Maret does the freight scheduling — she's sharp, notices things. If you need a way into the hub's operations, Maret's the one who understands the paperwork."* - -**Mood: Deflective (asked about Torek)** -- *"Torek? He's just loud. Gets a couple drinks in him and decides everyone needs to hear his opinions. I don't like loud drunks. That's it."* [Controlled delivery, slight smile, topic change to follow] - -**Mood: Stressed (post-contradiction, detective pressing)** -- *"I don't know what you're looking for. I told you everything I know about the district. If you're asking whether I'm hiding something — I'm a field tech, not an analyst. I maintain calibration equipment. That's my job."* [Defensive but not aggressive — Sera retreats into institutional role] - -**Mood: Warm (to Naia, early game)** -- *"You look tired. How are the kids doing with the new curriculum? No — sit. Let me get us something. You've been running all day."* [Genuine care, attentive, protective] - ---- - -## Dual-Lens Notes - -### How the Detective Sees Sera - -**Access tier**: Peer (pre-existing institutional relationship) → PersonOfInterest (post-contradiction discovery) - -**Relationship**: Friendly (baseline) → PersonOfInterest (post-contradiction) - -**Monologue tone (baseline)**: Professional warmth, relief. *"Good to see a familiar face. Sera always was the reliable one."* - -**Monologue tone (post-contradiction)**: Analytical doubt layered over personal conflict. *"She's not lying. But she's not telling me everything. Sera, what do you know?"* - -**What the detective knows that the smuggler doesn't**: Sera is Commission (institutional affiliation visible through lattice query). Sera has access to compliance systems. Sera's avoidance of Torek is a behavioral pattern, not just social preference. The detective reads Sera through an investigative lens even when trying to be personal — training doesn't turn off. - -**Emotional weight**: Maximum. Sera is THE FRIEND. The detective's only ally in a district that doesn't want them here. The color shift from green to amber is the moment the detective realizes their safe harbor has been contaminated. It's not just professional betrayal — it's the loss of the one relationship in the district that felt genuine. - ---- - -### How the Smuggler Sees Sera - -**Access tier**: Public (baseline — the smuggler doesn't know Sera well) → Known (if observant over multiple bar visits) - -**Relationship**: Known (the Commission woman at the bar) → PersonOfInterest (only if the smuggler independently notices the avoidance pattern) - -**Monologue tone (baseline)**: Cautious categorization. *"Commission woman. Sera, I think. Field tech, not an investigator — but still Commission. Keep an eye on her."* - -**Monologue tone (if avoidance noticed)**: Mild curiosity. *"Sera left again. That's twice when Torek showed up. Probably hates his singing. Everyone does."* - -**What the smuggler knows that the detective doesn't**: Torek is ring-adjacent (if the smuggler is in the ring, they know Torek's spending is connected to the operation). Sera's avoidance of Torek could be institutional wariness of someone connected to the ring — or it could be nothing. The smuggler's framework interprets Sera through threat assessment: is a Commission tech avoiding ring-adjacent people because she knows something, or because she's just antisocial? - -**Emotional weight**: Low to moderate. Sera is not the smuggler's FRIEND — she's institutional background noise. But a Commission tech who behaves strangely is worth watching. On replay (after playing the detective's path), the smuggler player understands that Sera's avoidance wasn't about Torek's personality — it was about what Sera had found and was hiding. - ---- - -## Triangle Roles - -### Triangle 4: The Worried Partner (Naia - Kael - Sera) - -**Sera's function**: The confidante who knows too much. Sera is the person Naia confides in. She's also the person who, because of her institutional access, turned that confidence into concrete knowledge she can't safely act on. - -**Pressure**: Naia's worry is escalating. Every bar conversation where Naia mentions Kael's late nights or evasion tightens the vice on Sera. Sera can't tell Naia what she found (that would reveal the unofficial check and potentially endanger Naia further). She can't report it (that destroys Naia's life). She can't un-know it (competence doesn't have an undo function). Every interaction with Naia is Sera managing a conversation while hiding a time bomb. - -**Player relevance**: -- **Detective** (if Sera's friend): Hears about Naia through Sera. May eventually meet Naia directly. The detective who follows the Naia thread back to Kael's behavior follows it directly through Sera's concealment. -- **Smuggler** (if Kael's friend): Knows why Kael is busy, knows Naia is worried, may see Sera and Naia together at the bar and think nothing of it. On replay, the smuggler player understands that Sera was the connective tissue between the detective's investigation and Kael's vulnerability. - ---- - -### Cross-Template Connections - -**Sera has no formal triangle membership beyond Triangle 4.** Her significance is structural: she's the bridge between the detective's institutional world and the district's social fabric. She connects the investigation to the personal — Naia's worry to Kael's behavior to the manifest discrepancies to the ring's operations. Every thread passes through Sera, even though Sera herself isn't part of the conspiracy. - -**Institutional bridge**: Sera is the only Commission employee who regularly socializes in the district. This makes her the detective's guide to a world the detective doesn't understand — and simultaneously makes her the person most positioned to conceal evidence from the detective. - ---- - -## Secret - -**What Sera is hiding**: Unreported evidence. Manifest discrepancies tied to Kael Davan's shifts, discovered through an unauthorized compliance check, concealed for approximately 6 weeks to protect Naia. - -**From whom**: Everyone. The detective (the person with the most right to know), Naia (who doesn't know Sera investigated Kael), Kael (who doesn't know he's been flagged in Commission systems), her own institution (which would view the unauthorized check and non-reporting as disciplinary offenses). - -**Consequences if exposed**: -- **Detective finds out**: Trust is shattered. Sera's help has been contaminated from the start. The detective can: use the evidence and report Sera (institutional response — Sera is reprimanded, possibly reassigned, the friendship is destroyed), use the evidence without reporting Sera (pragmatic — maintains the ally but the relationship is forever changed), or protect Sera and accept the information gap (loyal — but the detective's investigation is compromised). No clean option. -- **Naia finds out**: Complicated devastation. Sera investigated Kael without asking Naia. Even though Sera's motive was protective, the unauthorized check feels like betrayal — Sera went behind Naia's back, used institutional access against Naia's partner, and then hid it. Naia learns (1) Kael is involved in something illegal, (2) Sera knew and didn't say, (3) Sera used Commission systems to investigate Naia's partner. The friendship survives only if Naia believes Sera's silence was protection, not self-interest. -- **Ring finds out**: Sera becomes a target. A Commission employee sitting on evidence is either an asset to recruit or a threat to eliminate. If Devra or Nils learn that a Commission tech has flagged their manifests, Sera is in physical danger. -- **Commission finds out**: Disciplinary action. The unauthorized compliance check is a protocol violation. The non-reporting is dereliction. At minimum, Sera is reprimanded and transferred. At maximum, she's suspended and investigated herself. - ---- - -## Contradiction Arc - -### Phase 1: Trust (Friendly, baseline) - -**Timing**: 0-10 minutes (detective's first bar visits) - -**Observable behavior**: Sera is warm, competent, available. Waves the detective over to her corner booth. Shares district background freely — who the regulars are, what shifts run when, which maintenance corridors are shortcuts. Introduces Naia on the second visit. Orders the detective a drink. Feels like the one genuine relationship in an unfamiliar place. - -**Monologue (detective)**: *"Good to see Sera. She always was the reliable one. At least someone in this district speaks my language."* - -**Color**: Soft green (Friendly) - -**Dialogue tone**: Peer-tier, cooperative. Trust-gated content available — Sera shares institutional background (Commission presence, liaison rotation, compliance schedules) that civilians wouldn't know. - -**Tell**: None — Sera is baseline comfortable. - ---- - -### Phase 2: Background Data (still Friendly, social context accumulating) - -**Timing**: 10-15 minutes - -**Observable behavior**: Sera mentions Naia. "A friend from the district — you'd like them. They teach the station kids." Naia joins them at the bar once. Sera and Naia have easy, genuine rapport — inside jokes, comfortable silences, the shorthand of actual friendship. Sera also mentions running compliance checks as part of her routine. "It's mostly calibration. Boring stuff. But it keeps the systems honest." - -**Monologue (detective)**: *"Sera's connected here. Good. She knows the locals. And she's got diagnostic access — useful if I need to cross-reference anything."* - -**Color**: Still green (Friendly). No flags. - -**Dialogue tone**: Still warm, sharing. Sera is building the detective's picture of the district as a functioning community. - -**Tell**: **Social embeddedness** — Sera has personal relationships in the district, not just institutional ones. The detective notes this as an asset without realizing it's also the source of the conflict. - ---- - -### Phase 3: The Pattern (Friendly → PersonOfInterest) - -**Timing**: 15-20 minutes (across visits 3-5 to the bar) - -**Trigger**: The detective observes Sera leaving the bar when Torek Lintar arrives. Three times. Three different excuses: "Early shift tomorrow," "Headache — going to lie down," "Need to check something at the kiosk." - -**Observable behavior**: Sera is at the bar. Torek enters. Within 2-3 minutes, Sera makes an excuse and leaves. The excuses vary. The timing doesn't. The detective, trained to notice behavioral patterns, connects the dots on the third occurrence. - -**Monologue (detective)**: *"That's the third time. Sera leaves when Torek arrives. Early shift, headache, kiosk check. Three different excuses, same result. Sera, what are you avoiding?"* - -**Knowledge system**: -- `EntityKnowledge.state` → `KnowledgeState::Contradicted` (prior belief: "Sera is comfortable in the district and has no reason to avoid anyone" conflicts with observation: "Sera systematically avoids Torek Lintar") -- `EntityKnowledge.known_attributes["behavior_flags"]` = `"avoidance_pattern,evasive"` -- `EntityKnowledge.known_attributes["contradiction_flagged"]` = `"avoidance_inconsistency"` -- `RelationshipState` transitions: `Friendly` → `PersonOfInterest` - -**Color shift**: Soft green → amber. **This is the emotional moment.** Different from Kael's — slower, cumulative. Not a single shocking observation but a dawning pattern. The player trusted Sera. Now the trust has hairline fractures. - -**Dialogue options unlock**: Direct questioning path ("Sera, you leave every time Torek shows up. What's going on?"), observation path (don't ask yet, track the pattern, gather more context). - -**Tell**: **Avoidance pattern** — departure from bar correlates with specific NPC arrival. Excuse variety masks behavioral consistency. - ---- - -### Phase 4: The Question (PersonOfInterest, dialogue shift) - -**Timing**: 20-25 minutes - -**Trigger**: Detective asks Sera about Torek directly. Dialogue option: *"Sera, I've noticed something. You leave every time Torek Lintar arrives. Three times now. Different reasons each time. What's going on?"* - -**Sera's response** (deflection): *"Torek? He's just loud. Gets a couple drinks in him and decides everyone needs to hear his opinions about gate scheduling. I don't like loud drunks. That's all it is."* - -**Monologue (detective)**: *"She's not lying — Torek IS loud. But she's not telling me everything. Her shoulders shifted when I said his name. Sera, what do you know about Torek that you're not saying?"* - -**Knowledge system**: -- `EntityKnowledge.known_attributes["tell_observed"]` = `"controlled_deflection,topic_change"` -- `EntityKnowledge.known_attributes["secret_held"]` = `"unreported evidence, connection to investigation?"` -- `EntityKnowledge.known_attributes["secret_confidence"]` = `"suspected"` (the deflection pattern suggests concealment but doesn't confirm what's being concealed) - -**Dialogue tone**: Sera becomes more controlled. Warmth is still present but calibrated — she steers conversations away from freight, manifests, Kael's work schedule. She is compensating with extra helpfulness on other topics ("Let me tell you about the night shift regulars — there's a group that..."). - -**Color**: Remains amber (PersonOfInterest). - ---- - -### Phase 5: Contaminated Trust (PersonOfInterest, new equilibrium) - -**Timing**: 25-30 minutes (remainder of vertical slice) - -**Observable behavior**: Sera continues being helpful. Shows up at the bar at the same time. Saves the detective's seat. Offers background on NPCs the detective is tracking. She is, by every surface measure, the same Sera. But the detective is now **watching**. - -**Monologue (detective)**: *"Still the same Sera. Still reliable. Shares everything I ask about — names, routines, connections. ...Everything except whatever she's not telling me about Torek. What are you protecting, Sera?"* - -**Dialogue options**: -- **Path A (trust test)**: Detective confronts Sera directly, not about Torek but about the concealment itself: *"Sera, I've known you long enough to know when you're holding something back. What did you find?"* Sera may confess: the unauthorized compliance check, the manifest discrepancies, Naia, all of it. `RelationshipState` remains `PersonOfInterest` (still a problem), but tone shifts to conflicted understanding. Player gains critical evidence. Must decide what to do with Sera. -- **Path B (institutional)**: Detective reports Sera's suspicious behavior through Commission channels: *"I need to flag a potential conflict of interest with a local Commission employee."* Sera is formally investigated. `RelationshipState` → `Hostile`. Sera is reprimanded, possibly reassigned. The detective loses their only local ally. The evidence is obtained through institutional channels — slower, but clean. -- **Path C (observation)**: Detective doesn't confront, just watches. Tracks Sera's movements, cross-references her kiosk access times, builds a parallel case. `RelationshipState` remains `PersonOfInterest`. Eventually, the evidence chain leads to the same place — but the detective has more leverage when they finally ask. - -**Color**: Amber (paths A/C) or Red (path B). - -**Emotional payload**: Every piece of helpful information Sera shared in Phase 1 is now recontextualized. Was she being genuinely helpful, or was she steering the detective away from the manifests? Was introducing Naia friendship, or preemptive framing? The trust from the first 10 minutes is **retroactively contaminated**. That's the FRIEND arc — it doesn't just change the present, it changes the past. - ---- - -## Content Requirements (Tier 1) - -**~70-100 authored lines total** (no generation expansion): - -- **25-35 dialogue lines**: Bar greetings (5), district orientation/background sharing (8-10), Naia-related conversation (4-5), institutional/Commission discussion (3-4), deflection/evasion about Torek (5-6), confrontation responses (3-5) -- **15-20 trust-gated lines**: Peer-tier (institutional background, compliance schedules, Commission access details), secret-tier (if detective earns deep trust pre-contradiction — Sera's genuine feelings about the concealment, hints about what she found) -- **5-8 unprompted lines**: Sera volunteers district background (early), introduces topics or people (mid), steers conversations away from sensitive areas (late) -- **10-15 monologue lines per character**: - - Detective monologue about Sera: trust/relief (3), pattern observation (3-4), contradiction discovery (3-4), post-confrontation (3-5) - - Smuggler monologue about Sera: institutional categorization (2), avoidance notation (2-3 if observant), cautious assessment (2-3) -- **5-8 tell observation lines**: Avoidance pattern (3 — one per departure), topic deflection (2), overcompensation helpfulness (2), extended kiosk time (1) -- **3-5 contradiction discovery lines**: The third departure from multiple angles (detective noticing the pattern, monologue reaction, follow-up dialogue about Torek) - ---- - -## Authoring Notes - -- **Sera's voice**: Competent, slightly wry, conversational but precise. Uses complete sentences. Doesn't waste words but isn't as terse as Kael — Sera explains things, provides context, frames information. Professional warmth, not casual warmth. When deflecting, Sera doesn't go silent — she redirects. The redirect itself is the tell. -- **The avoidance pattern** must be established through THREE observed departures, not one. The detective's training recognizes patterns, not anomalies. One departure is nothing. Two is coincidence. Three is data. The pacing must allow all three departures within the vertical slice timeframe. -- **Naia references**: Sera mentions Naia naturally, warmly, frequently. "Naia says the kids are doing better with the new curriculum." "Naia's worried about something at home — didn't want to pry." This establishes the friendship's depth before it becomes load-bearing. -- **Commission background**: Sera shares institutional details casually — compliance schedules, liaison rotation, kiosk access patterns. This is helpful (gives the detective real information) AND establishes Sera's access level (the detective later realizes Sera COULD have found what she found). -- **Deflection dialogue** (post-contradiction): Sera doesn't lie outright. She deflects: "He's just loud." "I don't like that crowd." "It's nothing." The deflections are plausible. The detective's training is what elevates them from excuses to tells. -- **Dual-lens discipline**: Every Sera line must work for BOTH the detective (who sees a trusted friend and institutional ally) AND the smuggler (who sees a Commission employee in the social landscape). The same sentence lands differently per character. When Sera says "I ran the usual calibration checks today," the detective hears routine work. The smuggler hears "Commission is still active in the district." - ---- - -## Pattern / Motivation - -**Pattern (System A):** FRIEND — Sera is a trust anchor whose relationship with the detective is the emotional core of the detective's experience. The FRIEND pattern means Sera's concealment carries maximum emotional weight because the detective relied on her as both a personal ally and an institutional peer. -**Motivation (System B):** WITNESS — Sera carries unreported evidence. She ran an unauthorized compliance check and found manifest discrepancies tied to Kael's shifts. Her motivation in the system is defined by what she has seen and is concealing, not by any operational role in the ring. - -**Composition read:** FRIEND + WITNESS creates the concealment betrayal: "I was your friend AND I was hiding evidence." The detective trusted Sera as a safe harbor in an unfamiliar district (FRIEND) while Sera was sitting on the exact data the detective needed (WITNESS). The contamination is retrospective — every helpful tip Sera shared is recontextualized once the concealment surfaces. Was her helpfulness genuine, or was it compensation? The answer is both, and that ambiguity is the emotional payload. - ---- - -**End Sera Venn Profile**. This is the full Tier 1 production depth. Parallels Kael Davan (smuggler's FRIEND) with different contradiction mechanics: cumulative pattern recognition vs. single spatial observation, institutional concealment vs. operational security breach, slow doubt vs. sudden alarm. diff --git a/wiki/characters/sess.md b/wiki/characters/sess.md deleted file mode 100644 index 5c6563a6c..000000000 --- a/wiki/characters/sess.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: "Sess Kolvur" -slug: sess -canonical_id: "npc:sess" -category: character -status: canonical -created: 2026-02-12 -updated: 2026-02-13 -tier: 3 -pattern: "ANCHOR" -motivation: "CIVILIAN" -social_sites: [] -entanglement: "Flat" -triangles: [] -home_district: transit -tags: [v0.1] -decision_refs: [D-024] -cross_refs: [] ---- - -# Sess Kolvur - -**Tier 3 NPC** | The Last Shift (Bar) | Flat - ---- - -## Essential Axes - -### Want - -Do the job. Go home. Don't get involved. - -Sess bartends evening shifts at The Last Shift under Lera Sessik. The work is steady, the tips are adequate, and the regulars are predictable. Sess has no ambitions beyond maintaining this equilibrium. In a district full of people with secrets, Sess's lack of hidden agenda is itself a kind of camouflage. - -### Routine - -**14:00 - 02:00**: Bar shift (arrives before opening, stays through close) -**Breaks**: Brief, in the back — Sess doesn't leave the bar during shift -**Off-days**: Home, personal time, no bar social life (Sess separates work from everything else) - -### Personality - -**Observant, discreet, laconic.** Sess sees everything from behind the bar — who drinks with whom, who avoids whom, who's spending too much, who's stressed, who's new. Sess processes this information but doesn't share it unprompted. Getting Sess to talk requires building trust over multiple visits, and even then, Sess offers fragments, not narratives. A good bartender hears everything. A great bartender remembers everything and says nothing. - ---- - -## Voice Hint - -*"What'll it be?"* [Minimal. Efficient. A question that doesn't invite conversation unless you offer it.] - ---- - -## Function Note - -Sess is the **ambient observer** — the social wallpaper who notices everything and says almost nothing. For the detective, Sess is a potential long-game source: repeated visits, consistent tipping, demonstrated trustworthiness might eventually unlock Sess's observations. For the smuggler, Sess is safe — a known quantity who doesn't gossip. Sess's function is atmospheric: proving that Sova Transit District has ordinary people living ordinary lives, and that the bar is a real place where real service workers show up and pour drinks. - ---- - -## Dual-Lens Notes - -**Smuggler**: Background. Safe. *"Sess is behind the bar. Good. Reliable, doesn't talk."* - -**Detective**: Potential source — eventual. *"The bartender. Sess. Sees the whole room every night. Getting them to share will take time."* - ---- - -## Pattern / Motivation - -**Pattern (System A):** ANCHOR — Sess embodies quiet contentment behind the bar. His version of "Is this enough?" is answered by routine: pour drinks, observe, go home. Sess represents the stable social atmosphere that the district's conflicts play out against. His contentment is not ignorance — it is a deliberate choice to keep his life simple. -**Motivation (System B):** CIVILIAN — Sess is uninvolved. He has no agenda, no conspiracy, no operational role. He bartends. He sees things. He does not act on what he sees. The CIVILIAN motivation means Sess is social wallpaper with observational depth — present everywhere, invested in nothing. - -**Composition read:** ANCHOR + CIVILIAN creates atmospheric texture: "Sees everything, says nothing — because nothing's wrong with HIS life." Sess's contentment (ANCHOR) is sustained by his disengagement (CIVILIAN). He observes the district's tensions from behind the bar without being pulled into them. This makes him a unique resource for patient players: Sess has seen patterns that no one else has assembled, but unlocking that information requires repeated investment in a character who has no reason to share. The v0.2 potential is significant — NOBODY tier promotion could reveal that Sess's quiet contentment conceals an observation post no one suspected. - ---- - -**Cross-References:** [Lera Sessik](lera-sessik.md) diff --git a/wiki/characters/tav.md b/wiki/characters/tav.md deleted file mode 100644 index 7c5c53eed..000000000 --- a/wiki/characters/tav.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: "Tav Merik" -slug: tav -canonical_id: "npc:tav" -category: character -status: canonical -created: 2026-02-12 -updated: 2026-02-13 -tier: 3 -pattern: "SYSTEM" -motivation: "CIVILIAN" -social_sites: [] -entanglement: "Flat" -triangles: [] -home_district: transit -tags: [v0.1] -decision_refs: [D-024] -cross_refs: [] ---- - -# Tav Merik - -**Tier 3 NPC** | Smuggling Ring + Logistics Hub | Flat - ---- - -## Essential Axes - -### Want - -Do the watch. Don't get noticed. Prove useful. - -Tav is the ring's lookout — stationed at strategic positions during operations to watch for security patrols, unexpected personnel, or anything that shouldn't be where it is. The job is simple: watch, signal, move. Tav takes it seriously because it's the first responsibility anyone has trusted him with, and because the consequences of failure are immediate and severe. - -### Routine - -**Legitimate**: Irregular shift work at the logistics hub (cargo staging, equipment prep). Not a fixed roster — Tav picks up shifts as available, which gives him flexible hours that align conveniently with ring operations. - -**Ring operations**: Positioned at corridor intersections or freight bay entries during night-shift courier runs (1-2x per week). Watches for 30-60 minute windows. Signals Renn via lattice if a patrol approaches. - -**Off-duty**: Home or wandering the district. Tav doesn't drink at the bar — he's young, broke, and socially peripheral. - -### Personality - -**Quiet, watchful, nervous.** Tav is the youngest ring member (early 20s). He's hypervigilant during operations — every footstep sounds like a patrol, every shadow could be someone approaching. This nervous energy is his strength (nothing gets past him on watch) and his weakness (the anxiety is visible to anyone who knows what to look for). - ---- - -## Voice Hint - -*"Clear. South corridor, no movement for the last twenty minutes. You're good."* [Short, precise, slightly breathless] - ---- - -## Function Note - -Tav is the **peripheral ring member** — the person at the lowest level of the organization who sees the physical movement of operations without understanding the structure above him. For the smuggler, Tav is a reliable set of eyes. For the detective, Tav is a loitering youth in the wrong place at the wrong time — easily explained away as a lost worker, but suspicious if the detective is already tracking corridor movement patterns. Tav is also the ring member most likely to be caught and least likely to have useful information — he knows routes, not names. Catching Tav reveals a thread but not the tapestry. - ---- - -## Dual-Lens Notes - -**Smuggler**: Trusted lookout. Known quantity. *"Tav's on watch. Good — he doesn't miss anything."* - -**Detective**: Loitering youth. Anomaly if context is right. *"Young worker. Irregular shift. Seen near freight corridors outside his posted hours. Probably nothing. Filing it."* - ---- - -## Pattern / Motivation - -**Pattern (System A):** SYSTEM — Tav follows ring procedure. He is the lookout — positioned at corridor intersections during operations, watching for patrols, signaling the courier. His function is institutional: he is a cog in the ring's operational machinery, executing a defined role within a defined process. SYSTEM describes his mechanical participation, not his personal investment. -**Motivation (System B):** CIVILIAN — Tav is the lowest rung. He watches the door. That is the whole job. He does not understand the operation above him, does not participate in planning, and has minimal connection to the ring's strategy. The CIVILIAN motivation reflects his peripheral engagement — he was told it mattered, and he believed it. - -**Composition read:** SYSTEM + CIVILIAN creates the lowest operational rung: "Tav watches the door. That's the whole job." Tav participates in the system (SYSTEM) without understanding it (CIVILIAN). He is the ring member most likely to be caught and least likely to have useful information — he knows routes and timing, not names or structure. For the detective, catching Tav reveals a thread but not the tapestry. For the smuggler, Tav is a reliable set of eyes whose nervous energy makes him effective on watch but vulnerable to pressure. The v0.2 potential is in what Tav represents: a young person trapped in a role he barely understands, doing dangerous work because someone told him it was important. - ---- - -**Cross-References:** [Renn](renn.md), [Devra](devra.md) diff --git a/wiki/characters/torek-lintar.md b/wiki/characters/torek-lintar.md deleted file mode 100644 index 5eb6c06ef..000000000 --- a/wiki/characters/torek-lintar.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -title: "Torek Lintar" -slug: torek-lintar -canonical_id: "npc:torek-lintar" -category: character -status: canonical -created: 2026-02-12 -updated: 2026-02-13 -tier: 2 -pattern: "CATALYST" -motivation: "CIVILIAN" -social_sites: [] -entanglement: "Mundane" -triangles: [] -home_district: transit -tags: [v0.1] -decision_refs: [D-024] -cross_refs: [] ---- - -# Torek Lintar - -**Tier 2 NPC** | The Last Shift (Bar) + Logistics Hub | Mundane - ---- - -## Core Identity - -**Name**: Torek Lintar -**Age**: 29 -**Role**: Dock worker (day shift) and bar regular -**System Origin**: Krenn System, Station Sova -**Lattice Tier**: Baseline (recently upgraded accessories — visible and notable) -**Employer**: Sova Logistics Consortium - ---- - -## 10-Axis Profile - -### 1. Want - -**Primary**: Enjoy the good life while it lasts. - -Torek is young, single, and for the first time in his life has money beyond rent and food. The source of that money is ambiguous — even to the player. It could be ring income (Torek handles dock inspections and could be receiving payments for looking away), a side hustle (freelance freight brokering), or an inheritance (an aunt on Krenn Prime who passed recently). The ambiguity is load-bearing: Torek's spending is a tell, but what it tells depends on the truth the player never fully confirms. - -**Secondary**: Be seen. Be liked. Be the generous one. - -Torek buys rounds. Tips well. Has a new jacket. Latest lattice accessories. He's performing generosity — and the performance is the problem. In a district where everyone knows everyone's salary, visible wealth is a signal that demands explanation. - -### 2. Secret / Vulnerability - -**Surface secret**: Spending beyond a standard dock worker's means. Visible to everyone at the bar. - -**Deep secret**: The source of Torek's money. The game deliberately doesn't confirm this for the player. Torek might be ring-compensated (paid for inspection negligence), might have legitimate supplementary income, or might be spending an inheritance unwisely. The investigation can reach any of these conclusions depending on the evidence path. - -**Vulnerability**: Visibility. Torek can't help being noticed. His spending makes him a target for the detective (financial tell), a liability for the smuggler (exposure risk), and a subject of gossip for everyone else. - -### 3. Relationships - -**Lera Sessik**: Bar owner. Torek is one of her best customers. She appreciates the spending, worries about the attention it draws. - -**Olin**: New arrival. Torek has been friendly to Olin (buys them drinks, offers bar introductions). Could be genuine hospitality or could be cultivating someone new. - -**Harek**: Card game partner. They play regularly at the bar. Torek usually wins — which is itself notable, given Harek's longer experience. - -### 4. Tolerance Threshold - -**Low**. Torek isn't built for pressure. He's enjoying a good time and hasn't thought much about consequences. If confronted about his spending by the detective, Torek gets defensive, then nervous. If pressured by the ring (if he's ring-connected) to be less visible, he complies resentfully but can't actually change his habits. - -### 5. Daily Routine - -**06:00 - 14:00**: Day shift at logistics hub (dock inspection and cargo handling) -**14:00 - 14:30**: Shift transition — walks to bar district -**14:30 - 20:00**: The Last Shift (primary social hours — drinks, card games, socializing) -**20:00+**: Home or extended bar session on end-of-cycle days - -### 6. Information Inventory - -**Knows**: Hub operations (dock procedures, inspection protocols, shift patterns), bar social dynamics, who's a regular, who's new. If ring-connected: which containers don't get inspected carefully. - -**Doesn't know**: Ring structure (even if compensated, Torek would know only his handler, not the organization), manifest details, Kael's exit attempt, Sera's compliance check, the detective's investigation scope. - -### 7. Contentment - -**High** — for now. Torek is living his best version of life on Sova. Money, friends, status at the bar. This contentment is fragile because it depends on income that may not be sustainable and visibility that's attracting the wrong attention. - -### 8. Personality Traits - -**Primary: Generous** — buys rounds, tips well, shares freely. Whether this is genuine warmth or performance is part of his ambiguity. -**Secondary: Careless** — doesn't think about consequences. Lives for the immediate. -**Tertiary: Social** — needs to be around people. The bar is his second home. - -### 9. Tell System - -| Tell | Trigger | Observable To | -|------|---------|---------------| -| **Visible spending** | Buying rounds, new accessories, generous tips | Everyone at the bar. Detective (financial tell). Smuggler (exposure risk). | -| **Gets loud after drinks** | 3+ drinks — volume increases, stories get bigger, discretion decreases | Lera (worried), Sera (leaves), Detective (observing behavioral patterns) | -| **Defensive when questioned about money** | Anyone asks directly about his income or spending | Detective (confrontation opportunity), bar regulars | - -### 10. Skill Set - -**Occupational**: Dock inspection, cargo handling, freight procedures. -**Combat tag**: **No**. Torek avoids trouble. -**Lattice capability**: Baseline with aftermarket accessories (social/entertainment upgrades, not professional). - ---- - -## Voice Sample - -**Mood: Generous (baseline)** -- *"Next round's on me. No — don't argue. What's the point of working the docks if you can't buy your friends a drink?"* - -**Mood: Defensive (pressed about money)** -- *"What, I can't treat myself? I work hard. Overtime pays. You want to see my pay stubs, or can I finish my drink?"* - ---- - -## Dual-Lens Notes - -**Smuggler**: Torek is a liability. His spending draws attention the operation can't afford. The smuggler reads Torek's generosity as a security risk. *"Torek's buying rounds again. He needs to calm down before someone starts asking questions."* - -**Detective**: Torek is a financial tell. A dock worker buying rounds and wearing new accessories flags immediately. The question is whether the money comes from something illegal or something mundane. *"Lintar, T. — dock worker. Spending pattern inconsistent with standard logistics salary. Worth a closer look."* - ---- - -## Triangle Roles - -**Triangle 3: Bar Tensions (Lera - Torek - Olin)** — The visible spender. Torek's generosity keeps the bar profitable but his visibility creates risk. Olin's arrival adds a variable — is Olin drawn by Torek's spending, or is that coincidental? Lera is caught between welcoming the money and worrying about the attention. - ---- - -## Pattern / Motivation - -**Pattern (System A):** CATALYST — Torek's visible spending disrupts the district's equilibrium. His generosity at the bar, his new accessories, his round-buying — all of it forces other characters to react, evaluate, and adapt. Torek doesn't intend to cause disruption; his lifestyle IS the disruption. -**Motivation (System B):** CIVILIAN — Torek is uninvolved in any conspiracy. Whether his money comes from the ring, a side hustle, or an inheritance, Torek himself is simply living. He is not scheming, not investigating, not operating. He is spending money and enjoying himself. The CIVILIAN motivation means the disruption is accidental — a signal without intent. - -**Composition read:** CATALYST + CIVILIAN creates the accidental signal: "He doesn't know he's a liability." Torek's disruption (CATALYST) comes from innocence (CIVILIAN), not from deliberate action. This makes him harder to manage — you cannot negotiate with someone who does not know they are a problem. For the smuggler, Torek is a financial tell that cannot be silenced without revealing why it matters. For the detective, Torek is a spending pattern that could mean anything. The ambiguity is load-bearing precisely because Torek himself does not have the answer. - ---- - -**Cross-References:** [Lera Sessik](lera-sessik.md), [Olin](olin.md), [Harek](harek.md), [Sera Venn](sera-venn.md) diff --git a/wiki/characters/voss.md b/wiki/characters/voss.md deleted file mode 100644 index 32a2c6775..000000000 --- a/wiki/characters/voss.md +++ /dev/null @@ -1,149 +0,0 @@ ---- -title: "Arvo Voss" -slug: voss -canonical_id: "npc:voss" -category: character -status: canonical -created: 2026-02-12 -updated: 2026-02-13 -tier: 2 -pattern: "SYSTEM" -motivation: "OPERATOR" -social_sites: [] -entanglement: "Mundane" -triangles: [] -home_district: transit -tags: [v0.1] -decision_refs: [D-024] -cross_refs: [] ---- - -# Arvo Voss - -**Tier 2 NPC** | Logistics Hub (The Terminal) | Mundane - ---- - -## Core Identity - -**Name**: Arvo Voss -**Age**: 46 -**Role**: Shift supervisor, Sova Transit District Logistics Hub -**System Origin**: Krenn System, Station Sova (born and raised) -**Lattice Tier**: Baseline -**Employer**: Sova Logistics Consortium - ---- - -## 10-Axis Profile - -### 1. Want - -**Primary**: Keep his shift running without incident. - -Voss has supervised the day shift for 11 years. He's good at logistics — schedules, manifests, personnel management. He takes pride in clean handoffs and zero incident reports. The smuggling operation complicates this because it introduces variables he can't control, but the cut he receives smooths the rough edges of a supervisor's salary. - -**Secondary**: Maintain authority despite being undermined by Nils. - -Voss is the shift supervisor. Nils Davan (Kael's older sibling, ring coordinator, off-stage in v0.1) gives orders through intermediaries that Voss is expected to follow. Voss resents this — he has positional authority on the floor, but the ring's needs override his scheduling decisions. He complies because the money is good and because refusing Nils has consequences he doesn't want to test. - -### 2. Secret / Vulnerability - -**Surface secret**: Takes a cut from the ring to smooth inspections and schedule coverage windows. Most hub workers suspect this; nobody says it. - -**Deep secret**: Voss is terrified that the escalating volume will get him caught. He's been shift supervisor long enough that any investigation into the hub's operations will start with him. He has no exit strategy. - -**Vulnerability**: Institutional exposure. Voss is the most visible member of the ring's logistics chain. If the detective follows the manifest trail, it leads to the shift supervisor's schedule first. - -### 3. Relationships - -**Kael Davan**: Subordinate, ring colleague. Voss respects Kael's competence but resents taking orders (via Nils) from someone who technically works under him. Functional, tense. - -**Nils Davan** (off-stage): Ring coordinator. Voss's real boss for ring operations. Voss resents Nils but fears the consequences of refusal. The relationship is compliance, not loyalty. - -**Maret Korr**: Freight scheduler. Voss needs Maret functioning and quiet. Maret is smart enough to notice discrepancies, and Voss is aware she's noticed. He manages her through professional attention — making sure she feels valued, heard, but never asked to look deeper. - -### 4. Tolerance Threshold - -**Moderate-high**. Voss has been doing this for years and can handle routine pressure. What he can't handle is escalation — higher volume, tighter windows, more risk. Nils pushing for bigger shipments is what keeps Voss awake at night. If an investigation reaches his desk, Voss will cooperate with whoever offers the best deal. He's pragmatic, not loyal. - -### 5. Daily Routine - -**05:45**: Arrives at hub, reviews shift manifest -**06:00 - 14:00**: Day shift supervision -**10:30**: Break room, coffee, reviews afternoon handoff notes -**14:00 - 14:30**: Shift transition, handoff to swing supervisor -**14:30 - 16:00**: Occasional bar visit (not a regular — Voss drinks at home) -**Ring operations**: Adjusts schedules as needed to create coverage windows. Does this during normal scheduling — invisible unless you know what to look for. - -### 6. Information Inventory - -**Knows**: Ring structure (not leadership details, but operational flow), schedule manipulation patterns, which inspectors are compromised, Maret's growing suspicion, Kael's reliability, Drin's gambling debt. - -**Doesn't know**: Kael's exit attempt, Sera's compliance check, the detective's investigation focus, Pell's wavering. - -### 7. Contentment - -**Moderate-low**. Voss had a functional life before the ring escalated. The extra money was welcome. The extra risk is not. He's a man who wanted a quiet career and ended up as the load-bearing wall in a smuggling operation. - -### 8. Personality Traits - -**Primary: Cautious** — overthinks, plans for contingencies, hates surprises. -**Secondary: Resentful** — feels trapped between institutional responsibility and criminal obligation. -**Tertiary: Professional** — despite everything, runs a clean shift on the legitimate side. - -### 9. Tell System - -| Tell | Trigger | Observable To | -|------|---------|---------------| -| **Nervous schedule adjustments** | Ring requests schedule change; Voss reprocesses manifests multiple times | Maret (sees the rework), Detective (if tracking manifest revision patterns) | -| **Clipped responses to Kael** | Nils has given orders Voss disagrees with | Smuggler, Resha, other hub workers | -| **Avoids break room during ring operations** | Doesn't want to be seen idle when containers are being rerouted | Detective (if tracking Voss's routine deviations) | - -### 10. Skill Set - -**Occupational**: Shift management, freight logistics, manifest processing, personnel scheduling. -**Combat tag**: **No**. Voss avoids confrontation physically and socially. -**Lattice capability**: Baseline. - ---- - -## Voice Sample - -**Mood: Professional (baseline)** -- *"Manifest's clean for the morning run. Let's keep it that way. Resha, you're on Bay 3. Kael, take the overflow from yesterday."* - -**Mood: Stressed (post-schedule manipulation)** -- *"Just — follow the schedule I posted. I don't need questions about why Bay 7 is offline during transition. It's maintenance. That's all."* - -**Mood: Resentful (to himself, about Nils)** -- *"Another 'adjustment.' Like I don't have enough to manage without reworking the whole rotation at the last minute."* - ---- - -## Dual-Lens Notes - -**Smuggler**: Knows Voss is compromised and stressed. Reads Voss's schedule changes as operational signals. Voss is management to navigate, not a friend. *"Voss is tense today. Nils must have changed the window again."* - -**Detective**: Sees an experienced shift supervisor who's anxious about something. Schedule irregularities are the first data point. Voss is the institutional face of the hub — any investigation starts here. *"The shift supervisor — Voss. Runs a tight operation on paper. But he reworks manifests more than the workload justifies."* - ---- - -## Triangle Roles - -**Triangle 1: Hub Power (Voss - Kael - Nils)** — The authority figure who isn't really in charge. Voss has the title; Nils has the power. Kael is caught between. Voss's resentment toward the Davan siblings is professional and personal. - -**Triangle 2: Worried Knowledge (Maret - Drin - Voss)** — The manager who needs everyone quiet. Maret notices too much. Drin is compromised and might crack. Voss has to keep both functional and silent without revealing why. - ---- - -## Pattern / Motivation - -**Pattern (System A):** SYSTEM — Voss is the institutional authority at the logistics hub. His shift schedule is the operational machinery that enables the smuggling operation. He represents the legitimate system that has been co-opted: the schedule runs, the manifests process, the handoffs happen — all through the shift supervisor's authority. -**Motivation (System B):** OPERATOR — Voss runs the schedule. He processes manifests, manages personnel, creates coverage windows. His function is operational execution of the machinery he controls, not top-down pressure or strategic direction. He is middle management: competent, procedural, operating the system. - -**Composition read:** SYSTEM + OPERATOR creates corrupted machinery: "The system works — for the wrong people." Voss IS the institutional process (SYSTEM) and he actively runs it (OPERATOR), meaning the legitimate logistics infrastructure and the criminal operation share the same human engine. For the detective, following the manifest trail leads to the shift supervisor's schedule — the system itself is the evidence. For the smuggler, Voss is the mechanism that keeps the operation running, and his resentment toward Nils is the gear most likely to grind. - ---- - -**Cross-References:** [Kael Davan](kael-davan.md), [Maret Korr](maret-korr.md), [Drin](drin.md), [Resha](resha.md) From a569313e14240e861b838cd6e14fa5c7645aacee Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Fri, 13 Mar 2026 14:46:00 +0100 Subject: [PATCH 04/28] docs(docs): add frontmatter templates for docs/ directory New template system for project documentation with standardized frontmatter (title, description, type, status, decision_refs). Templates for architecture, design, briefing, workshop, and test-plan document types. Enables context-aware loading alongside the existing wiki template system. Co-Authored-By: Claude Opus 4.6 --- docs/_templates/architecture.md | 41 +++++++++++++++++++++++++++++++++ docs/_templates/briefing.md | 32 +++++++++++++++++++++++++ docs/_templates/design.md | 35 ++++++++++++++++++++++++++++ docs/_templates/test-plan.md | 28 ++++++++++++++++++++++ docs/_templates/workshop.md | 35 ++++++++++++++++++++++++++++ 5 files changed, 171 insertions(+) create mode 100644 docs/_templates/architecture.md create mode 100644 docs/_templates/briefing.md create mode 100644 docs/_templates/design.md create mode 100644 docs/_templates/test-plan.md create mode 100644 docs/_templates/workshop.md diff --git a/docs/_templates/architecture.md b/docs/_templates/architecture.md new file mode 100644 index 000000000..745e1e2dc --- /dev/null +++ b/docs/_templates/architecture.md @@ -0,0 +1,41 @@ +--- +title: "" # Display name (e.g., "Fog Shader Architecture") +description: "" # One-line summary for context filtering (e.g., "How fog-of-war rendering works: texture pipeline, shader, and performance") +type: architecture # architecture | design | briefing | workshop | test-plan | test-report | audit +status: active # active | draft | archived | superseded +ticket: "" # Ticket reference (e.g., "#430") +decision_refs: [] # e.g., [D-059, D-015] +author: "" # Primary author agent or person +created: YYYY-MM-DD +updated: YYYY-MM-DD +--- + +# {Title} + +## Overview + +{What this system/component is, why it exists, how it fits into the architecture.} + +--- + +## Current State + +{What is implemented now, what changed since the original design.} + +--- + +## Design + +{Technical details: data flow, interfaces, algorithms, constraints.} + +--- + +## Decision References + +{Link to relevant D-records and explain how they constrain this design.} + +--- + +## Open Questions + +{Anything unresolved. Link to Q-records if filed.} diff --git a/docs/_templates/briefing.md b/docs/_templates/briefing.md new file mode 100644 index 000000000..2559cd133 --- /dev/null +++ b/docs/_templates/briefing.md @@ -0,0 +1,32 @@ +--- +title: "" # Display name (e.g., "Gestalt - Project Briefing") +description: "" # One-line summary for context filtering (e.g., "Systems design agent context: v0.2 pivot, generator-first, relevant decisions") +type: briefing # architecture | design | briefing | workshop | test-plan | test-report | audit +status: active # active | draft | archived | superseded +agent: "" # Agent name this briefing is for +updated: YYYY-MM-DD +--- + +# {Agent} - Project Briefing + +## Current Project State + +{High-level project status and direction.} + +--- + +## Key Changes for Your Role + +{What's changed since the last briefing that affects this agent's work.} + +--- + +## Relevant Decisions + +{Bulleted list of D-records this agent needs to know about.} + +--- + +## Current Sprint Tasks + +{What this agent should focus on now.} diff --git a/docs/_templates/design.md b/docs/_templates/design.md new file mode 100644 index 000000000..4c55f3b40 --- /dev/null +++ b/docs/_templates/design.md @@ -0,0 +1,35 @@ +--- +title: "" # Display name (e.g., "Monologue Content Architecture") +description: "" # One-line summary for context filtering (e.g., "Authoring contract for internal monologue: categories, triggers, volume targets") +type: design # architecture | design | briefing | workshop | test-plan | test-report | audit +status: active # active | draft | archived | superseded +ticket: "" # Ticket reference (e.g., "#253") +decision_refs: [] # e.g., [D-016, D-032] +author: "" # Primary author agent or person +created: YYYY-MM-DD +updated: YYYY-MM-DD +--- + +# {Title} + +## Purpose + +{What this document defines and who should use it.} + +--- + +## Specification + +{The design itself: rules, formats, examples, constraints.} + +--- + +## Examples + +{Concrete examples showing correct usage.} + +--- + +## Decision References + +{Link to relevant D-records and explain how they constrain this design.} diff --git a/docs/_templates/test-plan.md b/docs/_templates/test-plan.md new file mode 100644 index 000000000..9924b2d2e --- /dev/null +++ b/docs/_templates/test-plan.md @@ -0,0 +1,28 @@ +--- +title: "" # Display name (e.g., "Fog Rendering Visual Test Plan") +description: "" # One-line summary for context filtering (e.g., "Test coverage for fog shader: gradient smoothness, alpha tuning, performance budgets") +type: test-plan # architecture | design | briefing | workshop | test-plan | test-report | audit +status: active # active | draft | archived | superseded +ticket: "" # Ticket reference +system_under_test: "" # What system/feature is being tested +created: YYYY-MM-DD +updated: YYYY-MM-DD +--- + +# {Title} + +## Scope + +{What is being tested and what is excluded.} + +--- + +## Test Cases + +{Numbered test cases with expected results.} + +--- + +## Environment + +{Test environment requirements: live server, fixtures, headless, etc.} diff --git a/docs/_templates/workshop.md b/docs/_templates/workshop.md new file mode 100644 index 000000000..ae40eeca6 --- /dev/null +++ b/docs/_templates/workshop.md @@ -0,0 +1,35 @@ +--- +title: "" # Display name (e.g., "Where's the Fun? Workshop") +description: "" # One-line summary for context filtering (e.g., "Multi-agent workshop on v0.2 direction: tycoon bookmark, generator-first, 24 decisions") +type: workshop # architecture | design | briefing | workshop | test-plan | test-report | audit +status: active # active | draft | archived | superseded +participants: [] # Agent names involved +rounds: 0 # Number of discussion rounds +decisions_produced: [] # D-records produced (e.g., [D-114, D-117]) +created: YYYY-MM-DD +updated: YYYY-MM-DD +--- + +# {Title} + +## Brief + +{What question this workshop set out to answer.} + +--- + +## Participants + +{Who was involved and what role each played.} + +--- + +## Outcomes + +{Key decisions made, with D-record references.} + +--- + +## Open Items + +{Anything deferred or unresolved.} From dfcd7bc96dc314c738114f903243aabf6efa4bf1 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Fri, 13 Mar 2026 14:46:15 +0100 Subject: [PATCH 05/28] chore(meta): update changelog Co-Authored-By: Claude Opus 4.6 --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 553b5329d..8fcd4dbde 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,14 @@ Format based on [Keep a Changelog](https://keepachangelog.com/). ## [Unreleased] +### Added +- Standardized `description` frontmatter field across all wiki templates and entries for context-aware document loading +- Character exemplar template — Kael Davan Tier 1 profile preserved as generator quality target (D-122) +- Docs template system — frontmatter templates for architecture, design, briefing, workshop, and test-plan documents + +### Removed +- v0.1 hand-authored character wiki entries — 18 NPC profiles + roster index superseded by generator pipeline (D-122) + ## [v0.1.26] — 2026-03-13 ### Added From 453983ffd2c25d10cf841a7057b4423d68d7ccac Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Fri, 13 Mar 2026 15:00:46 +0100 Subject: [PATCH 06/28] chore(docs): remove content-converter and content-ron Makefile target MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The YAML→RON converter and its make target are v0.1 artifacts superseded by the v0.2 RON-first generator pipeline. content-ron/ was already gitignored; this removes the tool that generated it. Closes #667. Co-Authored-By: Claude Opus 4.6 --- Makefile | 7 +- content/_meta/README.md | 50 - content/_meta/npc-authoring-style-guide.md | 954 ------------------ content/_schema/campaign.schema.json | 22 - content/_schema/checklist.schema.json | 135 --- content/_schema/dialogue-line.schema.json | 288 ------ content/_schema/dialogue-pool.schema.json | 134 --- content/_schema/district.schema.json | 52 - content/_schema/fact-catalog.schema.json | 73 -- content/_schema/location.schema.json | 54 - content/_schema/monologue-pool.schema.json | 234 ----- content/_schema/npc-profile.schema.json | 209 ---- content/_schema/routine.schema.json | 103 -- content/_schema/station.schema.json | 26 - content/_schema/system.schema.json | 26 - content/_schema/triangle.schema.json | 99 -- tooling/content-converter/Cargo.lock | 349 ------- tooling/content-converter/Cargo.toml | 17 - tooling/content-converter/src/main.rs | 286 ------ tooling/content-converter/src/types.rs | 443 -------- .../authoring}/base-text-authoring-guide.md | 0 .../authoring}/cultural-generation-guide.md | 0 .../authoring}/culture-authoring-guide.md | 0 .../authoring}/dual-lens-authoring-guide.md | 0 .../authoring}/line-id-authoring-guide.md | 0 .../authoring}/monologue-voice-guide.md | 4 +- .../npc-patterns/contradiction-arc.md | 0 .../authoring}/npc-patterns/mirror-moment.md | 0 .../authoring}/npc-patterns/the-mirror.md | 0 .../authoring}/tier1-module-authoring.md | 0 30 files changed, 3 insertions(+), 3562 deletions(-) delete mode 100644 content/_meta/README.md delete mode 100644 content/_meta/npc-authoring-style-guide.md delete mode 100644 content/_schema/campaign.schema.json delete mode 100644 content/_schema/checklist.schema.json delete mode 100644 content/_schema/dialogue-line.schema.json delete mode 100644 content/_schema/dialogue-pool.schema.json delete mode 100644 content/_schema/district.schema.json delete mode 100644 content/_schema/fact-catalog.schema.json delete mode 100644 content/_schema/location.schema.json delete mode 100644 content/_schema/monologue-pool.schema.json delete mode 100644 content/_schema/npc-profile.schema.json delete mode 100644 content/_schema/routine.schema.json delete mode 100644 content/_schema/station.schema.json delete mode 100644 content/_schema/system.schema.json delete mode 100644 content/_schema/triangle.schema.json delete mode 100644 tooling/content-converter/Cargo.lock delete mode 100644 tooling/content-converter/Cargo.toml delete mode 100644 tooling/content-converter/src/main.rs delete mode 100644 tooling/content-converter/src/types.rs rename {docs/design => wiki/authoring}/base-text-authoring-guide.md (100%) rename {docs/design => wiki/authoring}/cultural-generation-guide.md (100%) rename {docs/design => wiki/authoring}/culture-authoring-guide.md (100%) rename {docs/design => wiki/authoring}/dual-lens-authoring-guide.md (100%) rename {docs/design => wiki/authoring}/line-id-authoring-guide.md (100%) rename {docs/design => wiki/authoring}/monologue-voice-guide.md (99%) rename {docs/design => wiki/authoring}/npc-patterns/contradiction-arc.md (100%) rename {docs/design => wiki/authoring}/npc-patterns/mirror-moment.md (100%) rename {docs/design => wiki/authoring}/npc-patterns/the-mirror.md (100%) rename {docs/design => wiki/authoring}/tier1-module-authoring.md (100%) diff --git a/Makefile b/Makefile index 8c59c807a..d8c58b31f 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ GODOT := $(shell command -v godot4 2>/dev/null || command -v godot 2>/dev/null) .PHONY: help setup build check-protocol client server game stop test lint ci ci-client ci-server clean \ decisions-sync decisions-coverage decisions-active decisions-orphan \ - db-backup db-install validate-content content-ron check-fact-ids setup-hooks \ + db-backup db-install validate-content check-fact-ids setup-hooks \ pre-pr pre-pr-lint pre-pr-build pre-pr-test pre-pr-validate pre-pr-fixtures \ pre-pr-server pre-pr-client pre-pr-content \ fixtures-client fixtures-gauntlet golden-diff golden-update \ @@ -47,7 +47,6 @@ help: @echo " make decisions-orphan Decisions without implementing tickets" @echo " make validate-content Validate content YAML against schemas" @echo " make check-fact-ids Check fact_id references against knowledge catalogs" - @echo " make content-ron Convert content YAML to RON (build-time)" @echo " make fixtures-client Generate GDScript->Rust cross-encoder fixtures (#475)" @echo " make golden-diff Show diff if golden file output has changed" @echo " make golden-update Regenerate golden file and stage for commit" @@ -382,10 +381,6 @@ test-voice-real: cd server && cargo test --test voice_pipeline -- --nocapture @echo "Results: .tmp/voice-test/results.txt" -content-ron: - cd tooling/content-converter && cargo build --release - tooling/content-converter/target/release/content-converter --input content --output content-ron --verbose - # --- Clean --- clean: diff --git a/content/_meta/README.md b/content/_meta/README.md deleted file mode 100644 index 1412d8343..000000000 --- a/content/_meta/README.md +++ /dev/null @@ -1,50 +0,0 @@ -# Content Infrastructure - -Directories prefixed with `_` are infrastructure, not game content. The server content loader skips directories starting with `_` when scanning for content files. - -- `_meta/` — Infrastructure metadata (this directory) -- `_schema/` — JSON Schema validation files (draft 2020-12) - -## Directory Hierarchy - -Content is organized hierarchically to match the game universe: - -``` -content/ - content.yaml # Manifest: campaign list, glob discovery patterns - global/ # Cross-campaign shared content (factions, enums, knowledge) - campaigns/ - {campaign}/ # e.g., "main" - campaign.yaml - systems/ - {system}/ # e.g., "krenn" - system.yaml - stations/ - {station}/ # e.g., "sova" - station.yaml - districts/ - {district}/ # e.g., "transit" - district.yaml - npcs/ - locations/ - triangles/ - dialogue/ - monologue/ - routines/ - templates/ -``` - -## Canonical ID Derivation - -Identity is derived from directory path at load time — no redundant ID fields in YAML. - -- **District:** `{system}.{station}.{district}` (e.g., `krenn.sova.transit`) -- **NPC (within district):** `npc:{slug}` (e.g., `npc:kael-davan`) -- **NPC (cross-district):** `npc:{district}.{slug}` (e.g., `npc:transit.kael-davan`) -- **Location:** `{system}.{station}.{district}.location.{slug}` - -## Content Discovery - -The loader reads `content.yaml` for enabled campaigns and their glob patterns. -District discovery uses `systems/**/districts/*/district.yaml` — no per-district -manifest entry needed. Adding a district = creating a directory with district.yaml. diff --git a/content/_meta/npc-authoring-style-guide.md b/content/_meta/npc-authoring-style-guide.md deleted file mode 100644 index 310f1648a..000000000 --- a/content/_meta/npc-authoring-style-guide.md +++ /dev/null @@ -1,954 +0,0 @@ -# NPC Authoring Style Guide - -**The Settled Reach** | v0.1 Content Authoring Handbook -**Ticket:** #379 | **Sprint:** 5 -**Authors:** Gestalt (mechanical constraints), Mellanie (voice rules), Paula (tier templates, relationship design), Ozzie (anchor lines) -**Cross-references:** D-024, D-025, D-028, D-029, D-032, D-034, D-035, D-036, D-039, D-050, D-056, D-059 -**Schemas:** `content/_schema/npc-profile.schema.json`, `dialogue-pool.schema.json`, `monologue-pool.schema.json` - ---- - -## 1. Purpose - -This document is the single reference for all NPC content authoring in The Settled Reach. Every dialogue line, monologue line, NPC profile, and content pack must conform to the rules here. The guide is used by: - -- **Content authors** writing dialogue pools, monologue pools, NPC profiles, and content packs -- **Reviewers** checking tag compliance, voice consistency, and mechanical correctness -- **The generation pipeline** (v0.2+) as the style constraint set for expanded content -- **Future content authors** (including AI-assisted generation) as the specification they must satisfy - -**If it's not in this guide, it's not a rule. If it contradicts a decision document, the decision document wins.** - ---- - -## 2. Content Tiers - -Every NPC has a tier (D-023, D-024). The tier determines content depth and authoring budget. - -### Tier 1: Conspiracy-Entangled (Full Depth) - -| Attribute | Value | -|-----------|-------| -| **Pattern** | FRIEND, MIRROR, or CATALYST | -| **Motivation** | Any | -| **Line budget** | 70-100 lines (FRIEND), 50-70 lines (MIRROR/CATALYST) | -| **Profile depth** | Full 10-axis, all fields populated | -| **Relationship arcs** | Multi-phase (3-5 phases for FRIEND), stable-deep for MIRROR | -| **Dual-lens notes** | Required on profile and every 5th dialogue line minimum | -| **FRIEND content** | Hand-authored only. No generation expansion. | -| **Triangle membership** | 1-3 triangles | -| **Trust-gated dialogue** | All three tiers (surface, real, secret) populated | - -**v0.1 Tier 1 NPCs:** Kael Davan (FRIEND/OPERATOR), Sera Venn (FRIEND/WITNESS), Naia Tamm (MIRROR/CIVILIAN) - -### Tier 2: Template-Situated (Social Context) - -| Attribute | Value | -|-----------|-------| -| **Pattern** | ANCHOR, THRESHOLD, SYSTEM, GHOST, or REMNANT | -| **Motivation** | Any | -| **Line budget** | 20-40 lines | -| **Profile depth** | Full 10-axis, supporting fields optional | -| **Relationship arcs** | Single phase, stable. Access tier shifts possible but not required. | -| **Dual-lens notes** | Required on profile; optional on individual lines | -| **Triangle membership** | 1-2 triangles | -| **Trust-gated dialogue** | Surface required. Real recommended. Secret optional. | - -**v0.1 Tier 2 NPCs (D-050 canonical):** Voss (SYSTEM/OPERATOR), Lera Sessik (ANCHOR/OPERATOR), Torek Lintar (CATALYST/CIVILIAN), Devra (THRESHOLD/HANDLER), Maret Korr (WITNESS/SKEPTIC), Resha (CATALYST/CIVILIAN), Drin (SYSTEM/TURNCOAT), Renn (THRESHOLD/OPERATOR), Pell (CATALYST/TURNCOAT), Harek (ANCHOR/HANDLER) - -### Tier 3: Filler (Atmosphere) - -| Attribute | Value | -|-----------|-------| -| **Pattern** | NOBODY | -| **Motivation** | CIVILIAN | -| **Line budget** | 5-10 lines | -| **Profile depth** | Minimal: canonical_id, display_name, tier, pattern, motivation, want, routine | -| **Relationship arcs** | None | -| **Dual-lens notes** | Not required | -| **Triangle membership** | None | -| **Trust-gated dialogue** | Surface only | - -**v0.1 Tier 3 NPCs (D-050 canonical):** Sess (ANCHOR/CIVILIAN), Olin (CATALYST/CIVILIAN), Sabel (GHOST/OPERATOR), Tav (SYSTEM/CIVILIAN) - -**Off-stage:** Nils Davan (GHOST/HANDLER) — referenced in dialogue, effects visible through other NPCs, rarely or never directly encountered. - -**Design note:** The 30% flat population (D-029) is the noise floor. These NPCs make investigation signal meaningful. One memorable trait per Tier 3 NPC. Write the trait, write 5 greeting/routine lines, stop. But write them as real people — Tav worries about his first real responsibility. Sess remembers how the district used to be. Their genuineness is what makes the noise floor believable. - ---- - -## 3. NPC Patterns (System A) - -Patterns define an NPC's narrative archetype. Each pattern has specific authoring rules. - -### FRIEND - -The emotional centerpiece. Full contradiction arc, multi-phase relationship, maximum content depth. D-034 is the specification. - -| Rule | Detail | -|------|--------| -| **Phases** | 3-5 phases: warmth -> trust -> doubt -> conflict -> new equilibrium | -| **Contradiction** | Must be observable through player observation, NOT told through dialogue | -| **Sympathetic motivation** | THE FRIEND isn't evil. Concealment comes from care or fear. | -| **No clean resolution** | Every player choice (confront, ignore, exploit, protect) has consequences | -| **Tell progression** | 3+ tells that escalate across phases | -| **Dialogue shift** | Pre-discovery and post-discovery pools must feel different | -| **Dual-lens resonance** | The other character's playthrough recontextualizes FRIEND behavior | -| **No generation expansion** | All FRIEND content is hand-authored | - -**Content budget:** 70-100 lines per FRIEND NPC: -- 25-35 dialogue (greetings, shift talk, casual, deflection, confrontation) -- 15-20 trust-gated (insider ring talk, close warmth, secret-tier hints) -- 5-8 unprompted (NPC volunteers info early, warnings/deflections late) -- 10-15 monologue per character (bonded character + opposite character) -- 5-8 tell observation lines -- 3-5 contradiction discovery lines - -### MIRROR - -The honest character. No contradiction arc, no deception tells, no secrets. Full emotional depth despite mechanical simplicity. - -| Rule | Detail | -|------|--------| -| **No tells** | Empty tells array. Behavioral markers (visible stress, coping) are NOT deception tells. | -| **No contradiction arc** | No phases, no color shift, no betrayal moment | -| **No secret-tier revelation** | Trust progression reveals deeper FEELING, not deeper SECRETS | -| **Absence as content** | The player's observation pipeline flags the LACK of tells as notable | -| **Emotional vulnerability** | MIRROR wears their worry visibly. Transparency is load-bearing. | - -**Content budget:** 50-70 lines per MIRROR NPC. No contradiction discovery content. No tell observation content. - -### ANCHOR - -Stabilizing community presence. Protects the status quo. - -| Rule | Detail | -|------|--------| -| **Social gatekeeper** | Controls information flow through social position, not power | -| **Protective reflex** | Shields regulars and community members from outsiders | -| **Tells signal vigilance** | Not deception — watchfulness, redirection, protective silence | - -### THRESHOLD - -Controls access between social worlds. - -| Rule | Detail | -|------|--------| -| **Gatekeeper mechanic** | Cooperation or opposition shapes player options | -| **Access tier is the tool** | THRESHOLD decides who gets insider access | -| **Pressurable** | The player can earn or force cooperation | - -### GHOST - -Absent figure whose influence is felt through others. - -| Rule | Detail | -|------|--------| -| **Minimal direct content** | Referenced in dialogue, rarely seen | -| **Off-screen pressure** | Effects visible through other NPCs' behavior changes | -| **Content is in OTHER NPCs' lines** | Ghost's impact authored through relationship stubs | - -### SYSTEM, CATALYST, REMNANT, NOBODY - -See `content/global/enums/patterns.yaml` for definitions. Each follows the general tier rules above. - ---- - -## 4. Functional Motivations (System B) - -Motivations define the NPC's role relative to the conspiracy. Combined with pattern to produce the full NPC identity. - -| Motivation | Relationship to Ring | Content Implication | -|------------|---------------------|---------------------| -| **HANDLER** | Manages ring operations | Authority dialogue, operational language, power dynamics | -| **WITNESS** | Knows something, possibly unwittingly | Information gates, trust-progression reveals | -| **TURNCOAT** | Wavering loyalty | Pressurable, flip conditions, dual-access content | -| **CIVILIAN** | Genuinely uninvolved | Mundane substrate, noise floor, honest responses | -| **OPERATOR** | Active ring participant | Operational jargon, insider access content, complicity | -| **SKEPTIC** | Questions status quo | Uncomfortable questions, institutional criticism | - -**Composition examples:** -- FRIEND + OPERATOR (Kael): "I was your friend AND your co-conspirator" -- FRIEND + WITNESS (Sera): "I was your friend AND I was hiding evidence" -- MIRROR + CIVILIAN (Naia): "The one person not lying, surrounded by liars" -- ANCHOR + OPERATOR (Lera): "Profitable blindness — is this enough? Yes, if I don't look" -- SYSTEM + OPERATOR (Voss): "The system works — for the wrong people" -- WITNESS + SKEPTIC (Maret): "I see the discrepancies. I can't pretend I don't" -- SYSTEM + TURNCOAT (Drin): "The institution made me vulnerable, and the ring exploited it" - -**Authoring guidance:** When writing any NPC, start from the pattern+motivation tension. Every line should be legible as coming from that specific combination. An ANCHOR+OPERATOR speaks differently from an ANCHOR+CIVILIAN — the first maintains normalcy as active concealment, the second maintains normalcy because that's genuinely all they have. - ---- - -## 4b. The 5 Key Axis Interactions - -The 10 axes (D-024) don't exist in isolation. These 5 axis interactions generate the contradictions that drive gameplay. When authoring an NPC, identify which interactions are active — they determine what content to write. - -| Interaction | What It Creates | Example | -|-------------|----------------|---------| -| **Want x Secret** | The contradiction between what they pursue and what they hide | Kael wants safety but his exit attempt is the biggest security risk. Sera wants connection but her concealment isolates her. | -| **Routine x Secret** | Observable deviations from normal behavior | Sera leaves the bar every time Torek arrives — the avoidance IS the tell. Kael lingers in restricted corridors during off-hours. | -| **Tolerance x Relationships** | When pressure on one relationship breaks another | Voss's compliance with Nils corrodes his authority over Kael. Naia's worry about Kael triggers Sera's unauthorized compliance check. | -| **Want x Relationships** | When personal desires conflict with social bonds | Kael's desire to protect Naia requires lying to the smuggler — the friend he sees every day. | -| **Personality x Tolerance** | How stress changes observable behavior | Kael goes quiet and checks exits. Sera redirects and overcompensates with helpfulness. Voss gets procedural and avoids the break room. | - -**For each Tier 1 NPC, all 5 interactions must be active and authored.** For Tier 2, at least 2 interactions should be authored. Tier 3 NPCs need at minimum the Want x Routine interaction (what they want shapes their observable daily life). - ---- - -## 4c. Triangle Content Requirements - -Triangles (3 NPCs with conflicting interests) are the atomic unit of social intrigue (D-024, D-025). Every Tier 1 and Tier 2 NPC belongs to at least one triangle. - -### v0.1 Triangles - -| # | Name | Members | Type | Core Tension | -|---|------|---------|------|-------------| -| T1 | **Hub Power** | Voss - Kael - Nils (off-stage) | Active fork | Voss has the title, Nils has the power, Kael is caught between | -| T2 | **Worried Knowledge** | Maret - Drin - Voss | Active fork | Maret sees discrepancies, Drin is compromised, Voss needs silence | -| T3 | **Bar Tensions** | Lera - Torek - Harek | Passive tension | Torek's spending draws attention, Lera protective, Harek watching | -| T4 | **Worried Partner** | Naia - Kael - Sera | Active fork | Naia worries about Kael, confides in Sera, Sera discovers evidence | -| T5 | **Informant Question** | Naia - Devra - Drin | Passive tension | Cross-template — potential unraveling vectors | - -### What Authors Must Provide per Triangle - -1. **Observable signals:** What the player can see that indicates triangle pressure (behavioral changes, spatial avoidance, tonal shifts in dialogue) -2. **Smuggler relevance:** How the smuggler reads this triangle — what they know, what they worry about -3. **Detective relevance:** How the detective reads this triangle — what they observe, what it suggests -4. **Pressure points:** What player actions could escalate or de-escalate the tension -5. **Dialogue shift lines:** At least 2-3 lines per triangle member that change when the triangle is under pressure vs. at rest - -### Triangle Rules - -- **Self-contained in v0.1 (D-053).** No cross-triangle cascade. Pressure in T1 does not automatically affect T3. Cross-triangle cascade is a v0.2 storyteller feature. -- **Observable, not narrated.** Triangle tension must be visible through NPC behavior (tells, routine deviations, tonal shifts), not explained through dialogue exposition. -- **Dual-lens mandatory.** Every triangle must read differently through smuggler and detective perspectives. - ---- - -## 4d. Access Tier Shift Paths - -Access tiers change during gameplay based on player actions and story progression. Content authors must provide dialogue for both the starting state and the shifted state. - -| Social Site | Character | Starting Tier | Likely Shift | Trigger | -|-------------|-----------|---------------|-------------|---------| -| Logistics Hub | Smuggler | insider + peer | insider > hostile | Cover blown — seen with detective, or ring member reports suspicion | -| Logistics Hub | Detective | authority | authority > peer | Earns trust by keeping a minor infraction quiet | -| Bar | Smuggler | insider (regular) | insider > hostile | Social contamination from hub events | -| Bar | Detective | public | public > insider | Repeated visits (3-4), earns regular status | -| Ring spaces | Smuggler | insider + peer | peer > hostile | Suspected of cooperation with detective | -| Ring spaces | Detective | public (doesn't know ring exists) | public > hostile | Stumbles into ring awareness — NPCs react defensively | - -**Authoring implication:** For every access tier in the table above, content packs must include dialogue that works at that tier. When a shift happens (e.g., smuggler goes from insider to hostile at the hub), the *absence* of insider-tier lines IS the emotional payload — the player notices that Kael no longer shares operational details, that the warmth is gone. This means `public` and `hostile` tier lines must be authored with enough depth to carry the post-shift experience. - ---- - -## 5. Dialogue Authoring Rules - -### The Tag Taxonomy (D-035) - -Every dialogue line requires 6 structural tags + up to 3 selection tags. - -#### Structural Tags (Required) - -| Tag | Type | Format | Description | -|-----|------|--------|-------------| -| `id` | string | `{npc-slug}_d_{###}` | Stable line ID. Machine-parseable. Never reused. NPC-scoped per D-035 Sprint 15 amendment. | -| `text` | string | The line | The authored dialogue text | -| `role` | enum | lowercase-slug | Template role, not NPC name. NPCs fill roles at runtime. | -| `access` | list | `[public, insider, ...]` | D-028 Layer 1 hard filter. Who can hear this. | -| `trust` | enum | `surface\|real\|secret` | D-028 Layer 3 hard filter. What trust level unlocks this. | -| `situation` | list | `[arrival, routine, ...]` | D-028 Layer 2 context filter. When this line can fire. | - -#### Selection Tags (Recommended) - -| Tag | Type | Format | Description | -|-----|------|--------|-------------| -| `topic` | list | `[colleague, cargo, ...]` | D-028 Layer 4 weighted selection. Defaults to `[routine]`. | -| `mood` | list | `[content, anxious, ...]` | D-028 Layer 4 weighted selection. Defaults to untagged (neutral). | -| `tags` | list | freeform strings | Escape hatch for author intent. | - -#### Authoring-Only Tags (Not Consumed by Engine) - -| Tag | Type | Description | -|-----|------|-------------| -| `dual_lens` | map | Per-character interpretation notes | -| `notes` | string | Design notes for reviewers | -| `knowledge_grant` | object | What the player learns from hearing this line | - -### The Four-Layer Pipeline - -Content authors must understand how the engine selects lines. A line must pass ALL layers to fire. - -``` -Layer 1: ACCESS (hard filter) - Does the player's current access tier match the line's access list? - If no -> line is invisible. The player never knows it exists. - -Layer 2: SITUATION (context filter) - Is the current situation in the line's situation list? - If no -> line is ineligible for this encounter. - -Layer 3: TRUST (hard filter) - Has the player reached the required trust level with this NPC? - If no -> line is invisible. - -Layer 4: MOOD + TOPIC (weighted selection) - From the eligible pool, weight by mood and topic match. - Higher match = more likely to be selected. -``` - -**Authoring implication:** A line tagged `access: [insider], trust: secret, situation: [confrontation]` will ONLY fire when: -1. The player has insider access (smuggler at the hub, not detective) -2. The player has earned secret-level trust (deep relationship) -3. The situation is a confrontation (triangle pressure escalated) - -If any layer fails, the line is invisible. Tag conservatively. - -### Access Tier Rules - -| Tier | Who Gets It | Authoring Guidance | -|------|-------------|-------------------| -| `public` | Everyone | Safe topics. Greetings. Shift small talk. What you'd say to a stranger. | -| `insider` | Group members | Ring operational talk. Close colleague warmth. What you'd say to someone who belongs. | -| `authority` | Institutional figures | Formal responses to power. Careful language. What you'd say to a cop. | -| `peer` | Earned personal trust | Real conversation. Honest opinions. What you'd say to someone you actually like. | -| `hostile` | Broken relationship | Accusations. Threats. Defensive walls. What you'd say to someone you no longer trust. | - -**Critical rules:** -- `access` is a **list**. A line can be eligible for multiple tiers: `[public, peer]`. -- The smuggler starts with `insider` + `peer` at the hub. The detective starts with `authority`. -- When Kael transitions from Friendly to PersonOfInterest, `insider` and `peer` lines **lock out**. That absence IS the emotional payload. -- Never tag a line `access: [insider, authority]` unless you mean "ring members AND institutional figures hear the same line." That's almost never correct. - -### Trust Tier Rules - -| Tier | What It Gates | Authoring Guidance | -|------|--------------|-------------------| -| `surface` | Default | Safe, non-committal. The public face. Most dialogue is here. | -| `real` | Earned through repeated positive interaction | Genuine opinions, workplace complaints, personal concerns. The real person. | -| `secret` | Highest tier | Information they'd normally hide. Ring involvement, fears, leverage. For MIRROR NPCs: deepest emotional vulnerability, NOT plot secrets. | - -### Situation Assignment - -Tag lines with situations they're appropriate for. The engine decides which situations are currently active. - -**Common mistakes:** -- Tagging everything `[routine]`. If the line is specific to a time or context, tag it specifically. -- Omitting `observation` from lines that make sense when the player is watching from a distance. -- Using `confrontation` for any tense moment. `confrontation` means triangle pressure has escalated past threshold. Most tension is `investigation` or `social`. - ---- - -## 6. Monologue Authoring Rules - -### Hard Partition (D-032) - -Internal monologue is **completely separate** per playable character. The `character` tag is a hard partition, not a filter. The smuggler and detective have independent monologue pools. **No shared lines.** - -Same trigger, different pool. That's how mirror moments work. - -### Monologue-Specific Tags - -| Tag | Type | Description | -|-----|------|-------------| -| `id` | string | `{npc-slug}_m_{s\|d}_{###}` — `s` for smuggler, `d` for detective. NPC-scoped per D-035 Sprint 15 amendment. | -| `text` | string | The monologue line (160 char max) | -| `character` | enum | `smuggler` or `detective` | -| `trigger` | enum | What causes this line to fire (see trigger types below) | -| `prerequisites` | object | AND-only knowledge gates (facts, entity attributes, relationship state) | -| `priority` | int 0-10 | Selection weight. Default 5. Higher = more likely to fire. | -| `cooldown` | int | Minimum ticks before line can fire again | -| `tags` | list | Freeform tags | - -### Trigger Types - -| Trigger | When It Fires | Authoring Guidance | -|---------|--------------|-------------------| -| `enter_location` | Player enters new area | First impressions, atmosphere, spatial awareness | -| `observe_npc` | Player sees an NPC doing something notable | Body language, activity, posture, tell | -| `hear_sound` | Sound event from fog edge | Interpretation of what the player can't see | -| `observe_anomaly` | NPC deviates from known routine | Requires prerequisite knowledge of normal pattern | -| `post_conversation` | After dialogue ends | Reflection on what was said, what wasn't, what felt off | -| `discover_evidence` | Player examines informational object | Interpretation of found evidence | -| `witness_interaction` | Player sees two NPCs interacting | Social observation, body language reading | -| `time_idle` | Player hasn't acted for a while | Ambient thoughts, rumination, noticing background | -| `return_visit` | Player returns to visited area | Changed perspective, comparison to last time | - -### Display Constraints (Hard Ceiling) - -| Constraint | Value | Implication | -|------------|-------|-------------| -| **Max length** | 160 characters | Hard ceiling. Most lines 80-120 characters. | -| **Max visual lines** | 2 | If it wraps to 3, cut it. | -| **Display time** | 4-6 seconds (length-adjusted) | Target: 15-25 words per line. | -| **Self-contained** | Each line stands alone | A line must make sense even if the previous one didn't display. | -| **25-word rule** | If over 25 words, it must be the most important line in the pool | Most lines: 10-18 words. Average target: 14 words. | - -### Prerequisite Authoring - -Monologue lines can gate on knowledge state. Use sparingly — most lines should fire on trigger alone. - -```yaml -prerequisites: - facts: - - fact_id: "contraband.ring_exists" - min_confidence: "knows_of" - entity_attributes: - - entity: "npc:kael-davan" - key: "behavior_flags" - value: "nervous" - relationship: - target: "npc:kael-davan" - state: "friendly" -``` - -**Confidence hierarchy (D-041):** -- `suspects` — heard a rumor, gut feeling -- `knows_of` — has evidence something exists -- `knows_details` — understands specifics -- `direct` — personally witnessed - -**Rule:** Gate on the MINIMUM confidence needed. If a monologue line works at `suspects`, don't gate it at `knows_details`. More gates = fewer fires = less content the player experiences. - ---- - -## 7. Regional Culture: Krenn System / Sova Transit District (D-036) - -All NPC dialogue and monologue must carry the Sova cultural substrate. This is not decoration — it's the baseline voice. - -### Krenn Naming Conventions - -- **First-name-primary.** Compact, consonant-heavy. First names in all social contexts. -- **Surnames exist for records, not conversation.** Using a surname signals formality or institutional distance. -- **Exception:** The detective uses surnames for targets and unknowns. The shift to first-name IS a relationship marker. - -**Canonical Krenn names (v0.1):** Kael, Voss, Lera, Torek, Drin, Maret, Naia, Sera, Nils, Renn, Harek, Pell, Tav, Olin, Resha, Sess, Sabel, Devra - -### Sova Atmosphere - -The voice of Sova Transit District is **"quotidian-with-undertow"** — comfortable enough to be complacent, tight enough that extra income is tempting. - -| Element | Application | -|---------|------------| -| **Sensory palette** | Span gate hum, industrial lubricant, recycled air, cargo machinery, metal grating underfoot | -| **Economic tone** | Working-class pragmatic. Money is tight. Grey-market spending is a lifeline, not a crime spree. | -| **Social fabric** | Regulars, shift crews, bar habits, "the usual." Community defined by routine co-presence. | -| **Institutional relationship** | The Commission is distant, resented, tolerated. Station admin is bureaucracy. Nobody trusts institutions to help. | -| **Trade jargon** | Containers, manifests, shifts, routes, transition windows, temp storage, freight bay. Native vocabulary for dock workers — never explain or annotate. | - -### What Sova Voice Is NOT - -- Not grimdark. People laugh, drink, complain about their shifts, look forward to the bar. -- Not polished sci-fi. No one says "atmospheric recycling unit." They say "recycled air." -- Not exposition. Characters know where they live. They don't describe it to themselves. -- Not uniform. Lera's bartender warmth differs from Voss's terse authority. Culture is substrate, not script. - ---- - -## 8. Dual-Lens Coordination - -### The Core Test (Every Line, Every Time) - -1. Does this line make sense if the **smuggler** experiences it? -2. Does this line make sense if the **detective** experiences it? -3. Does this line reveal **something different** to each character? -4. Is the **access tier correct** for both characters? -5. Does this line advance at least one character's **emotional arc**? - -If 1 or 2 fails, the line is broken. If 3 fails, the line isn't dual-lens — it's generic. - -### Three Types of Dual-Lens Difference - -**Type 1: Access Difference.** The smuggler hears a line the detective doesn't (or vice versa). Enforced by `access` tag. - -**Type 2: Interpretation Difference.** Both characters hear the same dialogue, but their monologue reactions interpret it differently. Enforced by separate monologue pools. - -**Type 3: Emotional Weight Difference.** Relationship history creates different emotional stakes for the same observation. - -### The `dual_lens` Field - -On dialogue lines and NPC profiles, use the authoring-only `dual_lens` field to document the split: - -```yaml -dual_lens: - smuggler: "Operational context -- part of ring pipeline. 'Backed up' is cover." - detective: "Anomaly -- overnight exceeds procedure. Flag for investigation." -``` - -This field is never consumed by the engine. It exists for reviewers and future authors. - ---- - -## 9. Voice Register Quick Reference - -Full voice specifications live in: -- **Voice patterns (complete):** `docs/design/voice-patterns.md` (#310) — sentence-level execution rules, contraction patterns, punctuation, stress markers, verbal tics -- **Smuggler voice card:** `docs/design/smuggler-voice-card.md` — full smuggler voice reference + moral arc - -This section provides the quick-reference contrast. For authoring-level detail (contraction rules, sentence starters, stress markers), consult the voice patterns document directly. - -### Smuggler Voice - -| Parameter | Value | -|-----------|-------| -| **Sentence length** | Short. Fragments. Rarely more than 2 sentences. | -| **Vocabulary** | Concrete, physical, sensory. Trade jargon without explaining. No institutional language. | -| **Emotional register** | Feeling-first, analysis second. Gut before brain. | -| **Relationship mode** | First-name basis. People by connection, not role. | -| **Observation priority** | People > environment > objects | -| **Self-reference** | Rare. Through physical sensation, not emotional labels. | - -**Smuggler anchor lines:** -1. *"Kael's already at the dock. Good. The day's better when he's on shift."* (warm) -2. *"Shift transition in thirty minutes. If Voss kept the schedule thin, the route's clear."* (operational) -3. *"Kael keeps checking his lattice. Waiting for a message? Not like him to be jumpy."* (concerned) -4. *"He looked left. He always looks left when he's making something up. Two years I've known that tell."* (hurt) -5. *"Morning shift. Recycled air and cargo lubricant. Home sweet home."* (atmospheric) - -### Detective Voice - -| Parameter | Value | -|-----------|-------| -| **Sentence length** | Complete sentences. Structured. Occasional fragments for emphasis. | -| **Vocabulary** | Institutional layer over plain speech. "Noted," "flagged," "filing it." | -| **Emotional register** | Analysis-first, personal second. When personal breaks through, it's notable. | -| **Relationship mode** | Surname-first for targets. First-name for allies. The shift IS a marker. | -| **Observation priority** | Patterns > people > environment | -| **Self-reference** | More common than smuggler. Through professional lens. | - -**Detective anchor lines:** -1. *"Logistics hub. Standard prefab, heavy foot traffic. Let's see what the shift change tells me."* (clinical) -2. *"That's the third time. Sera leaves when Torek arrives. Three different excuses, same result."* (pattern) -3. *"Good to see Sera. She always was the reliable one. At least someone speaks my language."* (personal leak) -4. *"Same booth. Same warm smile. Same offer to buy me a drink. ...Everything except whatever she's not saying."* (conflicted) -5. *"Grain spirit and low conversation. Only place that doesn't smell like freight lubricant."* (atmospheric) - ---- - -## 10. FRIEND Relationship Phase Mapping - -THE FRIEND arc is the emotional centerpiece of v0.1. Both FRIEND NPCs follow a multi-phase relationship progression with distinct mechanical expressions at each phase. - -### Kael Davan (Smuggler's FRIEND) - -**Arc:** comfort -> crack -> observation -> confrontation -> contaminated trust - -| Phase | Timing | RelationshipState | Access Available | Monologue Register | Tell State | Content Types | -|-------|--------|------------------|-----------------|-------------------|------------|---------------| -| **1: Comfort** | 0-10 min | Friendly (green) | insider, peer | Fond, casual | None (baseline) | Greeting, shift talk, bar casual, ring coordination | -| **2: First Crack** | 10-15 min | Friendly (green) | insider, peer | Mild concern | Lattice checking, shortened interactions | Distracted dialogue, early worry monologue | -| **3: The Observation** | 15-20 min | PersonOfInterest (amber) | **insider/peer lock out** | Alarm + confusion | Spatial: wrong place, wrong time | Contradiction discovery monologue (3-5 lines) | -| **4: Confrontation** | 20-25 min | PersonOfInterest (amber) | public, hostile | Betrayal crystallizing | Looks-left tell confirmed | Deflection dialogue, evasion, the tell | -| **5: Contaminated Trust** | 25-30 min | PersonOfInterest (amber) | public | Conflicted | Every warm interaction suspicious | Surface-normal dialogue, doubt monologue | - -**Mechanical triggers for phase transitions:** -- Phase 1->2: Time-based. Behavioral flags begin accumulating after ~10 minutes. -- Phase 2->3: Spatial trigger. Smuggler enters Corridor B-7, directly observes unauthorized meeting. -- Phase 3->4: Player-initiated. Smuggler chooses to ask Kael about the observation. -- Phase 4->5: Automatic. Post-confrontation, trust is structurally damaged regardless of dialogue choice. - -**Key authoring constraint:** At Phase 3, `insider` and `peer` dialogue **locks out**. Kael still talks to the smuggler, but only `public` + `surface` lines remain. That absence IS the emotional payload. Authors must provide enough `public/surface` lines for Phases 3-5 to feel populated but noticeably colder than Phases 1-2. - -### Sera Venn (Detective's FRIEND) - -**Arc:** trust -> background data -> pattern recognition -> the question -> contaminated trust - -| Phase | Timing | RelationshipState | Access Available | Monologue Register | Tell State | Content Types | -|-------|--------|------------------|-----------------|-------------------|------------|---------------| -| **1: Trust** | 0-10 min | Friendly (green) | peer | Professional + warmth | None (baseline) | Bar greeting, district orientation, institutional background | -| **2: Background Data** | 10-15 min | Friendly (green) | peer | Noting connections | Social: relationships outside institutional channels | Naia introduction, community context | -| **3: The Pattern** | 15-20 min | PersonOfInterest (amber) | peer, **authority unlocks** | Suspicion activating | Avoidance: leaves when Torek arrives (3x) | Pattern recognition monologue, avoidance observation | -| **4: The Question** | 20-25 min | PersonOfInterest (amber) | peer, authority | Professional + personal conflict | Controlled deflection, quick warmth recovery | Confrontation dialogue, evasion | -| **5: Contaminated Trust** | 25-30 min | PersonOfInterest (amber) | peer, authority | Analytical doubt | Overcompensation helpfulness | Surface-helpful dialogue, evaluating monologue | - -**Mechanical triggers for phase transitions:** -- Phase 1->2: Time-based + social triggers. Sera introduces detective to bar regulars. -- Phase 2->3: Observation accumulation. Third departure when Torek arrives triggers pattern recognition. -- Phase 3->4: Player-initiated. Detective chooses to ask about Torek. -- Phase 4->5: Automatic. Post-question, trust is contaminated regardless of Sera's response. - -**Key authoring contrast with Kael:** Sera's `peer` access does NOT lock out at Phase 3. Instead, `authority` access **opens**. The detective gains institutional leverage while personal warmth remains but is contaminated. The content shift is additive (more dialogue available) rather than subtractive (Kael's loss of insider content). - ---- - -## 11. Tag Taxonomy Complete Reference - -### Access Tiers (5 values) - -`public`, `insider`, `authority`, `peer`, `hostile` - -See `content/global/enums/access-tiers.yaml` for full descriptions. - -### Trust Tiers (3 values) - -`surface`, `real`, `secret` - -See `content/global/enums/trust-tiers.yaml`. - -### Situations (13 values) - -`arrival`, `shift_start`, `shift_end`, `shift_transition`, `bar_evening`, `night_shift`, `investigation`, `confrontation`, `social`, `alone`, `emergency`, `routine`, `observation` - -See `content/global/enums/situations.yaml`. - -### Topics (9 values) - -`colleague`, `routine`, `cargo`, `money`, `trust`, `danger`, `institution`, `personal`, `investigation` - -See `content/global/enums/topics.yaml`. Note: `crime` is deliberately excluded. NPCs think of smuggling as `cargo` or `money`, not crime. - -### Moods (8 values) - -`anxious`, `frustrated`, `content`, `suspicious`, `warm`, `hostile`, `relieved`, `focused` - -See `content/global/enums/moods.yaml`. (Updated Sprint 14 amendment to D-035.) - -### Monologue Triggers (9 values) - -`enter_location`, `observe_npc`, `hear_sound`, `observe_anomaly`, `post_conversation`, `discover_evidence`, `witness_interaction`, `time_idle`, `return_visit` - -See `content/global/enums/triggers.yaml`. - -### NPC Patterns (9 values) - -`FRIEND`, `MIRROR`, `ANCHOR`, `GHOST`, `CATALYST`, `THRESHOLD`, `REMNANT`, `SYSTEM`, `NOBODY` - -See `content/global/enums/patterns.yaml`. - -### Functional Motivations (6 values) - -`HANDLER`, `WITNESS`, `TURNCOAT`, `CIVILIAN`, `OPERATOR`, `SKEPTIC` - -See `content/global/enums/motivations.yaml`. - ---- - -## 12. Mechanical Validation Checklist - -Before submitting any content, run through these checks. Items marked **HARD** will be enforced by schema validation. Items marked **SOFT** require reviewer judgment. - -### Dialogue Lines - -- [ ] **HARD:** `id` matches pattern `{npc-slug}_d_{###}` (e.g. `kael-davan_d_001`) — NPC-scoped per D-035 Sprint 15 amendment -- [ ] **HARD:** `role` is a valid lowercase slug matching a template role -- [ ] **HARD:** `access` is a non-empty list of valid access tier enums -- [ ] **HARD:** `trust` is one of `surface`, `real`, `secret` -- [ ] **HARD:** `situation` is a non-empty list of valid situation enums -- [ ] **SOFT:** `topic` and `mood` are populated (defaults apply if empty, but explicit is better) -- [ ] **SOFT:** Line passes dual-lens test (both characters, or correctly tier-gated) -- [ ] **SOFT:** `access` list makes sense (no `[insider, authority]` unless intentional) -- [ ] **SOFT:** `trust` tier matches content sensitivity (don't put ring talk at `surface`) -- [ ] **SOFT:** Line advances character, relationship, or narrative (no filler) - -### Monologue Lines - -- [ ] **HARD:** `id` matches pattern `{npc-slug}_m_{s|d}_{###}` (e.g. `pc-smuggler_m_s_001`) — NPC-scoped per D-035 Sprint 15 amendment -- [ ] **HARD:** `text` is 160 characters or fewer -- [ ] **HARD:** `trigger` is a valid trigger enum -- [ ] **HARD:** Character partition: smuggler lines in smuggler files, detective in detective files -- [ ] **SOFT:** Under 25 words (or the most important line in the pool if over) -- [ ] **SOFT:** Self-contained (makes sense without context from previous line) -- [ ] **SOFT:** Voice register matches character (smuggler fragments, detective sentences) -- [ ] **SOFT:** Prerequisites gate on MINIMUM confidence needed (don't over-gate) -- [ ] **SOFT:** Trigger matches content (don't use `enter_location` for NPC observations) - -### NPC Profiles - -- [ ] **HARD:** `canonical_id` matches `npc:{slug}` pattern -- [ ] **HARD:** `tier` is 1, 2, or 3 -- [ ] **HARD:** `pattern` is a valid pattern enum -- [ ] **HARD:** `motivation` is a valid motivation enum -- [ ] **HARD:** FRIEND pattern requires `friend_arc` field -- [ ] **SOFT:** All 10 axes populated for Tier 1 and 2 (optional fields for Tier 3) -- [ ] **SOFT:** `tells` array empty for MIRROR pattern -- [ ] **SOFT:** `dual_lens` notes present for Tier 1 and 2 -- [ ] **SOFT:** `trust_levels` descriptions provided for all populated tiers -- [ ] **SOFT:** `information.knows` uses valid `category.topic` fact IDs - -### Content Packs (Per NPC) - -- [ ] **SOFT:** Line count within tier budget -- [ ] **SOFT:** Access tier distribution covers the NPC's expected encounters -- [ ] **SOFT:** Trust progression has content at each populated tier -- [ ] **SOFT:** Situation coverage: not everything tagged `routine` -- [ ] **SOFT:** Dual-lens notes on profile and every 5th line minimum (Tier 1) -- [ ] **SOFT:** FRIEND content covers all phases with distinct voice/mood shifts -- [ ] **SOFT:** Monologue for BOTH characters exists (Tier 1 minimum) - ---- - -## 13. File Structure and Schema Reference - -### Directory Hierarchy - -Dialogue is organized by **location + role**, not by NPC. This is deliberate — roles belong to templates, NPCs fill roles at runtime (D-025, D-028). Monologue is organized by **character + location** per the hard partition rule (D-032). - -``` -content/campaigns/main/systems/krenn/stations/sova/districts/transit/ - district.yaml # District metadata - pools.yaml # Seed-time pool definitions - npcs/ - kael-davan.yaml # NPC profile (npc-profile.schema.json) - sera-venn.yaml - voss.yaml - ... - locations/ - the-terminal.yaml # Location definition (location.schema.json) - the-last-shift.yaml - maintenance-corridors.yaml - dialogue/ - the-terminal/ # Dialogue pools by location + role - dock-worker.yaml # (dialogue-pool.schema.json) - shift-supervisor.yaml - scheduler.yaml - new-hire.yaml - courier.yaml - the-last-shift/ - bar-owner.yaml - bar-regular.yaml - bartender.yaml - maintenance-corridors/ - ring-operative.yaml - monologue/ - smuggler/ # Hard character partition (D-032) - general.yaml # Location-independent lines - the-terminal.yaml # Location-specific lines - the-last-shift.yaml - maintenance-corridors.yaml - detective/ - general.yaml - the-terminal.yaml - the-last-shift.yaml - maintenance-corridors.yaml - triangles/ - hub-power.yaml # Triangle definition (triangle.schema.json) - worried-knowledge.yaml - bar-tensions.yaml - worried-partner.yaml - informant-question.yaml - routines/ - schedules.yaml # NPC daily schedules (routine.schema.json) - templates/ - logistics-hub.yaml # Social site template (D-025) - bar.yaml - smuggling-ring.yaml - ticker/ - the-last-shift.yaml # News ticker content -``` - -**Key convention:** Dialogue pools belong to `dialogue/{location}/{role}.yaml`, never `dialogue/{npc-name}.yaml`. The NPC assigned to a role is determined at runtime. FRIEND NPCs (Kael, Sera) are the exception — their content is NPC-specific because the FRIEND pattern is inherently character-bound, but the files still follow the location+role structure to maintain consistency. - -### Schema Validation - -All YAML content files must validate against their JSON Schema: - -| Content Type | Schema File | -|-------------|-------------| -| NPC profiles | `content/_schema/npc-profile.schema.json` | -| Dialogue pools | `content/_schema/dialogue-pool.schema.json` | -| Monologue pools | `content/_schema/monologue-pool.schema.json` | -| Triangles | `content/_schema/triangle.schema.json` | -| Routines | `content/_schema/routine.schema.json` | - -### Line ID Convention - -| Content Type | Pattern | Example | -|-------------|---------|---------| -| Dialogue | `{npc-slug}_d_{###}` | `kael-davan_d_001` | -| Monologue (smuggler) | `{npc-slug}_m_s_{###}` | `pc-smuggler_m_s_001` | -| Monologue (detective) | `{npc-slug}_m_d_{###}` | `pc-detective_m_d_001` | - -IDs are stable identifiers. Once assigned, never reused or reassigned. Number gaps are acceptable. - -### Naming Conventions - -- File names: `lowercase-hyphenated.yaml` -- Role slugs: `lowercase-hyphenated` (e.g., `dock-worker`, `bar-owner`) -- NPC slugs: `lowercase-hyphenated` (e.g., `kael-davan`, `sera-venn`) -- Location slugs: `lowercase-hyphenated` (e.g., `sova-transit`) -- Fact IDs: `category.topic` (e.g., `contraband.ring_exists`, `relationship.kael_naia_connection`) - ---- - -## 14. Anti-Patterns - -### Dialogue Anti-Patterns - -**Expository NPC.** The NPC explains the world to the player. -- Bad: *"The Commission regulates all trade through Sova Transit. Manifests must be filed within 8 hours."* -- Fix: *"Manifests are late again. Maret's going to catch heat."* (Character knows the rules. Show the consequence, not the rule.) - -**Universal access.** A line tagged `[public]` contains insider information. -- Bad: `access: [public]`, text: *"Container 4471 is flagged for rerouting during transition."* -- Fix: Tag `access: [insider]` or rewrite for public consumption. - -**Trust mismatch.** A `surface`-trust line reveals deep personal information. -- Bad: `trust: surface`, text: *"I'm trying to get out of the ring. Don't tell Nils."* -- Fix: That's `trust: secret` content. Gate it correctly. - -**Crime vocabulary.** NPCs use the word "crime" or "smuggling" in casual conversation. -- Bad: *"The smuggling operation runs during shift transitions."* -- Fix: *"The cargo moves during transitions. When oversight's thin."* NPCs think in their own terms. - -### Monologue Anti-Patterns - -**Wrong voice register.** Smuggler uses detective vocabulary or vice versa. -- Bad (smuggler): *"I should investigate this anomaly further."* -- Fix: *"That's not right. I need to see what's going on."* -- Bad (detective): *"Kael's here. Good."* -- Fix: *"Davan's on shift. Standard."* - -**Explaining the already-known.** Character tells themselves something they already know. -- Bad (smuggler): *"According to the manifest, container 4471 should weigh 240 kilograms."* -- Fix: *"4471's heavy. Too heavy."* - -**Over-gating.** Prerequisite blocks a line that would work without the gate. -- Bad: prerequisite requires `knows_details` when the line only needs `suspects` -- Fix: Gate on minimum confidence. More fires = more content = better experience. - -**Breaking the partition.** A smuggler monologue line that sounds like the detective, or shared content between pools. -- Rule: If you can swap `character: smuggler` to `character: detective` and the line still works, it's not character-specific enough. Rewrite. - -### Profile Anti-Patterns - -**MIRROR with tells.** A MIRROR NPC profile lists deception tells. -- Rule: MIRROR tells array must be empty. Behavioral markers (visible stress, coping mechanisms) are NOT tells. - -**FRIEND without phases.** A FRIEND NPC profile omits the `friend_arc.phases` field. -- Rule: FRIEND pattern requires 3-5 phases with distinct triggers and routine deviations. - -**Tier 3 overwriting.** A Tier 3 filler NPC with 40 dialogue lines. -- Rule: Tier 3 budget is 5-10 lines. One memorable trait. Write it, stop. Content budget is finite. - ---- - -## 15. Generation Expansion Rules - -Tier 2 and Tier 3 dialogue is expanded 4x from authored base lines (D-028: "write 10, generate 40"). The authored lines are the style anchors — generation must reproduce, not reinvent. - -### What Generation Can Do - -- **Vary phrasing** of the same semantic content ("Shift's running smooth" -> "Smooth shift so far" -> "Nothing out of the ordinary today") -- **Vary topic/mood tags** within the same access and trust tier -- **Combine** elements from two base lines into a single generated line -- **Add** environmental color within the Sova sensory palette (span gate hum, recycled air, cargo sounds) - -### What Generation Cannot Do - -- **Introduce new information.** Generated lines never reveal facts, names, or relationships not present in the base lines. -- **Change access or trust tier.** A generated line inherits the access and trust constraints of its base line(s). -- **Break voice register.** Generated lines must match the NPC's personality voice exactly — sentence length, contraction patterns, vocabulary level. -- **Cross the character partition.** Generated monologue lines stay in the correct character pool. -- **Add knowledge grants.** Only hand-authored lines can grant knowledge to the player. -- **Create FRIEND content.** All FRIEND NPC content is hand-authored. No generation expansion. - -### Generation Validation - -Every generated line must pass: -1. **Voice test:** Read aloud. Does it sound like the same NPC who said the base lines? -2. **Dual-lens test:** Does it read differently through each character's perspective? (If the base line passes this test, the generated line must also.) -3. **Tag inheritance:** Are access, trust, situation, topic, and mood tags consistent with the base line? -4. **No new information:** Does the line reveal anything the base lines don't already establish? -5. **Display constraint:** Under 160 characters for monologue. Self-contained. - ---- - -## 16. Worked Example: Writing a Dialogue Line - -**Context:** Writing a line for Kael Davan at the Logistics Hub during a routine morning shift. - -### Step 1: Write the Line - -*"Morning. Voss kept the rotation thin -- we've got a clear window after 14:00."* - -### Step 2: Assign Tags - -```yaml -- id: kael-davan_d_076 - text: "Morning. Voss kept the rotation thin -- we've got a clear window after 14:00." - role: dock-worker - access: [insider] - trust: real - situation: [shift_start] - topic: [cargo, routine] - mood: [content] - tags: [ring-operational] -``` - -### Step 3: Validate - -- `id`: `kael-davan_d_076` -- valid pattern (NPC-scoped per D-035 Sprint 15 amendment). Continues from kael-davan's terminal sequence (_034-_075). -- `role`: `dock-worker` -- valid slug. -- `access: [insider]` -- only ring members hear this. Detective never sees it. Correct. -- `trust: real` -- requires earned trust. Not surface-level small talk. Correct for operational ring dialogue. -- `situation: [shift_start]` -- morning shift context. Correct. -- `topic: [cargo, routine]` -- covers both operational and schedule content. Correct. -- `mood: [content]` -- Phase 1, baseline warm. Correct. - -### Step 4: Dual-Lens Check - -```yaml -dual_lens: - smuggler: "Operational confirmation. The window is clear. Routine ring coordination." - detective: "Never hears this line. Insider access only." -``` - -### Step 5: Voice Check - -- Uses first name (Voss). Correct for smuggler context. -- Short, operational. Fragment + sentence. Matches smuggler's colleague register. -- Trade jargon without explanation ("rotation thin," "clear window"). Correct for Krenn substrate. -- No institutional vocabulary. No analysis. Correct. - -Line passes all checks. - ---- - -## Appendix A: Decision Cross-Reference - -| Decision | Title | Relevance to This Guide | -|----------|-------|------------------------| -| D-023 | Three-tier content model | Tier structure, content budgets | -| D-024 | 10-axis NPC model | Profile structure, tell system, triangle model | -| D-025 | Social site as template unit | NPC-to-location relationship, functional clusters | -| D-027 | Vertical slice criteria | Success criteria that FRIEND content must satisfy | -| D-028 | Dialogue architecture | Four-layer pipeline, tagged line pools, generation expansion | -| D-029 | Population entanglement 30/50/20 | Tier distribution, noise floor | -| D-032 | Separate monologue pools | Hard character partition | -| D-034 | THE FRIEND pattern | Production-level NPC specification | -| D-035 | Converged tag taxonomy | All tag definitions, pipeline layers | -| D-036 | Sova Transit District setting | Regional culture, naming, atmosphere | -| D-037 | Contraband specification | What NPCs are smuggling and why | -| D-039 | v0.1 wow moments | Content that must exist for wow moments to fire | -| D-041 | Knowledge graph data model | Prerequisite confidence hierarchy | -| D-047 | v0.1 triangles | 3 active forks, 2 passive tensions | -| D-050 | NPC pattern/motivation mapping | Canonical v0.1 NPC assignments (System A + B) | -| D-053 | Self-contained triangle forks | No cross-triangle cascade in v0.1 | -| D-056 | PC voice registers | Smuggler feeling-first, detective analysis-first | -| D-059 | Monologue display constraints | 160 char max, 2-line max, priority ordering | - -## Appendix B: Content Budget Summary (v0.1) - -**Validated scope (v0.1 Content Scoping Workshop):** ~695 authored content items. - -| Content Type | Authored | Generation-Expanded | Total | -|-------------|---------|-------------------|-------| -| Tier 1 FRIEND dialogue (x2) | 150-200 | 0 | 150-200 | -| Tier 1 MIRROR dialogue (x1) | 50-70 | 0 | 50-70 | -| Tier 2 NPC dialogue (x10) | 200-350 | 800-1400 | 1000-1750 | -| Tier 3 NPC dialogue (x4) | 20-40 | 80-160 | 100-200 | -| Monologue (smuggler pool) | ~100 | 0 | ~100 | -| Monologue (detective pool) | ~100 | 0 | ~100 | -| Environmental text | ~50 | 0 | ~50 | -| News ticker | ~20 | 0 | ~20 | -| UI microcopy | ~50 | 0 | ~50 | -| PC-as-NPC content (x2) | ~25 | 0 | ~25 | -| **Total authored** | **~695-1005** | | | -| **Total with generation** | | | **~1545-2565** | - -FRIEND content (hand-authored, no expansion) represents ~20-30% of all authored lines. This is where voice consistency matters most. Monologue is hand-authored only — the character voice is too precise for generation expansion in v0.1. - ---- - -**End NPC Authoring Style Guide v0.1** diff --git a/content/_schema/campaign.schema.json b/content/_schema/campaign.schema.json deleted file mode 100644 index 37d54c93c..000000000 --- a/content/_schema/campaign.schema.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "campaign.schema.json", - "title": "Campaign Metadata", - "description": "Campaign definition file — one per campaign directory (D-003).", - "type": "object", - "required": ["display_name", "description"], - "additionalProperties": false, - "properties": { - "display_name": { - "type": "string", - "minLength": 1 - }, - "description": { - "type": "string" - }, - "version": { - "type": "string", - "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$" - } - } -} diff --git a/content/_schema/checklist.schema.json b/content/_schema/checklist.schema.json deleted file mode 100644 index ca8ae582a..000000000 --- a/content/_schema/checklist.schema.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "checklist.schema.json", - "title": "Gauntlet QA Checklist", - "description": "Per-room QA checklist with conditions evaluable from ObserverSnapshot (D-030). Feeds into #503 auto-checklist progress tracking.", - "type": "object", - "required": ["conditions"], - "additionalProperties": false, - "properties": { - "room_id": { - "type": "string", - "pattern": "^[a-z][a-z0-9_]*$", - "description": "Room identifier matching constants.rs room name" - }, - "room_name": { - "type": "string", - "minLength": 1, - "description": "Human-readable room name" - }, - "scope": { - "type": "string", - "enum": ["per_room", "cross_room"], - "description": "Checklist scope: per_room (default) or cross_room" - }, - "description": { - "type": "string" - }, - "conditions": { - "type": "array", - "items": { - "oneOf": [ - { "$ref": "#/$defs/player_near" }, - { "$ref": "#/$defs/player_facing" }, - { "$ref": "#/$defs/entity_present" }, - { "$ref": "#/$defs/entity_absent" }, - { "$ref": "#/$defs/expected_monologue" }, - { "$ref": "#/$defs/expected_dialogue" }, - { "$ref": "#/$defs/expected_interaction_verb" } - ] - }, - "minItems": 1 - } - }, - "$defs": { - "condition_id": { - "type": "string", - "pattern": "^[a-z][a-z0-9_-]*$", - "description": "Globally unique condition identifier across all checklists. Use room_id prefix (e.g., inv-item-present, occ-wall-visible)." - }, - "player_near": { - "type": "object", - "additionalProperties": false, - "required": ["id", "description", "condition_type", "x", "y", "radius"], - "properties": { - "id": { "$ref": "#/$defs/condition_id" }, - "description": { "type": "string" }, - "condition_type": { "const": "player_near" }, - "x": { "type": "integer", "description": "Target X coordinate (absolute sim tiles)" }, - "y": { "type": "integer", "description": "Target Y coordinate (absolute sim tiles)" }, - "radius": { "type": "number", "minimum": 0, "description": "Proximity radius in tiles" } - } - }, - "player_facing": { - "type": "object", - "additionalProperties": false, - "required": ["id", "description", "condition_type", "direction"], - "properties": { - "id": { "$ref": "#/$defs/condition_id" }, - "description": { "type": "string" }, - "condition_type": { "const": "player_facing" }, - "direction": { - "type": "string", - "enum": ["North", "South", "East", "West"], - "description": "Expected player facing direction" - } - } - }, - "entity_present": { - "type": "object", - "additionalProperties": false, - "required": ["id", "description", "condition_type", "entity_id"], - "properties": { - "id": { "$ref": "#/$defs/condition_id" }, - "description": { "type": "string" }, - "condition_type": { "const": "entity_present" }, - "entity_id": { "type": "integer", "minimum": 0, "description": "StableId of expected entity" } - } - }, - "entity_absent": { - "type": "object", - "additionalProperties": false, - "required": ["id", "description", "condition_type", "entity_id"], - "properties": { - "id": { "$ref": "#/$defs/condition_id" }, - "description": { "type": "string" }, - "condition_type": { "const": "entity_absent" }, - "entity_id": { "type": "integer", "minimum": 0, "description": "StableId of entity that should NOT be visible" } - } - }, - "expected_monologue": { - "type": "object", - "additionalProperties": false, - "required": ["id", "description", "condition_type", "contains"], - "properties": { - "id": { "$ref": "#/$defs/condition_id" }, - "description": { "type": "string" }, - "condition_type": { "const": "expected_monologue" }, - "contains": { "type": "string", "minLength": 1, "description": "Substring expected in current_monologue text" } - } - }, - "expected_dialogue": { - "type": "object", - "additionalProperties": false, - "required": ["id", "description", "condition_type", "contains"], - "properties": { - "id": { "$ref": "#/$defs/condition_id" }, - "description": { "type": "string" }, - "condition_type": { "const": "expected_dialogue" }, - "contains": { "type": "string", "minLength": 1, "description": "Substring expected in dialogue_response text" } - } - }, - "expected_interaction_verb": { - "type": "object", - "additionalProperties": false, - "required": ["id", "description", "condition_type", "entity_id", "verb"], - "properties": { - "id": { "$ref": "#/$defs/condition_id" }, - "description": { "type": "string" }, - "condition_type": { "const": "expected_interaction_verb" }, - "entity_id": { "type": "integer", "minimum": 0, "description": "StableId of target entity" }, - "verb": { "type": "string", "minLength": 1, "description": "Expected interaction verb (e.g., Talk, Pickup, Examine)" } - } - } - } -} diff --git a/content/_schema/dialogue-line.schema.json b/content/_schema/dialogue-line.schema.json deleted file mode 100644 index 1f51d26e5..000000000 --- a/content/_schema/dialogue-line.schema.json +++ /dev/null @@ -1,288 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "dialogue-line.schema.json", - "title": "Dialogue Line — canonical D-035 tag taxonomy", - "description": "Canonical single-line schema for dialogue and monologue pools. Implements the converged tag taxonomy from D-035 (6 structural + 3 selection + 2 authoring-only tags). Monologue-specific additions (character, trigger, prerequisite) are defined in $defs/monologue_extension. Mood vocabulary renamed Sprint 14 to match voice guide (anxious/frustrated/content/suspicious/warm/hostile/relieved/focused).", - "type": "object", - "required": ["id", "text", "role", "access", "trust", "situation"], - "additionalProperties": false, - "properties": { - "id": { - "type": "string", - "pattern": "^[a-z][a-z0-9-]*_(d|m)_[0-9]{3}$", - "description": "Stable machine-parseable line ID: {npc-slug}_{d|m}_{###} (e.g. kael-davan_d_001, pc-detective_m_d_001). d = dialogue, m = monologue. NPC-scoped per D-035 Sprint 15 amendment — each NPC has an independent sequence starting at _001." - }, - "text": { - "type": "string", - "minLength": 1, - "description": "The authored line text." - }, - "role": { - "type": "string", - "pattern": "^[a-z][a-z0-9-]*$", - "description": "Template-defined role slug (e.g. dock-worker, bar-owner, player_character). Not NPC name — NPC assignment is runtime." - }, - "access": { - "type": "array", - "items": { - "type": "string", - "enum": ["public", "insider", "authority", "peer", "hostile"] - }, - "minItems": 1, - "uniqueItems": true, - "description": "D-028 Layer 1: access tiers this line is eligible for. List — a line can be eligible for multiple tiers. Hard filter." - }, - "trust": { - "type": "string", - "enum": ["surface", "real", "secret"], - "description": "D-028 Layer 3: minimum trust tier required. Hard filter. Ordering: surface < real < secret." - }, - "situation": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "arrival", - "shift_start", - "shift_end", - "shift_transition", - "bar_evening", - "night_shift", - "investigation", - "confrontation", - "social", - "alone", - "emergency", - "routine", - "observation", - "greeting" - ] - }, - "minItems": 1, - "uniqueItems": true, - "description": "D-028 Layer 2: situations in which this line can fire. 14 v0.1 values (13 original + greeting added Sprint 8 for PC dialogue initial contact lines). NOTE: 'greeting' is not yet in server/src/content/line_pool.rs — lines using it will be skipped until Rust is updated." - }, - "topic": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "colleague", - "routine", - "cargo", - "money", - "trust", - "danger", - "institution", - "personal", - "investigation" - ] - }, - "uniqueItems": true, - "description": "D-028 Layer 4: topic tags for weighted selection. 9 v0.1 values. Optional — defaults to empty if omitted. Note: 'crime' deliberately excluded; NPCs think of it as 'cargo' or 'money'." - }, - "mood": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "anxious", - "frustrated", - "content", - "suspicious", - "warm", - "hostile", - "relieved", - "focused" - ] - }, - "uniqueItems": true, - "description": "D-028 Layer 4: mood tags for weighted selection. 8 v0.1 values. Neutral mood = omit tag (untagged lines are always eligible). Renamed Sprint 14 to match voice guide vocabulary." - }, - "tags": { - "type": "array", - "items": { "type": "string" }, - "description": "Freeform escape hatch for author intent not covered by the structured taxonomy. Not consumed by the engine selection pipeline." - }, - "knowledge_grant": { - "type": "object", - "description": "Knowledge the player gains from hearing this line. Feeds into the knowledge graph (D-041).", - "required": ["fact_id", "confidence"], - "additionalProperties": false, - "properties": { - "fact_id": { - "type": "string", - "description": "FactId from the knowledge vocabulary (#368)." - }, - "confidence": { - "type": "string", - "enum": ["suspects", "knows_of", "knows_details", "direct"], - "description": "D-041 confidence tier granted." - } - } - }, - "dual_lens": { - "type": "object", - "description": "Authoring-only: per-character notes for content with different resonance for smuggler vs detective. NOT consumed by the engine.", - "additionalProperties": false, - "properties": { - "smuggler": { "type": "string" }, - "detective": { "type": "string" } - } - }, - "notes": { - "type": "string", - "description": "Authoring-only: freeform author notes, context, or intent documentation. NOT consumed by the engine." - } - }, - "$defs": { - "monologue_extension": { - "title": "Monologue-specific additions (D-035)", - "description": "Additional required fields for monologue lines. Applied ON TOP OF the base dialogue line schema. Pool-level character partitioning (D-032) is enforced at the pool root, not per-line.", - "type": "object", - "required": ["trigger"], - "properties": { - "character": { - "type": "string", - "enum": ["smuggler", "detective"], - "description": "D-032: hard partition tag. Which playable character this line belongs to. Must match the parent pool's character field." - }, - "trigger": { - "type": "string", - "enum": [ - "enter_location", - "observe_npc", - "hear_sound", - "observe_anomaly", - "post_conversation", - "discover_evidence", - "witness_interaction", - "time_idle", - "return_visit" - ], - "description": "What causes this monologue line to fire. 9 v0.1 trigger types." - }, - "prerequisite": { - "description": "Knowledge state gate. null = unconditional (fires whenever triggered). Conditions are AND-evaluated. Uses FactIds from the knowledge vocabulary (#368, D-041).", - "oneOf": [ - { "type": "null" }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "facts": { - "type": "array", - "items": { "$ref": "#/$defs/fact_prerequisite" } - }, - "entity_attributes": { - "type": "array", - "items": { "$ref": "#/$defs/attribute_prerequisite" } - }, - "relationship": { - "type": "object", - "required": ["target", "state"], - "additionalProperties": false, - "properties": { - "target": { "type": "string" }, - "state": { - "type": "string", - "enum": ["unknown", "known", "friendly", "person_of_interest", "hostile"] - } - } - } - } - } - ] - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 10, - "default": 5, - "description": "Selection priority. Higher = more likely to fire when multiple lines are eligible. Default: 5." - }, - "cooldown": { - "type": "integer", - "minimum": 0, - "default": 0, - "description": "Minimum simulation ticks before this line can fire again. Default: 0 (no cooldown)." - } - } - }, - "fact_prerequisite": { - "type": "object", - "required": ["fact_id", "min_confidence"], - "additionalProperties": false, - "properties": { - "fact_id": { - "type": "string", - "description": "FactId from the knowledge vocabulary (#368, D-041)." - }, - "min_confidence": { - "type": "string", - "enum": ["suspects", "knows_of", "knows_details", "direct"], - "description": "Minimum D-041 confidence level required for this fact." - } - } - }, - "attribute_prerequisite": { - "type": "object", - "required": ["entity", "key", "value"], - "additionalProperties": false, - "properties": { - "entity": { "type": "string" }, - "key": { "type": "string" }, - "value": { "type": "string" } - } - }, - "situation_enum": { - "type": "string", - "enum": [ - "arrival", - "shift_start", - "shift_end", - "shift_transition", - "bar_evening", - "night_shift", - "investigation", - "confrontation", - "social", - "alone", - "emergency", - "routine", - "observation", - "greeting" - ], - "description": "14 v0.1 situation values (D-035 + Sprint 8 amendment)." - }, - "topic_enum": { - "type": "string", - "enum": [ - "colleague", - "routine", - "cargo", - "money", - "trust", - "danger", - "institution", - "personal", - "investigation" - ], - "description": "9 v0.1 topic values (D-035)." - }, - "mood_enum": { - "type": "string", - "enum": [ - "anxious", - "frustrated", - "content", - "suspicious", - "warm", - "hostile", - "relieved", - "focused" - ], - "description": "8 v0.1 mood values. Renamed Sprint 14 to match voice guide vocabulary. Neutral = untagged." - } - } -} diff --git a/content/_schema/dialogue-pool.schema.json b/content/_schema/dialogue-pool.schema.json deleted file mode 100644 index 781ac81de..000000000 --- a/content/_schema/dialogue-pool.schema.json +++ /dev/null @@ -1,134 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "dialogue-pool.schema.json", - "title": "Dialogue Line Pool", - "description": "Tagged dialogue lines scoped by location + role (D-028, D-035).", - "type": "object", - "required": ["location", "role", "lines"], - "additionalProperties": false, - "properties": { - "location": { - "type": "string", - "pattern": "^[a-z][a-z0-9-]*$", - "description": "Location slug this dialogue pool belongs to" - }, - "role": { - "type": "string", - "pattern": "^[a-z][a-z0-9-]*$", - "description": "Template role slug (e.g. dock-worker, bar-owner)" - }, - "lines": { - "type": "array", - "items": { "$ref": "#/$defs/dialogue_line" }, - "minItems": 1 - } - }, - "$defs": { - "dialogue_line": { - "type": "object", - "required": ["id", "text", "role", "access", "trust", "situation"], - "additionalProperties": false, - "properties": { - "id": { - "type": "string", - "pattern": "^[a-z][a-z0-9-]*_d_[0-9]{3}$", - "description": "Stable line ID: {npc-slug}_d_{###} (e.g. kael-davan_d_001). NPC-scoped per D-035 Sprint 15 amendment — each NPC has an independent sequence starting at _001." - }, - "text": { - "type": "string", - "minLength": 1 - }, - "role": { - "type": "string", - "pattern": "^[a-z][a-z0-9-]*$", - "description": "Template role this line belongs to" - }, - "access": { - "type": "array", - "items": { - "type": "string", - "enum": ["public", "insider", "authority", "peer", "hostile"] - }, - "minItems": 1, - "uniqueItems": true, - "description": "Access tiers this line is available at (multi-tier eligibility)" - }, - "trust": { - "type": "string", - "enum": ["surface", "real", "secret"], - "description": "Minimum trust level required" - }, - "situation": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "arrival", "shift_start", "shift_end", "shift_transition", - "bar_evening", "night_shift", "investigation", "confrontation", - "social", "alone", "emergency", "routine", "observation", - "greeting" - ] - }, - "minItems": 1, - "uniqueItems": true, - "description": "Situation contexts when this line can fire (D-035: list). greeting added Sprint 8 for PC dialogue pools" - }, - "topic": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "colleague", "routine", "cargo", "money", "trust", - "danger", "institution", "personal", "investigation" - ] - }, - "uniqueItems": true, - "description": "Topic tags for selection weighting (D-035: list)" - }, - "mood": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "anxious", "frustrated", "content", "suspicious", - "warm", "hostile", "relieved", "focused" - ] - }, - "uniqueItems": true, - "description": "Mood tags for selection weighting (D-035: list). 8 v0.1 values, renamed Sprint 14 to match voice guide vocabulary. Neutral = untagged." - }, - "tags": { - "type": "array", - "items": { "type": "string" }, - "description": "Freeform tags for additional filtering" - }, - "knowledge_grant": { - "type": "object", - "description": "Knowledge the player gains from hearing this line", - "required": ["fact_id", "confidence"], - "additionalProperties": false, - "properties": { - "fact_id": { "type": "string" }, - "confidence": { - "type": "string", - "enum": ["suspects", "knows_of", "knows_details", "direct"] - } - } - }, - "dual_lens": { - "type": "object", - "description": "Authoring-only: per-character resonance notes (NOT consumed by engine)", - "additionalProperties": false, - "properties": { - "smuggler": { "type": "string" }, - "detective": { "type": "string" } - } - }, - "notes": { - "type": "string", - "description": "Authoring-only: freeform author notes (NOT consumed by engine)" - } - } - } - } -} diff --git a/content/_schema/district.schema.json b/content/_schema/district.schema.json deleted file mode 100644 index c5ba67c71..000000000 --- a/content/_schema/district.schema.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "district.schema.json", - "title": "District Metadata", - "description": "District definition file — one per district directory (D-036). Identity derived from directory path.", - "type": "object", - "required": ["display_name", "description", "locations", "npc_count"], - "additionalProperties": false, - "properties": { - "canonical_id": { - "type": "string", - "pattern": "^[a-z]+\\.[a-z]+\\.[a-z-]+$", - "description": "Deprecated — derived from directory path at load time. If present, must match {system}.{station}.{district}." - }, - "display_name": { - "type": "string", - "minLength": 1 - }, - "system": { - "type": "string", - "pattern": "^[a-z]+$", - "description": "Deprecated — derived from directory path." - }, - "station": { - "type": "string", - "pattern": "^[a-z]+$", - "description": "Deprecated — derived from directory path." - }, - "district": { - "type": "string", - "pattern": "^[a-z-]+$", - "description": "Deprecated — derived from directory path." - }, - "description": { - "type": "string", - "minLength": 1 - }, - "locations": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[a-z][a-z0-9-]*$" - }, - "minItems": 1, - "uniqueItems": true - }, - "npc_count": { - "type": "integer", - "minimum": 0 - } - } -} diff --git a/content/_schema/fact-catalog.schema.json b/content/_schema/fact-catalog.schema.json deleted file mode 100644 index e1a6063f0..000000000 --- a/content/_schema/fact-catalog.schema.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "fact-catalog.schema.json", - "title": "Fact Catalog", - "description": "Fact definitions — one file per fact category in global/knowledge/ (D-035).", - "type": "object", - "required": ["category", "facts"], - "additionalProperties": false, - "properties": { - "category": { - "type": "string", - "description": "Fact category matching the filename" - }, - "facts": { - "type": "array", - "items": { "$ref": "#/$defs/fact" }, - "minItems": 1 - } - }, - "$defs": { - "fact": { - "type": "object", - "required": ["fact_id", "description", "discoverable_by"], - "additionalProperties": false, - "properties": { - "fact_id": { - "type": "string", - "pattern": "^[a-z][a-z0-9_-]*$", - "description": "Stable unique fact identifier" - }, - "description": { - "type": "string", - "minLength": 1 - }, - "discoverable_by": { - "type": "array", - "items": { - "type": "string", - "enum": ["smuggler", "detective"] - }, - "minItems": 1, - "uniqueItems": true, - "description": "Which playable characters can discover this fact" - }, - "abstract": { - "type": "boolean", - "default": false, - "description": "If true, fact cannot reach Direct confidence (only inferred)" - }, - "progression": { - "type": "array", - "items": { "$ref": "#/$defs/confidence_level" }, - "description": "Confidence level descriptions in ascending order" - } - } - }, - "confidence_level": { - "type": "object", - "required": ["confidence", "text"], - "additionalProperties": false, - "properties": { - "confidence": { - "type": "string", - "enum": ["suspects", "knows_of", "knows_details", "direct"] - }, - "text": { - "type": "string", - "description": "Player-facing description at this confidence level" - } - } - } - } -} diff --git a/content/_schema/location.schema.json b/content/_schema/location.schema.json deleted file mode 100644 index 77362c9b9..000000000 --- a/content/_schema/location.schema.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "location.schema.json", - "title": "Location Definition", - "description": "Location metadata — one file per location (D-025, D-036).", - "type": "object", - "required": ["canonical_id", "display_name"], - "additionalProperties": false, - "properties": { - "canonical_id": { - "type": "string", - "pattern": "^[a-z]+\\.[a-z]+\\.[a-z-]+\\.location\\.[a-z][a-z0-9-]*$", - "description": "Full canonical ID: {system}.{station}.{district}.location.{slug}" - }, - "display_name": { - "type": "string", - "minLength": 1 - }, - "description": { - "type": "string" - }, - "tile_bounds": { - "type": "object", - "description": "Rectangular tile bounds for this location", - "properties": { - "x_min": { "type": "integer" }, - "y_min": { "type": "integer" }, - "x_max": { "type": "integer" }, - "y_max": { "type": "integer" }, - "z": { "type": "integer" } - }, - "required": ["x_min", "y_min", "x_max", "y_max", "z"] - }, - "sightlines": { - "type": "object", - "description": "Sightline properties for LOS computation", - "properties": { - "open": { - "type": "boolean", - "description": "True if the location is open-plan (no internal walls)" - }, - "notes": { "type": "string" } - } - }, - "ambient_sound": { - "type": "string", - "description": "Reference to ambient sound asset" - }, - "social_site": { - "type": "string", - "description": "Social site template this location belongs to" - } - } -} diff --git a/content/_schema/monologue-pool.schema.json b/content/_schema/monologue-pool.schema.json deleted file mode 100644 index fc02fc45e..000000000 --- a/content/_schema/monologue-pool.schema.json +++ /dev/null @@ -1,234 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "monologue-pool.schema.json", - "title": "Monologue Line Pool", - "description": "Tagged monologue lines, hard-partitioned by character (D-032, D-035). Monologue lines carry all 6 D-035 structural tags for schema compliance, but role/access/trust are fixed constants for player-character internal voice (role=player_character, access=[public], trust=surface). The engine does not gate monologue on access or trust — these tags exist for taxonomy uniformity only.", - "type": "object", - "required": ["character", "location", "lines"], - "additionalProperties": false, - "properties": { - "character": { - "type": "string", - "enum": ["smuggler", "detective"], - "description": "Playable character this pool belongs to (hard partition per D-032). All lines in this pool belong to this character." - }, - "location": { - "type": "string", - "pattern": "^[a-z][a-z0-9-]*$", - "description": "Location slug, or 'general' for location-independent lines." - }, - "lines": { - "type": "array", - "items": { "$ref": "#/$defs/monologue_line" }, - "minItems": 1 - } - }, - "$defs": { - "monologue_line": { - "type": "object", - "required": ["id", "text", "role", "access", "trust", "situation", "trigger"], - "additionalProperties": false, - "properties": { - "id": { - "type": "string", - "pattern": "^[a-z][a-z0-9-]*_m_[sd]_[0-9]{3}$", - "description": "Stable line ID: {npc-slug}_m_{s|d}_{###} (e.g. pc-smuggler_m_s_001, pc-detective_m_d_001). s = smuggler, d = detective. NPC-scoped per D-035 Sprint 15 amendment — each NPC has an independent sequence starting at _001." - }, - "text": { - "type": "string", - "minLength": 1, - "maxLength": 256, - "description": "Line text — 256 char hard cap, aim for ≤160 to avoid line wrap" - }, - "role": { - "type": "string", - "const": "player_character", - "description": "D-035 structural tag — always player_character for monologue. Monologue is the player character's internal voice." - }, - "access": { - "type": "array", - "items": { "const": "public" }, - "minItems": 1, - "maxItems": 1, - "description": "D-035 structural tag — always [public] for monologue. No access gating applies to internal voice." - }, - "trust": { - "type": "string", - "const": "surface", - "description": "D-035 structural tag — always surface for monologue. No trust gating applies to internal voice." - }, - "situation": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "arrival", - "shift_start", - "shift_end", - "shift_transition", - "bar_evening", - "night_shift", - "investigation", - "confrontation", - "social", - "alone", - "emergency", - "routine", - "observation", - "greeting", - "triangle_activated" - ] - }, - "minItems": 1, - "uniqueItems": true, - "description": "D-035 structural tag: situations in which this monologue line is contextually appropriate. 15 v0.1 values (triangle_activated added Sprint 24). The engine selects using trigger; situation provides additional authoring context for filtering by the caller. NOTE: 'greeting' and 'triangle_activated' are not yet in server/src/content/line_pool.rs Situation enum." - }, - "trigger": { - "type": "string", - "enum": [ - "enter_location", - "observe_npc", - "hear_sound", - "observe_anomaly", - "post_conversation", - "discover_evidence", - "witness_interaction", - "time_idle", - "return_visit" - ], - "description": "What causes this line to fire. 9 v0.1 trigger types (D-035 monologue-specific tag)." - }, - "prerequisites": { - "description": "Knowledge state gate (D-035 monologue-specific tag). null or omitted = unconditional. Conditions are AND-evaluated. Uses FactIds from the knowledge vocabulary (#368, D-041).", - "oneOf": [ - { "type": "null" }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "facts": { - "type": "array", - "items": { "$ref": "#/$defs/fact_prerequisite" } - }, - "entity_attributes": { - "type": "array", - "items": { "$ref": "#/$defs/attribute_prerequisite" } - }, - "relationship": { - "type": "object", - "required": ["target", "state"], - "additionalProperties": false, - "properties": { - "target": { "type": "string" }, - "state": { - "type": "string", - "enum": ["unknown", "known", "friendly", "person_of_interest", "hostile"] - } - } - }, - "npc_in_los": { - "type": "boolean", - "description": "Gate: line only fires when the triggering NPC is in the player's line of sight. Added Sprint 24 for triangle_activated observe_npc lines." - } - } - } - ] - }, - "topic": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "colleague", - "routine", - "cargo", - "money", - "trust", - "danger", - "institution", - "personal", - "investigation" - ] - }, - "uniqueItems": true, - "description": "D-035 selection tag: topic tags for weighted selection. 9 v0.1 values. Optional." - }, - "mood": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "anxious", - "frustrated", - "content", - "suspicious", - "warm", - "hostile", - "relieved", - "focused" - ] - }, - "uniqueItems": true, - "description": "D-035 selection tag: mood tags for weighted selection. 8 v0.1 values, renamed Sprint 14 to match voice guide vocabulary. Neutral = untagged." - }, - "priority": { - "type": "integer", - "minimum": 0, - "maximum": 10, - "default": 5, - "description": "Selection priority (higher = more likely to fire when multiple lines are eligible). Default: 5." - }, - "cooldown": { - "type": "integer", - "minimum": 0, - "default": 0, - "description": "Minimum simulation ticks before this line can fire again. Default: 0." - }, - "tags": { - "type": "array", - "items": { "type": "string" }, - "description": "D-035 selection tag: freeform tags. Not consumed by the selection pipeline." - }, - "dual_lens": { - "type": "object", - "description": "Authoring-only: notes on how this line reads differently for smuggler vs detective. NOT consumed by engine.", - "additionalProperties": false, - "properties": { - "smuggler": { "type": "string" }, - "detective": { "type": "string" } - } - }, - "notes": { - "type": "string", - "description": "Authoring-only: freeform author notes. NOT consumed by engine." - } - } - }, - "fact_prerequisite": { - "type": "object", - "required": ["fact_id", "min_confidence"], - "additionalProperties": false, - "properties": { - "fact_id": { - "type": "string", - "description": "FactId from the knowledge vocabulary (#368, D-041)." - }, - "min_confidence": { - "type": "string", - "enum": ["suspects", "knows_of", "knows_details", "direct"], - "description": "Minimum D-041 confidence level required." - } - } - }, - "attribute_prerequisite": { - "type": "object", - "required": ["entity", "key", "value"], - "additionalProperties": false, - "properties": { - "entity": { "type": "string" }, - "key": { "type": "string" }, - "value": { "type": "string" } - } - } - } -} diff --git a/content/_schema/npc-profile.schema.json b/content/_schema/npc-profile.schema.json deleted file mode 100644 index bfa7964b1..000000000 --- a/content/_schema/npc-profile.schema.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "npc-profile.schema.json", - "title": "NPC Profile", - "description": "10-axis NPC model profile — one file per NPC (D-024, D-034).", - "type": "object", - "required": ["canonical_id", "display_name", "tier", "pattern", "motivation"], - "additionalProperties": false, - "properties": { - "canonical_id": { - "type": "string", - "pattern": "^npc:([a-z][a-z0-9-]+\\.)?[a-z][a-z0-9-]*$", - "description": "Canonical ID: npc:{slug} (within district) or npc:{district}.{slug} (cross-district)" - }, - "display_name": { - "type": "string", - "minLength": 1 - }, - "tier": { - "type": "integer", - "enum": [1, 2, 3], - "description": "NPC tier: 1 = conspiracy (full depth), 2 = template (social context), 3 = filler (atmosphere)" - }, - "pattern": { - "type": "string", - "enum": ["FRIEND", "MIRROR", "ANCHOR", "GHOST", "CATALYST", "THRESHOLD", "REMNANT", "SYSTEM", "NOBODY"], - "description": "Thematic pattern — System A (D-050)" - }, - "motivation": { - "type": "string", - "enum": ["HANDLER", "WITNESS", "TURNCOAT", "CIVILIAN", "OPERATOR", "SKEPTIC"], - "description": "Functional motivation — System B (D-050)" - }, - "description": { - "type": "string" - }, - "want": { - "type": "object", - "description": "Primary want/need driving this NPC", - "properties": { - "primary": { "type": "string", "enum": ["Wealth", "Safety", "Knowledge", "Connection", "Power", "Freedom", "Justice", "Revenge", "Happiness"] }, - "intensity": { "type": "integer", "minimum": 0, "maximum": 10 }, - "description": { "type": "string" } - }, - "required": ["primary"] - }, - "secret": { - "type": "string", - "description": "The NPC's hidden truth — what they don't want the player to know" - }, - "relationships": { - "type": "array", - "items": { "$ref": "#/$defs/relationship" }, - "description": "Named relationships to other NPCs" - }, - "tolerance": { - "type": "object", - "description": "Stress tolerance threshold", - "properties": { - "threshold": { "type": "integer" }, - "description": { "type": "string" } - } - }, - "routine": { - "type": "object", - "description": "Summary of daily routine (full schedule in routines/schedules.yaml)", - "properties": { - "summary": { "type": "string" } - } - }, - "information": { - "type": "object", - "description": "What this NPC knows", - "properties": { - "knows": { - "type": "array", - "items": { "type": "string" }, - "description": "Fact IDs this NPC knows" - }, - "access_tier": { - "type": "string", - "enum": ["public", "insider", "authority", "peer", "hostile"] - } - } - }, - "contentment": { - "type": "object", - "properties": { - "level": { "type": "integer", "minimum": -10, "maximum": 10 }, - "description": { "type": "string" } - } - }, - "personality": { - "type": "object", - "description": "Personality traits and behavioral tendencies", - "additionalProperties": { "type": "string" } - }, - "tells": { - "type": "array", - "items": { "$ref": "#/$defs/tell" }, - "description": "Observable behavioral tells (D-024)" - }, - "skills": { - "type": "object", - "description": "Skill set and combat capability", - "properties": { - "combat_trained": { "type": "boolean" }, - "skills": { - "type": "object", - "additionalProperties": { "type": "integer", "minimum": 0, "maximum": 10 } - } - } - }, - "triangle_membership": { - "type": "array", - "items": { "type": "string" }, - "description": "Triangle slugs this NPC participates in" - }, - "trust_levels": { - "type": "object", - "description": "What the NPC reveals at each trust level", - "properties": { - "surface": { "type": "string" }, - "real": { "type": "string" }, - "secret": { "type": "string" } - } - }, - "friend_arc": { - "type": "object", - "description": "FRIEND arc data — only valid on FRIEND-pattern Tier 1 NPCs (D-034)", - "properties": { - "bonded_character": { - "type": "string", - "enum": ["smuggler", "detective"] - }, - "phases": { - "type": "array", - "items": { "$ref": "#/$defs/friend_phase" } - } - }, - "required": ["bonded_character", "phases"] - }, - "dual_lens": { - "type": "object", - "description": "Authoring-only: how smuggler vs detective perceives this NPC", - "properties": { - "smuggler": { "type": "string" }, - "detective": { "type": "string" } - } - }, - "notes": { - "type": "string", - "description": "Authoring-only: design notes" - } - }, - "if": { - "properties": { "pattern": { "const": "FRIEND" } } - }, - "then": { - "required": ["friend_arc"] - }, - "$defs": { - "relationship": { - "type": "object", - "required": ["target", "kind"], - "additionalProperties": false, - "properties": { - "target": { - "type": "string", - "pattern": "^npc:([a-z][a-z0-9-]+\\.)?[a-z][a-z0-9-]*$" - }, - "kind": { - "type": "string", - "enum": ["colleague", "friend", "rival", "romantic", "family", "superior", "subordinate"] - }, - "trust": { - "type": "integer", - "minimum": -10, - "maximum": 10 - }, - "notes": { "type": "string" } - } - }, - "tell": { - "type": "object", - "required": ["trigger", "behavior"], - "additionalProperties": false, - "properties": { - "trigger": { "type": "string" }, - "behavior": { "type": "string" }, - "visible_to": { - "type": "string", - "enum": ["forward", "peripheral", "any"] - } - } - }, - "friend_phase": { - "type": "object", - "required": ["phase", "description"], - "additionalProperties": false, - "properties": { - "phase": { "type": "integer", "minimum": 1, "maximum": 5 }, - "description": { "type": "string" }, - "trigger": { "type": "string" }, - "routine_deviation": { "type": "string" } - } - } - } -} diff --git a/content/_schema/routine.schema.json b/content/_schema/routine.schema.json deleted file mode 100644 index c8e13e8fb..000000000 --- a/content/_schema/routine.schema.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "routine.schema.json", - "title": "NPC Routine Schedules", - "description": "Daily routine schedules — all NPCs in one file per district for cross-NPC validation (D-034).", - "type": "object", - "required": ["district", "schedules"], - "additionalProperties": false, - "properties": { - "district": { - "type": "string", - "pattern": "^[a-z][a-z0-9-]*$", - "description": "District slug this routine file belongs to" - }, - "schedules": { - "type": "array", - "items": { "$ref": "#/$defs/npc_schedule" }, - "minItems": 1 - } - }, - "$defs": { - "npc_schedule": { - "type": "object", - "required": ["npc", "entries"], - "additionalProperties": false, - "properties": { - "npc": { - "type": "string", - "pattern": "^npc:[a-z][a-z0-9-]*$", - "description": "NPC short-form canonical ID" - }, - "entries": { - "type": "array", - "items": { "$ref": "#/$defs/routine_entry" }, - "minItems": 1 - }, - "deviations": { - "type": "array", - "items": { "$ref": "#/$defs/deviation" }, - "description": "Conditional schedule overrides (FRIEND arc staging, etc.)" - } - } - }, - "routine_entry": { - "type": "object", - "required": ["phase", "location"], - "additionalProperties": false, - "properties": { - "phase": { - "type": "string", - "enum": ["morning", "afternoon", "evening", "night"], - "description": "Day phase for this entry" - }, - "location": { - "type": "string", - "pattern": "^[a-z][a-z0-9-]*$", - "description": "Location slug" - }, - "tile": { - "type": "object", - "properties": { - "x": { "type": "integer" }, - "y": { "type": "integer" } - }, - "required": ["x", "y"], - "description": "Specific tile coordinates within the location" - }, - "activity": { - "type": "string", - "description": "What the NPC is doing at this location/time" - } - } - }, - "deviation": { - "type": "object", - "required": ["trigger", "location"], - "additionalProperties": false, - "properties": { - "trigger": { - "type": "string", - "description": "Condition that activates this deviation" - }, - "phase": { - "type": "string", - "enum": ["morning", "afternoon", "evening", "night"] - }, - "location": { - "type": "string", - "pattern": "^[a-z][a-z0-9-]*$" - }, - "tile": { - "type": "object", - "properties": { - "x": { "type": "integer" }, - "y": { "type": "integer" } - }, - "required": ["x", "y"] - }, - "activity": { "type": "string" } - } - } - } -} diff --git a/content/_schema/station.schema.json b/content/_schema/station.schema.json deleted file mode 100644 index 63f91bd2a..000000000 --- a/content/_schema/station.schema.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "station.schema.json", - "title": "Station Metadata", - "description": "Station definition file — one per station directory (D-036).", - "type": "object", - "required": ["display_name"], - "additionalProperties": false, - "properties": { - "display_name": { - "type": "string", - "minLength": 1 - }, - "description": { - "type": "string" - }, - "districts": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[a-z][a-z0-9-]*$" - }, - "uniqueItems": true - } - } -} diff --git a/content/_schema/system.schema.json b/content/_schema/system.schema.json deleted file mode 100644 index 5733ab01e..000000000 --- a/content/_schema/system.schema.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "system.schema.json", - "title": "Star System Metadata", - "description": "System definition file — one per system directory (D-036).", - "type": "object", - "required": ["display_name"], - "additionalProperties": false, - "properties": { - "display_name": { - "type": "string", - "minLength": 1 - }, - "description": { - "type": "string" - }, - "stations": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[a-z][a-z0-9-]*$" - }, - "uniqueItems": true - } - } -} diff --git a/content/_schema/triangle.schema.json b/content/_schema/triangle.schema.json deleted file mode 100644 index 55b594a90..000000000 --- a/content/_schema/triangle.schema.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "triangle.schema.json", - "title": "Triangle Definition", - "description": "3-NPC relationship triangle — self-contained forks, no cross-triangle cascade in v0.1 (D-024, D-047).", - "type": "object", - "required": ["canonical_id", "display_name", "members"], - "additionalProperties": false, - "properties": { - "canonical_id": { - "type": "string", - "pattern": "^[a-z][a-z0-9-]*$", - "description": "Triangle slug" - }, - "display_name": { - "type": "string", - "minLength": 1 - }, - "description": { - "type": "string" - }, - "members": { - "type": "array", - "items": { "$ref": "#/$defs/member" }, - "minItems": 3, - "maxItems": 3, - "description": "Exactly 3 NPC members" - }, - "forks": { - "type": "array", - "items": { "$ref": "#/$defs/fork" }, - "description": "Possible fork points in this triangle" - }, - "resolution_states": { - "type": "array", - "items": { "$ref": "#/$defs/resolution" }, - "description": "Terminal states this triangle can reach" - } - }, - "$defs": { - "member": { - "type": "object", - "required": ["npc", "role"], - "additionalProperties": false, - "properties": { - "npc": { - "type": "string", - "pattern": "^npc:[a-z][a-z0-9-]*$", - "description": "NPC short-form canonical ID" - }, - "role": { - "type": "string", - "description": "This NPC's role within the triangle" - } - } - }, - "fork": { - "type": "object", - "required": ["id", "condition"], - "additionalProperties": false, - "properties": { - "id": { - "type": "string", - "pattern": "^[a-z][a-z0-9_-]*$" - }, - "condition": { - "type": "string", - "description": "What triggers this fork" - }, - "outcomes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { "type": "string" }, - "description": { "type": "string" }, - "effects": { - "type": "array", - "items": { "type": "string" } - } - } - } - } - } - }, - "resolution": { - "type": "object", - "required": ["id", "description"], - "additionalProperties": false, - "properties": { - "id": { - "type": "string", - "pattern": "^[a-z][a-z0-9_-]*$" - }, - "description": { "type": "string" } - } - } - } -} diff --git a/tooling/content-converter/Cargo.lock b/tooling/content-converter/Cargo.lock deleted file mode 100644 index c171c5ad5..000000000 --- a/tooling/content-converter/Cargo.lock +++ /dev/null @@ -1,349 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "anstream" -version = "0.6.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" -dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "is_terminal_polyfill", - "utf8parse", -] - -[[package]] -name = "anstyle" -version = "1.0.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" - -[[package]] -name = "anstyle-parse" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" -dependencies = [ - "utf8parse", -] - -[[package]] -name = "anstyle-query" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" -dependencies = [ - "windows-sys", -] - -[[package]] -name = "anstyle-wincon" -version = "3.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" -dependencies = [ - "anstyle", - "once_cell_polyfill", - "windows-sys", -] - -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - -[[package]] -name = "bitflags" -version = "2.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" -dependencies = [ - "serde_core", -] - -[[package]] -name = "clap" -version = "4.5.58" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63be97961acde393029492ce0be7a1af7e323e6bae9511ebfac33751be5e6806" -dependencies = [ - "clap_builder", - "clap_derive", -] - -[[package]] -name = "clap_builder" -version = "4.5.58" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f13174bda5dfd69d7e947827e5af4b0f2f94a4a3ee92912fba07a66150f21e2" -dependencies = [ - "anstream", - "anstyle", - "clap_lex", - "strsim", -] - -[[package]] -name = "clap_derive" -version = "4.5.55" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "clap_lex" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a822ea5bc7590f9d40f1ba12c0dc3c2760f3482c6984db1573ad11031420831" - -[[package]] -name = "colorchoice" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" - -[[package]] -name = "content-converter" -version = "0.1.0" -dependencies = [ - "clap", - "ron", - "serde", - "serde_yaml", - "thiserror", - "walkdir", -] - -[[package]] -name = "equivalent" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" - -[[package]] -name = "hashbrown" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "indexmap" -version = "2.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" -dependencies = [ - "equivalent", - "hashbrown", -] - -[[package]] -name = "is_terminal_polyfill" -version = "1.70.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" - -[[package]] -name = "itoa" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" - -[[package]] -name = "once_cell_polyfill" -version = "1.70.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" - -[[package]] -name = "proc-macro2" -version = "1.0.106" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "ron" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" -dependencies = [ - "base64", - "bitflags", - "serde", - "serde_derive", -] - -[[package]] -name = "ryu" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "serde" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" -dependencies = [ - "serde_core", - "serde_derive", -] - -[[package]] -name = "serde_core" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_yaml" -version = "0.9.34+deprecated" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" -dependencies = [ - "indexmap", - "itoa", - "ryu", - "serde", - "unsafe-libyaml", -] - -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - -[[package]] -name = "syn" -version = "2.0.115" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e614ed320ac28113fa64972c4262d5dbc89deacdfd00c34a3e4cea073243c12" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "thiserror" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "unicode-ident" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "537dd038a89878be9b64dd4bd1b260315c1bb94f4d784956b81e27a088d9a09e" - -[[package]] -name = "unsafe-libyaml" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" - -[[package]] -name = "utf8parse" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" - -[[package]] -name = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - -[[package]] -name = "winapi-util" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" -dependencies = [ - "windows-sys", -] - -[[package]] -name = "windows-link" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" - -[[package]] -name = "windows-sys" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" -dependencies = [ - "windows-link", -] diff --git a/tooling/content-converter/Cargo.toml b/tooling/content-converter/Cargo.toml deleted file mode 100644 index 49a4104a4..000000000 --- a/tooling/content-converter/Cargo.toml +++ /dev/null @@ -1,17 +0,0 @@ -[package] -name = "content-converter" -version = "0.1.0" -edition = "2021" -description = "Build-time converter: reads content YAML, emits RON for faster runtime deserialization." - -[[bin]] -name = "content-converter" -path = "src/main.rs" - -[dependencies] -serde = { version = "1", features = ["derive"] } -serde_yaml = "0.9" -ron = "0.8" -clap = { version = "4", features = ["derive"] } -walkdir = "2" -thiserror = "2" diff --git a/tooling/content-converter/src/main.rs b/tooling/content-converter/src/main.rs deleted file mode 100644 index a685fd214..000000000 --- a/tooling/content-converter/src/main.rs +++ /dev/null @@ -1,286 +0,0 @@ -//! content-converter: reads content YAML, emits RON. -//! -//! Build-time tool for converting authored YAML content files into RON (Rusty Object Notation) -//! for faster runtime deserialization. Not on v0.1 critical path — engine consumes YAML directly. -//! RON is future-proofing for runtime performance. - -use clap::Parser; -use std::path::{Path, PathBuf}; -use walkdir::WalkDir; - -mod types; - -use types::ContentFile; - -#[derive(Parser)] -#[command(name = "content-converter", about = "Convert content YAML to RON")] -struct Cli { - /// Path to the content directory (default: content/) - #[arg(short, long, default_value = "content")] - input: PathBuf, - - /// Path to write RON output (default: content-ron/) - #[arg(short, long, default_value = "content-ron")] - output: PathBuf, - - /// Only convert files matching this content type - #[arg(short = 't', long)] - content_type: Option, - - /// Print what would be converted without writing files - #[arg(long)] - dry_run: bool, - - /// Print verbose conversion details - #[arg(short, long)] - verbose: bool, -} - -#[derive(Clone, Debug)] -enum ContentTypeFilter { - Npc, - Dialogue, - Monologue, - Triangle, - Location, - Routine, - District, - Faction, -} - -impl std::str::FromStr for ContentTypeFilter { - type Err = String; - fn from_str(s: &str) -> Result { - match s { - "npc" => Ok(Self::Npc), - "dialogue" => Ok(Self::Dialogue), - "monologue" => Ok(Self::Monologue), - "triangle" => Ok(Self::Triangle), - "location" => Ok(Self::Location), - "routine" => Ok(Self::Routine), - "district" => Ok(Self::District), - "faction" => Ok(Self::Faction), - _ => Err(format!( - "Unknown content type: {s}. Valid: npc, dialogue, monologue, triangle, location, routine, district, faction" - )), - } - } -} - -fn main() { - let cli = Cli::parse(); - - if !cli.input.exists() { - eprintln!( - "Error: content directory not found: {}", - cli.input.display() - ); - std::process::exit(1); - } - - let mut converted = 0u32; - let mut skipped = 0u32; - let mut errors = 0u32; - - for entry in WalkDir::new(&cli.input) - .into_iter() - .filter_map(|e| e.ok()) - .filter(|e| { - e.path() - .extension() - .is_some_and(|ext| ext == "yaml" || ext == "yml") - }) - .filter(|e| !is_schema_or_meta(e.path())) - { - let path = entry.path(); - let content_type = classify_file(path); - - if let Some(ref filter) = cli.content_type { - if !matches_filter(&content_type, filter) { - continue; - } - } - - match convert_file( - path, - &cli.input, - &cli.output, - &content_type, - cli.dry_run, - cli.verbose, - ) { - Ok(true) => converted += 1, - Ok(false) => skipped += 1, - Err(e) => { - eprintln!("Error converting {}: {e}", path.display()); - errors += 1; - } - } - } - - println!( - "Content conversion complete: {converted} converted, {skipped} skipped, {errors} errors" - ); - if errors > 0 { - std::process::exit(1); - } -} - -fn is_schema_or_meta(path: &Path) -> bool { - let path_str = path.to_string_lossy(); - path_str.contains("_schema") || path_str.contains("_meta") -} - -#[derive(Debug)] -enum ContentType { - NpcProfile, - DialoguePool, - MonologuePool, - Triangle, - Location, - Routine, - District, - Campaign, - System, - Station, - ContentManifest, - Faction, - Enum, - KnowledgeCatalog, - Unknown, -} - -fn classify_file(path: &Path) -> ContentType { - let path_str = path.to_string_lossy(); - - if path_str.contains("/npcs/") { - ContentType::NpcProfile - } else if path_str.contains("/dialogue/") { - ContentType::DialoguePool - } else if path_str.contains("/monologue/") { - ContentType::MonologuePool - } else if path_str.contains("/triangles/") { - ContentType::Triangle - } else if path_str.contains("/locations/") { - ContentType::Location - } else if path_str.contains("/routines/") { - ContentType::Routine - } else if path_str.contains("/factions/") { - ContentType::Faction - } else if path_str.contains("/enums/") { - ContentType::Enum - } else if path_str.contains("/knowledge/") { - ContentType::KnowledgeCatalog - } else if path_str.ends_with("district.yaml") { - ContentType::District - } else if path_str.ends_with("station.yaml") { - ContentType::Station - } else if path_str.ends_with("system.yaml") { - ContentType::System - } else if path_str.ends_with("campaign.yaml") { - ContentType::Campaign - } else if path_str.ends_with("content.yaml") { - ContentType::ContentManifest - } else { - ContentType::Unknown - } -} - -fn matches_filter(content_type: &ContentType, filter: &ContentTypeFilter) -> bool { - matches!( - (content_type, filter), - (ContentType::NpcProfile, ContentTypeFilter::Npc) - | (ContentType::DialoguePool, ContentTypeFilter::Dialogue) - | (ContentType::MonologuePool, ContentTypeFilter::Monologue) - | (ContentType::Triangle, ContentTypeFilter::Triangle) - | (ContentType::Location, ContentTypeFilter::Location) - | (ContentType::Routine, ContentTypeFilter::Routine) - | (ContentType::District, ContentTypeFilter::District) - | (ContentType::Faction, ContentTypeFilter::Faction) - ) -} - -fn convert_file( - path: &Path, - input_root: &Path, - output_root: &Path, - content_type: &ContentType, - dry_run: bool, - verbose: bool, -) -> Result> { - let yaml_str = std::fs::read_to_string(path)?; - - // Skip stub files (comment-only, no real YAML content) - let trimmed = yaml_str - .lines() - .filter(|l| !l.trim_start().starts_with('#') && !l.trim().is_empty()) - .collect::>() - .join("\n"); - - if trimmed.is_empty() { - if verbose { - println!(" skip (stub): {}", path.display()); - } - return Ok(false); - } - - let content_file = parse_yaml(&trimmed, content_type)?; - - let ron_config = ron::ser::PrettyConfig::default() - .struct_names(true) - .enumerate_arrays(false); - let ron_str = ron::ser::to_string_pretty(&content_file, ron_config)?; - - // Compute output path: replace input root with output root, .yaml -> .ron - let rel_path = path.strip_prefix(input_root)?; - let mut out_path = output_root.join(rel_path); - out_path.set_extension("ron"); - - if dry_run { - println!( - " would convert: {} -> {}", - path.display(), - out_path.display() - ); - return Ok(true); - } - - if verbose { - println!(" convert: {} -> {}", path.display(), out_path.display()); - } - - if let Some(parent) = out_path.parent() { - std::fs::create_dir_all(parent)?; - } - std::fs::write(&out_path, ron_str)?; - - Ok(true) -} - -fn parse_yaml( - yaml_str: &str, - content_type: &ContentType, -) -> Result> { - let file = match content_type { - ContentType::NpcProfile => { - ContentFile::NpcProfile(Box::new(serde_yaml::from_str(yaml_str)?)) - } - ContentType::DialoguePool => ContentFile::DialoguePool(serde_yaml::from_str(yaml_str)?), - ContentType::MonologuePool => ContentFile::MonologuePool(serde_yaml::from_str(yaml_str)?), - ContentType::Triangle => ContentFile::Triangle(serde_yaml::from_str(yaml_str)?), - ContentType::Location => ContentFile::Location(serde_yaml::from_str(yaml_str)?), - ContentType::Routine => ContentFile::Routine(serde_yaml::from_str(yaml_str)?), - ContentType::District => ContentFile::District(serde_yaml::from_str(yaml_str)?), - ContentType::Campaign => ContentFile::Campaign(serde_yaml::from_str(yaml_str)?), - ContentType::System | ContentType::Station => { - ContentFile::Metadata(serde_yaml::from_str(yaml_str)?) - } - ContentType::ContentManifest => ContentFile::Manifest(serde_yaml::from_str(yaml_str)?), - ContentType::Faction => ContentFile::Generic(serde_yaml::from_str(yaml_str)?), - ContentType::Enum | ContentType::KnowledgeCatalog => { - ContentFile::Generic(serde_yaml::from_str(yaml_str)?) - } - ContentType::Unknown => ContentFile::Generic(serde_yaml::from_str(yaml_str)?), - }; - Ok(file) -} diff --git a/tooling/content-converter/src/types.rs b/tooling/content-converter/src/types.rs deleted file mode 100644 index bc3456fa1..000000000 --- a/tooling/content-converter/src/types.rs +++ /dev/null @@ -1,443 +0,0 @@ -//! Content types mirroring the JSON Schema definitions in content/_schema/. -//! -//! These types are used for YAML deserialization and RON serialization. -//! They do NOT need to match the server's ECS component types — this is a -//! build-time conversion tool, not runtime code. - -use serde::{Deserialize, Serialize}; -use std::collections::BTreeMap; - -/// Top-level enum wrapping all content file types for RON output. -#[derive(Debug, Serialize, Deserialize)] -#[serde(untagged)] -pub enum ContentFile { - NpcProfile(Box), - DialoguePool(DialoguePool), - MonologuePool(MonologuePool), - Triangle(Triangle), - Location(Location), - Routine(RoutineFile), - District(District), - Campaign(Campaign), - Manifest(ContentManifest), - Metadata(GenericMetadata), - Generic(serde_yaml::Value), -} - -// --- NPC Profile (npc-profile.schema.json) --- - -#[derive(Debug, Serialize, Deserialize)] -pub struct NpcProfile { - pub canonical_id: String, - pub display_name: String, - pub tier: u8, - pub pattern: String, - pub motivation: String, - #[serde(skip_serializing_if = "Option::is_none")] - pub description: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub want: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub secret: Option, - #[serde(default, skip_serializing_if = "Vec::is_empty")] - pub relationships: Vec, - #[serde(skip_serializing_if = "Option::is_none")] - pub tolerance: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub routine: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub information: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub contentment: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub personality: Option>, - #[serde(default, skip_serializing_if = "Vec::is_empty")] - pub tells: Vec, - #[serde(skip_serializing_if = "Option::is_none")] - pub skills: Option, - #[serde(default, skip_serializing_if = "Vec::is_empty")] - pub triangle_membership: Vec, - #[serde(skip_serializing_if = "Option::is_none")] - pub trust_levels: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub friend_arc: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub dual_lens: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub notes: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct Want { - pub primary: String, - #[serde(skip_serializing_if = "Option::is_none")] - pub intensity: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub description: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct Relationship { - pub target: String, - pub kind: String, - #[serde(skip_serializing_if = "Option::is_none")] - pub trust: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub notes: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct Tolerance { - #[serde(skip_serializing_if = "Option::is_none")] - pub threshold: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub description: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct RoutineSummary { - #[serde(skip_serializing_if = "Option::is_none")] - pub summary: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct Information { - #[serde(default, skip_serializing_if = "Vec::is_empty")] - pub knows: Vec, - #[serde(skip_serializing_if = "Option::is_none")] - pub access_tier: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct Contentment { - #[serde(skip_serializing_if = "Option::is_none")] - pub level: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub description: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct Tell { - pub trigger: String, - pub behavior: String, - #[serde(skip_serializing_if = "Option::is_none")] - pub visible_to: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct Skills { - #[serde(skip_serializing_if = "Option::is_none")] - pub combat_trained: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub skills: Option>, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct TrustLevels { - #[serde(skip_serializing_if = "Option::is_none")] - pub surface: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub real: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub secret: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct FriendArc { - pub bonded_character: String, - pub phases: Vec, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct FriendPhase { - pub phase: u8, - pub description: String, - #[serde(skip_serializing_if = "Option::is_none")] - pub trigger: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub routine_deviation: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct DualLens { - #[serde(skip_serializing_if = "Option::is_none")] - pub smuggler: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub detective: Option, -} - -// --- Dialogue Pool (dialogue-pool.schema.json) --- - -#[derive(Debug, Serialize, Deserialize)] -pub struct DialoguePool { - pub location: String, - pub role: String, - pub lines: Vec, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct DialogueLine { - pub id: String, - pub text: String, - pub role: String, - pub access: Vec, - pub trust: String, - pub situation: Vec, - #[serde(default, skip_serializing_if = "Vec::is_empty")] - pub topic: Vec, - #[serde(default, skip_serializing_if = "Vec::is_empty")] - pub mood: Vec, - #[serde(default, skip_serializing_if = "Vec::is_empty")] - pub tags: Vec, - #[serde(skip_serializing_if = "Option::is_none")] - pub knowledge_grant: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct KnowledgeGrant { - pub fact_id: String, - pub confidence: String, -} - -// --- Monologue Pool (monologue-pool.schema.json) --- - -#[derive(Debug, Serialize, Deserialize)] -pub struct MonologuePool { - pub character: String, - pub location: String, - pub lines: Vec, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct MonologueLine { - pub id: String, - pub text: String, - pub trigger: String, - #[serde(skip_serializing_if = "Option::is_none")] - pub prerequisites: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub priority: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub cooldown: Option, - #[serde(default, skip_serializing_if = "Vec::is_empty")] - pub tags: Vec, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct Prerequisites { - #[serde(default, skip_serializing_if = "Vec::is_empty")] - pub facts: Vec, - #[serde(default, skip_serializing_if = "Vec::is_empty")] - pub entity_attributes: Vec, - #[serde(skip_serializing_if = "Option::is_none")] - pub relationship: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct FactPrerequisite { - pub fact_id: String, - pub min_confidence: String, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct AttributePrerequisite { - pub entity: String, - pub key: String, - pub value: String, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct RelationshipPrerequisite { - #[serde(skip_serializing_if = "Option::is_none")] - pub target: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub state: Option, -} - -// --- Triangle (triangle.schema.json) --- - -#[derive(Debug, Serialize, Deserialize)] -pub struct Triangle { - pub canonical_id: String, - pub display_name: String, - #[serde(skip_serializing_if = "Option::is_none")] - pub description: Option, - pub members: Vec, - #[serde(default, skip_serializing_if = "Vec::is_empty")] - pub forks: Vec, - #[serde(default, skip_serializing_if = "Vec::is_empty")] - pub resolution_states: Vec, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct TriangleMember { - pub npc: String, - pub role: String, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct Fork { - pub id: String, - pub condition: String, - #[serde(default, skip_serializing_if = "Vec::is_empty")] - pub outcomes: Vec, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct ForkOutcome { - #[serde(skip_serializing_if = "Option::is_none")] - pub id: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub description: Option, - #[serde(default, skip_serializing_if = "Vec::is_empty")] - pub effects: Vec, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct Resolution { - pub id: String, - pub description: String, -} - -// --- Location (location.schema.json) --- - -#[derive(Debug, Serialize, Deserialize)] -pub struct Location { - pub canonical_id: String, - pub display_name: String, - #[serde(skip_serializing_if = "Option::is_none")] - pub description: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub tile_bounds: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub sightlines: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub ambient_sound: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub social_site: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct TileBounds { - pub x_min: i32, - pub y_min: i32, - pub x_max: i32, - pub y_max: i32, - pub z: i32, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct Sightlines { - #[serde(skip_serializing_if = "Option::is_none")] - pub open: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub notes: Option, -} - -// --- Routine (routine.schema.json) --- - -#[derive(Debug, Serialize, Deserialize)] -pub struct RoutineFile { - pub district: String, - pub schedules: Vec, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct NpcSchedule { - pub npc: String, - pub entries: Vec, - #[serde(default, skip_serializing_if = "Vec::is_empty")] - pub deviations: Vec, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct RoutineEntry { - pub phase: String, - pub location: String, - #[serde(skip_serializing_if = "Option::is_none")] - pub tile: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub activity: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct Deviation { - pub trigger: String, - #[serde(skip_serializing_if = "Option::is_none")] - pub phase: Option, - pub location: String, - #[serde(skip_serializing_if = "Option::is_none")] - pub tile: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub activity: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct TileCoord { - pub x: i32, - pub y: i32, -} - -// --- District (district.schema.json) --- - -#[derive(Debug, Serialize, Deserialize)] -pub struct District { - pub display_name: String, - pub description: String, - pub locations: Vec, - pub npc_count: u32, - #[serde(skip_serializing_if = "Option::is_none")] - pub canonical_id: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub system: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub station: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub district: Option, -} - -// --- Campaign (campaign.schema.json) --- - -#[derive(Debug, Serialize, Deserialize)] -pub struct Campaign { - pub display_name: String, - #[serde(skip_serializing_if = "Option::is_none")] - pub description: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub version: Option, -} - -// --- Content manifest (content.yaml) --- - -#[derive(Debug, Serialize, Deserialize)] -pub struct ContentManifest { - pub version: String, - pub campaigns: Vec, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct CampaignRef { - pub id: String, - pub path: String, - pub enabled: bool, - #[serde(skip_serializing_if = "Option::is_none")] - pub discovery: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -pub struct Discovery { - #[serde(skip_serializing_if = "Option::is_none")] - pub districts: Option, -} - -// --- Generic metadata (system.yaml, station.yaml) --- - -#[derive(Debug, Serialize, Deserialize)] -pub struct GenericMetadata { - #[serde(skip_serializing_if = "Option::is_none")] - pub display_name: Option, - #[serde(skip_serializing_if = "Option::is_none")] - pub description: Option, - #[serde(flatten)] - pub extra: BTreeMap, -} diff --git a/docs/design/base-text-authoring-guide.md b/wiki/authoring/base-text-authoring-guide.md similarity index 100% rename from docs/design/base-text-authoring-guide.md rename to wiki/authoring/base-text-authoring-guide.md diff --git a/docs/design/cultural-generation-guide.md b/wiki/authoring/cultural-generation-guide.md similarity index 100% rename from docs/design/cultural-generation-guide.md rename to wiki/authoring/cultural-generation-guide.md diff --git a/docs/design/culture-authoring-guide.md b/wiki/authoring/culture-authoring-guide.md similarity index 100% rename from docs/design/culture-authoring-guide.md rename to wiki/authoring/culture-authoring-guide.md diff --git a/docs/design/dual-lens-authoring-guide.md b/wiki/authoring/dual-lens-authoring-guide.md similarity index 100% rename from docs/design/dual-lens-authoring-guide.md rename to wiki/authoring/dual-lens-authoring-guide.md diff --git a/docs/design/line-id-authoring-guide.md b/wiki/authoring/line-id-authoring-guide.md similarity index 100% rename from docs/design/line-id-authoring-guide.md rename to wiki/authoring/line-id-authoring-guide.md diff --git a/docs/design/monologue-voice-guide.md b/wiki/authoring/monologue-voice-guide.md similarity index 99% rename from docs/design/monologue-voice-guide.md rename to wiki/authoring/monologue-voice-guide.md index 80ecfaff6..6987d0870 100644 --- a/docs/design/monologue-voice-guide.md +++ b/wiki/authoring/monologue-voice-guide.md @@ -7,8 +7,8 @@ **Status:** Draft — narrative framing complete; Mellanie to supply example lines per section **Cross-references:** -- [Monologue Content Architecture](monologue-content-architecture.md) — the authoring contract this document extends -- [Voice Patterns](voice-patterns.md) — sentence-level execution (contractions, punctuation, sentence length) +- [Monologue Content Architecture](../../docs/design/monologue-content-architecture.md) — the authoring contract this document extends +- [Voice Patterns](../../docs/design/voice-patterns.md) — sentence-level execution (contractions, punctuation, sentence length) - [Dual Lens Authoring Guide](dual-lens-authoring-guide.md) — Chapter 7 (base voice registers) - D-024: NPC triangle model — PersonalityTraits list (10 axes) - D-035: tag taxonomy — mood enum (8+1 moods) diff --git a/docs/design/npc-patterns/contradiction-arc.md b/wiki/authoring/npc-patterns/contradiction-arc.md similarity index 100% rename from docs/design/npc-patterns/contradiction-arc.md rename to wiki/authoring/npc-patterns/contradiction-arc.md diff --git a/docs/design/npc-patterns/mirror-moment.md b/wiki/authoring/npc-patterns/mirror-moment.md similarity index 100% rename from docs/design/npc-patterns/mirror-moment.md rename to wiki/authoring/npc-patterns/mirror-moment.md diff --git a/docs/design/npc-patterns/the-mirror.md b/wiki/authoring/npc-patterns/the-mirror.md similarity index 100% rename from docs/design/npc-patterns/the-mirror.md rename to wiki/authoring/npc-patterns/the-mirror.md diff --git a/docs/design/tier1-module-authoring.md b/wiki/authoring/tier1-module-authoring.md similarity index 100% rename from docs/design/tier1-module-authoring.md rename to wiki/authoring/tier1-module-authoring.md From d830abf4b6c8b22def44bddd8401ebaad46d743d Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Fri, 13 Mar 2026 15:01:10 +0100 Subject: [PATCH 07/28] chore(meta): update changelog Co-Authored-By: Claude Opus 4.6 --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fcd4dbde..38ae42929 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,8 +11,13 @@ Format based on [Keep a Changelog](https://keepachangelog.com/). - Character exemplar template — Kael Davan Tier 1 profile preserved as generator quality target (D-122) - Docs template system — frontmatter templates for architecture, design, briefing, workshop, and test-plan documents +### Changed +- Authoring guides and NPC pattern docs moved from docs/design/ to wiki/authoring/ — content voice reference belongs with worldbuilding + ### Removed - v0.1 hand-authored character wiki entries — 18 NPC profiles + roster index superseded by generator pipeline (D-122) +- content-converter tool and content-ron Makefile target — v0.1 YAML→RON pipeline superseded by RON-first generator +- content/_schema/ (13 JSON schemas) and content/_meta/ (2 docs) — v0.1 validation replaced by Rust struct deserialization ## [v0.1.26] — 2026-03-13 From 3100190b40c9cbdcf997b2baa1d1c06aceaadf1b Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Fri, 13 Mar 2026 15:22:03 +0100 Subject: [PATCH 08/28] docs(docs): add frontmatter to architecture docs Standardized YAML frontmatter on all 10 docs/architecture/ files with title, description, type, status, ticket, decision_refs, and author fields. Enables context-aware document loading. Co-Authored-By: Claude Opus 4.6 --- docs/architecture/eval-godot-rust-bridge.md | 12 ++++++++++++ docs/architecture/flying-taxi-analysis.md | 12 ++++++++++++ docs/architecture/fog-shader-spec.md | 12 ++++++++++++ docs/architecture/gemma2-compliance.md | 12 ++++++++++++ docs/architecture/interaction-memory-schema.md | 12 ++++++++++++ docs/architecture/line-pool-format.md | 12 ++++++++++++ docs/architecture/proposed-llm-voice.md | 12 ++++++++++++ docs/architecture/risk-godot-rust-bridge.md | 12 ++++++++++++ docs/architecture/seed-configuration-schema.md | 12 ++++++++++++ docs/architecture/z-layer-gap-analysis.md | 12 ++++++++++++ 10 files changed, 120 insertions(+) diff --git a/docs/architecture/eval-godot-rust-bridge.md b/docs/architecture/eval-godot-rust-bridge.md index df58dca31..d2c7a5e37 100644 --- a/docs/architecture/eval-godot-rust-bridge.md +++ b/docs/architecture/eval-godot-rust-bridge.md @@ -1,3 +1,15 @@ +--- +title: "Evaluation: Godot 4 Client + Rust Simulation Server Architecture" +description: "Technical evaluation of Godot 4 + Rust (gdext + bevy_ecs) architecture — gdext maturity, ECS standalone usage, bridge design patterns, serialization, and risk register" +type: architecture +status: active +ticket: "" +decision_refs: [D-010, D-011, D-012, D-017, D-018, D-019] +author: "Tyre" +created: 2026-02-09 +updated: 2026-02-09 +--- + # Evaluation: Godot 4 Client + Rust Simulation Server Architecture **Author:** TYRE (Technical Architect) diff --git a/docs/architecture/flying-taxi-analysis.md b/docs/architecture/flying-taxi-analysis.md index 9c9e7330b..2d689e294 100644 --- a/docs/architecture/flying-taxi-analysis.md +++ b/docs/architecture/flying-taxi-analysis.md @@ -1,3 +1,15 @@ +--- +title: "Flying Taxi Over Cityscape — Architecture Analysis" +description: "Feasibility analysis of flying vehicle gameplay using the three-scope z-layer architecture — confirms support with renderer gaps identified" +type: architecture +status: active +ticket: "" +decision_refs: [D-049] +author: "Tyre" +created: YYYY-MM-DD +updated: YYYY-MM-DD +--- + # Flying Taxi Over Cityscape — Architecture Analysis Author: Tyre (architecture) | Sprint: 6 | Ref: D-049, z-layer-gap-analysis.md diff --git a/docs/architecture/fog-shader-spec.md b/docs/architecture/fog-shader-spec.md index 0f4fec8c2..beca227ce 100644 --- a/docs/architecture/fog-shader-spec.md +++ b/docs/architecture/fog-shader-spec.md @@ -1,3 +1,15 @@ +--- +title: "Fog Shader Architecture — #430 (D-059)" +description: "Shader-driven fog system architecture — FogState autoload, fragment shader spec, texture pipeline (CPU blur + RGBA8), fog entities, and zone temperature tinting" +type: architecture +status: active +ticket: "#430" +decision_refs: [D-059, D-049, D-046, D-077, D-015] +author: "Tyre" +created: YYYY-MM-DD +updated: YYYY-MM-DD +--- + # Fog Shader Architecture — #430 (D-059) Ticket: #430 | Decision: D-059 | Sprint: 6 diff --git a/docs/architecture/gemma2-compliance.md b/docs/architecture/gemma2-compliance.md index 360a54fcd..92e4ba6c9 100644 --- a/docs/architecture/gemma2-compliance.md +++ b/docs/architecture/gemma2-compliance.md @@ -1,3 +1,15 @@ +--- +title: "Gemma 2 Re-voicing: Compliance & Implementation Framework" +description: "Licensing compliance, AI disclosure framework, modding policy, and operational safety architecture for Gemma 2 integration in the re-voicing dialogue system" +type: architecture +status: draft +ticket: "" +decision_refs: [] +author: "Gemini" +created: 2026-03-07 +updated: 2026-03-07 +--- + # Gemma 2 Re-voicing: Compliance & Implementation Framework **Status:** Reference diff --git a/docs/architecture/interaction-memory-schema.md b/docs/architecture/interaction-memory-schema.md index d9b0dd8b0..fed85ab7d 100644 --- a/docs/architecture/interaction-memory-schema.md +++ b/docs/architecture/interaction-memory-schema.md @@ -1,3 +1,15 @@ +--- +title: "InteractionMemory Knowledge Graph Schema Design" +description: "Schema extension for tracking player-NPC conversation history in the knowledge graph — walk-away consequences, confrontation tracking, and monologue prerequisite integration" +type: architecture +status: active +ticket: "#442" +decision_refs: [D-041, D-064, D-063, D-028] +author: "" +created: YYYY-MM-DD +updated: YYYY-MM-DD +--- + # InteractionMemory Knowledge Graph Schema Design **Ticket:** #442 | **Sprint:** 7 | **Priority:** MEDIUM diff --git a/docs/architecture/line-pool-format.md b/docs/architecture/line-pool-format.md index 4065858c0..9636aa507 100644 --- a/docs/architecture/line-pool-format.md +++ b/docs/architecture/line-pool-format.md @@ -1,3 +1,15 @@ +--- +title: "Line Pool Format Specification" +description: "YAML format spec for dialogue and monologue line pools — file structure, tag enums, four-layer filtering pipeline, ID format, validation rules, and Rust loader interface" +type: architecture +status: active +ticket: "#308" +decision_refs: [D-028, D-032, D-035, D-041] +author: "" +created: YYYY-MM-DD +updated: YYYY-MM-DD +--- + # Line Pool Format Specification **Ticket:** #308 | **Sprint:** 7 | **Priority:** HIGH (blocks #326, #305) diff --git a/docs/architecture/proposed-llm-voice.md b/docs/architecture/proposed-llm-voice.md index ad375a313..bb4891a62 100644 --- a/docs/architecture/proposed-llm-voice.md +++ b/docs/architecture/proposed-llm-voice.md @@ -1,3 +1,15 @@ +--- +title: "Proposed Architecture: LLM-Powered Voice Synthesis" +description: "Re-voicing architecture for dynamic NPC dialogue using a local LLM as a stylistic enhancement layer — injector system, priority queue, and optional AI-enhanced toggle" +type: architecture +status: draft +ticket: "" +decision_refs: [] +author: "Gemini" +created: 2026-03-07 +updated: 2026-03-07 +--- + # Proposed Architecture: LLM-Powered Voice Synthesis **Status:** Proposed diff --git a/docs/architecture/risk-godot-rust-bridge.md b/docs/architecture/risk-godot-rust-bridge.md index d9de0ac3a..9526050b1 100644 --- a/docs/architecture/risk-godot-rust-bridge.md +++ b/docs/architecture/risk-godot-rust-bridge.md @@ -1,3 +1,15 @@ +--- +title: "Risk Assessment: Godot 4 + Rust/ECS via GDExtension" +description: "Adversarial risk assessment of the Godot+Rust architecture — gdext instability, thread safety, ECS scaling concerns, alternative approaches, and kill switch criteria" +type: architecture +status: active +ticket: "" +decision_refs: [D-010] +author: "Troblum" +created: 2026-02-09 +updated: 2026-02-09 +--- + # Risk Assessment: Godot 4 + Rust/ECS via GDExtension **Author:** TROBLUM (Technical Consultant / Stress-Tester) diff --git a/docs/architecture/seed-configuration-schema.md b/docs/architecture/seed-configuration-schema.md index 46768595b..9a361f410 100644 --- a/docs/architecture/seed-configuration-schema.md +++ b/docs/architecture/seed-configuration-schema.md @@ -1,3 +1,15 @@ +--- +title: "Seed Configuration Schema — Design Document" +description: "Schema and generation algorithm for deterministic world instantiation from seed value — pool draws, template assignments, triangles, entanglement, contraband, and starting knowledge" +type: architecture +status: draft +ticket: "#394" +decision_refs: [D-010, D-024, D-025, D-027, D-029, D-034, D-035, D-036, D-037, D-041] +author: "Tyre" +created: 2026-02-13 +updated: 2026-02-13 +--- + # Seed Configuration Schema — Design Document **Ticket:** #394 diff --git a/docs/architecture/z-layer-gap-analysis.md b/docs/architecture/z-layer-gap-analysis.md index 8d6613f18..bbb56af25 100644 --- a/docs/architecture/z-layer-gap-analysis.md +++ b/docs/architecture/z-layer-gap-analysis.md @@ -1,3 +1,15 @@ +--- +title: "Z-Layer Rendering Pipeline — Gap Analysis" +description: "Gap analysis for multi-floor z-layer rendering — y-sort occlusion contract, airborne rendering, lower floor compositing, fog interaction, and performance budgets" +type: architecture +status: active +ticket: "" +decision_refs: [D-049] +author: "Tyre" +created: YYYY-MM-DD +updated: YYYY-MM-DD +--- + # Z-Layer Rendering Pipeline — Gap Analysis Author: Tyre (architecture) | Sprint: 6 | Decision: D-049 amendment From 4525e0a4bcc9d8ce80857dee212adaaa049c4f99 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Fri, 13 Mar 2026 15:22:10 +0100 Subject: [PATCH 09/28] docs(briefings): add frontmatter to all agent briefings Standardized YAML frontmatter on all 18 docs/briefings/ files with title, description, type, status, and agent fields. Each description captures the agent's role and current focus areas. Co-Authored-By: Claude Opus 4.6 --- docs/briefings/araminta.md | 9 +++++++++ docs/briefings/dudley.md | 9 +++++++++ docs/briefings/gestalt.md | 9 +++++++++ docs/briefings/gore.md | 9 +++++++++ docs/briefings/hoshe.md | 9 +++++++++ docs/briefings/justine.md | 9 +++++++++ docs/briefings/mellanie.md | 9 +++++++++ docs/briefings/miri.md | 9 +++++++++ docs/briefings/nigel.md | 9 +++++++++ docs/briefings/oscar.md | 9 +++++++++ docs/briefings/ozzie.md | 9 +++++++++ docs/briefings/paula.md | 9 +++++++++ docs/briefings/qatux.md | 9 +++++++++ docs/briefings/si.md | 9 +++++++++ docs/briefings/stig.md | 9 +++++++++ docs/briefings/tiger.md | 9 +++++++++ docs/briefings/troblum.md | 9 +++++++++ docs/briefings/tyre.md | 9 +++++++++ 18 files changed, 162 insertions(+) diff --git a/docs/briefings/araminta.md b/docs/briefings/araminta.md index 442e01642..7736be42d 100644 --- a/docs/briefings/araminta.md +++ b/docs/briefings/araminta.md @@ -1,3 +1,12 @@ +--- +title: "Araminta - Project Briefing" +description: "Visual art director responsible for zone visual grammar, tile palettes, entity color system, and placeholder art pipeline — generator-critical visual deliverables for v0.2" +type: briefing +status: active +agent: Araminta +updated: 2026-03-13 +--- + # Araminta - Project Briefing Last updated: 2026-03-13 diff --git a/docs/briefings/dudley.md b/docs/briefings/dudley.md index 51d81fd2a..c1076913d 100644 --- a/docs/briefings/dudley.md +++ b/docs/briefings/dudley.md @@ -1,3 +1,12 @@ +--- +title: "Dudley - Project Briefing" +description: "Backend/engine implementation agent on standby — covers Rust simulation server, ECS model, and bevy_ecs architecture decisions" +type: briefing +status: active +agent: Dudley +updated: 2026-03-13 +--- + # Dudley - Project Briefing Last updated: 2026-03-13 diff --git a/docs/briefings/gestalt.md b/docs/briefings/gestalt.md index b9f468178..e6200e360 100644 --- a/docs/briefings/gestalt.md +++ b/docs/briefings/gestalt.md @@ -1,3 +1,12 @@ +--- +title: "Gestalt - Project Briefing" +description: "Systems designer owning verb vocabulary, NpcBlueprint spec, skills-outcomes model, consequence mechanics, and behavior primitives for the v0.2 generator pipeline" +type: briefing +status: active +agent: Gestalt +updated: 2026-03-13 +--- + # Gestalt - Project Briefing Last updated: 2026-03-13 diff --git a/docs/briefings/gore.md b/docs/briefings/gore.md index c011df09b..0fb8d514a 100644 --- a/docs/briefings/gore.md +++ b/docs/briefings/gore.md @@ -1,3 +1,12 @@ +--- +title: "Gore - Project Briefing" +description: "Thematic design lead responsible for the 'is this enough?' central question, consequence arc design, contentment axis, and ensuring generated NPC lives carry moral weight" +type: briefing +status: active +agent: Gore +updated: 2026-03-13 +--- + # Gore - Project Briefing Last updated: 2026-03-13 diff --git a/docs/briefings/hoshe.md b/docs/briefings/hoshe.md index 07da8f10c..bbf71e0e6 100644 --- a/docs/briefings/hoshe.md +++ b/docs/briefings/hoshe.md @@ -1,3 +1,12 @@ +--- +title: "Hoshe - Project Briefing" +description: "QA and test infrastructure agent — owns generator output validation, integration tests, content schema validation, and legibility test criteria for the v0.2 generator spike" +type: briefing +status: active +agent: Hoshe +updated: 2026-03-13 +--- + # Hoshe - Project Briefing Last updated: 2026-03-13 diff --git a/docs/briefings/justine.md b/docs/briefings/justine.md index 91fffeb9a..2e6095a8e 100644 --- a/docs/briefings/justine.md +++ b/docs/briefings/justine.md @@ -1,3 +1,12 @@ +--- +title: "Justine - Project Briefing" +description: "CI and build pipeline agent — owns release pipeline, content validation infrastructure, pre-commit hooks, and build tooling for both client and server" +type: briefing +status: active +agent: Justine +updated: 2026-03-13 +--- + # Justine - Project Briefing Last updated: 2026-03-13 diff --git a/docs/briefings/mellanie.md b/docs/briefings/mellanie.md index fe18f9ee4..974eb0f5f 100644 --- a/docs/briefings/mellanie.md +++ b/docs/briefings/mellanie.md @@ -1,3 +1,12 @@ +--- +title: "Mellanie - Project Briefing" +description: "Copy and voice pipeline agent — owns culture-primary voice cards, tycoon monologue, AI content pipeline voice constraints, and authored UI/environmental text" +type: briefing +status: active +agent: Mellanie +updated: 2026-03-13 +--- + # Mellanie - Project Briefing Last updated: 2026-03-13 diff --git a/docs/briefings/miri.md b/docs/briefings/miri.md index ff856b33a..782cb15db 100644 --- a/docs/briefings/miri.md +++ b/docs/briefings/miri.md @@ -1,3 +1,12 @@ +--- +title: "Miri - Project Briefing" +description: "Worldbuilding and lore agent — owns zone identity spec, Krenn culture profile, setting briefs, and wiki taxonomy; critical-path prerequisites for the generator spike" +type: briefing +status: active +agent: Miri +updated: 2026-03-13 +--- + # Miri - Project Briefing Last updated: 2026-03-13 diff --git a/docs/briefings/nigel.md b/docs/briefings/nigel.md index 107edd7fc..8ca27e28a 100644 --- a/docs/briefings/nigel.md +++ b/docs/briefings/nigel.md @@ -1,3 +1,12 @@ +--- +title: "Nigel - Project Briefing" +description: "Replayability designer — owns generator variety spec, anti-metagaming design, seed-based population variance, and replayability test criteria for v0.2" +type: briefing +status: active +agent: Nigel +updated: 2026-03-13 +--- + # Nigel - Project Briefing Last updated: 2026-03-13 diff --git a/docs/briefings/oscar.md b/docs/briefings/oscar.md index 254cd137d..a28954299 100644 --- a/docs/briefings/oscar.md +++ b/docs/briefings/oscar.md @@ -1,3 +1,12 @@ +--- +title: "Oscar - Project Briefing" +description: "Networking/multiplayer agent on standby — covers client-server IPC architecture, deterministic simulation sync, and future multiplayer design" +type: briefing +status: active +agent: Oscar +updated: 2026-03-13 +--- + # Oscar - Project Briefing Last updated: 2026-03-13 diff --git a/docs/briefings/ozzie.md b/docs/briefings/ozzie.md index 36692b83d..142d32ac0 100644 --- a/docs/briefings/ozzie.md +++ b/docs/briefings/ozzie.md @@ -1,3 +1,12 @@ +--- +title: "Ozzie - Project Briefing" +description: "Player experience designer — owns NPC legibility gut-checks, Phase Zero warmth spec, wow moment design, and tycoon Day 1 experience brief" +type: briefing +status: active +agent: Ozzie +updated: 2026-03-13 +--- + # Ozzie - Project Briefing Last updated: 2026-03-13 diff --git a/docs/briefings/paula.md b/docs/briefings/paula.md index 03e7cf33d..2c8aac95d 100644 --- a/docs/briefings/paula.md +++ b/docs/briefings/paula.md @@ -1,3 +1,12 @@ +--- +title: "Paula - Project Briefing" +description: "NPC architecture designer — owns FRIEND pattern generator spec, triangle template shapes, relationship arc design, and population split rationale for generated NPCs" +type: briefing +status: active +agent: Paula +updated: 2026-03-13 +--- + # Paula - Project Briefing Last updated: 2026-03-13 diff --git a/docs/briefings/qatux.md b/docs/briefings/qatux.md index 89f01aec6..2849fd725 100644 --- a/docs/briefings/qatux.md +++ b/docs/briefings/qatux.md @@ -1,3 +1,12 @@ +--- +title: "Qatux - Project Briefing" +description: "Decision archivist and documentation maintainer — owns all D/Q/R-records in decisions/, agent briefings, discussion rounds, diagrams, and Qdrant indexing" +type: briefing +status: active +agent: Qatux +updated: 2026-03-13 +--- + # Qatux - Project Briefing Last updated: 2026-03-13 diff --git a/docs/briefings/si.md b/docs/briefings/si.md index 267d7cac4..607fb824e 100644 --- a/docs/briefings/si.md +++ b/docs/briefings/si.md @@ -1,3 +1,12 @@ +--- +title: "Si - Project Briefing" +description: "Sprint and project manager — owns sprint planning, ticket tracking, v0.2 critical path dependency chain, and CI pipeline awareness for definition of done" +type: briefing +status: active +agent: Si +updated: 2026-03-13 +--- + # Si - Project Briefing Last updated: 2026-03-13 diff --git a/docs/briefings/stig.md b/docs/briefings/stig.md index 23a4e6b41..d20191a30 100644 --- a/docs/briefings/stig.md +++ b/docs/briefings/stig.md @@ -1,3 +1,12 @@ +--- +title: "Stig - Project Briefing" +description: "Client UI developer — owns Godot 4 UI implementation including character customisation screen, insert/HUD, dialogue panels, and fog/entity rendering integration" +type: briefing +status: active +agent: Stig +updated: 2026-03-13 +--- + # Stig - Project Briefing Last updated: 2026-03-13 diff --git a/docs/briefings/tiger.md b/docs/briefings/tiger.md index f4458d85d..cf31a6e48 100644 --- a/docs/briefings/tiger.md +++ b/docs/briefings/tiger.md @@ -1,3 +1,12 @@ +--- +title: "Tiger - Project Briefing" +description: "Localization agent on standby — covers tagged line pool translation scope, culture voice card translation units, and Krenn naming transliteration guides" +type: briefing +status: active +agent: Tiger +updated: 2026-03-13 +--- + # Tiger - Project Briefing Last updated: 2026-03-13 diff --git a/docs/briefings/troblum.md b/docs/briefings/troblum.md index 24ed8c86c..55899842d 100644 --- a/docs/briefings/troblum.md +++ b/docs/briefings/troblum.md @@ -1,3 +1,12 @@ +--- +title: "Troblum - Project Briefing" +description: "Performance and stress-testing agent — owns simulation tier budget validation, bevy_ecs component performance profiling, and generator-at-scale evaluation" +type: briefing +status: active +agent: Troblum +updated: 2026-03-13 +--- + # Troblum - Project Briefing Last updated: 2026-03-13 diff --git a/docs/briefings/tyre.md b/docs/briefings/tyre.md index 6616c0cf1..d9ffbe4f9 100644 --- a/docs/briefings/tyre.md +++ b/docs/briefings/tyre.md @@ -1,3 +1,12 @@ +--- +title: "Tyre - Project Briefing" +description: "Lead architect and technical owner — owns NpcBlueprint struct, generator spike (Sprint 25), simulation tiers, knowledge graph implementation, and the full build pipeline" +type: briefing +status: active +agent: Tyre +updated: 2026-03-13 +--- + # Tyre - Project Briefing Last updated: 2026-03-13 From 934d4df4b00fdd1ea5f4f470aeac752defc4b9ef Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Fri, 13 Mar 2026 15:22:17 +0100 Subject: [PATCH 10/28] docs(docs): add frontmatter to all design docs Standardized YAML frontmatter on all 40 docs/design/ files with title, description, type, status, ticket, decision_refs, and author fields. Covers specs, wireframes, voice cards, spatial layouts, and system designs. Co-Authored-By: Claude Opus 4.6 --- docs/design/access-tier-shifts.md | 12 ++++++++++++ docs/design/character-build-smuggler.md | 12 ++++++++++++ docs/design/character-definition-schema.md | 12 ++++++++++++ docs/design/content-directory-structure.md | 12 ++++++++++++ docs/design/content-structure-canonical.md | 12 ++++++++++++ docs/design/contraband-specification.md | 12 ++++++++++++ docs/design/divergent-relationships.md | 12 ++++++++++++ docs/design/entity-color-system.md | 12 ++++++++++++ docs/design/environmental-text-standards.md | 12 ++++++++++++ docs/design/faction-mechanics-reference.md | 12 ++++++++++++ docs/design/first-5-minutes-experience.md | 12 ++++++++++++ docs/design/flat-npc-trait-pass.md | 12 ++++++++++++ docs/design/insert-hud-wireframe-v01.md | 12 ++++++++++++ docs/design/interaction-verbs-v0.1.md | 12 ++++++++++++ docs/design/knowledge-flags-v01.md | 12 ++++++++++++ docs/design/knowledge-vocabulary-v01.md | 12 ++++++++++++ docs/design/layer2-situation-mapping.md | 12 ++++++++++++ docs/design/meridian-coverage-map-sova-transit.md | 12 ++++++++++++ docs/design/mirror-moment-design.md | 12 ++++++++++++ docs/design/monologue-content-architecture.md | 12 ++++++++++++ docs/design/monologue-display-spec.md | 12 ++++++++++++ docs/design/opening-hook-content.md | 12 ++++++++++++ docs/design/pc-as-npc-spec.md | 12 ++++++++++++ docs/design/placeholder-art-spec-v01.md | 12 ++++++++++++ docs/design/smuggler-moral-arc.md | 12 ++++++++++++ docs/design/smuggler-voice-card.md | 12 ++++++++++++ docs/design/sound-indicator-visual.md | 12 ++++++++++++ docs/design/sova-station-profile.md | 12 ++++++++++++ docs/design/sova-texture-appendix.md | 12 ++++++++++++ docs/design/span-gate-transit-schedule.md | 12 ++++++++++++ docs/design/spatial-layout-bar-v01.md | 12 ++++++++++++ docs/design/spatial-layout-gate-v01.md | 12 ++++++++++++ .../design/spatial-layout-smuggling-corridors-v01.md | 12 ++++++++++++ docs/design/spatial-layout-terminal-v01.md | 12 ++++++++++++ docs/design/tell-visual-expression.md | 12 ++++++++++++ docs/design/text-display-hierarchy.md | 12 ++++++++++++ docs/design/the-friend-visual-treatment.md | 12 ++++++++++++ docs/design/v0.1-wow-moments-checklist.md | 12 ++++++++++++ docs/design/visual-grammar-v01.md | 12 ++++++++++++ docs/design/voice-patterns.md | 12 ++++++++++++ 40 files changed, 480 insertions(+) diff --git a/docs/design/access-tier-shifts.md b/docs/design/access-tier-shifts.md index 9374a0d97..8fc6b5cf2 100644 --- a/docs/design/access-tier-shifts.md +++ b/docs/design/access-tier-shifts.md @@ -1,3 +1,15 @@ +--- +title: "Access Tier Shift Design Document" +description: "Rules for when and how player character access tiers change with NPCs during v0.1 play" +type: design +status: draft +ticket: "#328" +decision_refs: [D-028, D-033, D-035, D-062, D-063, D-064, D-075] +author: "Paula" +created: 2026-02-20 +updated: 2026-02-20 +--- + # Access Tier Shift Design Document **Ticket:** #328 | **Feeds:** #169 (Layer 1 access tier filtering, S15) diff --git a/docs/design/character-build-smuggler.md b/docs/design/character-build-smuggler.md index cfb26d4d4..5d4ab6686 100644 --- a/docs/design/character-build-smuggler.md +++ b/docs/design/character-build-smuggler.md @@ -1,3 +1,15 @@ +--- +title: "Character Build: The Smuggler" +description: "Full character definition for the smuggler playable character including knowledge, relationships, and voice" +type: design +status: draft +ticket: "#180" +decision_refs: [D-005, D-016, D-027, D-028, D-032, D-034, D-035, D-037, D-041, D-053, D-065] +author: "" +created: 2026-02-19 +updated: 2026-02-19 +--- + # Character Build: The Smuggler **Ticket:** #180 | **Priority:** Critical | **Sprint:** 12 diff --git a/docs/design/character-definition-schema.md b/docs/design/character-definition-schema.md index 99c798b0a..affa408e3 100644 --- a/docs/design/character-definition-schema.md +++ b/docs/design/character-definition-schema.md @@ -1,3 +1,15 @@ +--- +title: "Character Definition Schema" +description: "Canonical schema for playable character definitions covering identity, knowledge, relationships, and presentation" +type: design +status: draft +ticket: "#179" +decision_refs: [D-005, D-016, D-027, D-028, D-032, D-034, D-035, D-041, D-065] +author: "" +created: 2026-02-19 +updated: 2026-02-19 +--- + # Character Definition Schema **Ticket:** #179 | **Priority:** Critical | **Sprint:** 12 diff --git a/docs/design/content-directory-structure.md b/docs/design/content-directory-structure.md index f3c04b6af..f0ce0b6ce 100644 --- a/docs/design/content-directory-structure.md +++ b/docs/design/content-directory-structure.md @@ -1,3 +1,15 @@ +--- +title: "Content Directory Structure" +description: "Source of truth for the content/ directory layout, schemas, validation pipeline, and mod-compatible conventions" +type: design +status: active +ticket: "#384" +decision_refs: [D-024, D-027, D-028, D-032, D-034, D-035, D-036, D-049, D-057] +author: "" +created: 2026-02-19 +updated: 2026-02-19 +--- + # Content Directory Structure — The Settled Reach v0.1 **Ticket:** #384 (blocks #385: directory skeleton, #386: schema definitions) diff --git a/docs/design/content-structure-canonical.md b/docs/design/content-structure-canonical.md index ce7065d9e..6f80020e0 100644 --- a/docs/design/content-structure-canonical.md +++ b/docs/design/content-structure-canonical.md @@ -1,3 +1,15 @@ +--- +title: "Content Structure — Canonical Template (v0.2+)" +description: "Post-cleanup canonical directory layout for campaign content, superseding v0.1 content-directory-structure" +type: design +status: active +ticket: "#656" +decision_refs: [D-117, D-138] +author: "" +created: 2026-03-13 +updated: 2026-03-13 +--- + # Content Structure — Canonical Template (v0.2+) **Created:** 2026-03-13 (Sprint 26, #656 cleanup) diff --git a/docs/design/contraband-specification.md b/docs/design/contraband-specification.md index 69e741973..d9f87f865 100644 --- a/docs/design/contraband-specification.md +++ b/docs/design/contraband-specification.md @@ -1,3 +1,15 @@ +--- +title: "Contraband Specification — Lattice Components & Supply Chain" +description: "Defines contraband types, supply chain mechanics, terminology, and detection/evasion methods for the smuggling ring" +type: design +status: active +ticket: "#321" +decision_refs: [D-017, D-036, D-037] +author: "Miri" +created: 2026-02-19 +updated: 2026-02-19 +--- + # Contraband Specification — Lattice Components & Supply Chain **Ticket:** #321 **Author:** Miri diff --git a/docs/design/divergent-relationships.md b/docs/design/divergent-relationships.md index d3f7336ac..3ba414c3d 100644 --- a/docs/design/divergent-relationships.md +++ b/docs/design/divergent-relationships.md @@ -1,3 +1,15 @@ +--- +title: "Divergent Relationships" +description: "Comparison of smuggler vs detective starting relationship webs, access tiers, and social site coverage" +type: design +status: draft +ticket: "#183" +decision_refs: [D-005, D-027, D-028, D-029, D-033, D-075] +author: "" +created: 2026-02-19 +updated: 2026-02-19 +--- + # Divergent Relationships **Ticket:** #183 | **Priority:** Critical | **Sprint:** 12 diff --git a/docs/design/entity-color-system.md b/docs/design/entity-color-system.md index a35fc2021..9491348ac 100644 --- a/docs/design/entity-color-system.md +++ b/docs/design/entity-color-system.md @@ -1,3 +1,15 @@ +--- +title: "Entity Color System — Visual Specification" +description: "Canonical palette and rendering rules for relationship-based entity colors derived from D-033" +type: design +status: active +ticket: "#304" +decision_refs: [D-033, D-043, D-044, D-048, D-049, D-059, D-060] +author: "Araminta" +created: 2026-02-20 +updated: 2026-02-20 +--- + # Entity Color System — Visual Specification **Version:** v0.1 (Sprint 14) diff --git a/docs/design/environmental-text-standards.md b/docs/design/environmental-text-standards.md index 9735582d9..a716f6630 100644 --- a/docs/design/environmental-text-standards.md +++ b/docs/design/environmental-text-standards.md @@ -1,3 +1,15 @@ +--- +title: "Environmental Text Visual Standards" +description: "Visual rules for signage, terminals, and news tickers rendered as world-layer text in Sova Transit" +type: design +status: active +ticket: "#334" +decision_refs: [D-036, D-043, D-044, D-049, D-051, D-066] +author: "Araminta" +created: 2026-02-20 +updated: 2026-02-20 +--- + # Environmental Text Visual Standards **Version:** v0.1 (Sprint 14) diff --git a/docs/design/faction-mechanics-reference.md b/docs/design/faction-mechanics-reference.md index 0a78585dd..b80d6370f 100644 --- a/docs/design/faction-mechanics-reference.md +++ b/docs/design/faction-mechanics-reference.md @@ -1,3 +1,15 @@ +--- +title: "Faction Mechanics Reference" +description: "Quick reference for six-faction gameplay systems including resources, blind spots, and reputation mechanics" +type: design +status: active +ticket: "" +decision_refs: [] +author: "" +created: 2026-02-19 +updated: 2026-02-19 +--- + # Faction Mechanics Reference Quick reference for how the six factions work as gameplay systems. diff --git a/docs/design/first-5-minutes-experience.md b/docs/design/first-5-minutes-experience.md index 3f9b48920..e4f324178 100644 --- a/docs/design/first-5-minutes-experience.md +++ b/docs/design/first-5-minutes-experience.md @@ -1,3 +1,15 @@ +--- +title: "First 5 Minutes Experience Design" +description: "Systemic opening sequence design for both characters covering triggers, beat sequences, and seed variants" +type: design +status: active +ticket: "#259" +decision_refs: [D-027, D-032, D-041] +author: "Paula" +created: 2026-02-19 +updated: 2026-02-19 +--- + # First 5 Minutes Experience Design **Ticket:** #259 diff --git a/docs/design/flat-npc-trait-pass.md b/docs/design/flat-npc-trait-pass.md index 7c2283e84..c7e899734 100644 --- a/docs/design/flat-npc-trait-pass.md +++ b/docs/design/flat-npc-trait-pass.md @@ -1,3 +1,15 @@ +--- +title: "Flat NPC Memorable Trait Pass" +description: "Design for three flat NPCs (Pael, Ren, Tev) with memorable traits and plausible-misdirection dialogue" +type: design +status: draft +ticket: "#307" +decision_refs: [D-024, D-029] +author: "Paula" +created: 2026-02-19 +updated: 2026-02-19 +--- + # Flat NPC Memorable Trait Pass **Ticket:** #307 | **Priority:** High | **Sprint:** 12 diff --git a/docs/design/insert-hud-wireframe-v01.md b/docs/design/insert-hud-wireframe-v01.md index f09a9bbcf..6a2f6beb3 100644 --- a/docs/design/insert-hud-wireframe-v01.md +++ b/docs/design/insert-hud-wireframe-v01.md @@ -1,3 +1,15 @@ +--- +title: "Insert/HUD Wireframe and Visual Specification — v0.1" +description: "Neural lattice insert HUD layout, entity markers, border arrows, and interaction states for the diegetic UI" +type: design +status: active +ticket: "#314" +decision_refs: [D-013, D-014, D-019, D-031, D-033, D-048, D-049, D-051, D-056, D-057, D-059, D-065, D-066, D-117] +author: "Araminta" +created: 2026-02-24 +updated: 2026-03-13 +--- + # Insert/HUD Wireframe and Visual Specification — v0.1 **Ticket:** #314 diff --git a/docs/design/interaction-verbs-v0.1.md b/docs/design/interaction-verbs-v0.1.md index 62a7aac58..066d3ce65 100644 --- a/docs/design/interaction-verbs-v0.1.md +++ b/docs/design/interaction-verbs-v0.1.md @@ -1,3 +1,15 @@ +--- +title: "Interaction Verb Specification v0.1" +description: "Seven interaction verbs, single context-sensitive action button, and verbs[] architecture for player-world interaction" +type: design +status: active +ticket: "#402" +decision_refs: [D-005, D-011, D-015, D-027, D-028, D-032, D-035, D-041, D-044, D-051, D-054, D-060] +author: "" +created: 2026-02-12 +updated: 2026-02-12 +--- + # Interaction Verb Specification v0.1 **Ticket:** #402 diff --git a/docs/design/knowledge-flags-v01.md b/docs/design/knowledge-flags-v01.md index a516c7453..8dd89bad2 100644 --- a/docs/design/knowledge-flags-v01.md +++ b/docs/design/knowledge-flags-v01.md @@ -1,3 +1,15 @@ +--- +title: "Knowledge Flags — v0.1 Quick Reference" +description: "Quick reference of valid fact IDs, prerequisite formats, and starting knowledge for monologue content authoring" +type: design +status: active +ticket: "#309" +decision_refs: [D-028, D-035, D-041, D-075] +author: "" +created: 2026-02-19 +updated: 2026-02-19 +--- + # Knowledge Flags — v0.1 Quick Reference **For:** Mellanie (content authoring), Paula (narrative design) diff --git a/docs/design/knowledge-vocabulary-v01.md b/docs/design/knowledge-vocabulary-v01.md index 4b259553e..92e11fa5e 100644 --- a/docs/design/knowledge-vocabulary-v01.md +++ b/docs/design/knowledge-vocabulary-v01.md @@ -1,3 +1,15 @@ +--- +title: "Knowledge Vocabulary for v0.1 Content" +description: "Full specification of confidence levels, entity knowledge, fact categories, and prerequisite formats for the knowledge graph" +type: design +status: active +ticket: "#368" +decision_refs: [D-028, D-035, D-041, D-075] +author: "" +created: 2026-02-19 +updated: 2026-02-19 +--- + # Knowledge Vocabulary for v0.1 Content **Source:** D-041 (Knowledge Graph Data Model), D-035 (Tag Taxonomy), D-028 (Dialogue Architecture), D-075 (Dialogue Filtering) diff --git a/docs/design/layer2-situation-mapping.md b/docs/design/layer2-situation-mapping.md index 506fb9da4..4164ae182 100644 --- a/docs/design/layer2-situation-mapping.md +++ b/docs/design/layer2-situation-mapping.md @@ -1,3 +1,15 @@ +--- +title: "Layer 2: Situation-to-Relationship-History Mapping" +description: "How InteractionMemory maps to D-028 Layer 2 situation activation and relationship-aware greeting selection" +type: design +status: active +ticket: "#170" +decision_refs: [D-028, D-035] +author: "Paula" +created: 2026-02-21 +updated: 2026-02-21 +--- + # Layer 2: Situation-to-Relationship-History Mapping **Ticket:** #170 | **Sprint:** 15 | **Author:** Paula diff --git a/docs/design/meridian-coverage-map-sova-transit.md b/docs/design/meridian-coverage-map-sova-transit.md index 46e408c61..437b49753 100644 --- a/docs/design/meridian-coverage-map-sova-transit.md +++ b/docs/design/meridian-coverage-map-sova-transit.md @@ -1,3 +1,15 @@ +--- +title: "Meridian Coverage Map — Sova Transit District" +description: "Zone-by-zone Meridian network coverage map with gameplay implications for investigation and smuggling" +type: design +status: active +ticket: "#335" +decision_refs: [D-017, D-018, D-036, D-037] +author: "Miri" +created: 2026-02-19 +updated: 2026-02-19 +--- + # Meridian Coverage Map — Sova Transit District **Ticket:** #335 **Author:** Miri diff --git a/docs/design/mirror-moment-design.md b/docs/design/mirror-moment-design.md index 32b99f98e..b20e2aba0 100644 --- a/docs/design/mirror-moment-design.md +++ b/docs/design/mirror-moment-design.md @@ -1,3 +1,15 @@ +--- +title: "Mirror Moment Design Document" +description: "Seven core mirror moments where the same trigger fires different monologue for smuggler and detective" +type: design +status: active +ticket: "#329" +decision_refs: [D-032, D-034, D-039] +author: "" +created: 2026-02-19 +updated: 2026-02-19 +--- + # Mirror Moment Design Document **Ticket:** #329 diff --git a/docs/design/monologue-content-architecture.md b/docs/design/monologue-content-architecture.md index 5f67ac73a..0a62beda0 100644 --- a/docs/design/monologue-content-architecture.md +++ b/docs/design/monologue-content-architecture.md @@ -1,3 +1,15 @@ +--- +title: "Monologue Content Architecture" +description: "Authoring contract for internal monologue: interpretive frames, five categories, trigger mappings, volume targets, and prerequisite design" +type: design +status: active +ticket: "#253" +decision_refs: [D-016, D-032, D-034, D-035, D-041] +author: "Mellanie" +created: 2026-02-20 +updated: 2026-02-20 +--- + # Monologue Content Architecture **Ticket:** #253 diff --git a/docs/design/monologue-display-spec.md b/docs/design/monologue-display-spec.md index b241c2cd1..eb9031c7e 100644 --- a/docs/design/monologue-display-spec.md +++ b/docs/design/monologue-display-spec.md @@ -1,3 +1,15 @@ +--- +title: "Monologue Display System — Visual Specification" +description: "Typography, positioning, stacking, priority, and fade animation rules for monologue text rendering" +type: design +status: active +ticket: "#315" +decision_refs: [D-016, D-033, D-043, D-044, D-049, D-061, D-066, D-067] +author: "Araminta" +created: 2026-02-19 +updated: 2026-02-20 +--- + # Monologue Display System — Visual Specification **Version:** v0.1 (Sprint 13, updated Sprint 14) diff --git a/docs/design/opening-hook-content.md b/docs/design/opening-hook-content.md index 0882a5fea..b12407511 100644 --- a/docs/design/opening-hook-content.md +++ b/docs/design/opening-hook-content.md @@ -1,3 +1,15 @@ +--- +title: "Opening Hook Content Per Character" +description: "Authored monologue and dialogue content for each character's first 3-4 minutes across seed variants A-D" +type: design +status: draft +ticket: "#260" +decision_refs: [D-032, D-035, D-039, D-053, D-064] +author: "Paula" +created: 2026-02-19 +updated: 2026-02-23 +--- + # Opening Hook Content Per Character **Ticket:** #260 | **Priority:** High | **Sprint:** 12 diff --git a/docs/design/pc-as-npc-spec.md b/docs/design/pc-as-npc-spec.md index 7d4df6560..6fad14c20 100644 --- a/docs/design/pc-as-npc-spec.md +++ b/docs/design/pc-as-npc-spec.md @@ -1,3 +1,15 @@ +--- +title: "PC-as-NPC Unified Specification" +description: "Defines how each playable character exists as an NPC when the other character is played" +type: design +status: draft +ticket: "#381" +decision_refs: [D-027, D-029, D-032, D-034, D-035, D-039, D-045] +author: "" +created: 2026-02-12 +updated: 2026-02-13 +--- + # PC-as-NPC Unified Specification **Ticket:** #381 | **Priority:** High | **Sprint:** 3 diff --git a/docs/design/placeholder-art-spec-v01.md b/docs/design/placeholder-art-spec-v01.md index 1e2603473..a8d2076f7 100644 --- a/docs/design/placeholder-art-spec-v01.md +++ b/docs/design/placeholder-art-spec-v01.md @@ -1,3 +1,15 @@ +--- +title: "Placeholder Art Specification v0.1" +description: "Technical requirements for procedural placeholder art assets with zero image files" +type: design +status: active +ticket: "#133" +decision_refs: [D-043, D-046, D-047, D-049, D-066] +author: "Araminta" +created: 2026-02-19 +updated: 2026-02-19 +--- + # The Settled Reach — Placeholder Art Specification v0.1 **Version:** v0.1 (Sprint 12) diff --git a/docs/design/smuggler-moral-arc.md b/docs/design/smuggler-moral-arc.md index a0d9e505d..cf194e026 100644 --- a/docs/design/smuggler-moral-arc.md +++ b/docs/design/smuggler-moral-arc.md @@ -1,3 +1,15 @@ +--- +title: "Smuggler Moral Arc Spec" +description: "Four-phase moral trajectory for the smuggler through the v0.1 vertical slice, driven by authored FactId triggers" +type: design +status: draft +ticket: "#382" +decision_refs: [D-032, D-035, D-039] +author: "" +created: 2026-02-12 +updated: 2026-02-12 +--- + # Smuggler Moral Arc Spec **v0.1 Content Design Document** | Ticket: #382 | Subsumes: #310 (Character voice speech patterns) diff --git a/docs/design/smuggler-voice-card.md b/docs/design/smuggler-voice-card.md index 4e57657ec..e91ccc95c 100644 --- a/docs/design/smuggler-voice-card.md +++ b/docs/design/smuggler-voice-card.md @@ -1,3 +1,15 @@ +--- +title: "Smuggler Voice Card" +description: "Single authoring reference for the smuggler's internal monologue voice register and style parameters" +type: design +status: active +ticket: "#382" +decision_refs: [] +author: "" +created: 2026-02-12 +updated: 2026-02-12 +--- + # Smuggler Voice Card **Authoring Reference** | Ticket: #382 | Subsumes: #310 (Character voice speech patterns) diff --git a/docs/design/sound-indicator-visual.md b/docs/design/sound-indicator-visual.md index 9302de4ff..a14203d71 100644 --- a/docs/design/sound-indicator-visual.md +++ b/docs/design/sound-indicator-visual.md @@ -1,3 +1,15 @@ +--- +title: "Sound Indicator Visual Design" +description: "Fog-edge pulse specification for directional sound indicators with range differentiation and suppression rules" +type: design +status: active +ticket: "#317" +decision_refs: [D-018, D-033, D-047, D-048, D-049, D-059, D-070] +author: "Araminta" +created: 2026-02-20 +updated: 2026-02-20 +--- + # Sound Indicator Visual Design — Fog-Edge Pulse Specification **Version:** v0.1 (Sprint 14) diff --git a/docs/design/sova-station-profile.md b/docs/design/sova-station-profile.md index 89eb97812..84ac53d55 100644 --- a/docs/design/sova-station-profile.md +++ b/docs/design/sova-station-profile.md @@ -1,3 +1,15 @@ +--- +title: "Sova Station Profile" +description: "Canonical reference for Station Sova districts, governance, and off-district context beyond the playable Transit District" +type: design +status: active +ticket: "#320" +decision_refs: [D-036, D-050] +author: "Miri" +created: 2026-02-19 +updated: 2026-02-25 +--- + # Sova Station Profile — Station Beyond Transit District **Ticket:** #320 **Author:** Miri diff --git a/docs/design/sova-texture-appendix.md b/docs/design/sova-texture-appendix.md index 152b83e9e..2e56a6ae9 100644 --- a/docs/design/sova-texture-appendix.md +++ b/docs/design/sova-texture-appendix.md @@ -1,3 +1,15 @@ +--- +title: "Sova Texture Appendix" +description: "Sensory, linguistic, and social texture of Sova Transit District including slang, decoration, food, and rituals" +type: design +status: active +ticket: "#302" +decision_refs: [D-036, D-037] +author: "Miri" +created: 2026-02-19 +updated: 2026-02-19 +--- + # Sova Texture Appendix **Ticket:** #302 **Author:** Miri diff --git a/docs/design/span-gate-transit-schedule.md b/docs/design/span-gate-transit-schedule.md index 365d208e6..8831214ba 100644 --- a/docs/design/span-gate-transit-schedule.md +++ b/docs/design/span-gate-transit-schedule.md @@ -1,3 +1,15 @@ +--- +title: "Span Gate Transit Schedule" +description: "Canonical daily transit schedule driving NPC routines, ring operational windows, and investigation timelines" +type: design +status: active +ticket: "#336" +decision_refs: [D-031, D-036, D-050] +author: "Miri" +created: 2026-02-19 +updated: 2026-02-19 +--- + # Span Gate Transit Schedule — Sova Transit District **Ticket:** #336 **Author:** Miri diff --git a/docs/design/spatial-layout-bar-v01.md b/docs/design/spatial-layout-bar-v01.md index 326e05380..492a48e5a 100644 --- a/docs/design/spatial-layout-bar-v01.md +++ b/docs/design/spatial-layout-bar-v01.md @@ -1,3 +1,15 @@ +--- +title: "Spatial Layout: The Last Shift (Bar)" +description: "Tile-level floor plan, sightline analysis, and zone breakdown for the bar with NPC traffic annotations" +type: design +status: active +ticket: "#312" +decision_refs: [D-043] +author: "Araminta" +created: 2026-02-19 +updated: 2026-02-19 +--- + # Spatial Layout: The Last Shift (Bar) **Ticket:** #312 diff --git a/docs/design/spatial-layout-gate-v01.md b/docs/design/spatial-layout-gate-v01.md index 92261d76d..ade75803b 100644 --- a/docs/design/spatial-layout-gate-v01.md +++ b/docs/design/spatial-layout-gate-v01.md @@ -1,3 +1,15 @@ +--- +title: "Spatial Layout: Gate Cluster" +description: "Floor plan and sightline analysis for the span gate processing facility with dual-z observation gallery" +type: design +status: active +ticket: "#153" +decision_refs: [D-095] +author: "Araminta" +created: 2026-02-25 +updated: 2026-03-05 +--- + # Spatial Layout: Gate Cluster (Span Gate Processing Facility) **Ticket:** #153 diff --git a/docs/design/spatial-layout-smuggling-corridors-v01.md b/docs/design/spatial-layout-smuggling-corridors-v01.md index d1563acbc..5c0dcf0c6 100644 --- a/docs/design/spatial-layout-smuggling-corridors-v01.md +++ b/docs/design/spatial-layout-smuggling-corridors-v01.md @@ -1,3 +1,15 @@ +--- +title: "Spatial Layout: Smuggling Spaces and Transition Corridors" +description: "Ring operational footprint overlay covering restricted storage, maintenance corridors, dead-drops, and transition corridor" +type: design +status: active +ticket: "#313" +decision_refs: [] +author: "Araminta" +created: 2026-02-19 +updated: 2026-02-19 +--- + # Spatial Layout: Smuggling Spaces and Transition Corridors **Ticket:** #313 diff --git a/docs/design/spatial-layout-terminal-v01.md b/docs/design/spatial-layout-terminal-v01.md index c9a410b59..26f855edf 100644 --- a/docs/design/spatial-layout-terminal-v01.md +++ b/docs/design/spatial-layout-terminal-v01.md @@ -1,3 +1,15 @@ +--- +title: "Spatial Layout: The Terminal (Sova Logistics Hub)" +description: "Tile-level floor plan, sightline analysis, and zone breakdown for the logistics hub with narrative triangle notes" +type: design +status: active +ticket: "#311" +decision_refs: [] +author: "Araminta" +created: 2026-02-19 +updated: 2026-02-19 +--- + # Spatial Layout: The Terminal (Sova Logistics Hub) **Ticket:** #311 diff --git a/docs/design/tell-visual-expression.md b/docs/design/tell-visual-expression.md index 6a101f92a..efcb8b9f6 100644 --- a/docs/design/tell-visual-expression.md +++ b/docs/design/tell-visual-expression.md @@ -1,3 +1,15 @@ +--- +title: "Tell Visual/Behavioral Expression" +description: "Specification for five NPC tell categories mapped to Tier 2 movement behaviours with intensity scaling" +type: design +status: active +ticket: "#251" +decision_refs: [D-016, D-024, D-033, D-044, D-047] +author: "Araminta" +created: 2026-02-20 +updated: 2026-03-05 +--- + # Tell Visual/Behavioral Expression — Specification **Version:** v0.1 (Sprint 14) diff --git a/docs/design/text-display-hierarchy.md b/docs/design/text-display-hierarchy.md index 6940a390f..1a3a36abe 100644 --- a/docs/design/text-display-hierarchy.md +++ b/docs/design/text-display-hierarchy.md @@ -1,3 +1,15 @@ +--- +title: "Text Display Hierarchy" +description: "Visual specification for four text pipelines: dialogue, monologue, observation, and environmental text" +type: design +status: active +ticket: "#316" +decision_refs: [D-016, D-036, D-049, D-061, D-062, D-064, D-076, D-078] +author: "Araminta" +created: 2026-02-20 +updated: 2026-02-20 +--- + # Text Display Hierarchy — Visual Specification **Version:** v0.1 (Sprint 14) diff --git a/docs/design/the-friend-visual-treatment.md b/docs/design/the-friend-visual-treatment.md index eafcf2aa7..8be92a858 100644 --- a/docs/design/the-friend-visual-treatment.md +++ b/docs/design/the-friend-visual-treatment.md @@ -1,3 +1,15 @@ +--- +title: "THE FRIEND Visual Treatment" +description: "Visual specification for THE FRIEND NPC pattern: no special marking, earned detail, green-to-amber colour transition" +type: design +status: active +ticket: "#318" +decision_refs: [D-027, D-033, D-034, D-044, D-047, D-052, D-063] +author: "Araminta" +created: 2026-02-20 +updated: 2026-02-20 +--- + # THE FRIEND — Visual Treatment Specification **Version:** v0.1 (Sprint 14) diff --git a/docs/design/v0.1-wow-moments-checklist.md b/docs/design/v0.1-wow-moments-checklist.md index 439dff1f3..025ff3cb1 100644 --- a/docs/design/v0.1-wow-moments-checklist.md +++ b/docs/design/v0.1-wow-moments-checklist.md @@ -1,3 +1,15 @@ +--- +title: "v0.1 Wow Moment Content Checklist" +description: "Delivery status tracker for all six D-039 wow moments with content deliverables and implementation dependencies" +type: design +status: active +ticket: "#400" +decision_refs: [D-027, D-032, D-034, D-035, D-038, D-039, D-041, D-054, D-056, D-058, D-059] +author: "" +created: 2026-02-12 +updated: 2026-02-12 +--- + # v0.1 Wow Moment Content Checklist **Source:** D-039 (6 wow moments for 30-minute session) diff --git a/docs/design/visual-grammar-v01.md b/docs/design/visual-grammar-v01.md index 0be5a9127..20d63d358 100644 --- a/docs/design/visual-grammar-v01.md +++ b/docs/design/visual-grammar-v01.md @@ -1,3 +1,15 @@ +--- +title: "v0.1 Visual Grammar" +description: "Source of truth for all v0.1 visual decisions: zone palettes, entity colours, z-level stack, typography, and animation tiers" +type: design +status: active +ticket: "" +decision_refs: [D-033, D-043, D-044, D-045, D-046, D-047, D-048, D-049, D-052, D-056, D-057, D-059, D-061, D-066] +author: "Araminta" +created: 2026-02-19 +updated: 2026-02-20 +--- + # The Settled Reach — v0.1 Visual Grammar **Version:** v0.1 (Sprint 12) diff --git a/docs/design/voice-patterns.md b/docs/design/voice-patterns.md index b00f2b205..edfa7391c 100644 --- a/docs/design/voice-patterns.md +++ b/docs/design/voice-patterns.md @@ -1,3 +1,15 @@ +--- +title: "Character Voice Speech Patterns" +description: "Sentence-level execution rules for both characters: contractions, punctuation, starters, stress markers, and verbal tics" +type: design +status: active +ticket: "#310" +decision_refs: [] +author: "Mellanie" +created: 2026-02-13 +updated: 2026-02-13 +--- + # Character Voice Speech Patterns **Authoring Specification** | Ticket: #310 | Sprint: 5 From 9d2ab5330246edcb3a4a6aa6ad0d5840da312ae4 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Fri, 13 Mar 2026 18:55:30 +0100 Subject: [PATCH 11/28] docs(docs): add frontmatter to test plans, test reports, and audits Standardized YAML frontmatter on 7 files across docs/test-plans/, docs/test-reports/, and docs/audits/. Co-Authored-By: Claude Opus 4.6 --- docs/audits/README.md | 9 +++++++++ docs/audits/architecture-review-2026-02-11.md | 9 +++++++++ docs/test-plans/sprint-11-combine.md | 10 ++++++++++ docs/test-plans/sprint-18-client.md | 10 ++++++++++ docs/test-reports/pr-004-protocol-codec-review.md | 10 ++++++++++ docs/test-reports/sprint-11-522-preliminary.md | 10 ++++++++++ docs/test-reports/sprint-11-combine-final.md | 10 ++++++++++ 7 files changed, 68 insertions(+) diff --git a/docs/audits/README.md b/docs/audits/README.md index 78844de07..1a81c4faf 100644 --- a/docs/audits/README.md +++ b/docs/audits/README.md @@ -1,3 +1,12 @@ +--- +title: "Architecture Audits" +description: "Index and methodology reference for adversarial two-round architecture audits. Documents the review format, scope, reviewer roles, and audit history." +type: audit +status: active +created: 2026-02-11 +updated: 2026-02-11 +--- + # Architecture Audits ## Audit Pattern: Adversarial Two-Round Review with Code Review diff --git a/docs/audits/architecture-review-2026-02-11.md b/docs/audits/architecture-review-2026-02-11.md index 27bf281e7..a214ad73e 100644 --- a/docs/audits/architecture-review-2026-02-11.md +++ b/docs/audits/architecture-review-2026-02-11.md @@ -1,3 +1,12 @@ +--- +title: "Architecture Review — Sprint 1" +description: "Full adversarial two-round architecture audit by Tyre and Troblum covering all 40 confirmed decisions, implementation, and risk profile. Architecture rated GREEN; knowledge graph and observer pipeline identified as underspecified critical systems." +type: audit +status: archived +created: 2026-02-11 +updated: 2026-03-05 +--- + # Architecture Review Audit — The Settled Reach **Date:** 2026-02-11 diff --git a/docs/test-plans/sprint-11-combine.md b/docs/test-plans/sprint-11-combine.md index f1b2eb38d..c62e2cd51 100644 --- a/docs/test-plans/sprint-11-combine.md +++ b/docs/test-plans/sprint-11-combine.md @@ -1,3 +1,13 @@ +--- +title: "Sprint 11 Combine — #507 and #522" +description: "Test plan for Sprint 11 combining WRONG button ring buffer (#507) and OQ-07 no-insert interaction behaviour (#522), covering happy paths, edge cases, integration, and performance tests." +type: test-plan +status: active +ticket: "#507, #522" +created: 2026-02-19 +updated: 2026-02-19 +--- + # Test Plan: Sprint 11 Combine — #507 and #522 - **Date**: 2026-02-19 diff --git a/docs/test-plans/sprint-18-client.md b/docs/test-plans/sprint-18-client.md index c2c25811f..e00c6c7ae 100644 --- a/docs/test-plans/sprint-18-client.md +++ b/docs/test-plans/sprint-18-client.md @@ -1,3 +1,13 @@ +--- +title: "Sprint 18 — Touch (Client)" +description: "Test plan for Sprint 18 client scope covering minimap POI rendering (#151), dialogue UI hardening and examine result display (#174), and knowledge/journal panel (#264)." +type: test-plan +status: active +ticket: "#151, #174, #264" +created: 2026-02-25 +updated: 2026-02-25 +--- + # Test Plan: Sprint 18 — Touch (Client) - **Date**: 2026-02-25 diff --git a/docs/test-reports/pr-004-protocol-codec-review.md b/docs/test-reports/pr-004-protocol-codec-review.md index 0c21fdcc6..b7e5bccdf 100644 --- a/docs/test-reports/pr-004-protocol-codec-review.md +++ b/docs/test-reports/pr-004-protocol-codec-review.md @@ -1,3 +1,13 @@ +--- +title: "PR #4 Protocol Codec Review" +description: "QA review of PR #4 implementing the MessagePack-based wire protocol for Rust-Godot IPC. Verdict: REQUEST_CHANGES — 5 critical issues and 8 warnings identified covering missing enum variant, type coercion, error handling, and negative test gaps." +type: test-report +status: archived +ticket: "#4" +created: 2026-02-11 +updated: 2026-02-26 +--- + # Test Report: PR #4 Protocol Codec Review - **Date**: 2026-02-11 diff --git a/docs/test-reports/sprint-11-522-preliminary.md b/docs/test-reports/sprint-11-522-preliminary.md index f9e526d30..d0fe1a4e7 100644 --- a/docs/test-reports/sprint-11-522-preliminary.md +++ b/docs/test-reports/sprint-11-522-preliminary.md @@ -1,3 +1,13 @@ +--- +title: "Sprint 11 #522 Preliminary Review" +description: "Preliminary QA review of the OQ-07 no-insert interaction implementation (#522). Confirms option (a) cursor shape changes with verb labels suppressed. Approved pending final test run." +type: test-report +status: archived +ticket: "#522" +created: 2026-02-19 +updated: 2026-02-19 +--- + # Preliminary Review: #522 OQ-07 Implementation - **Date**: 2026-02-19 diff --git a/docs/test-reports/sprint-11-combine-final.md b/docs/test-reports/sprint-11-combine-final.md index e82d7648e..677b33c3f 100644 --- a/docs/test-reports/sprint-11-combine-final.md +++ b/docs/test-reports/sprint-11-combine-final.md @@ -1,3 +1,13 @@ +--- +title: "Sprint 11 Combine Final Report" +description: "Final QA test report for Sprint 11 covering #522 (OQ-07 no-insert interaction) and #507 (WRONG button ring buffer). Both approved with 2 bugs found and fixed during QA. All sprint-specific tests pass." +type: test-report +status: archived +ticket: "#507, #522" +created: 2026-02-19 +updated: 2026-02-19 +--- + # Test Report: Sprint 11 — Combine (#522 + #507) - **Date**: 2026-02-19 From 1014680ebba416d7987c42b5c5e636e7f7ac81e5 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Fri, 13 Mar 2026 18:55:37 +0100 Subject: [PATCH 12/28] docs(discussions): add frontmatter to all discussion rounds Standardized YAML frontmatter on all 26 docs/discussions/ files with title, description, type, status, round number, and created date. All marked as archived. Co-Authored-By: Claude Opus 4.6 --- docs/discussions/README.md | 9 +++++++++ docs/discussions/decisions-restructure-qatux.md | 9 +++++++++ docs/discussions/decisions-restructure-si.md | 9 +++++++++ docs/discussions/decisions-restructure-tyre.md | 9 +++++++++ docs/discussions/round-01-opening-positions.md | 9 +++++++++ docs/discussions/round-02-is-stellaris-right.md | 9 +++++++++ docs/discussions/round-03-character-gap.md | 9 +++++++++ docs/discussions/round-04-build-our-own.md | 9 +++++++++ docs/discussions/round-05-team-still-right.md | 9 +++++++++ docs/discussions/round-06-first-person-pivot.md | 9 +++++++++ docs/discussions/round-07-single-character.md | 9 +++++++++ docs/discussions/round-08-action-spectacle.md | 9 +++++++++ docs/discussions/round-09-multiplayer.md | 9 +++++++++ docs/discussions/round-10-map-fog-borderless.md | 9 +++++++++ docs/discussions/round-11-insert-sound-camera.md | 9 +++++++++ docs/discussions/round-12-top-down-final.md | 9 +++++++++ docs/discussions/round-13-engine-selection.md | 9 +++++++++ docs/discussions/round-14-worldbuilding-settled-reach.md | 9 +++++++++ docs/discussions/round-15-readme-steam-page.md | 9 +++++++++ docs/discussions/round-16-faction-mechanics.md | 9 +++++++++ docs/discussions/round-16-factions-complete.md | 9 +++++++++ docs/discussions/round-16-factions.md | 9 +++++++++ docs/discussions/round-16-session-notes.md | 9 +++++++++ docs/discussions/round-17-content-architecture.md | 9 +++++++++ docs/discussions/round-18-v01-gap-analysis-workshop.md | 9 +++++++++ docs/discussions/round-20-station-district-layout.md | 9 +++++++++ 26 files changed, 234 insertions(+) diff --git a/docs/discussions/README.md b/docs/discussions/README.md index 98ecb0493..7c477e4f9 100644 --- a/docs/discussions/README.md +++ b/docs/discussions/README.md @@ -1,3 +1,12 @@ +--- +title: "Discussion Archive" +description: "Index of all archived discussion rounds from the Settled Reach game design process" +type: discussion +status: archived +round: 0 +created: 2026-02-09 +--- + # Discussion Archive Historical discussion rounds from the Settled Reach game design process. diff --git a/docs/discussions/decisions-restructure-qatux.md b/docs/discussions/decisions-restructure-qatux.md index 61d22d0ec..5332fbd2b 100644 --- a/docs/discussions/decisions-restructure-qatux.md +++ b/docs/discussions/decisions-restructure-qatux.md @@ -1,3 +1,12 @@ +--- +title: "Decisions Restructure — Qatux Analysis" +description: "Qatux's proposal for domain-split DECISIONS.md with SQLite index to reduce agent context waste and improve discovery" +type: discussion +status: archived +round: 0 +created: 2026-02-11 +--- + # Decision Architecture Restructure — Librarian's Analysis **Author:** Qatux (Documenter) **Date:** 2026-02-11 diff --git a/docs/discussions/decisions-restructure-si.md b/docs/discussions/decisions-restructure-si.md index 4be76be1f..a44683b78 100644 --- a/docs/discussions/decisions-restructure-si.md +++ b/docs/discussions/decisions-restructure-si.md @@ -1,3 +1,12 @@ +--- +title: "Decisions Restructure — Si Analysis" +description: "Si's project management analysis of DECISIONS.md scaling problems and domain-split proposal with ticket linkage improvements" +type: discussion +status: archived +round: 0 +created: 2026-02-11 +--- + # DECISIONS.md Restructure Analysis — Project Management Perspective **Author:** Si (Project Manager / Scrum Master) diff --git a/docs/discussions/decisions-restructure-tyre.md b/docs/discussions/decisions-restructure-tyre.md index b61c1ce2f..a230aeda3 100644 --- a/docs/discussions/decisions-restructure-tyre.md +++ b/docs/discussions/decisions-restructure-tyre.md @@ -1,3 +1,12 @@ +--- +title: "Decisions Restructure — Tyre Technical Review" +description: "Tyre's technical feasibility review endorsing hybrid domain-split markdown + SQLite index with schema and sync modifications" +type: discussion +status: archived +round: 0 +created: 2026-02-11 +--- + # Decision Architecture Restructure — Technical Feasibility Review **Author:** Tyre (Technical Architect) diff --git a/docs/discussions/round-01-opening-positions.md b/docs/discussions/round-01-opening-positions.md index c1c5284d2..2ea54bae7 100644 --- a/docs/discussions/round-01-opening-positions.md +++ b/docs/discussions/round-01-opening-positions.md @@ -1,3 +1,12 @@ +--- +title: "Round 1: Opening Positions" +description: "Initial team positions on what the Commonwealth mod should be — genre, tone, and design goals" +type: discussion +status: archived +round: 1 +created: 2026-02-09 +--- + # Round 1: Opening Positions - "What should this mod BE?" (See git history for full Round 1 transcript) diff --git a/docs/discussions/round-02-is-stellaris-right.md b/docs/discussions/round-02-is-stellaris-right.md index dcee01b69..b34e0fdea 100644 --- a/docs/discussions/round-02-is-stellaris-right.md +++ b/docs/discussions/round-02-is-stellaris-right.md @@ -1,3 +1,12 @@ +--- +title: "Round 2: Is Stellaris the Right Vehicle?" +description: "Debate on whether Stellaris can support the Commonwealth's character-driven, single-civilization narrative" +type: discussion +status: archived +round: 2 +created: 2026-02-09 +--- + # Round 2: "Is Stellaris even the right vehicle?" **Team Leader (Jeroen):** Before we go further - is Stellaris actually the right game for this? diff --git a/docs/discussions/round-03-character-gap.md b/docs/discussions/round-03-character-gap.md index 1d5c6b9d5..29c6ea395 100644 --- a/docs/discussions/round-03-character-gap.md +++ b/docs/discussions/round-03-character-gap.md @@ -1,3 +1,12 @@ +--- +title: "Round 3: The Character Gap" +description: "Stellaris character limitations deemed a dealbreaker; CK3-meets-Stellaris hybrid and dynasty framing explored" +type: discussion +status: archived +round: 3 +created: 2026-02-09 +--- + # Round 3: "The character gap is a dealbreaker for Stellaris" **Team Leader (Jeroen):** I have doubts along exactly the thin character space lines. I've played the New Horizons mod a lot - it has far more surface area to connect with Stellaris in the source material and even there, it fails on connecting with characters. This sounds even harder to get to vibe properly. CK3 in space would be good, but ideally we'd have CK3 with Stellaris map systems. CK3's map fails the complexity needed for Commonwealth. diff --git a/docs/discussions/round-04-build-our-own.md b/docs/discussions/round-04-build-our-own.md index 743c1d2fc..8887a4b66 100644 --- a/docs/discussions/round-04-build-our-own.md +++ b/docs/discussions/round-04-build-our-own.md @@ -1,3 +1,12 @@ +--- +title: "Round 4: Build Our Own Game" +description: "Decision to build a custom game instead of modding Stellaris; decided D-001 (original game)" +type: discussion +status: archived +round: 4 +created: 2026-02-09 +--- + # Round 4: "What if we build our own game?" **Team Leader (Jeroen):** Here's a spanner for the works - what if we make our own game? diff --git a/docs/discussions/round-05-team-still-right.md b/docs/discussions/round-05-team-still-right.md index 3d63b073e..60fe9d88f 100644 --- a/docs/discussions/round-05-team-still-right.md +++ b/docs/discussions/round-05-team-still-right.md @@ -1,3 +1,12 @@ +--- +title: "Round 5: Is the Team Still Right?" +description: "Team composition confirmed for custom game; Gestalt and Nigel rebranded; decided D-003, D-004" +type: discussion +status: archived +round: 5 +created: 2026-02-09 +--- + # Round 5: "Is the team still right for this?" **Team Leader (Jeroen):** Confirms the vision. 30 years software dev / systems & cloud architect, with Claude Code 20x. Lots of planning, engine choosing, and feature defining needed before we're anywhere near building. Stellaris fans - are you onboard or should we swap you out? diff --git a/docs/discussions/round-06-first-person-pivot.md b/docs/discussions/round-06-first-person-pivot.md index 410c27c38..1adca237a 100644 --- a/docs/discussions/round-06-first-person-pivot.md +++ b/docs/discussions/round-06-first-person-pivot.md @@ -1,3 +1,12 @@ +--- +title: "Round 6: First-Person Pivot" +description: "Pivot from grand strategy to first-person character perspective with asymmetric information as core mechanic; decided D-005" +type: discussion +status: archived +round: 6 +created: 2026-02-09 +--- + # Round 6: "First person. Asymmetric information. The apple cart tips over." **Team Leader (Jeroen):** What if the player is a first-person character? Think X4, but less Eve-spreadsheety. diff --git a/docs/discussions/round-07-single-character.md b/docs/discussions/round-07-single-character.md index 7472dc173..546b8a52f 100644 --- a/docs/discussions/round-07-single-character.md +++ b/docs/discussions/round-07-single-character.md @@ -1,3 +1,12 @@ +--- +title: "Round 7: Single Character" +description: "Confirmed single-character selection as core design; one perspective, one life per playthrough; decided D-005 (superseding D-002), D-006" +type: discussion +status: archived +round: 7 +created: 2026-02-09 +--- + # Round 7: "Single character. Pick and play." **Team Leader (Jeroen):** This is a single character selection, take it from there game. diff --git a/docs/discussions/round-08-action-spectacle.md b/docs/discussions/round-08-action-spectacle.md index bb1b1a3c8..c63e5c501 100644 --- a/docs/discussions/round-08-action-spectacle.md +++ b/docs/discussions/round-08-action-spectacle.md @@ -1,3 +1,12 @@ +--- +title: "Round 8: Action and Spectacle" +description: "Added Action and Spectacle as fifth design pillar; combat as punctuation not game loop; decided D-007, D-008" +type: discussion +status: archived +round: 8 +created: 2026-02-09 +--- + # Round 8: "The fifth pillar - Action & Spectacle" **Team Leader (Jeroen):** Rimworld was originally designed as a shooter, and still benefits from that pedigree. With all the story/politics/information direction this game has, it still needs to come to spectacular, epic fight situations at times. Another pillar. diff --git a/docs/discussions/round-09-multiplayer.md b/docs/discussions/round-09-multiplayer.md index 93e26556f..fce88f846 100644 --- a/docs/discussions/round-09-multiplayer.md +++ b/docs/discussions/round-09-multiplayer.md @@ -1,3 +1,12 @@ +--- +title: "Round 9: Multiplayer" +description: "Multiplayer deferred but architecture designed to not prevent it; client-server separation mandated; decided D-009, D-010" +type: discussion +status: archived +round: 9 +created: 2026-02-09 +--- + # Round 9: "Multiplayer?" **Team Leader (Jeroen):** Multiplayer? Or no... diff --git a/docs/discussions/round-10-map-fog-borderless.md b/docs/discussions/round-10-map-fog-borderless.md index 869dd5d5e..94605674f 100644 --- a/docs/discussions/round-10-map-fog-borderless.md +++ b/docs/discussions/round-10-map-fog-borderless.md @@ -1,3 +1,12 @@ +--- +title: "Round 10: Map, Fog and Borderless Generation" +description: "Map size, fog of war, and borderless procedural generation design; three-world prototype; decided D-011 through D-014" +type: discussion +status: archived +round: 10 +created: 2026-02-09 +--- + # Round 10: "Map size, fog, and borderless generation" **Team Leader (Jeroen):** Morning, team. What will we aim for map-wise for the first playable version? diff --git a/docs/discussions/round-11-insert-sound-camera.md b/docs/discussions/round-11-insert-sound-camera.md index 873ff58a3..00c0118be 100644 --- a/docs/discussions/round-11-insert-sound-camera.md +++ b/docs/discussions/round-11-insert-sound-camera.md @@ -1,3 +1,12 @@ +--- +title: "Round 11: Insert, Sound and Camera" +description: "Minimap, directional sound model, camera lock, and internal monologue system design; decided D-015 through D-018" +type: discussion +status: archived +round: 11 +created: 2026-02-09 +--- + # Round 11: "Insert minimap, sound direction, and the camera question" **Team Leader (Jeroen):** Insert system needs a rudimentary version from the start for anchoring. A minimap with a dot when close and border arrow when far might be enough. How do we do directional sound - can't go binaural since that needs first-person view to map to. diff --git a/docs/discussions/round-12-top-down-final.md b/docs/discussions/round-12-top-down-final.md index a596c737a..3c4be0a81 100644 --- a/docs/discussions/round-12-top-down-final.md +++ b/docs/discussions/round-12-top-down-final.md @@ -1,3 +1,12 @@ +--- +title: "Round 12: Top-Down Final" +description: "Final gut-check confirming top-down over first-person 3D; systems-interaction visibility wins over immersion trade-offs; decided D-019" +type: discussion +status: archived +round: 12 +created: 2026-02-09 +--- + # Round 12: "Final gut-check on top-down vs first-person" **Team Leader (Jeroen):** One last challenge before we lock it in. What are we missing out on fun/immersion-wise if we don't go first-person? I'm set on the choice, just have a nagging doubt. diff --git a/docs/discussions/round-13-engine-selection.md b/docs/discussions/round-13-engine-selection.md index c778e4263..70374cfb6 100644 --- a/docs/discussions/round-13-engine-selection.md +++ b/docs/discussions/round-13-engine-selection.md @@ -1,3 +1,12 @@ +--- +title: "Round 13: Engine Selection" +description: "Selected Godot client + Rust/bevy_ecs simulation server architecture; decided D-020, rejected R-004 through R-010" +type: discussion +status: archived +round: 13 +created: 2026-02-10 +--- + # ROUND 13: "Engine selection" **Team Leader (Jeroen):** Present the full landscape, all of you. diff --git a/docs/discussions/round-14-worldbuilding-settled-reach.md b/docs/discussions/round-14-worldbuilding-settled-reach.md index 1fbd19d17..477e30341 100644 --- a/docs/discussions/round-14-worldbuilding-settled-reach.md +++ b/docs/discussions/round-14-worldbuilding-settled-reach.md @@ -1,3 +1,12 @@ +--- +title: "Round 14: Setting Foundation — The Settled Reach" +description: "Original IP worldbuilding foundation: gate network, factions, sleeve economics, the Settled Reach setting; decided D-021" +type: discussion +status: archived +round: 14 +created: 2026-02-09 +--- + ## ROUND 14: "Setting Foundation — The Settled Reach" **Team Leader (Jeroen):** Miri — present the revised setting foundation. Original IP, Commonwealth-inspired. Incorporate dual-tier wormholes, Interstitial Builders, two-tier death with sleeve economics, revised factions, and infrastructure-as-mystery. Full IP originality audit. diff --git a/docs/discussions/round-15-readme-steam-page.md b/docs/discussions/round-15-readme-steam-page.md index f389be34a..0d51b2a8f 100644 --- a/docs/discussions/round-15-readme-steam-page.md +++ b/docs/discussions/round-15-readme-steam-page.md @@ -1,3 +1,12 @@ +--- +title: "Round 15: README and Steam Page Placeholder" +description: "Marketing copy and Steam page placeholder drafted from worldbuilding foundation" +type: discussion +status: archived +round: 15 +created: 2026-02-10 +--- + # ROUND 15: "README / Steam page placeholder" **Team Leader (Jeroen):** Miri and Mellanie — need a Steam page placeholder. Miri provides worldbuilding context, Mellanie authors. diff --git a/docs/discussions/round-16-faction-mechanics.md b/docs/discussions/round-16-faction-mechanics.md index 7962140c8..830bc5e98 100644 --- a/docs/discussions/round-16-faction-mechanics.md +++ b/docs/discussions/round-16-faction-mechanics.md @@ -1,3 +1,12 @@ +--- +title: "Round 16: Faction Mechanics" +description: "Mechanical grounding of six factions by Gestalt: starting loadouts, information asymmetry, constraints, resource loops, 3D reputation system" +type: discussion +status: archived +round: 16 +created: 2026-02-10 +--- + ## ROUND 16: Faction Mechanics — How Factions Actually Work **Team Leader (Jeroen):** GESTALT — ground the six factions mechanically. How does faction membership change what the player can DO, KNOW, and BECOME? diff --git a/docs/discussions/round-16-factions-complete.md b/docs/discussions/round-16-factions-complete.md index f34f48db0..9b908d2d3 100644 --- a/docs/discussions/round-16-factions-complete.md +++ b/docs/discussions/round-16-factions-complete.md @@ -1,3 +1,12 @@ +--- +title: "Round 16: Factions — Complete Summary" +description: "Consolidated round 16 output: faction lore, political depth analysis, and mechanical grounding for all six Settled Reach factions" +type: discussion +status: archived +round: 16 +created: 2026-02-10 +--- + # ROUND 16: Factions — Building a Fuller Narrative Picture **Status:** COMPLETE — Awaiting team input and v0.1 faction selection decision diff --git a/docs/discussions/round-16-factions.md b/docs/discussions/round-16-factions.md index f490b31c7..9109ed559 100644 --- a/docs/discussions/round-16-factions.md +++ b/docs/discussions/round-16-factions.md @@ -1,3 +1,12 @@ +--- +title: "Round 16: Factions — Full Lore Development" +description: "Complete faction lore by Miri: identities, tensions, relationships, NPC archetypes, and interaction dynamics for all six factions" +type: discussion +status: archived +round: 16 +created: 2026-02-10 +--- + ## ROUND 16: "Factions — Building a Fuller Narrative Picture" **Team Leader (Jeroen):** Round 14 established six factions as part of our worldbuilding foundation. Even though v0.1 will slice down, we need a complete faction landscape for narrative coherence. Miri — lead this discussion. Paula — bring political depth. Gestalt — ground everything mechanically. Qatux — document. diff --git a/docs/discussions/round-16-session-notes.md b/docs/discussions/round-16-session-notes.md index 0fb90c40b..ea828bb2b 100644 --- a/docs/discussions/round-16-session-notes.md +++ b/docs/discussions/round-16-session-notes.md @@ -1,3 +1,12 @@ +--- +title: "Round 16: Session Notes" +description: "Session summary for the factions round: participants, major outputs, and cross-references to lore, mechanics, and political analysis deliverables" +type: discussion +status: archived +round: 16 +created: 2026-02-10 +--- + # Round 16 Session Notes **Date:** 2026-02-10 diff --git a/docs/discussions/round-17-content-architecture.md b/docs/discussions/round-17-content-architecture.md index dfe70caa9..0bec6dff8 100644 --- a/docs/discussions/round-17-content-architecture.md +++ b/docs/discussions/round-17-content-architecture.md @@ -1,3 +1,12 @@ +--- +title: "Round 17: Content Architecture" +description: "Three-tier content architecture (authored/templated/procedural), life-sim substrate, NPC generation model, storyteller expansion; decided D-023 through D-029" +type: discussion +status: archived +round: 17 +created: 2026-02-10 +--- + # ROUND 17: Content Architecture — Filling a Galaxy Without Emptiness **Date:** 2026-02-10 diff --git a/docs/discussions/round-18-v01-gap-analysis-workshop.md b/docs/discussions/round-18-v01-gap-analysis-workshop.md index 9c319d1fa..c5b91fb11 100644 --- a/docs/discussions/round-18-v01-gap-analysis-workshop.md +++ b/docs/discussions/round-18-v01-gap-analysis-workshop.md @@ -1,3 +1,12 @@ +--- +title: "Round 18: v0.1 Gap Analysis Workshop" +description: "Stress-test of 232-ticket v0.1 plan against concept proof claims; identified gaps in fun delivery and testability; decided D-030 through D-040" +type: discussion +status: archived +round: 18 +created: 2026-02-11 +--- + # ROUND 18: v0.1 Gap Analysis Workshop **Date:** 2026-02-11 diff --git a/docs/discussions/round-20-station-district-layout.md b/docs/discussions/round-20-station-district-layout.md index 8988dc539..0b4bec940 100644 --- a/docs/discussions/round-20-station-district-layout.md +++ b/docs/discussions/round-20-station-district-layout.md @@ -1,3 +1,12 @@ +--- +title: "Round 20: Station District Layout Design" +description: "District layout design for Sova Transit District (ticket #153); spatial constraints and topology proposals; decided D-093 through D-095" +type: discussion +status: archived +round: 20 +created: 2026-02-25 +--- + # Round 20: Station District Layout Design — Ticket #153 **Sprint:** 20 (Shape) From 47204da1abb6fc63f98c5bcf3430cbba363657a0 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Fri, 13 Mar 2026 23:10:27 +0100 Subject: [PATCH 13/28] docs(docs): add frontmatter to art-direction-mood-board workshop Standardized YAML frontmatter on all 23 files in the art direction workshop with title, description, type, workshop, agent, and round fields. Co-Authored-By: Claude Opus 4.6 --- .../art-direction-mood-board/closing-araminta.md | 11 +++++++++++ .../art-direction-mood-board/closing-brief.md | 11 +++++++++++ .../art-direction-mood-board/closing-gore.md | 11 +++++++++++ .../art-direction-mood-board/closing-miri.md | 11 +++++++++++ .../art-direction-mood-board/closing-ozzie.md | 11 +++++++++++ .../art-direction-mood-board/round1-araminta.md | 11 +++++++++++ .../workshops/art-direction-mood-board/round1-gore.md | 11 +++++++++++ .../workshops/art-direction-mood-board/round1-miri.md | 11 +++++++++++ .../art-direction-mood-board/round1-ozzie.md | 11 +++++++++++ .../art-direction-mood-board/round1-tracking.md | 11 +++++++++++ .../art-direction-mood-board/round2-araminta.md | 11 +++++++++++ .../art-direction-mood-board/round2-brief.md | 11 +++++++++++ .../workshops/art-direction-mood-board/round2-gore.md | 11 +++++++++++ .../workshops/art-direction-mood-board/round2-miri.md | 11 +++++++++++ .../art-direction-mood-board/round2-ozzie.md | 11 +++++++++++ .../art-direction-mood-board/round2-tracking.md | 11 +++++++++++ .../art-direction-mood-board/round3-araminta.md | 11 +++++++++++ .../art-direction-mood-board/round3-brief.md | 11 +++++++++++ .../workshops/art-direction-mood-board/round3-gore.md | 11 +++++++++++ .../workshops/art-direction-mood-board/round3-miri.md | 11 +++++++++++ .../art-direction-mood-board/round3-ozzie.md | 11 +++++++++++ .../art-direction-mood-board/workshop-brief.md | 11 +++++++++++ .../art-direction-mood-board/workshop-outcomes.md | 11 +++++++++++ 23 files changed, 253 insertions(+) diff --git a/docs/workshops/art-direction-mood-board/closing-araminta.md b/docs/workshops/art-direction-mood-board/closing-araminta.md index 9cb749568..b47e634d5 100644 --- a/docs/workshops/art-direction-mood-board/closing-araminta.md +++ b/docs/workshops/art-direction-mood-board/closing-araminta.md @@ -1,3 +1,14 @@ +--- +title: "Closing Statement — Araminta (Art Direction & Mood Board)" +description: "Araminta's closing: sprites as shape templates rule, Light2D zone contrast as v0.1.1 priority, D-019 amendment flags" +type: workshop +status: archived +workshop: art-direction-mood-board +agent: araminta +round: 0 +created: 2026-02-12 +--- + # Closing Statement: Araminta (Art Direction & Mood Board) **Date:** 2026-02-12 diff --git a/docs/workshops/art-direction-mood-board/closing-brief.md b/docs/workshops/art-direction-mood-board/closing-brief.md index 339694e39..885800b40 100644 --- a/docs/workshops/art-direction-mood-board/closing-brief.md +++ b/docs/workshops/art-direction-mood-board/closing-brief.md @@ -1,3 +1,14 @@ +--- +title: "Closing Round Brief — Art Direction & Mood Board" +description: "Closing round instructions: final statements on workshop coverage, v0.1.1 priorities, decision recording flags, visual identity sentences" +type: workshop +status: archived +workshop: art-direction-mood-board +agent: "" +round: 0 +created: 2026-02-12 +--- + # Art Direction & Mood Board Workshop — Closing Round **Date:** 2026-02-12 diff --git a/docs/workshops/art-direction-mood-board/closing-gore.md b/docs/workshops/art-direction-mood-board/closing-gore.md index 0526e7835..9547582f5 100644 --- a/docs/workshops/art-direction-mood-board/closing-gore.md +++ b/docs/workshops/art-direction-mood-board/closing-gore.md @@ -1,3 +1,14 @@ +--- +title: "Closing Statement — Gore (Art Direction & Mood Board)" +description: "Gore's closing: environmental neutrality as mechanical constraint, settling-as-placement as design principle, visual identity sentence" +type: workshop +status: archived +workshop: art-direction-mood-board +agent: gore +round: 0 +created: 2026-02-12 +--- + # Closing Statement — Gore (Themes & Endgame Design) ## 1. Does the workshop capture my domain? diff --git a/docs/workshops/art-direction-mood-board/closing-miri.md b/docs/workshops/art-direction-mood-board/closing-miri.md index d5d9953e6..a2eaab0e6 100644 --- a/docs/workshops/art-direction-mood-board/closing-miri.md +++ b/docs/workshops/art-direction-mood-board/closing-miri.md @@ -1,3 +1,14 @@ +--- +title: "Closing Statement — Miri (Art Direction & Mood Board)" +description: "Miri's closing: three-era vocabulary resolved, Velen canonical, where-they-hang temperature mechanism, IP originality confirmed" +type: workshop +status: archived +workshop: art-direction-mood-board +agent: miri +round: 0 +created: 2026-02-12 +--- + # Closing Statement — Miri (Worldbuilder & Setting Designer) **Workshop:** Art Direction & Mood Board diff --git a/docs/workshops/art-direction-mood-board/closing-ozzie.md b/docs/workshops/art-direction-mood-board/closing-ozzie.md index ebb2c240b..f3cb96630 100644 --- a/docs/workshops/art-direction-mood-board/closing-ozzie.md +++ b/docs/workshops/art-direction-mood-board/closing-ozzie.md @@ -1,3 +1,14 @@ +--- +title: "Closing Statement — Ozzie (Art Direction & Mood Board)" +description: "Ozzie's closing: warm/cool transition as v0.1.1 litmus test, strict zero-shift wording flags, D-019 amendment note" +type: workshop +status: archived +workshop: art-direction-mood-board +agent: ozzie +round: 0 +created: 2026-02-12 +--- + # Closing Statement — Ozzie (Player Experience / Wow Factor) ## 1. Does the workshop capture my domain? diff --git a/docs/workshops/art-direction-mood-board/round1-araminta.md b/docs/workshops/art-direction-mood-board/round1-araminta.md index d3e4b771f..adec2121b 100644 --- a/docs/workshops/art-direction-mood-board/round1-araminta.md +++ b/docs/workshops/art-direction-mood-board/round1-araminta.md @@ -1,3 +1,14 @@ +--- +title: "Round 1 — Araminta (Art Direction & Mood Board)" +description: "Visual designer's Round 1 response covering references, mood, style direction, station zones, and technical constraints" +type: workshop +status: archived +workshop: art-direction-mood-board +agent: araminta +round: 1 +created: 2026-02-12 +--- + # Round 1 Workshop Response: Araminta (Art Direction & Mood Board) **Agent:** Araminta (Visual Designer / Q-003 Lead) diff --git a/docs/workshops/art-direction-mood-board/round1-gore.md b/docs/workshops/art-direction-mood-board/round1-gore.md index 11b0b3a25..5014f46e4 100644 --- a/docs/workshops/art-direction-mood-board/round1-gore.md +++ b/docs/workshops/art-direction-mood-board/round1-gore.md @@ -1,3 +1,14 @@ +--- +title: "Round 1 — Gore (Art Direction & Mood Board)" +description: "Themes agent's Round 1 response: Hopper, Tarkovsky, and Crewdson references; visual restraint thesis; weather as philosophy" +type: workshop +status: archived +workshop: art-direction-mood-board +agent: gore +round: 1 +created: 2026-02-12 +--- + # Round 1 — Gore (Themes & Endgame Design) ## The Question Before the Questions diff --git a/docs/workshops/art-direction-mood-board/round1-miri.md b/docs/workshops/art-direction-mood-board/round1-miri.md index 93f6d09f1..a24ea0fa5 100644 --- a/docs/workshops/art-direction-mood-board/round1-miri.md +++ b/docs/workshops/art-direction-mood-board/round1-miri.md @@ -1,3 +1,14 @@ +--- +title: "Round 1 — Miri (Art Direction & Mood Board)" +description: "Worldbuilder's Round 1 response: setting-grounded references, three-era material vocabulary, solar light color system" +type: workshop +status: archived +workshop: art-direction-mood-board +agent: miri +round: 1 +created: 2026-02-12 +--- + # Round 1 -- Miri's Worldbuilding & Setting Perspective **Agent:** Miri (Worldbuilder & Setting Designer) diff --git a/docs/workshops/art-direction-mood-board/round1-ozzie.md b/docs/workshops/art-direction-mood-board/round1-ozzie.md index 76f7562b1..af1d740d4 100644 --- a/docs/workshops/art-direction-mood-board/round1-ozzie.md +++ b/docs/workshops/art-direction-mood-board/round1-ozzie.md @@ -1,3 +1,14 @@ +--- +title: "Round 1 — Ozzie (Art Direction & Mood Board)" +description: "Player experience agent's Round 1 response: Darkwood lighting, Sims readability, weather as gameplay, wow moment mapping" +type: workshop +status: archived +workshop: art-direction-mood-board +agent: ozzie +round: 1 +created: 2026-02-12 +--- + # Round 1 — Ozzie (Player Experience / Wow Factor) ## Q1: Visual References — What Games/Films/Art Look Like What We're Making? diff --git a/docs/workshops/art-direction-mood-board/round1-tracking.md b/docs/workshops/art-direction-mood-board/round1-tracking.md index de504f0ea..8ce65c871 100644 --- a/docs/workshops/art-direction-mood-board/round1-tracking.md +++ b/docs/workshops/art-direction-mood-board/round1-tracking.md @@ -1,3 +1,14 @@ +--- +title: "Round 1 Tracking — Art Direction & Mood Board" +description: "Qatux's Round 1 synthesis: reference catalog, consensus points, divergences, key insights, and open questions for Round 2" +type: workshop +status: archived +workshop: art-direction-mood-board +agent: qatux +round: 1 +created: 2026-02-12 +--- + # Art Direction & Mood Board Workshop — Round 1 Tracking Document **Compiled by:** Qatux (Documenter) diff --git a/docs/workshops/art-direction-mood-board/round2-araminta.md b/docs/workshops/art-direction-mood-board/round2-araminta.md index 55eb589b6..089f7e5d1 100644 --- a/docs/workshops/art-direction-mood-board/round2-araminta.md +++ b/docs/workshops/art-direction-mood-board/round2-araminta.md @@ -1,3 +1,14 @@ +--- +title: "Round 2 — Araminta (Art Direction & Mood Board)" +description: "Visual designer resolves all five OQs: insert bloom synthesis, strict zero-shift, tile hierarchy spec, animation tiers, Darkwood endorsed" +type: workshop +status: archived +workshop: art-direction-mood-board +agent: araminta +round: 2 +created: 2026-02-12 +--- + # Round 2 Workshop Response: Araminta (Art Direction & Mood Board) **Agent:** Araminta (Visual Designer / Q-003 Lead) diff --git a/docs/workshops/art-direction-mood-board/round2-brief.md b/docs/workshops/art-direction-mood-board/round2-brief.md index 2ab7c155d..192384bc3 100644 --- a/docs/workshops/art-direction-mood-board/round2-brief.md +++ b/docs/workshops/art-direction-mood-board/round2-brief.md @@ -1,3 +1,14 @@ +--- +title: "Round 2 Brief — Art Direction & Mood Board" +description: "Round 2 brief: resolve five open questions from Round 1 plus new tile-based base building input" +type: workshop +status: archived +workshop: art-direction-mood-board +agent: "" +round: 2 +created: 2026-02-12 +--- + # Art Direction & Mood Board Workshop — Round 2 Brief **Date:** 2026-02-12 diff --git a/docs/workshops/art-direction-mood-board/round2-gore.md b/docs/workshops/art-direction-mood-board/round2-gore.md index 3415638ad..18c2ff862 100644 --- a/docs/workshops/art-direction-mood-board/round2-gore.md +++ b/docs/workshops/art-direction-mood-board/round2-gore.md @@ -1,3 +1,14 @@ +--- +title: "Round 2 — Gore (Art Direction & Mood Board)" +description: "Themes agent resolves OQs: settling-as-placement thesis, strict zero-shift, ambiguous animation, Darkwood with uncertainty retuning" +type: workshop +status: archived +workshop: art-direction-mood-board +agent: gore +round: 2 +created: 2026-02-12 +--- + # Round 2 — Gore (Themes & Endgame Design) ## The Tile-Based World: Settling as an Act of Placement diff --git a/docs/workshops/art-direction-mood-board/round2-miri.md b/docs/workshops/art-direction-mood-board/round2-miri.md index 58962a468..108a8eb37 100644 --- a/docs/workshops/art-direction-mood-board/round2-miri.md +++ b/docs/workshops/art-direction-mood-board/round2-miri.md @@ -1,3 +1,14 @@ +--- +title: "Round 2 — Miri (Art Direction & Mood Board)" +description: "Worldbuilder resolves OQs: lattice overlay per-character density, tile vocabulary inventory, planet Velen proposed, base building as setting-faithful" +type: workshop +status: archived +workshop: art-direction-mood-board +agent: miri +round: 2 +created: 2026-02-12 +--- + # Round 2 -- Miri's Worldbuilding & Setting Perspective **Agent:** Miri (Worldbuilder & Setting Designer) diff --git a/docs/workshops/art-direction-mood-board/round2-ozzie.md b/docs/workshops/art-direction-mood-board/round2-ozzie.md index 9bdcf6377..8243a016e 100644 --- a/docs/workshops/art-direction-mood-board/round2-ozzie.md +++ b/docs/workshops/art-direction-mood-board/round2-ozzie.md @@ -1,3 +1,14 @@ +--- +title: "Round 2 — Ozzie (Art Direction & Mood Board)" +description: "Player experience agent resolves OQs: moves to strict zero-shift, tile-based wow moments, Darkwood+BR2049 lighting system" +type: workshop +status: archived +workshop: art-direction-mood-board +agent: ozzie +round: 2 +created: 2026-02-12 +--- + # Round 2 — Ozzie (Player Experience / Wow Factor) ## OQ-01: Neural Insert Overlay — Geometric or Organic? diff --git a/docs/workshops/art-direction-mood-board/round2-tracking.md b/docs/workshops/art-direction-mood-board/round2-tracking.md index 9ef92b769..e3d51b89a 100644 --- a/docs/workshops/art-direction-mood-board/round2-tracking.md +++ b/docs/workshops/art-direction-mood-board/round2-tracking.md @@ -1,3 +1,14 @@ +--- +title: "Round 2 Tracking — Art Direction & Mood Board" +description: "Qatux's Round 2 synthesis: all five OQs reach unanimous consensus, tile-based world endorsed, decisions ready for formal recording" +type: workshop +status: archived +workshop: art-direction-mood-board +agent: qatux +round: 2 +created: 2026-02-12 +--- + # Art Direction & Mood Board Workshop — Round 2 Tracking Document **Compiled by:** Qatux (Documenter) diff --git a/docs/workshops/art-direction-mood-board/round3-araminta.md b/docs/workshops/art-direction-mood-board/round3-araminta.md index 42066a4a5..66193e796 100644 --- a/docs/workshops/art-direction-mood-board/round3-araminta.md +++ b/docs/workshops/art-direction-mood-board/round3-araminta.md @@ -1,3 +1,14 @@ +--- +title: "Round 3 — Araminta (Art Direction & Mood Board)" +description: "Visual designer's Round 3: 8-layer z-stack, v0.1.1 sprite set spec, wall rendering options, Rimworld tilt endorsed, image #9 review" +type: workshop +status: archived +workshop: art-direction-mood-board +agent: araminta +round: 3 +created: 2026-02-12 +--- + # Round 3 Workshop Response: Araminta (Art Direction & Mood Board) **Agent:** Araminta (Visual Designer / Q-003 Lead) diff --git a/docs/workshops/art-direction-mood-board/round3-brief.md b/docs/workshops/art-direction-mood-board/round3-brief.md index ba2e26bff..a6921cbad 100644 --- a/docs/workshops/art-direction-mood-board/round3-brief.md +++ b/docs/workshops/art-direction-mood-board/round3-brief.md @@ -1,3 +1,14 @@ +--- +title: "Round 3 Brief — Art Direction & Mood Board" +description: "Quick round brief: lead decisions on cone/Velen/temperature, z-levels discussion, v0.1.1 sprite planning, image #8/#9 reactions" +type: workshop +status: archived +workshop: art-direction-mood-board +agent: "" +round: 3 +created: 2026-02-12 +--- + # Art Direction & Mood Board Workshop — Round 3 Brief (Quick Round) **Date:** 2026-02-12 diff --git a/docs/workshops/art-direction-mood-board/round3-gore.md b/docs/workshops/art-direction-mood-board/round3-gore.md index 979a69344..f20c56f54 100644 --- a/docs/workshops/art-direction-mood-board/round3-gore.md +++ b/docs/workshops/art-direction-mood-board/round3-gore.md @@ -1,3 +1,14 @@ +--- +title: "Round 3 — Gore (Art Direction & Mood Board)" +description: "Themes agent's Round 3: overhead occlusion as information gaps, minimum concept-proof for v0.1.1, tilt as epistemological shift" +type: workshop +status: archived +workshop: art-direction-mood-board +agent: gore +round: 3 +created: 2026-02-12 +--- + # Round 3 — Gore (Themes & Endgame Design) ## 1. Lead Decisions — Acknowledged diff --git a/docs/workshops/art-direction-mood-board/round3-miri.md b/docs/workshops/art-direction-mood-board/round3-miri.md index 705d1fc41..192aba43a 100644 --- a/docs/workshops/art-direction-mood-board/round3-miri.md +++ b/docs/workshops/art-direction-mood-board/round3-miri.md @@ -1,3 +1,14 @@ +--- +title: "Round 3 — Miri (Art Direction & Mood Board)" +description: "Worldbuilder's Round 3: z-level setting implications, Terminal break room sprite set, Velen canonical, Rimworld tilt endorsed" +type: workshop +status: archived +workshop: art-direction-mood-board +agent: miri +round: 3 +created: 2026-02-12 +--- + # Round 3 -- Miri's Worldbuilding & Setting Perspective **Agent:** Miri (Worldbuilder & Setting Designer) diff --git a/docs/workshops/art-direction-mood-board/round3-ozzie.md b/docs/workshops/art-direction-mood-board/round3-ozzie.md index 61bcf6225..0c67ddaa6 100644 --- a/docs/workshops/art-direction-mood-board/round3-ozzie.md +++ b/docs/workshops/art-direction-mood-board/round3-ozzie.md @@ -1,3 +1,14 @@ +--- +title: "Round 3 — Ozzie (Art Direction & Mood Board)" +description: "Player experience agent's Round 3: z-level hierarchy, v0.1.1 test scene spec, image #9 as emotional proof, Rimworld tilt endorsed" +type: workshop +status: archived +workshop: art-direction-mood-board +agent: ozzie +round: 3 +created: 2026-02-12 +--- + # Round 3 — Ozzie (Player Experience / Wow Factor) ## 1. Lead Decisions — Acknowledged diff --git a/docs/workshops/art-direction-mood-board/workshop-brief.md b/docs/workshops/art-direction-mood-board/workshop-brief.md index e2e93bf74..547ca4061 100644 --- a/docs/workshops/art-direction-mood-board/workshop-brief.md +++ b/docs/workshops/art-direction-mood-board/workshop-brief.md @@ -1,3 +1,14 @@ +--- +title: "Art Direction & Mood Board Workshop Brief" +description: "Round 1 brief defining questions on visual references, mood, top-down style, station character, and information visualization" +type: workshop +status: archived +workshop: art-direction-mood-board +agent: "" +round: 0 +created: 2026-02-12 +--- + # Workshop: Art Direction & Mood Board **Date:** 2026-02-12 diff --git a/docs/workshops/art-direction-mood-board/workshop-outcomes.md b/docs/workshops/art-direction-mood-board/workshop-outcomes.md index 672833284..88f43094b 100644 --- a/docs/workshops/art-direction-mood-board/workshop-outcomes.md +++ b/docs/workshops/art-direction-mood-board/workshop-outcomes.md @@ -1,3 +1,14 @@ +--- +title: "Art Direction & Mood Board Workshop — Final Outcomes" +description: "Complete workshop results: visual identity, lighting system, tile composition, animation tiers, and all resolved decisions" +type: workshop +status: archived +workshop: art-direction-mood-board +agent: "" +round: 0 +created: 2026-02-12 +--- + # Art Direction & Mood Board Workshop — Final Outcomes **Date:** 2026-02-12 From 45ba7a57e141a02d44897c7dfef7cbeeb928ba2c Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Fri, 13 Mar 2026 23:10:34 +0100 Subject: [PATCH 14/28] docs(docs): add frontmatter to character-creation, content-architecture, and control-interaction workshops Standardized YAML frontmatter on 5 files across 3 workshop directories. Co-Authored-By: Claude Opus 4.6 --- .../character-creation-game-setup/workshop-brief.md | 9 +++++++++ .../content-architecture-workshop-brief.md | 9 +++++++++ .../control-interaction-workshop-brief.md | 9 +++++++++ docs/workshops/control-interaction/workshop-notes.md | 9 +++++++++ docs/workshops/control-interaction/workshop-outcomes.md | 9 +++++++++ 5 files changed, 45 insertions(+) diff --git a/docs/workshops/character-creation-game-setup/workshop-brief.md b/docs/workshops/character-creation-game-setup/workshop-brief.md index fc00f8116..ad8edb51d 100644 --- a/docs/workshops/character-creation-game-setup/workshop-brief.md +++ b/docs/workshops/character-creation-game-setup/workshop-brief.md @@ -1,3 +1,12 @@ +--- +title: "Workshop: Character Creation & Game Setup" +description: "Design brief for character creation, seed boundaries, gate activation, quest seeding, and game toggles" +type: workshop +status: archived +workshop: "character-creation-game-setup" +created: 2026-02-25 +--- + # Workshop: Character Creation & Game Setup **Date:** 2026-02-25 diff --git a/docs/workshops/content-architecture/content-architecture-workshop-brief.md b/docs/workshops/content-architecture/content-architecture-workshop-brief.md index db8d6065a..af1798a8f 100644 --- a/docs/workshops/content-architecture/content-architecture-workshop-brief.md +++ b/docs/workshops/content-architecture/content-architecture-workshop-brief.md @@ -1,3 +1,12 @@ +--- +title: "Workshop Brief: Content Architecture" +description: "Design brief for three-tier content model, NPC generation, simulation budgets, and DLC architecture" +type: workshop +status: archived +workshop: "content-architecture" +created: 2026-02-11 +--- + # Workshop Brief: Content Architecture ## Filling a Galaxy Without Emptiness diff --git a/docs/workshops/control-interaction/control-interaction-workshop-brief.md b/docs/workshops/control-interaction/control-interaction-workshop-brief.md index 5adbe8412..b20fab141 100644 --- a/docs/workshops/control-interaction/control-interaction-workshop-brief.md +++ b/docs/workshops/control-interaction/control-interaction-workshop-brief.md @@ -1,3 +1,12 @@ +--- +title: "Workshop Brief: Control & Interaction Scheme" +description: "Design brief for movement, cursor interaction, fog perception UX, implant UI, dialogue, and inventory systems" +type: workshop +status: archived +workshop: "control-interaction" +created: 2026-02-12 +--- + # Workshop Brief: Control & Interaction Scheme ## How Does the Player Touch the World? diff --git a/docs/workshops/control-interaction/workshop-notes.md b/docs/workshops/control-interaction/workshop-notes.md index 056513572..18f73a7d1 100644 --- a/docs/workshops/control-interaction/workshop-notes.md +++ b/docs/workshops/control-interaction/workshop-notes.md @@ -1,3 +1,12 @@ +--- +title: "Workshop Notes: Control & Interaction Scheme — Round 1" +description: "Full round 1 discussion notes covering movement, interaction, fog perception, dialogue, and inventory proposals" +type: workshop +status: archived +workshop: "control-interaction" +created: 2026-02-14 +--- + # Workshop Notes: Control & Interaction Scheme — Round 1 **Workshop:** Control & Interaction Scheme diff --git a/docs/workshops/control-interaction/workshop-outcomes.md b/docs/workshops/control-interaction/workshop-outcomes.md index b21bf58aa..4d8268c11 100644 --- a/docs/workshops/control-interaction/workshop-outcomes.md +++ b/docs/workshops/control-interaction/workshop-outcomes.md @@ -1,3 +1,12 @@ +--- +title: "Workshop Outcomes: Control & Interaction Scheme" +description: "13 decisions (D-053 to D-065) covering movement stances, cursor states, fog layers, dialogue UX, and smuggler inventory" +type: workshop +status: archived +workshop: "control-interaction" +created: 2026-02-14 +--- + # Workshop Outcomes: Control & Interaction Scheme **Workshop:** Control & Interaction Scheme — "How Does the Player Touch the World?" From 9a5c9c440876734bd924dadafdb8e4c140ad5361 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Fri, 13 Mar 2026 23:40:37 +0100 Subject: [PATCH 15/28] docs(docs): add frontmatter to generator-architecture workshop Standardized YAML frontmatter on all 38 files with title, description, type, workshop, agent, and round fields. Co-Authored-By: Claude Opus 4.6 --- .../generator-architecture/araminta-round1.md | 11 +++++++++++ .../generator-architecture/araminta-round2.md | 11 +++++++++++ .../generator-architecture/araminta-round3.md | 11 +++++++++++ .../generator-architecture/araminta-round4.md | 11 +++++++++++ .../generator-architecture/araminta-round5.md | 11 +++++++++++ .../generator-architecture/gestalt-round1.md | 11 +++++++++++ .../generator-architecture/gestalt-round2.md | 11 +++++++++++ .../generator-architecture/gestalt-round3.md | 11 +++++++++++ .../generator-architecture/gestalt-round4.md | 11 +++++++++++ .../generator-architecture/gestalt-round5.md | 11 +++++++++++ docs/workshops/generator-architecture/miri-round1.md | 11 +++++++++++ docs/workshops/generator-architecture/miri-round2.md | 11 +++++++++++ .../generator-architecture/miri-round3-supplement.md | 11 +++++++++++ docs/workshops/generator-architecture/miri-round3.md | 11 +++++++++++ docs/workshops/generator-architecture/miri-round4.md | 11 +++++++++++ docs/workshops/generator-architecture/miri-round5.md | 11 +++++++++++ docs/workshops/generator-architecture/nigel-round1.md | 11 +++++++++++ docs/workshops/generator-architecture/nigel-round2.md | 11 +++++++++++ docs/workshops/generator-architecture/nigel-round3.md | 11 +++++++++++ docs/workshops/generator-architecture/nigel-round4.md | 11 +++++++++++ docs/workshops/generator-architecture/nigel-round5.md | 11 +++++++++++ docs/workshops/generator-architecture/ozzie-round1.md | 11 +++++++++++ docs/workshops/generator-architecture/ozzie-round2.md | 11 +++++++++++ docs/workshops/generator-architecture/ozzie-round3.md | 11 +++++++++++ docs/workshops/generator-architecture/ozzie-round4.md | 11 +++++++++++ docs/workshops/generator-architecture/ozzie-round5.md | 11 +++++++++++ .../workshops/generator-architecture/round-1-notes.md | 11 +++++++++++ .../workshops/generator-architecture/round-2-notes.md | 11 +++++++++++ .../workshops/generator-architecture/round-3-notes.md | 11 +++++++++++ .../workshops/generator-architecture/round-4-notes.md | 11 +++++++++++ .../workshops/generator-architecture/round-5-notes.md | 11 +++++++++++ docs/workshops/generator-architecture/tyre-round1.md | 11 +++++++++++ docs/workshops/generator-architecture/tyre-round2.md | 11 +++++++++++ docs/workshops/generator-architecture/tyre-round3.md | 11 +++++++++++ docs/workshops/generator-architecture/tyre-round4.md | 11 +++++++++++ docs/workshops/generator-architecture/tyre-round5.md | 11 +++++++++++ .../generator-architecture/workshop-brief.md | 11 +++++++++++ .../generator-architecture/workshop-outcomes.md | 11 +++++++++++ 38 files changed, 418 insertions(+) diff --git a/docs/workshops/generator-architecture/araminta-round1.md b/docs/workshops/generator-architecture/araminta-round1.md index 8299e26b8..c925413fa 100644 --- a/docs/workshops/generator-architecture/araminta-round1.md +++ b/docs/workshops/generator-architecture/araminta-round1.md @@ -1,3 +1,14 @@ +--- +title: "Araminta Round 1 — Visual Coherence Constraints" +description: "Visual coherence constraints for chunk fill and zone palette requirements" +type: workshop +status: archived +workshop: generator-architecture +agent: "araminta" +round: 1 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Round 1: Araminta ## Visual Coherence Constraints for Chunk Fill diff --git a/docs/workshops/generator-architecture/araminta-round2.md b/docs/workshops/generator-architecture/araminta-round2.md index 712a9ef01..34e9ddb9f 100644 --- a/docs/workshops/generator-architecture/araminta-round2.md +++ b/docs/workshops/generator-architecture/araminta-round2.md @@ -1,3 +1,14 @@ +--- +title: "Araminta Round 2 — Edge Bleed and Non-Urban Terrain" +description: "Visual coherence for edge bleed, non-urban terrain, and multi-playstyle support" +type: workshop +status: archived +workshop: generator-architecture +agent: "araminta" +round: 2 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Round 2: Araminta ## Visual Coherence for Edge Bleed and Non-Urban Terrain diff --git a/docs/workshops/generator-architecture/araminta-round3.md b/docs/workshops/generator-architecture/araminta-round3.md index 5b7a507dc..2857f25e5 100644 --- a/docs/workshops/generator-architecture/araminta-round3.md +++ b/docs/workshops/generator-architecture/araminta-round3.md @@ -1,3 +1,14 @@ +--- +title: "Araminta Round 3 — Palette Granularity and Organic Streets" +description: "Palette granularity, organic streets, vertical visuals, destruction, and convergence proposals" +type: workshop +status: archived +workshop: generator-architecture +agent: "araminta" +round: 3 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Round 3: Araminta ## Palette Granularity, Organic Streets, Vertical Visuals, Destruction, Horizon, and What's Behind the Wall diff --git a/docs/workshops/generator-architecture/araminta-round4.md b/docs/workshops/generator-architecture/araminta-round4.md index 80d5ce259..260d58f44 100644 --- a/docs/workshops/generator-architecture/araminta-round4.md +++ b/docs/workshops/generator-architecture/araminta-round4.md @@ -1,3 +1,14 @@ +--- +title: "Araminta Round 4 — Heritage Grammar and Vessel Visuals" +description: "Heritage grammar authoring, vessel visual grammar, rooftop bar clause, and D-record sign-off" +type: workshop +status: archived +workshop: generator-architecture +agent: "araminta" +round: 4 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Round 4: Araminta ## Heritage Grammar Authoring, Vessel Visual Grammar, Rooftop Bar Clause, D-Record Sign-off diff --git a/docs/workshops/generator-architecture/araminta-round5.md b/docs/workshops/generator-architecture/araminta-round5.md index aacc645d4..c93f0971d 100644 --- a/docs/workshops/generator-architecture/araminta-round5.md +++ b/docs/workshops/generator-architecture/araminta-round5.md @@ -1,3 +1,14 @@ +--- +title: "Araminta Round 5 — Final Review" +description: "Final review and sign-off on workshop outcomes for visual design domain" +type: workshop +status: archived +workshop: generator-architecture +agent: "araminta" +round: 5 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Round 5 (Final Review): Araminta **Role:** Visual Designer diff --git a/docs/workshops/generator-architecture/gestalt-round1.md b/docs/workshops/generator-architecture/gestalt-round1.md index 18cd478ac..2e92b76f8 100644 --- a/docs/workshops/generator-architecture/gestalt-round1.md +++ b/docs/workshops/generator-architecture/gestalt-round1.md @@ -1,3 +1,14 @@ +--- +title: "Gestalt Round 1 — Systems Design Requirements" +description: "Gameplay loop requirements and information asymmetry guarantees for the generator" +type: workshop +status: archived +workshop: generator-architecture +agent: "gestalt" +round: 1 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Round 1: Gestalt **Role:** Systems Design / Gameplay Loop Requirements diff --git a/docs/workshops/generator-architecture/gestalt-round2.md b/docs/workshops/generator-architecture/gestalt-round2.md index 528a3034d..50e65fcad 100644 --- a/docs/workshops/generator-architecture/gestalt-round2.md +++ b/docs/workshops/generator-architecture/gestalt-round2.md @@ -1,3 +1,14 @@ +--- +title: "Gestalt Round 2 — Playstyle-Agnostic Pipeline" +description: "Expanded systems design beyond investigation to support all playstyles equally" +type: workshop +status: archived +workshop: generator-architecture +agent: "gestalt" +round: 2 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Round 2: Gestalt **Role:** Systems Design / Gameplay Loop Requirements diff --git a/docs/workshops/generator-architecture/gestalt-round3.md b/docs/workshops/generator-architecture/gestalt-round3.md index be078bc1e..20da60bf1 100644 --- a/docs/workshops/generator-architecture/gestalt-round3.md +++ b/docs/workshops/generator-architecture/gestalt-round3.md @@ -1,3 +1,14 @@ +--- +title: "Gestalt Round 3 — Convergence and Pipeline Statement" +description: "Assassin playstyle, universal vs conditional guarantees, destructible boundaries, and vertical scale" +type: workshop +status: archived +workshop: generator-architecture +agent: "gestalt" +round: 3 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Round 3: Gestalt **Role:** Systems Design / Gameplay Loop Requirements diff --git a/docs/workshops/generator-architecture/gestalt-round4.md b/docs/workshops/generator-architecture/gestalt-round4.md index b6bf27de4..d2e6615c1 100644 --- a/docs/workshops/generator-architecture/gestalt-round4.md +++ b/docs/workshops/generator-architecture/gestalt-round4.md @@ -1,3 +1,14 @@ +--- +title: "Gestalt Round 4 — Final Convergence" +description: "Open question resolution, guarantee amendments, and D-record sign-off" +type: workshop +status: archived +workshop: generator-architecture +agent: "gestalt" +round: 4 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Round 4: Gestalt **Role:** Systems Design / Gameplay Loop Requirements diff --git a/docs/workshops/generator-architecture/gestalt-round5.md b/docs/workshops/generator-architecture/gestalt-round5.md index 2180325b8..c3c2d533e 100644 --- a/docs/workshops/generator-architecture/gestalt-round5.md +++ b/docs/workshops/generator-architecture/gestalt-round5.md @@ -1,3 +1,14 @@ +--- +title: "Gestalt Round 5 — Final Review" +description: "Final review and sign-off on workshop outcomes for systems design domain" +type: workshop +status: archived +workshop: generator-architecture +agent: "gestalt" +round: 5 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Round 5: Gestalt (Final Review) **Role:** Systems Design / Gameplay Loop Requirements diff --git a/docs/workshops/generator-architecture/miri-round1.md b/docs/workshops/generator-architecture/miri-round1.md index 38cdf9065..d9f4c3602 100644 --- a/docs/workshops/generator-architecture/miri-round1.md +++ b/docs/workshops/generator-architecture/miri-round1.md @@ -1,3 +1,14 @@ +--- +title: "Miri Round 1 — Worldbuilding Inputs" +description: "Worldbuilding parameter definitions and cultural ingredients for the generator pipeline" +type: workshop +status: archived +workshop: generator-architecture +agent: "miri" +round: 1 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Round 1: Miri (Worldbuilder) **Topic:** Worldbuilding inputs for the generator pipeline diff --git a/docs/workshops/generator-architecture/miri-round2.md b/docs/workshops/generator-architecture/miri-round2.md index b9af5438b..ccb0cd736 100644 --- a/docs/workshops/generator-architecture/miri-round2.md +++ b/docs/workshops/generator-architecture/miri-round2.md @@ -1,3 +1,14 @@ +--- +title: "Miri Round 2 — Broadened Gameplay Lens" +description: "Playstyle-agnostic society profile, non-urban terrain, insignificant worlds, and cultural space size" +type: workshop +status: archived +workshop: generator-architecture +agent: "miri" +round: 2 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Round 2: Miri (Worldbuilder) **Topic:** Worldbuilding for the broadened gameplay lens — multiple playstyles, non-urban terrain, insignificant places, edge bleed, cultural ingredients space size diff --git a/docs/workshops/generator-architecture/miri-round3-supplement.md b/docs/workshops/generator-architecture/miri-round3-supplement.md index 7192c0b0b..930423f0a 100644 --- a/docs/workshops/generator-architecture/miri-round3-supplement.md +++ b/docs/workshops/generator-architecture/miri-round3-supplement.md @@ -1,3 +1,14 @@ +--- +title: "Miri Round 3 Supplement — Destructible Boundaries" +description: "Destructible boundaries, vertical social stratification, entity-carried chunks, and grid vs organic heritage" +type: workshop +status: archived +workshop: generator-architecture +agent: "miri" +round: 3 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Round 3 Supplement: Miri (Worldbuilder) **Topic:** Destructible boundaries, vertical social stratification, entity-carried chunks (trains/ships), grid vs. organic by heritage root diff --git a/docs/workshops/generator-architecture/miri-round3.md b/docs/workshops/generator-architecture/miri-round3.md index fbf5aae95..e227c1f2e 100644 --- a/docs/workshops/generator-architecture/miri-round3.md +++ b/docs/workshops/generator-architecture/miri-round3.md @@ -1,3 +1,14 @@ +--- +title: "Miri Round 3 — Assassination and Wilderness" +description: "Assassination playstyle, wilderness informal zones, palette granularity, and dynamic world modification" +type: workshop +status: archived +workshop: generator-architecture +agent: "miri" +round: 3 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Round 3: Miri (Worldbuilder) **Topic:** Assassination playstyle, wilderness informal zones, palette granularity, playstyle affinity per world type, insignificance as social lens, dynamic world modification diff --git a/docs/workshops/generator-architecture/miri-round4.md b/docs/workshops/generator-architecture/miri-round4.md index 3fdc85348..75309764f 100644 --- a/docs/workshops/generator-architecture/miri-round4.md +++ b/docs/workshops/generator-architecture/miri-round4.md @@ -1,3 +1,14 @@ +--- +title: "Miri Round 4 — NPC Generation and Vessel Grammar" +description: "Concrete NPC generation specification, open question closure, and vessel grammar finalization" +type: workshop +status: archived +workshop: generator-architecture +agent: "miri" +round: 4 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Round 4: Miri (Worldbuilder) **Topic:** Write the NPC. Close the open questions. Finalize vessel grammar. diff --git a/docs/workshops/generator-architecture/miri-round5.md b/docs/workshops/generator-architecture/miri-round5.md index 10aef4478..d73352c65 100644 --- a/docs/workshops/generator-architecture/miri-round5.md +++ b/docs/workshops/generator-architecture/miri-round5.md @@ -1,3 +1,14 @@ +--- +title: "Miri Round 5 — Final Review" +description: "Final review and sign-off on workshop outcomes for worldbuilding domain" +type: workshop +status: archived +workshop: generator-architecture +agent: "miri" +round: 5 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Round 5: Miri (Worldbuilder) **Topic:** Final review of workshop-outcomes.md before D-record filing. diff --git a/docs/workshops/generator-architecture/nigel-round1.md b/docs/workshops/generator-architecture/nigel-round1.md index d0ebd9d7a..1a2aa7dc1 100644 --- a/docs/workshops/generator-architecture/nigel-round1.md +++ b/docs/workshops/generator-architecture/nigel-round1.md @@ -1,3 +1,14 @@ +--- +title: "Nigel Round 1 — Replayability Guarantees" +description: "Variation and replayability guarantees the generator must provide across playthroughs" +type: workshop +status: archived +workshop: generator-architecture +agent: "nigel" +round: 1 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Round 1: Nigel (Replayability & Procedural Generation) **Date:** 2026-02-27 diff --git a/docs/workshops/generator-architecture/nigel-round2.md b/docs/workshops/generator-architecture/nigel-round2.md index be24186ea..fb90f1bc9 100644 --- a/docs/workshops/generator-architecture/nigel-round2.md +++ b/docs/workshops/generator-architecture/nigel-round2.md @@ -1,3 +1,14 @@ +--- +title: "Nigel Round 2 — Beyond Investigation Replayability" +description: "Expanded replayability analysis for multiple playstyles, insignificant worlds, and non-urban terrain" +type: workshop +status: archived +workshop: generator-architecture +agent: "nigel" +round: 2 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Round 2: Nigel (Replayability & Procedural Generation) **Date:** 2026-02-27 diff --git a/docs/workshops/generator-architecture/nigel-round3.md b/docs/workshops/generator-architecture/nigel-round3.md index 9031bbca5..ec42e1f52 100644 --- a/docs/workshops/generator-architecture/nigel-round3.md +++ b/docs/workshops/generator-architecture/nigel-round3.md @@ -1,3 +1,14 @@ +--- +title: "Nigel Round 3 — Assassination and Dynamic Modification" +description: "Assassination replayability, dynamic world modification, mobile chunks, and playstyle mismatch" +type: workshop +status: archived +workshop: generator-architecture +agent: "nigel" +round: 3 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Round 3: Nigel (Replayability & Procedural Generation) **Date:** 2026-02-27 diff --git a/docs/workshops/generator-architecture/nigel-round4.md b/docs/workshops/generator-architecture/nigel-round4.md index 530986182..2b5e2ff59 100644 --- a/docs/workshops/generator-architecture/nigel-round4.md +++ b/docs/workshops/generator-architecture/nigel-round4.md @@ -1,3 +1,14 @@ +--- +title: "Nigel Round 4 — MobileChunk and Soft Re-generation" +description: "MobileChunk replayability, one NPC five lenses, soft re-generation coherence, and D-record sign-off" +type: workshop +status: archived +workshop: generator-architecture +agent: "nigel" +round: 4 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Round 4: Nigel (Replayability & Procedural Generation) **Date:** 2026-02-27 diff --git a/docs/workshops/generator-architecture/nigel-round5.md b/docs/workshops/generator-architecture/nigel-round5.md index cc572bb41..6f668d5db 100644 --- a/docs/workshops/generator-architecture/nigel-round5.md +++ b/docs/workshops/generator-architecture/nigel-round5.md @@ -1,3 +1,14 @@ +--- +title: "Nigel Round 5 — Final Review" +description: "Final review and sign-off on workshop outcomes for replayability domain" +type: workshop +status: archived +workshop: generator-architecture +agent: "nigel" +round: 5 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Round 5: Nigel (Final Review) **Date:** 2026-02-27 diff --git a/docs/workshops/generator-architecture/ozzie-round1.md b/docs/workshops/generator-architecture/ozzie-round1.md index 12f7dd030..adf280f98 100644 --- a/docs/workshops/generator-architecture/ozzie-round1.md +++ b/docs/workshops/generator-architecture/ozzie-round1.md @@ -1,3 +1,14 @@ +--- +title: "Ozzie Round 1 — Player Experience Perspective" +description: "Player experience requirements for generated spaces feeling real and distinct" +type: workshop +status: archived +workshop: generator-architecture +agent: "ozzie" +round: 1 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Round 1: Ozzie **Role:** Player Experience / Fan Perspective diff --git a/docs/workshops/generator-architecture/ozzie-round2.md b/docs/workshops/generator-architecture/ozzie-round2.md index 3a173b090..f9bda0ba3 100644 --- a/docs/workshops/generator-architecture/ozzie-round2.md +++ b/docs/workshops/generator-architecture/ozzie-round2.md @@ -1,3 +1,14 @@ +--- +title: "Ozzie Round 2 — Player Gut Reactions" +description: "Player perspective on cultural ingredients, visual grammar, and procedural sameness avoidance" +type: workshop +status: archived +workshop: generator-architecture +agent: "ozzie" +round: 2 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Round 2: Ozzie **Role:** Player Experience / Fan Perspective diff --git a/docs/workshops/generator-architecture/ozzie-round3.md b/docs/workshops/generator-architecture/ozzie-round3.md index 055e2c6c1..7702781db 100644 --- a/docs/workshops/generator-architecture/ozzie-round3.md +++ b/docs/workshops/generator-architecture/ozzie-round3.md @@ -1,3 +1,14 @@ +--- +title: "Ozzie Round 3 — Grid Breathing and Organic Chaos" +description: "Player experience description of organic chaos, grid breathing, and what convinces a player" +type: workshop +status: archived +workshop: generator-architecture +agent: "ozzie" +round: 3 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Round 3: Ozzie **Role:** Player Experience / Fan Perspective diff --git a/docs/workshops/generator-architecture/ozzie-round4.md b/docs/workshops/generator-architecture/ozzie-round4.md index 1a48c1ff9..3b9305914 100644 --- a/docs/workshops/generator-architecture/ozzie-round4.md +++ b/docs/workshops/generator-architecture/ozzie-round4.md @@ -1,3 +1,14 @@ +--- +title: "Ozzie Round 4 — The Fan's Verdict" +description: "Final player verdicts on vessels, destruction, and all remaining open questions" +type: workshop +status: archived +workshop: generator-architecture +agent: "ozzie" +round: 4 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Round 4 (Final): Ozzie **Role:** Player Experience / Fan Perspective diff --git a/docs/workshops/generator-architecture/ozzie-round5.md b/docs/workshops/generator-architecture/ozzie-round5.md index 75d6fff6f..8d615df97 100644 --- a/docs/workshops/generator-architecture/ozzie-round5.md +++ b/docs/workshops/generator-architecture/ozzie-round5.md @@ -1,3 +1,14 @@ +--- +title: "Ozzie Round 5 — Final Review" +description: "Final review and sign-off on workshop outcomes from player experience perspective" +type: workshop +status: archived +workshop: generator-architecture +agent: "ozzie" +round: 5 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Round 5 (Final Review): Ozzie **Role:** Player Experience / Fan Perspective diff --git a/docs/workshops/generator-architecture/round-1-notes.md b/docs/workshops/generator-architecture/round-1-notes.md index ef6953db2..bc99257e7 100644 --- a/docs/workshops/generator-architecture/round-1-notes.md +++ b/docs/workshops/generator-architecture/round-1-notes.md @@ -1,3 +1,14 @@ +--- +title: "Round 1 Notes" +description: "Qatux compilation of all round 1 participant outputs and emerging themes" +type: workshop +status: archived +workshop: generator-architecture +agent: "" +round: 1 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Round 1 Notes **Compiled by:** Qatux (Documenter) diff --git a/docs/workshops/generator-architecture/round-2-notes.md b/docs/workshops/generator-architecture/round-2-notes.md index b78e59267..b5511eec9 100644 --- a/docs/workshops/generator-architecture/round-2-notes.md +++ b/docs/workshops/generator-architecture/round-2-notes.md @@ -1,3 +1,14 @@ +--- +title: "Round 2 Notes" +description: "Qatux compilation of all round 2 participant outputs and convergence points" +type: workshop +status: archived +workshop: generator-architecture +agent: "" +round: 2 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Round 2 Notes **Compiled by:** Qatux (Documenter) diff --git a/docs/workshops/generator-architecture/round-3-notes.md b/docs/workshops/generator-architecture/round-3-notes.md index d688897a0..b5d983e00 100644 --- a/docs/workshops/generator-architecture/round-3-notes.md +++ b/docs/workshops/generator-architecture/round-3-notes.md @@ -1,3 +1,14 @@ +--- +title: "Round 3 Notes" +description: "Qatux compilation of all round 3 participant outputs and open questions" +type: workshop +status: archived +workshop: generator-architecture +agent: "" +round: 3 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Round 3 Notes **Compiled by:** Qatux (Documenter) diff --git a/docs/workshops/generator-architecture/round-4-notes.md b/docs/workshops/generator-architecture/round-4-notes.md index f6d438fe2..cd7f4a156 100644 --- a/docs/workshops/generator-architecture/round-4-notes.md +++ b/docs/workshops/generator-architecture/round-4-notes.md @@ -1,3 +1,14 @@ +--- +title: "Round 4 Notes" +description: "Qatux compilation of all round 4 participant outputs and final convergence" +type: workshop +status: archived +workshop: generator-architecture +agent: "" +round: 4 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Round 4 Notes **Workshop:** Generator Architecture (#562) diff --git a/docs/workshops/generator-architecture/round-5-notes.md b/docs/workshops/generator-architecture/round-5-notes.md index 1a5ffb5db..14521c130 100644 --- a/docs/workshops/generator-architecture/round-5-notes.md +++ b/docs/workshops/generator-architecture/round-5-notes.md @@ -1,3 +1,14 @@ +--- +title: "Round 5 Notes" +description: "Qatux compilation of all round 5 sign-off reviews and corrections" +type: workshop +status: archived +workshop: generator-architecture +agent: "" +round: 5 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Round 5 Notes **Workshop:** Generator Architecture (#562) diff --git a/docs/workshops/generator-architecture/tyre-round1.md b/docs/workshops/generator-architecture/tyre-round1.md index 02d52891b..20e8b9f9d 100644 --- a/docs/workshops/generator-architecture/tyre-round1.md +++ b/docs/workshops/generator-architecture/tyre-round1.md @@ -1,3 +1,14 @@ +--- +title: "Tyre Round 1 — Technical Constraints" +description: "Hard technical constraints on spatial hierarchy, chunk sizes, and streaming architecture" +type: workshop +status: archived +workshop: generator-architecture +agent: "tyre" +round: 1 +created: 2026-02-27 +--- + # Round 1: Tyre — Technical Constraints on Generator Architecture **Workshop:** Generator Architecture (#562) diff --git a/docs/workshops/generator-architecture/tyre-round2.md b/docs/workshops/generator-architecture/tyre-round2.md index 23c3be9c6..df9e13c8f 100644 --- a/docs/workshops/generator-architecture/tyre-round2.md +++ b/docs/workshops/generator-architecture/tyre-round2.md @@ -1,3 +1,14 @@ +--- +title: "Tyre Round 2 — Two-Phase Pipeline" +description: "Two-phase generation architecture with edge bleed and playstyle-agnostic spatial guarantees" +type: workshop +status: archived +workshop: generator-architecture +agent: "tyre" +round: 2 +created: 2026-02-27 +--- + # Round 2: Tyre — Technical Pipeline with Two-Phase Generation and Edge Bleed **Workshop:** Generator Architecture (#562) diff --git a/docs/workshops/generator-architecture/tyre-round3.md b/docs/workshops/generator-architecture/tyre-round3.md index 2d5874e1f..abbdd2c5b 100644 --- a/docs/workshops/generator-architecture/tyre-round3.md +++ b/docs/workshops/generator-architecture/tyre-round3.md @@ -1,3 +1,14 @@ +--- +title: "Tyre Round 3 — DistrictSkeleton and Mobile Chunks" +description: "Canonical DistrictSkeleton specification, mobile chunks, grid breathing, and vertical scale" +type: workshop +status: archived +workshop: generator-architecture +agent: "tyre" +round: 3 +created: 2026-02-27 +--- + # Round 3: Tyre — Canonical DistrictSkeleton, Mobile Chunks, Grid Breathing, Vertical Scale **Workshop:** Generator Architecture (#562) diff --git a/docs/workshops/generator-architecture/tyre-round4.md b/docs/workshops/generator-architecture/tyre-round4.md index 84c92e5f4..1fbf85ec1 100644 --- a/docs/workshops/generator-architecture/tyre-round4.md +++ b/docs/workshops/generator-architecture/tyre-round4.md @@ -1,3 +1,14 @@ +--- +title: "Tyre Round 4 — Architecture Finalization" +description: "Final MobileChunk specification, architecture finalization, and D-record accuracy review" +type: workshop +status: archived +workshop: generator-architecture +agent: "tyre" +round: 4 +created: 2026-02-27 +--- + # Round 4: Tyre — Architecture Finalization **Workshop:** Generator Architecture (#562) diff --git a/docs/workshops/generator-architecture/tyre-round5.md b/docs/workshops/generator-architecture/tyre-round5.md index 3633fe92c..f4637ad47 100644 --- a/docs/workshops/generator-architecture/tyre-round5.md +++ b/docs/workshops/generator-architecture/tyre-round5.md @@ -1,3 +1,14 @@ +--- +title: "Tyre Round 5 — Final Review" +description: "Final review of workshop outcomes for technical architecture accuracy" +type: workshop +status: archived +workshop: generator-architecture +agent: "tyre" +round: 5 +created: 2026-02-27 +--- + # Round 5: Tyre — Final Review of Workshop Outcomes **Workshop:** Generator Architecture (#562) diff --git a/docs/workshops/generator-architecture/workshop-brief.md b/docs/workshops/generator-architecture/workshop-brief.md index c0fe4c87e..a4e8bd3df 100644 --- a/docs/workshops/generator-architecture/workshop-brief.md +++ b/docs/workshops/generator-architecture/workshop-brief.md @@ -1,3 +1,14 @@ +--- +title: "Workshop Brief" +description: "Workshop goals, participants, source context, and round structure for generator architecture" +type: workshop +status: archived +workshop: generator-architecture +agent: "" +round: 0 +created: 2026-02-27 +--- + # Generator Architecture Workshop Brief **Goal:** Establish the top-down procedural generator pipeline architecture — from geography down to individual chunk fill — that will power the 300-world model. Produce a D-record defining generator primitives, the spatial hierarchy, and the sub-chunk building system. diff --git a/docs/workshops/generator-architecture/workshop-outcomes.md b/docs/workshops/generator-architecture/workshop-outcomes.md index f74a0cae8..301b148a8 100644 --- a/docs/workshops/generator-architecture/workshop-outcomes.md +++ b/docs/workshops/generator-architecture/workshop-outcomes.md @@ -1,3 +1,14 @@ +--- +title: "Workshop Outcomes" +description: "Authoritative summary of all confirmed decisions, canonical data structures, and D-record inventory" +type: workshop +status: archived +workshop: generator-architecture +agent: "" +round: 0 +created: 2026-02-27 +--- + # Generator Architecture Workshop — Outcomes **Workshop:** Generator Architecture (#562) From 60ffe2e02a50dd18e1a09080554a32071748ddb6 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Fri, 13 Mar 2026 23:40:44 +0100 Subject: [PATCH 16/28] docs(docs): add frontmatter to knowledge-flow-npc-boundaries workshop Standardized YAML frontmatter on all 12 files. Co-Authored-By: Claude Opus 4.6 --- .../knowledge-flow-npc-boundaries/dudley-round1.md | 11 +++++++++++ .../knowledge-flow-npc-boundaries/dudley-round2.md | 11 +++++++++++ .../knowledge-flow-npc-boundaries/gestalt-round1.md | 11 +++++++++++ .../knowledge-flow-npc-boundaries/gestalt-round2.md | 11 +++++++++++ .../knowledge-flow-npc-boundaries/paula-round1.md | 11 +++++++++++ .../knowledge-flow-npc-boundaries/paula-round2.md | 11 +++++++++++ .../knowledge-flow-npc-boundaries/round-1-notes.md | 11 +++++++++++ .../knowledge-flow-npc-boundaries/round-2-notes.md | 11 +++++++++++ .../knowledge-flow-npc-boundaries/tyre-round1.md | 11 +++++++++++ .../knowledge-flow-npc-boundaries/tyre-round2.md | 11 +++++++++++ .../knowledge-flow-npc-boundaries/workshop-brief.md | 11 +++++++++++ .../workshop-outcomes.md | 11 +++++++++++ 12 files changed, 132 insertions(+) diff --git a/docs/workshops/knowledge-flow-npc-boundaries/dudley-round1.md b/docs/workshops/knowledge-flow-npc-boundaries/dudley-round1.md index 99cbd710f..1a6058dc9 100644 --- a/docs/workshops/knowledge-flow-npc-boundaries/dudley-round1.md +++ b/docs/workshops/knowledge-flow-npc-boundaries/dudley-round1.md @@ -1,3 +1,14 @@ +--- +title: "Workshop Round 1 — Dudley: Implementation Feasibility Analysis" +description: "Dudley's Round 1 analysis of Rust implementation feasibility, ECS integration, and edge cases for knowledge flow systems" +type: workshop +status: archived +workshop: knowledge-flow-npc-boundaries +agent: "dudley" +round: 1 +created: 2026-02-23 +--- + # Workshop Round 1 — Dudley: Implementation Feasibility Analysis **Workshop:** Knowledge Flow & NPC Information Boundaries diff --git a/docs/workshops/knowledge-flow-npc-boundaries/dudley-round2.md b/docs/workshops/knowledge-flow-npc-boundaries/dudley-round2.md index 905f67f30..8c09bf9aa 100644 --- a/docs/workshops/knowledge-flow-npc-boundaries/dudley-round2.md +++ b/docs/workshops/knowledge-flow-npc-boundaries/dudley-round2.md @@ -1,3 +1,14 @@ +--- +title: "Workshop Round 2 — Dudley: Cross-Review and Synthesis" +description: "Dudley's Round 2 cross-review resolving entity grant tension, implementation ticket specs, and build order" +type: workshop +status: archived +workshop: knowledge-flow-npc-boundaries +agent: "dudley" +round: 2 +created: 2026-02-23 +--- + # Workshop Round 2 — Dudley: Cross-Review and Synthesis **Workshop:** Knowledge Flow & NPC Information Boundaries diff --git a/docs/workshops/knowledge-flow-npc-boundaries/gestalt-round1.md b/docs/workshops/knowledge-flow-npc-boundaries/gestalt-round1.md index 5c028299b..27c46eec4 100644 --- a/docs/workshops/knowledge-flow-npc-boundaries/gestalt-round1.md +++ b/docs/workshops/knowledge-flow-npc-boundaries/gestalt-round1.md @@ -1,3 +1,14 @@ +--- +title: "Gestalt Round 1 — Systems Design Analysis" +description: "Gestalt's Round 1 systems design analysis evaluating knowledge mechanisms as gameplay levers for asymmetric information" +type: workshop +status: archived +workshop: knowledge-flow-npc-boundaries +agent: "gestalt" +round: 1 +created: 2026-02-23 +--- + # Gestalt Round 1 — Systems Design Analysis ## Knowledge Flow & NPC Information Boundaries Workshop diff --git a/docs/workshops/knowledge-flow-npc-boundaries/gestalt-round2.md b/docs/workshops/knowledge-flow-npc-boundaries/gestalt-round2.md index 3ee64374b..60931c3d6 100644 --- a/docs/workshops/knowledge-flow-npc-boundaries/gestalt-round2.md +++ b/docs/workshops/knowledge-flow-npc-boundaries/gestalt-round2.md @@ -1,3 +1,14 @@ +--- +title: "Gestalt Round 2 — Cross-Review, Synthesis, and D-Record Contributions" +description: "Gestalt's Round 2 cross-review resolving tensions, scoping entity grants narrowly, and contributing D-record drafts" +type: workshop +status: archived +workshop: knowledge-flow-npc-boundaries +agent: "gestalt" +round: 2 +created: 2026-02-23 +--- + # Gestalt Round 2 — Cross-Review, Synthesis, and D-Record Contributions ## Knowledge Flow & NPC Information Boundaries Workshop diff --git a/docs/workshops/knowledge-flow-npc-boundaries/paula-round1.md b/docs/workshops/knowledge-flow-npc-boundaries/paula-round1.md index cfbd445c8..c3197613c 100644 --- a/docs/workshops/knowledge-flow-npc-boundaries/paula-round1.md +++ b/docs/workshops/knowledge-flow-npc-boundaries/paula-round1.md @@ -1,3 +1,14 @@ +--- +title: "Paula — Round 1: Narrative Analysis" +description: "Paula's Round 1 narrative analysis of knowledge grants, testimony semantics, and THE FRIEND arc mechanical requirements" +type: workshop +status: archived +workshop: knowledge-flow-npc-boundaries +agent: "paula" +round: 1 +created: 2026-02-23 +--- + # Paula — Round 1: Narrative Analysis ## Knowledge Flow & NPC Information Boundaries Workshop diff --git a/docs/workshops/knowledge-flow-npc-boundaries/paula-round2.md b/docs/workshops/knowledge-flow-npc-boundaries/paula-round2.md index 14fe3a3e5..6b4cd8ec0 100644 --- a/docs/workshops/knowledge-flow-npc-boundaries/paula-round2.md +++ b/docs/workshops/knowledge-flow-npc-boundaries/paula-round2.md @@ -1,3 +1,14 @@ +--- +title: "Paula — Round 2: Cross-Review and Synthesis" +description: "Paula's Round 2 cross-review accepting the FactId workaround with binding conditions and specifying contradiction monologue authoring" +type: workshop +status: archived +workshop: knowledge-flow-npc-boundaries +agent: "paula" +round: 2 +created: 2026-02-24 +--- + # Paula — Round 2: Cross-Review and Synthesis ## Knowledge Flow & NPC Information Boundaries Workshop diff --git a/docs/workshops/knowledge-flow-npc-boundaries/round-1-notes.md b/docs/workshops/knowledge-flow-npc-boundaries/round-1-notes.md index 7c1511801..0f26ffd7a 100644 --- a/docs/workshops/knowledge-flow-npc-boundaries/round-1-notes.md +++ b/docs/workshops/knowledge-flow-npc-boundaries/round-1-notes.md @@ -1,3 +1,14 @@ +--- +title: "Round 1 Notes — Knowledge Flow & NPC Information Boundaries Workshop" +description: "Qatux's Round 1 synthesis documenting consensus positions, tension points, and open questions across all four participants" +type: workshop +status: archived +workshop: knowledge-flow-npc-boundaries +agent: "qatux" +round: 1 +created: 2026-02-23 +--- + # Round 1 Notes — Knowledge Flow & NPC Information Boundaries Workshop **Documented by:** Qatux diff --git a/docs/workshops/knowledge-flow-npc-boundaries/round-2-notes.md b/docs/workshops/knowledge-flow-npc-boundaries/round-2-notes.md index cca938c15..7cd91c2ac 100644 --- a/docs/workshops/knowledge-flow-npc-boundaries/round-2-notes.md +++ b/docs/workshops/knowledge-flow-npc-boundaries/round-2-notes.md @@ -1,3 +1,14 @@ +--- +title: "Round 2 Notes — Knowledge Flow & NPC Information Boundaries Workshop" +description: "Qatux's Round 2 synthesis documenting tension resolutions, entity grant split outcome, and D-record readiness" +type: workshop +status: archived +workshop: knowledge-flow-npc-boundaries +agent: "qatux" +round: 2 +created: 2026-02-24 +--- + # Round 2 Notes — Knowledge Flow & NPC Information Boundaries Workshop **Documented by:** Qatux diff --git a/docs/workshops/knowledge-flow-npc-boundaries/tyre-round1.md b/docs/workshops/knowledge-flow-npc-boundaries/tyre-round1.md index eb681003b..0c358274c 100644 --- a/docs/workshops/knowledge-flow-npc-boundaries/tyre-round1.md +++ b/docs/workshops/knowledge-flow-npc-boundaries/tyre-round1.md @@ -1,3 +1,14 @@ +--- +title: "Round 1: Tyre — Architecture Analysis" +description: "Tyre's Round 1 architecture analysis of grant mechanism wiring, ECS patterns, and performance budgets" +type: workshop +status: archived +workshop: knowledge-flow-npc-boundaries +agent: "tyre" +round: 1 +created: 2026-02-23 +--- + # Round 1: Tyre -- Architecture Analysis **Workshop:** Knowledge Flow & NPC Information Boundaries diff --git a/docs/workshops/knowledge-flow-npc-boundaries/tyre-round2.md b/docs/workshops/knowledge-flow-npc-boundaries/tyre-round2.md index 397ca12bc..f3ba034bc 100644 --- a/docs/workshops/knowledge-flow-npc-boundaries/tyre-round2.md +++ b/docs/workshops/knowledge-flow-npc-boundaries/tyre-round2.md @@ -1,3 +1,14 @@ +--- +title: "Round 2: Tyre — Cross-Review and Synthesis" +description: "Tyre's Round 2 cross-review resolving entity grants for Sprint 17 via ContentEntityRegistry and sizing the implementation" +type: workshop +status: archived +workshop: knowledge-flow-npc-boundaries +agent: "tyre" +round: 2 +created: 2026-02-23 +--- + # Round 2: Tyre -- Cross-Review and Synthesis **Workshop:** Knowledge Flow & NPC Information Boundaries diff --git a/docs/workshops/knowledge-flow-npc-boundaries/workshop-brief.md b/docs/workshops/knowledge-flow-npc-boundaries/workshop-brief.md index 58c090185..159c67514 100644 --- a/docs/workshops/knowledge-flow-npc-boundaries/workshop-brief.md +++ b/docs/workshops/knowledge-flow-npc-boundaries/workshop-brief.md @@ -1,3 +1,14 @@ +--- +title: "Knowledge Flow & NPC Information Boundaries Workshop Brief" +description: "Workshop brief defining scope, participants, and Sprint 17 dependencies for knowledge grant, gossip, disclosure, and contradiction systems" +type: workshop +status: archived +workshop: knowledge-flow-npc-boundaries +agent: "" +round: 0 +created: 2026-02-23 +--- + # Knowledge Flow & NPC Information Boundaries Workshop Brief **Goal:** Design the knowledge grant mechanism, NPC-to-NPC knowledge propagation, unprompted disclosure mechanics, NPC information boundaries, and contradiction detection algorithm -- resolving the functional gap between the mature D-041 data model and the Sprint 17 tickets that depend on it. diff --git a/docs/workshops/knowledge-flow-npc-boundaries/workshop-outcomes.md b/docs/workshops/knowledge-flow-npc-boundaries/workshop-outcomes.md index 140919684..ae7d5bd0a 100644 --- a/docs/workshops/knowledge-flow-npc-boundaries/workshop-outcomes.md +++ b/docs/workshops/knowledge-flow-npc-boundaries/workshop-outcomes.md @@ -1,3 +1,14 @@ +--- +title: "Workshop Outcomes — Knowledge Flow & NPC Information Boundaries" +description: "Final workshop outcomes with D-079 through D-083 decision records for grant architecture, NPC propagation, disclosure, boundaries, and contradiction detection" +type: workshop +status: archived +workshop: knowledge-flow-npc-boundaries +agent: "qatux" +round: 2 +created: 2026-02-24 +--- + # Workshop Outcomes — Knowledge Flow & NPC Information Boundaries **Workshop date:** 2026-02-23 — 2026-02-24 From da63a93446a3d906bf20d7070b1017f8ee1e5b9b Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Fri, 13 Mar 2026 23:40:51 +0100 Subject: [PATCH 17/28] docs(docs): add frontmatter to knowledge-graph-information-boundaries workshop Standardized YAML frontmatter on all 10 files. Co-Authored-By: Claude Opus 4.6 --- .../round1-dudley.md | 11 +++++++++++ .../round1-gestalt.md | 11 +++++++++++ .../round1-paula.md | 11 +++++++++++ .../round1-si.md | 11 +++++++++++ .../round1-tyre.md | 11 +++++++++++ .../round2-gestalt.md | 11 +++++++++++ .../round2-synthesis.md | 11 +++++++++++ .../sprint2-impact.md | 11 +++++++++++ .../workshop-brief.md | 11 +++++++++++ .../workshop-outcomes.md | 11 +++++++++++ 10 files changed, 110 insertions(+) diff --git a/docs/workshops/knowledge-graph-information-boundaries/round1-dudley.md b/docs/workshops/knowledge-graph-information-boundaries/round1-dudley.md index 8aab59e31..e9a17e843 100644 --- a/docs/workshops/knowledge-graph-information-boundaries/round1-dudley.md +++ b/docs/workshops/knowledge-graph-information-boundaries/round1-dudley.md @@ -1,3 +1,14 @@ +--- +title: "Knowledge Graph & Information Boundaries — Round 1 Implementation Analysis" +description: "Dudley's implementation analysis of ECS integration, performance, and buildable paths for the knowledge graph" +type: workshop +status: archived +workshop: knowledge-graph-information-boundaries +agent: "dudley" +round: 1 +created: 2026-02-11 +--- + # Knowledge Graph & Information Boundaries — Round 1 Implementation Analysis **Author:** Dudley (Server Implementation Specialist) diff --git a/docs/workshops/knowledge-graph-information-boundaries/round1-gestalt.md b/docs/workshops/knowledge-graph-information-boundaries/round1-gestalt.md index b085b84e8..65332ba56 100644 --- a/docs/workshops/knowledge-graph-information-boundaries/round1-gestalt.md +++ b/docs/workshops/knowledge-graph-information-boundaries/round1-gestalt.md @@ -1,3 +1,14 @@ +--- +title: "Knowledge Graph & Information Boundaries — Round 1 (Gestalt)" +description: "Gestalt's mechanics analysis of how the knowledge graph creates gameplay decisions and emergent fun" +type: workshop +status: archived +workshop: knowledge-graph-information-boundaries +agent: "gestalt" +round: 1 +created: 2026-02-11 +--- + # Knowledge Graph & Information Boundaries — Round 1 (Gestalt) **Role:** Mechanics Specialist diff --git a/docs/workshops/knowledge-graph-information-boundaries/round1-paula.md b/docs/workshops/knowledge-graph-information-boundaries/round1-paula.md index 25e103897..f8fa2111e 100644 --- a/docs/workshops/knowledge-graph-information-boundaries/round1-paula.md +++ b/docs/workshops/knowledge-graph-information-boundaries/round1-paula.md @@ -1,3 +1,14 @@ +--- +title: "Knowledge Graph & Information Boundaries — Round 1 (Paula)" +description: "Paula's narrative analysis of knowledge as relationship currency and social gameplay driver" +type: workshop +status: archived +workshop: knowledge-graph-information-boundaries +agent: "paula" +round: 1 +created: 2026-02-11 +--- + # Knowledge Graph & Information Boundaries — Round 1 (Paula) **Role:** Narrative & Political Depth Specialist diff --git a/docs/workshops/knowledge-graph-information-boundaries/round1-si.md b/docs/workshops/knowledge-graph-information-boundaries/round1-si.md index 7bc54ba31..12a931497 100644 --- a/docs/workshops/knowledge-graph-information-boundaries/round1-si.md +++ b/docs/workshops/knowledge-graph-information-boundaries/round1-si.md @@ -1,3 +1,14 @@ +--- +title: "Knowledge Graph & Information Boundaries Workshop — Round 1: SI (Project Management)" +description: "SI's project management analysis of ticket dependencies, sprint impact, and risk assessment for the knowledge graph" +type: workshop +status: archived +workshop: knowledge-graph-information-boundaries +agent: "si" +round: 1 +created: 2026-02-11 +--- + # Knowledge Graph & Information Boundaries Workshop — Round 1: SI (Project Management) **Author:** SI (Project Manager, Scrum Master) diff --git a/docs/workshops/knowledge-graph-information-boundaries/round1-tyre.md b/docs/workshops/knowledge-graph-information-boundaries/round1-tyre.md index 838fd2362..4f2b6f1ae 100644 --- a/docs/workshops/knowledge-graph-information-boundaries/round1-tyre.md +++ b/docs/workshops/knowledge-graph-information-boundaries/round1-tyre.md @@ -1,3 +1,14 @@ +--- +title: "Round 1: Tyre (Technical Architect) — Knowledge Graph & Information Boundaries" +description: "Tyre's architectural analysis of knowledge graph data model, ECS integration, and Sprint 2 stub design" +type: workshop +status: archived +workshop: knowledge-graph-information-boundaries +agent: "tyre" +round: 1 +created: 2026-02-11 +--- + # Round 1: Tyre (Technical Architect) -- Knowledge Graph & Information Boundaries **Workshop:** Knowledge Graph & Information Boundaries (Epic #351) diff --git a/docs/workshops/knowledge-graph-information-boundaries/round2-gestalt.md b/docs/workshops/knowledge-graph-information-boundaries/round2-gestalt.md index 3470ca58e..8682064d8 100644 --- a/docs/workshops/knowledge-graph-information-boundaries/round2-gestalt.md +++ b/docs/workshops/knowledge-graph-information-boundaries/round2-gestalt.md @@ -1,3 +1,14 @@ +--- +title: "Knowledge Graph Workshop — Round 2: Mechanics Validation" +description: "Gestalt's cross-validation of gameplay mechanics against the proposed knowledge graph architecture" +type: workshop +status: archived +workshop: knowledge-graph-information-boundaries +agent: "gestalt" +round: 2 +created: 2026-02-11 +--- + # Knowledge Graph Workshop — Round 2: Mechanics Validation **Role:** GESTALT (Systems Designer) diff --git a/docs/workshops/knowledge-graph-information-boundaries/round2-synthesis.md b/docs/workshops/knowledge-graph-information-boundaries/round2-synthesis.md index 721e1ec34..576a1ef5c 100644 --- a/docs/workshops/knowledge-graph-information-boundaries/round2-synthesis.md +++ b/docs/workshops/knowledge-graph-information-boundaries/round2-synthesis.md @@ -1,3 +1,14 @@ +--- +title: "Knowledge Graph & Information Boundaries Workshop — Round 2 Synthesis" +description: "Final synthesis of workshop agreements, resolved debates, and canonical knowledge graph data structures" +type: workshop +status: archived +workshop: knowledge-graph-information-boundaries +agent: "" +round: 2 +created: 2026-02-11 +--- + # Knowledge Graph & Information Boundaries Workshop -- Round 2 Synthesis **Author:** Tyre (Architecture Lead, synthesis role) diff --git a/docs/workshops/knowledge-graph-information-boundaries/sprint2-impact.md b/docs/workshops/knowledge-graph-information-boundaries/sprint2-impact.md index ca51544a0..7ecab9e8b 100644 --- a/docs/workshops/knowledge-graph-information-boundaries/sprint2-impact.md +++ b/docs/workshops/knowledge-graph-information-boundaries/sprint2-impact.md @@ -1,3 +1,14 @@ +--- +title: "Sprint 2 Impact Summary — Knowledge Graph Workshop" +description: "Sprint 2 scope impact analysis with 8 new tickets, critical path changes, and risk assessment" +type: workshop +status: archived +workshop: knowledge-graph-information-boundaries +agent: "" +round: 0 +created: 2026-02-11 +--- + # Sprint 2 Impact Summary — Knowledge Graph Workshop **Date:** 2026-02-11 diff --git a/docs/workshops/knowledge-graph-information-boundaries/workshop-brief.md b/docs/workshops/knowledge-graph-information-boundaries/workshop-brief.md index 6781b951a..bb754f926 100644 --- a/docs/workshops/knowledge-graph-information-boundaries/workshop-brief.md +++ b/docs/workshops/knowledge-graph-information-boundaries/workshop-brief.md @@ -1,3 +1,14 @@ +--- +title: "Knowledge Graph & Information Boundaries Workshop Brief" +description: "Workshop brief defining goals, context, and deliverables for the knowledge graph design workshop" +type: workshop +status: archived +workshop: knowledge-graph-information-boundaries +agent: "" +round: 0 +created: 2026-02-11 +--- + # Knowledge Graph & Information Boundaries Workshop Brief **Goal:** Design the knowledge data structure that replaces `InformationInventory { known_facts: Vec }` — the pillar-1 mechanic foundation for asymmetric information. diff --git a/docs/workshops/knowledge-graph-information-boundaries/workshop-outcomes.md b/docs/workshops/knowledge-graph-information-boundaries/workshop-outcomes.md index f59af5bac..94aedec26 100644 --- a/docs/workshops/knowledge-graph-information-boundaries/workshop-outcomes.md +++ b/docs/workshops/knowledge-graph-information-boundaries/workshop-outcomes.md @@ -1,3 +1,14 @@ +--- +title: "Workshop Outcomes: Knowledge Graph & Information Boundaries" +description: "Final outcomes summary with decisions filed, tickets created, and workshop accomplishments" +type: workshop +status: archived +workshop: knowledge-graph-information-boundaries +agent: "" +round: 0 +created: 2026-02-11 +--- + # Workshop Outcomes: Knowledge Graph & Information Boundaries **Workshop:** Knowledge Graph & Information Boundaries From 2a6a023196ceda3bd57e8ad0d5c323bd33182e76 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Fri, 13 Mar 2026 23:40:59 +0100 Subject: [PATCH 18/28] docs(docs): add frontmatter to llm-voice-pipeline workshop Standardized YAML frontmatter on all 28 files. Co-Authored-By: Claude Opus 4.6 --- docs/workshops/llm-voice-pipeline/gestalt-round1.md | 11 +++++++++++ docs/workshops/llm-voice-pipeline/gestalt-round2.md | 11 +++++++++++ docs/workshops/llm-voice-pipeline/gestalt-round3.md | 11 +++++++++++ docs/workshops/llm-voice-pipeline/mellanie-round1.md | 11 +++++++++++ docs/workshops/llm-voice-pipeline/mellanie-round2.md | 11 +++++++++++ docs/workshops/llm-voice-pipeline/mellanie-round3.md | 11 +++++++++++ docs/workshops/llm-voice-pipeline/miri-round1.md | 11 +++++++++++ docs/workshops/llm-voice-pipeline/miri-round2.md | 11 +++++++++++ docs/workshops/llm-voice-pipeline/miri-round3.md | 11 +++++++++++ docs/workshops/llm-voice-pipeline/ozzie-round1.md | 11 +++++++++++ docs/workshops/llm-voice-pipeline/ozzie-round2.md | 11 +++++++++++ docs/workshops/llm-voice-pipeline/ozzie-round3.md | 11 +++++++++++ docs/workshops/llm-voice-pipeline/paula-round1.md | 11 +++++++++++ docs/workshops/llm-voice-pipeline/paula-round2.md | 11 +++++++++++ docs/workshops/llm-voice-pipeline/paula-round3.md | 11 +++++++++++ docs/workshops/llm-voice-pipeline/round-1-notes.md | 11 +++++++++++ docs/workshops/llm-voice-pipeline/round-2-notes.md | 11 +++++++++++ .../workshops/llm-voice-pipeline/round-2-proposals.md | 11 +++++++++++ docs/workshops/llm-voice-pipeline/round-3-inputs.md | 11 +++++++++++ docs/workshops/llm-voice-pipeline/si-tickets.md | 11 +++++++++++ docs/workshops/llm-voice-pipeline/troblum-round1.md | 11 +++++++++++ docs/workshops/llm-voice-pipeline/troblum-round2.md | 11 +++++++++++ docs/workshops/llm-voice-pipeline/troblum-round3.md | 11 +++++++++++ docs/workshops/llm-voice-pipeline/tyre-round1.md | 11 +++++++++++ docs/workshops/llm-voice-pipeline/tyre-round2.md | 11 +++++++++++ docs/workshops/llm-voice-pipeline/tyre-round3.md | 11 +++++++++++ docs/workshops/llm-voice-pipeline/workshop-brief.md | 11 +++++++++++ .../workshops/llm-voice-pipeline/workshop-outcomes.md | 11 +++++++++++ 28 files changed, 308 insertions(+) diff --git a/docs/workshops/llm-voice-pipeline/gestalt-round1.md b/docs/workshops/llm-voice-pipeline/gestalt-round1.md index 6f11965dd..08d7398ca 100644 --- a/docs/workshops/llm-voice-pipeline/gestalt-round1.md +++ b/docs/workshops/llm-voice-pipeline/gestalt-round1.md @@ -1,3 +1,14 @@ +--- +title: "Gestalt Round 1: Systems Design Inventory" +description: "Systems design inventory of LLM voice pipeline options and trade-offs" +type: workshop +status: archived +workshop: llm-voice-pipeline +agent: "gestalt" +round: 1 +created: 2026-03-07 +--- + # LLM Voice Pipeline Workshop — Round 1: Systems Design Inventory **Author:** Gestalt diff --git a/docs/workshops/llm-voice-pipeline/gestalt-round2.md b/docs/workshops/llm-voice-pipeline/gestalt-round2.md index e8c9b753d..50bafccbe 100644 --- a/docs/workshops/llm-voice-pipeline/gestalt-round2.md +++ b/docs/workshops/llm-voice-pipeline/gestalt-round2.md @@ -1,3 +1,14 @@ +--- +title: "Gestalt Round 2: Systems Design Evaluation" +description: "Convergent evaluation of LLM voice pipeline proposals from systems design perspective" +type: workshop +status: archived +workshop: llm-voice-pipeline +agent: "gestalt" +round: 2 +created: 2026-03-07 +--- + # LLM Voice Pipeline Workshop — Round 2: Systems Design Evaluation **Author:** Gestalt diff --git a/docs/workshops/llm-voice-pipeline/gestalt-round3.md b/docs/workshops/llm-voice-pipeline/gestalt-round3.md index c9d173b21..da0f01eb7 100644 --- a/docs/workshops/llm-voice-pipeline/gestalt-round3.md +++ b/docs/workshops/llm-voice-pipeline/gestalt-round3.md @@ -1,3 +1,14 @@ +--- +title: "Gestalt Round 3: D-record, Tell-as-Context Design, Spike Criteria" +description: "D-record drafting, tell-as-context design, and spike 1 acceptance criteria" +type: workshop +status: archived +workshop: llm-voice-pipeline +agent: "gestalt" +round: 3 +created: 2026-03-07 +--- + # LLM Voice Pipeline Workshop — Round 3: D-record, Tell-as-Context Design, Spike 1 Criteria **Author:** Gestalt diff --git a/docs/workshops/llm-voice-pipeline/mellanie-round1.md b/docs/workshops/llm-voice-pipeline/mellanie-round1.md index e243cd303..2a83682f9 100644 --- a/docs/workshops/llm-voice-pipeline/mellanie-round1.md +++ b/docs/workshops/llm-voice-pipeline/mellanie-round1.md @@ -1,3 +1,14 @@ +--- +title: "Mellanie Round 1: Content Authoring Inventory" +description: "Content authoring inventory assessing LLM pipeline impact on copy workflow" +type: workshop +status: archived +workshop: llm-voice-pipeline +agent: "mellanie" +round: 1 +created: 2026-03-07 +--- + # Round 1: Content Authoring Inventory **Author:** Mellanie **Workshop:** LLM Voice Pipeline diff --git a/docs/workshops/llm-voice-pipeline/mellanie-round2.md b/docs/workshops/llm-voice-pipeline/mellanie-round2.md index daba620fd..fd1b4ee50 100644 --- a/docs/workshops/llm-voice-pipeline/mellanie-round2.md +++ b/docs/workshops/llm-voice-pipeline/mellanie-round2.md @@ -1,3 +1,14 @@ +--- +title: "Mellanie Round 2: Content Authoring Evaluation" +description: "Content authoring evaluation of D-123 amendment language and injector design" +type: workshop +status: archived +workshop: llm-voice-pipeline +agent: "mellanie" +round: 2 +created: 2026-03-07 +--- + # Round 2: Content Authoring Evaluation **Author:** Mellanie **Workshop:** LLM Voice Pipeline diff --git a/docs/workshops/llm-voice-pipeline/mellanie-round3.md b/docs/workshops/llm-voice-pipeline/mellanie-round3.md index 22c84a8dd..9284445f5 100644 --- a/docs/workshops/llm-voice-pipeline/mellanie-round3.md +++ b/docs/workshops/llm-voice-pipeline/mellanie-round3.md @@ -1,3 +1,14 @@ +--- +title: "Mellanie Round 3: Injectors, Spike Payloads, Workflow Spec" +description: "Injector specifications, spike payloads, and content authoring workflow design" +type: workshop +status: archived +workshop: llm-voice-pipeline +agent: "mellanie" +round: 3 +created: 2026-03-07 +--- + # Round 3: Content Authoring — Injectors, Spike Payloads, Workflow Spec **Author:** Mellanie **Workshop:** LLM Voice Pipeline diff --git a/docs/workshops/llm-voice-pipeline/miri-round1.md b/docs/workshops/llm-voice-pipeline/miri-round1.md index 249fba061..19c24da3d 100644 --- a/docs/workshops/llm-voice-pipeline/miri-round1.md +++ b/docs/workshops/llm-voice-pipeline/miri-round1.md @@ -1,3 +1,14 @@ +--- +title: "Miri Round 1: World Consistency Inventory" +description: "World consistency inventory assessing lore contamination and IP originality risks" +type: workshop +status: archived +workshop: llm-voice-pipeline +agent: "miri" +round: 1 +created: 2026-03-07 +--- + # Round 1: World Consistency Inventory — Miri **Workshop:** LLM Voice Pipeline diff --git a/docs/workshops/llm-voice-pipeline/miri-round2.md b/docs/workshops/llm-voice-pipeline/miri-round2.md index 72a09ed61..705ed8f59 100644 --- a/docs/workshops/llm-voice-pipeline/miri-round2.md +++ b/docs/workshops/llm-voice-pipeline/miri-round2.md @@ -1,3 +1,14 @@ +--- +title: "Miri Round 2: World Consistency Evaluation" +description: "Convergent evaluation of world consistency safeguards and lore contamination risks" +type: workshop +status: archived +workshop: llm-voice-pipeline +agent: "miri" +round: 2 +created: 2026-03-07 +--- + # Round 2: World Consistency Evaluation — Miri **Workshop:** LLM Voice Pipeline diff --git a/docs/workshops/llm-voice-pipeline/miri-round3.md b/docs/workshops/llm-voice-pipeline/miri-round3.md index 4e55977c4..8f1b1473f 100644 --- a/docs/workshops/llm-voice-pipeline/miri-round3.md +++ b/docs/workshops/llm-voice-pipeline/miri-round3.md @@ -1,3 +1,14 @@ +--- +title: "Miri Round 3: Lore Contamination Guards, Negative Injectors" +description: "Lore contamination guards, negative injectors, and culture injector template design" +type: workshop +status: archived +workshop: llm-voice-pipeline +agent: "miri" +round: 3 +created: 2026-03-07 +--- + # Round 3: Lore Contamination Guards, Negative Injectors, Culture Injector Template — Miri **Workshop:** LLM Voice Pipeline diff --git a/docs/workshops/llm-voice-pipeline/ozzie-round1.md b/docs/workshops/llm-voice-pipeline/ozzie-round1.md index f61d1d2eb..957c8d0af 100644 --- a/docs/workshops/llm-voice-pipeline/ozzie-round1.md +++ b/docs/workshops/llm-voice-pipeline/ozzie-round1.md @@ -1,3 +1,14 @@ +--- +title: "Ozzie Round 1: Player Experience Inventory" +description: "Player experience inventory evaluating wow factor of LLM voice pipeline options" +type: workshop +status: archived +workshop: llm-voice-pipeline +agent: "ozzie" +round: 1 +created: 2026-03-07 +--- + # Round 1 — Ozzie: Player Experience Inventory **Workshop:** LLM Voice Pipeline diff --git a/docs/workshops/llm-voice-pipeline/ozzie-round2.md b/docs/workshops/llm-voice-pipeline/ozzie-round2.md index 4ca0e166d..9a1715c81 100644 --- a/docs/workshops/llm-voice-pipeline/ozzie-round2.md +++ b/docs/workshops/llm-voice-pipeline/ozzie-round2.md @@ -1,3 +1,14 @@ +--- +title: "Ozzie Round 2: Player Experience Evaluation" +description: "Convergent evaluation of player experience impact across pipeline proposals" +type: workshop +status: archived +workshop: llm-voice-pipeline +agent: "ozzie" +round: 2 +created: 2026-03-07 +--- + # Round 2 — Ozzie: Player Experience Evaluation **Workshop:** LLM Voice Pipeline diff --git a/docs/workshops/llm-voice-pipeline/ozzie-round3.md b/docs/workshops/llm-voice-pipeline/ozzie-round3.md index cfba4aad2..3cd41b129 100644 --- a/docs/workshops/llm-voice-pipeline/ozzie-round3.md +++ b/docs/workshops/llm-voice-pipeline/ozzie-round3.md @@ -1,3 +1,14 @@ +--- +title: "Ozzie Round 3: Player Experience Spec" +description: "Player experience specification and validation criteria for voice pipeline output" +type: workshop +status: archived +workshop: llm-voice-pipeline +agent: "ozzie" +round: 3 +created: 2026-03-07 +--- + # Round 3 — Ozzie: Player Experience Spec **Workshop:** LLM Voice Pipeline diff --git a/docs/workshops/llm-voice-pipeline/paula-round1.md b/docs/workshops/llm-voice-pipeline/paula-round1.md index 7421b429f..7d16fffb8 100644 --- a/docs/workshops/llm-voice-pipeline/paula-round1.md +++ b/docs/workshops/llm-voice-pipeline/paula-round1.md @@ -1,3 +1,14 @@ +--- +title: "Paula Round 1: Narrative Quality Inventory" +description: "Narrative quality inventory covering character voice, faction, and relationship mechanics" +type: workshop +status: archived +workshop: llm-voice-pipeline +agent: "paula" +round: 1 +created: 2026-03-07 +--- + # Paula — Round 1: Narrative Quality Inventory **Workshop:** LLM Voice Pipeline diff --git a/docs/workshops/llm-voice-pipeline/paula-round2.md b/docs/workshops/llm-voice-pipeline/paula-round2.md index e3314ced0..b3dd050ae 100644 --- a/docs/workshops/llm-voice-pipeline/paula-round2.md +++ b/docs/workshops/llm-voice-pipeline/paula-round2.md @@ -1,3 +1,14 @@ +--- +title: "Paula Round 2: Narrative Quality Evaluation" +description: "Convergent evaluation of narrative quality trade-offs across pipeline proposals" +type: workshop +status: archived +workshop: llm-voice-pipeline +agent: "paula" +round: 2 +created: 2026-03-07 +--- + # Paula — Round 2: Narrative Quality Evaluation **Workshop:** LLM Voice Pipeline diff --git a/docs/workshops/llm-voice-pipeline/paula-round3.md b/docs/workshops/llm-voice-pipeline/paula-round3.md index a87a4a799..732f7f687 100644 --- a/docs/workshops/llm-voice-pipeline/paula-round3.md +++ b/docs/workshops/llm-voice-pipeline/paula-round3.md @@ -1,3 +1,14 @@ +--- +title: "Paula Round 3: Dialogue Constraints, Tell-as-Context Rules" +description: "Dialogue constraints, tell-as-context rules, and D-123 amendment specification" +type: workshop +status: archived +workshop: llm-voice-pipeline +agent: "paula" +round: 3 +created: 2026-03-07 +--- + # Paula — Round 3: Dialogue Constraints, Tell-as-Context Rules, D-123 Amendment **Workshop:** LLM Voice Pipeline diff --git a/docs/workshops/llm-voice-pipeline/round-1-notes.md b/docs/workshops/llm-voice-pipeline/round-1-notes.md index 432068fb0..e48d56da1 100644 --- a/docs/workshops/llm-voice-pipeline/round-1-notes.md +++ b/docs/workshops/llm-voice-pipeline/round-1-notes.md @@ -1,3 +1,14 @@ +--- +title: "Round 1 Notes" +description: "Compiled notes from round 1 divergent inventory across all seven participants" +type: workshop +status: archived +workshop: llm-voice-pipeline +agent: "" +round: 1 +created: 2026-03-07 +--- + # LLM Voice Pipeline Workshop — Round 1 Notes **Compiled by:** Qatux (Documenter) diff --git a/docs/workshops/llm-voice-pipeline/round-2-notes.md b/docs/workshops/llm-voice-pipeline/round-2-notes.md index 053fbea8b..06815f3ec 100644 --- a/docs/workshops/llm-voice-pipeline/round-2-notes.md +++ b/docs/workshops/llm-voice-pipeline/round-2-notes.md @@ -1,3 +1,14 @@ +--- +title: "Round 2 Notes" +description: "Compiled notes from round 2 convergent evaluation across all seven participants" +type: workshop +status: archived +workshop: llm-voice-pipeline +agent: "" +round: 2 +created: 2026-03-07 +--- + # LLM Voice Pipeline Workshop — Round 2 Notes **Compiled by:** Qatux (Documenter) diff --git a/docs/workshops/llm-voice-pipeline/round-2-proposals.md b/docs/workshops/llm-voice-pipeline/round-2-proposals.md index 8b1e1bfe0..73fc4872d 100644 --- a/docs/workshops/llm-voice-pipeline/round-2-proposals.md +++ b/docs/workshops/llm-voice-pipeline/round-2-proposals.md @@ -1,3 +1,14 @@ +--- +title: "Round 2 Proposals" +description: "Synthesised proposals from round 1 outputs for convergent evaluation in round 2" +type: workshop +status: archived +workshop: llm-voice-pipeline +agent: "" +round: 2 +created: 2026-03-07 +--- + # LLM Voice Pipeline Workshop — Round 2 Proposals **Compiled by:** Team Lead (synthesis of Round 1 outputs) diff --git a/docs/workshops/llm-voice-pipeline/round-3-inputs.md b/docs/workshops/llm-voice-pipeline/round-3-inputs.md index 725a978a8..0a6d8eb27 100644 --- a/docs/workshops/llm-voice-pipeline/round-3-inputs.md +++ b/docs/workshops/llm-voice-pipeline/round-3-inputs.md @@ -1,3 +1,14 @@ +--- +title: "Round 3 Inputs" +description: "Binding decisions from Jeroen after rounds 1-2 as inputs for round 3" +type: workshop +status: archived +workshop: llm-voice-pipeline +agent: "" +round: 3 +created: 2026-03-07 +--- + # LLM Voice Pipeline Workshop — Round 3 Inputs **Source:** Team lead interview with Jeroen after Rounds 1-2 diff --git a/docs/workshops/llm-voice-pipeline/si-tickets.md b/docs/workshops/llm-voice-pipeline/si-tickets.md index 7d997fe01..69c4eafed 100644 --- a/docs/workshops/llm-voice-pipeline/si-tickets.md +++ b/docs/workshops/llm-voice-pipeline/si-tickets.md @@ -1,3 +1,14 @@ +--- +title: "SI Ticket Summary" +description: "Tickets created from workshop decisions and binding round 3 inputs" +type: workshop +status: archived +workshop: llm-voice-pipeline +agent: "si" +round: 0 +created: 2026-03-07 +--- + # LLM Voice Pipeline Workshop — Ticket Summary **Created by:** SI (Sprint Prep Agent) diff --git a/docs/workshops/llm-voice-pipeline/troblum-round1.md b/docs/workshops/llm-voice-pipeline/troblum-round1.md index 2da4432b6..975c4b9c4 100644 --- a/docs/workshops/llm-voice-pipeline/troblum-round1.md +++ b/docs/workshops/llm-voice-pipeline/troblum-round1.md @@ -1,3 +1,14 @@ +--- +title: "Troblum Round 1: Infrastructure and Performance Inventory" +description: "Infrastructure and performance inventory for LLM voice pipeline hardware requirements" +type: workshop +status: archived +workshop: llm-voice-pipeline +agent: "troblum" +round: 1 +created: 2026-03-07 +--- + # Troblum — Round 1: Infrastructure & Performance Inventory **Workshop:** LLM Voice Pipeline diff --git a/docs/workshops/llm-voice-pipeline/troblum-round2.md b/docs/workshops/llm-voice-pipeline/troblum-round2.md index 9d55ebf08..b33026015 100644 --- a/docs/workshops/llm-voice-pipeline/troblum-round2.md +++ b/docs/workshops/llm-voice-pipeline/troblum-round2.md @@ -1,3 +1,14 @@ +--- +title: "Troblum Round 2: Proposal Evaluation and Infrastructure Answers" +description: "Infrastructure evaluation of throughput, token budgets, and hardware detection" +type: workshop +status: archived +workshop: llm-voice-pipeline +agent: "troblum" +round: 2 +created: 2026-03-07 +--- + # Troblum — Round 2: Proposal Evaluation & Infrastructure Answers **Workshop:** LLM Voice Pipeline diff --git a/docs/workshops/llm-voice-pipeline/troblum-round3.md b/docs/workshops/llm-voice-pipeline/troblum-round3.md index a1d720e8b..c7771d1a0 100644 --- a/docs/workshops/llm-voice-pipeline/troblum-round3.md +++ b/docs/workshops/llm-voice-pipeline/troblum-round3.md @@ -1,3 +1,14 @@ +--- +title: "Troblum Round 3: Hardware Detection, Distribution, Risk Register" +description: "Hardware detection spec, distribution strategy, and infrastructure risk register" +type: workshop +status: archived +workshop: llm-voice-pipeline +agent: "troblum" +round: 3 +created: 2026-03-07 +--- + # Troblum — Round 3: Hardware Detection, Distribution, Risk Register **Workshop:** LLM Voice Pipeline diff --git a/docs/workshops/llm-voice-pipeline/tyre-round1.md b/docs/workshops/llm-voice-pipeline/tyre-round1.md index 7813b3f08..42a9705c3 100644 --- a/docs/workshops/llm-voice-pipeline/tyre-round1.md +++ b/docs/workshops/llm-voice-pipeline/tyre-round1.md @@ -1,3 +1,14 @@ +--- +title: "Tyre Round 1: Technical Feasibility Inventory" +description: "Technical feasibility inventory assessing architecture options for voice pipeline" +type: workshop +status: archived +workshop: llm-voice-pipeline +agent: "tyre" +round: 1 +created: 2026-03-07 +--- + # Tyre Round 1: Technical Feasibility Inventory **Domain:** Technical architecture diff --git a/docs/workshops/llm-voice-pipeline/tyre-round2.md b/docs/workshops/llm-voice-pipeline/tyre-round2.md index b20925dbe..75fb1c102 100644 --- a/docs/workshops/llm-voice-pipeline/tyre-round2.md +++ b/docs/workshops/llm-voice-pipeline/tyre-round2.md @@ -1,3 +1,14 @@ +--- +title: "Tyre Round 2: Proposal Evaluation and Technical Resolution" +description: "Technical resolution of behaviours scope, tell_behaviors field, and token budgets" +type: workshop +status: archived +workshop: llm-voice-pipeline +agent: "tyre" +round: 2 +created: 2026-03-07 +--- + # Tyre Round 2: Proposal Evaluation & Technical Resolution **Domain:** Technical architecture diff --git a/docs/workshops/llm-voice-pipeline/tyre-round3.md b/docs/workshops/llm-voice-pipeline/tyre-round3.md index 399fb760c..e74a4ee14 100644 --- a/docs/workshops/llm-voice-pipeline/tyre-round3.md +++ b/docs/workshops/llm-voice-pipeline/tyre-round3.md @@ -1,3 +1,14 @@ +--- +title: "Tyre Round 3: Implementation Specification" +description: "Spike 1 implementation spec, model test plan, spike 2 outline, and hardware detection design" +type: workshop +status: archived +workshop: llm-voice-pipeline +agent: "tyre" +round: 3 +created: 2026-03-07 +--- + # Tyre Round 3: Implementation Specification **Domain:** Technical architecture diff --git a/docs/workshops/llm-voice-pipeline/workshop-brief.md b/docs/workshops/llm-voice-pipeline/workshop-brief.md index 97123d8ce..d9bb3c2b3 100644 --- a/docs/workshops/llm-voice-pipeline/workshop-brief.md +++ b/docs/workshops/llm-voice-pipeline/workshop-brief.md @@ -1,3 +1,14 @@ +--- +title: "Workshop Brief" +description: "Workshop brief defining goals, participants, and scope for LLM voice pipeline design" +type: workshop +status: archived +workshop: llm-voice-pipeline +agent: "" +round: 0 +created: 2026-03-07 +--- + # LLM Voice Pipeline Workshop Brief **Goal:** Decide the content generation architecture for NPC observable behaviors and dialogue — hand-authored pools, composable primitives, LLM re-voicing, or a hybrid. Produce a D-record and implementation plan. diff --git a/docs/workshops/llm-voice-pipeline/workshop-outcomes.md b/docs/workshops/llm-voice-pipeline/workshop-outcomes.md index 8de105174..8db289d46 100644 --- a/docs/workshops/llm-voice-pipeline/workshop-outcomes.md +++ b/docs/workshops/llm-voice-pipeline/workshop-outcomes.md @@ -1,3 +1,14 @@ +--- +title: "Workshop Outcomes" +description: "Final outcomes summary including D-138, D-123 amendment, and implementation plan" +type: workshop +status: archived +workshop: llm-voice-pipeline +agent: "" +round: 0 +created: 2026-03-07 +--- + # LLM Voice Pipeline Workshop — Outcomes **Workshop:** LLM Voice Pipeline Design Workshop From 9588133bbf17e30cfec072648b599bf8e8efa130 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Fri, 13 Mar 2026 23:52:10 +0100 Subject: [PATCH 19/28] docs(docs): add frontmatter to map-authoring, npc-ai, observer-snapshot, and save-load workshop briefs Standardized YAML frontmatter on 4 workshop brief files. Co-Authored-By: Claude Opus 4.6 --- docs/workshops/map-authoring-pipeline/workshop-brief.md | 9 +++++++++ docs/workshops/npc-ai-state-machines/workshop-brief.md | 9 +++++++++ .../observer-snapshot-pipeline/workshop-brief.md | 9 +++++++++ docs/workshops/save-load-architecture/workshop-brief.md | 9 +++++++++ 4 files changed, 36 insertions(+) diff --git a/docs/workshops/map-authoring-pipeline/workshop-brief.md b/docs/workshops/map-authoring-pipeline/workshop-brief.md index d40ca2c3d..618efc9e3 100644 --- a/docs/workshops/map-authoring-pipeline/workshop-brief.md +++ b/docs/workshops/map-authoring-pipeline/workshop-brief.md @@ -1,3 +1,12 @@ +--- +title: "Map Authoring Pipeline Workshop Brief" +description: "Define how v0.1 hand-crafted tile maps are authored, stored, and loaded by server and client." +type: workshop +status: archived +workshop: "map-authoring-pipeline" +created: 2026-02-11 +--- + # Map Authoring Pipeline Workshop Brief **Goal:** Define how v0.1 maps (5-8 hand-crafted buildings per world, 150x150 tiles, 2-3 z-levels) are authored, stored, and loaded by both server and client. diff --git a/docs/workshops/npc-ai-state-machines/workshop-brief.md b/docs/workshops/npc-ai-state-machines/workshop-brief.md index 069b4bf4f..67ac6b0b2 100644 --- a/docs/workshops/npc-ai-state-machines/workshop-brief.md +++ b/docs/workshops/npc-ai-state-machines/workshop-brief.md @@ -1,3 +1,12 @@ +--- +title: "NPC AI State Machines Workshop Brief" +description: "Specify the four Background-tier NPC state machines — schedule, mood, relationships, and job — with states, transitions, and tick budgets." +type: workshop +status: archived +workshop: "npc-ai-state-machines" +created: 2026-02-11 +--- + # NPC AI State Machines Workshop Brief **Goal:** Specify the 4 Background-tier state machines (schedule, mood, relationships, job) — states, transitions, day phase integration, and tick budgets. diff --git a/docs/workshops/observer-snapshot-pipeline/workshop-brief.md b/docs/workshops/observer-snapshot-pipeline/workshop-brief.md index ebb922dea..870a4001b 100644 --- a/docs/workshops/observer-snapshot-pipeline/workshop-brief.md +++ b/docs/workshops/observer-snapshot-pipeline/workshop-brief.md @@ -1,3 +1,12 @@ +--- +title: "Observer Snapshot Generation Pipeline Workshop Brief" +description: "Design the server-side pipeline that computes per-tick ObserverSnapshot from world state via spatial queries, LOS, and sound propagation." +type: workshop +status: archived +workshop: "observer-snapshot-pipeline" +created: 2026-02-11 +--- + # Observer Snapshot Generation Pipeline Workshop Brief **Goal:** Design the algorithm for "what does entity X perceive this tick?" — the server-side pipeline that computes ObserverSnapshot from world state. diff --git a/docs/workshops/save-load-architecture/workshop-brief.md b/docs/workshops/save-load-architecture/workshop-brief.md index f18ca3f9a..9283ff1a1 100644 --- a/docs/workshops/save-load-architecture/workshop-brief.md +++ b/docs/workshops/save-load-architecture/workshop-brief.md @@ -1,3 +1,12 @@ +--- +title: "Save/Load Architecture Workshop Brief" +description: "Design the save/load system — serialization strategy, versioning, migration, and integration with tier serialization." +type: workshop +status: archived +workshop: "save-load-architecture" +created: 2026-02-11 +--- + # Save/Load Architecture Workshop Brief **Goal:** Design the save/load system — serialization strategy, versioning, migration, and relationship to tier serialization. From 563a295a90f6ca6a89d9ed1d3b529ad509345e89 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Sat, 14 Mar 2026 00:01:23 +0100 Subject: [PATCH 20/28] docs(docs): add frontmatter to test-architecture workshop Standardized YAML frontmatter on all 20 files. Co-Authored-By: Claude Opus 4.6 --- docs/workshops/test-architecture/dudley-round2.md | 11 +++++++++++ docs/workshops/test-architecture/dudley-round3.md | 11 +++++++++++ docs/workshops/test-architecture/gestalt-round2.md | 11 +++++++++++ docs/workshops/test-architecture/gestalt-round3.md | 11 +++++++++++ docs/workshops/test-architecture/hoshe-round1.md | 11 +++++++++++ docs/workshops/test-architecture/hoshe-round2.md | 11 +++++++++++ docs/workshops/test-architecture/hoshe-round3.md | 11 +++++++++++ docs/workshops/test-architecture/justine-round2.md | 11 +++++++++++ docs/workshops/test-architecture/justine-round3.md | 11 +++++++++++ docs/workshops/test-architecture/ozzie-round2.md | 11 +++++++++++ docs/workshops/test-architecture/ozzie-round3.md | 11 +++++++++++ docs/workshops/test-architecture/round-1-notes.md | 11 +++++++++++ docs/workshops/test-architecture/round-2-notes.md | 11 +++++++++++ docs/workshops/test-architecture/round-3-notes.md | 11 +++++++++++ docs/workshops/test-architecture/stig-round2.md | 11 +++++++++++ docs/workshops/test-architecture/stig-round3.md | 11 +++++++++++ .../test-architecture-workshop-brief.md | 11 +++++++++++ docs/workshops/test-architecture/tyre-round2.md | 11 +++++++++++ docs/workshops/test-architecture/tyre-round3.md | 11 +++++++++++ docs/workshops/test-architecture/workshop-outcomes.md | 11 +++++++++++ 20 files changed, 220 insertions(+) diff --git a/docs/workshops/test-architecture/dudley-round2.md b/docs/workshops/test-architecture/dudley-round2.md index d4bdb3aa4..5b9963aa9 100644 --- a/docs/workshops/test-architecture/dudley-round2.md +++ b/docs/workshops/test-architecture/dudley-round2.md @@ -1,3 +1,14 @@ +--- +title: "Dudley — Round 2: Determinism Fixes, Server Flags, Cross-Review" +description: "Dudley's round 2 proposals for determinism fixes, server test flags, and cross-review of serialization" +type: workshop +status: archived +workshop: test-architecture +agent: "dudley" +round: 2 +created: 2026-02-17 +--- + # Dudley — Round 2: Determinism Fixes, Server Flags, Cross-Review **Workshop:** QA Strategy & Test Architecture diff --git a/docs/workshops/test-architecture/dudley-round3.md b/docs/workshops/test-architecture/dudley-round3.md index fe341b31b..15d7edae0 100644 --- a/docs/workshops/test-architecture/dudley-round3.md +++ b/docs/workshops/test-architecture/dudley-round3.md @@ -1,3 +1,14 @@ +--- +title: "Dudley — Round 3: Final Server Specs & Sprint 8 Deliverables" +description: "Dudley's final server specifications and sprint 8 deliverables for determinism and test infrastructure" +type: workshop +status: archived +workshop: test-architecture +agent: "dudley" +round: 3 +created: 2026-02-17 +--- + # Dudley — Round 3: Final Server Specs & Sprint 8 Deliverables **Workshop:** QA Strategy & Test Architecture diff --git a/docs/workshops/test-architecture/gestalt-round2.md b/docs/workshops/test-architecture/gestalt-round2.md index 7bc5527b1..cc29a4c8d 100644 --- a/docs/workshops/test-architecture/gestalt-round2.md +++ b/docs/workshops/test-architecture/gestalt-round2.md @@ -1,3 +1,14 @@ +--- +title: "Gestalt — Round 2: Coverage Audit, Anti-Tedium Mechanics, Transition Scenarios, Invariant Prioritization" +description: "Gestalt's coverage audit of the Gauntlet test world with anti-tedium mechanics and transition scenario design" +type: workshop +status: archived +workshop: test-architecture +agent: "gestalt" +round: 2 +created: 2026-02-17 +--- + # Gestalt — Round 2: Coverage Audit, Anti-Tedium Mechanics, Transition Scenarios, Invariant Prioritization **Workshop:** QA Strategy & Test Architecture diff --git a/docs/workshops/test-architecture/gestalt-round3.md b/docs/workshops/test-architecture/gestalt-round3.md index 1036ab4f6..695bc3e80 100644 --- a/docs/workshops/test-architecture/gestalt-round3.md +++ b/docs/workshops/test-architecture/gestalt-round3.md @@ -1,3 +1,14 @@ +--- +title: "Gestalt — Round 3: Final Gauntlet Map Specification" +description: "Gestalt's final buildable Gauntlet map specification for sprint 8 implementation" +type: workshop +status: archived +workshop: test-architecture +agent: "gestalt" +round: 3 +created: 2026-02-17 +--- + # Gestalt — Round 3: Final Gauntlet Map Specification **Workshop:** QA Strategy & Test Architecture diff --git a/docs/workshops/test-architecture/hoshe-round1.md b/docs/workshops/test-architecture/hoshe-round1.md index f1af3a762..6962f9e4f 100644 --- a/docs/workshops/test-architecture/hoshe-round1.md +++ b/docs/workshops/test-architecture/hoshe-round1.md @@ -1,3 +1,14 @@ +--- +title: "Hoshe — Round 1 Analysis: Boundary Values, Layer 3, CI, Content Validation" +description: "Hoshe's round 1 analysis of serialization boundary values, Layer 3 testing, and content validation" +type: workshop +status: archived +workshop: test-architecture +agent: "hoshe" +round: 1 +created: 2026-02-17 +--- + # Hoshe — Round 1 Analysis: Boundary Values, Layer 3, CI, Content Validation **Workshop:** QA Strategy & Test Architecture diff --git a/docs/workshops/test-architecture/hoshe-round2.md b/docs/workshops/test-architecture/hoshe-round2.md index ca14e6174..ea7daa763 100644 --- a/docs/workshops/test-architecture/hoshe-round2.md +++ b/docs/workshops/test-architecture/hoshe-round2.md @@ -1,3 +1,14 @@ +--- +title: "Hoshe — Round 2 Analysis: Coverage Validation, Content Validation, Pre-PR, Encoding Asymmetry" +description: "Hoshe's round 2 coverage validation, content validation tooling, and encoding asymmetry analysis" +type: workshop +status: archived +workshop: test-architecture +agent: "hoshe" +round: 2 +created: 2026-02-17 +--- + # Hoshe — Round 2 Analysis: Coverage Validation, Content Validation, Pre-PR, Encoding Asymmetry **Workshop:** QA Strategy & Test Architecture diff --git a/docs/workshops/test-architecture/hoshe-round3.md b/docs/workshops/test-architecture/hoshe-round3.md index 8c3037922..59b984904 100644 --- a/docs/workshops/test-architecture/hoshe-round3.md +++ b/docs/workshops/test-architecture/hoshe-round3.md @@ -1,3 +1,14 @@ +--- +title: "Hoshe — Round 3: Prioritized Test Backlog, Final Specifications" +description: "Hoshe's prioritized test backlog and final specifications for serialization and CI tests" +type: workshop +status: archived +workshop: test-architecture +agent: "hoshe" +round: 3 +created: 2026-02-17 +--- + # Hoshe — Round 3: Prioritized Test Backlog, Final Specifications **Workshop:** QA Strategy & Test Architecture diff --git a/docs/workshops/test-architecture/justine-round2.md b/docs/workshops/test-architecture/justine-round2.md index f73401443..9a80cc89e 100644 --- a/docs/workshops/test-architecture/justine-round2.md +++ b/docs/workshops/test-architecture/justine-round2.md @@ -1,3 +1,14 @@ +--- +title: "Justine — Round 2: Content Validation Tooling + Performance Baseline" +description: "Justine's content validation tooling expansion and performance baseline design for local CI" +type: workshop +status: archived +workshop: test-architecture +agent: "justine" +round: 2 +created: 2026-02-17 +--- + # Justine — Round 2: Content Validation Tooling + Performance Baseline **Workshop:** QA Strategy & Test Architecture diff --git a/docs/workshops/test-architecture/justine-round3.md b/docs/workshops/test-architecture/justine-round3.md index a2f2cdd2e..336c1efe7 100644 --- a/docs/workshops/test-architecture/justine-round3.md +++ b/docs/workshops/test-architecture/justine-round3.md @@ -1,3 +1,14 @@ +--- +title: "Justine — Round 3: Final Tooling Specifications" +description: "Justine's implementation-ready specifications for content validation, perf baselines, and golden file diffing" +type: workshop +status: archived +workshop: test-architecture +agent: "justine" +round: 3 +created: 2026-02-17 +--- + # Justine — Round 3: Final Tooling Specifications **Workshop:** QA Strategy & Test Architecture diff --git a/docs/workshops/test-architecture/ozzie-round2.md b/docs/workshops/test-architecture/ozzie-round2.md index 94267cf16..027a3132f 100644 --- a/docs/workshops/test-architecture/ozzie-round2.md +++ b/docs/workshops/test-architecture/ozzie-round2.md @@ -1,3 +1,14 @@ +--- +title: "Ozzie — Round 2: Test Client UX + Anti-Tedium Specs" +description: "Ozzie's test client UX design and anti-tedium specifications for human tester experience" +type: workshop +status: archived +workshop: test-architecture +agent: "ozzie" +round: 2 +created: 2026-02-17 +--- + # Ozzie — Round 2: Test Client UX + Anti-Tedium Specs **Workshop:** QA Strategy & Test Architecture diff --git a/docs/workshops/test-architecture/ozzie-round3.md b/docs/workshops/test-architecture/ozzie-round3.md index 97f0e25a7..b3ad08759 100644 --- a/docs/workshops/test-architecture/ozzie-round3.md +++ b/docs/workshops/test-architecture/ozzie-round3.md @@ -1,3 +1,14 @@ +--- +title: "Ozzie — Round 3: Final Tester Workflow + UX Specs" +description: "Ozzie's final tester workflow and UX specifications for the Gauntlet test client" +type: workshop +status: archived +workshop: test-architecture +agent: "ozzie" +round: 3 +created: 2026-02-17 +--- + # Ozzie — Round 3: Final Tester Workflow + UX Specs **Workshop:** QA Strategy & Test Architecture diff --git a/docs/workshops/test-architecture/round-1-notes.md b/docs/workshops/test-architecture/round-1-notes.md index f37853a8a..7d8e284ae 100644 --- a/docs/workshops/test-architecture/round-1-notes.md +++ b/docs/workshops/test-architecture/round-1-notes.md @@ -1,3 +1,14 @@ +--- +title: "QA Strategy & Test Architecture Workshop — Round 1 Notes" +description: "Qatux's synthesis notes from round 1 analysis across all seven workshop agents" +type: workshop +status: archived +workshop: test-architecture +agent: "" +round: 1 +created: 2026-02-17 +--- + # QA Strategy & Test Architecture Workshop — Round 1 Notes **Workshop:** QA Strategy & Test Architecture diff --git a/docs/workshops/test-architecture/round-2-notes.md b/docs/workshops/test-architecture/round-2-notes.md index 2b794c88f..ce658e2b7 100644 --- a/docs/workshops/test-architecture/round-2-notes.md +++ b/docs/workshops/test-architecture/round-2-notes.md @@ -1,3 +1,14 @@ +--- +title: "QA Strategy & Test Architecture Workshop — Round 2 Notes" +description: "Qatux's synthesis notes from round 2 cross-review and integration across all agents" +type: workshop +status: archived +workshop: test-architecture +agent: "" +round: 2 +created: 2026-02-17 +--- + # QA Strategy & Test Architecture Workshop — Round 2 Notes **Workshop:** QA Strategy & Test Architecture diff --git a/docs/workshops/test-architecture/round-3-notes.md b/docs/workshops/test-architecture/round-3-notes.md index b2de3fb96..b53e0b3e5 100644 --- a/docs/workshops/test-architecture/round-3-notes.md +++ b/docs/workshops/test-architecture/round-3-notes.md @@ -1,3 +1,14 @@ +--- +title: "QA Strategy & Test Architecture Workshop — Round 3 Notes" +description: "Qatux's synthesis notes from round 3 prioritization and final specifications" +type: workshop +status: archived +workshop: test-architecture +agent: "" +round: 3 +created: 2026-02-17 +--- + # QA Strategy & Test Architecture Workshop — Round 3 Notes **Workshop:** QA Strategy & Test Architecture diff --git a/docs/workshops/test-architecture/stig-round2.md b/docs/workshops/test-architecture/stig-round2.md index a4b2c5956..e04f54e56 100644 --- a/docs/workshops/test-architecture/stig-round2.md +++ b/docs/workshops/test-architecture/stig-round2.md @@ -1,3 +1,14 @@ +--- +title: "Stig — Round 2: Client Assertions, Anti-Tedium UI, Cross-Review" +description: "Stig's client assertion audit, anti-tedium UI design, and cross-review of visible_tiles ordering" +type: workshop +status: archived +workshop: test-architecture +agent: "stig" +round: 2 +created: 2026-02-17 +--- + # Stig — Round 2: Client Assertions, Anti-Tedium UI, Cross-Review ## OQ-1: Does the Godot client depend on visible_tiles Vec ordering? diff --git a/docs/workshops/test-architecture/stig-round3.md b/docs/workshops/test-architecture/stig-round3.md index 6753c7b8c..1f4be02ce 100644 --- a/docs/workshops/test-architecture/stig-round3.md +++ b/docs/workshops/test-architecture/stig-round3.md @@ -1,3 +1,14 @@ +--- +title: "Stig — Round 3: Final Client Test Spec, Anti-Tedium UI, Checklist, Fog Constants" +description: "Stig's final 38-test client test suite specification with anti-tedium UI and fog constants" +type: workshop +status: archived +workshop: test-architecture +agent: "stig" +round: 3 +created: 2026-02-17 +--- + # Stig — Round 3: Final Client Test Spec, Anti-Tedium UI, Checklist, Fog Constants **Workshop:** QA Strategy & Test Architecture diff --git a/docs/workshops/test-architecture/test-architecture-workshop-brief.md b/docs/workshops/test-architecture/test-architecture-workshop-brief.md index 7d84a52a5..8022827f2 100644 --- a/docs/workshops/test-architecture/test-architecture-workshop-brief.md +++ b/docs/workshops/test-architecture/test-architecture-workshop-brief.md @@ -1,3 +1,14 @@ +--- +title: "QA Strategy & Test Architecture Workshop Brief" +description: "Workshop brief defining goals, participants, tracks, and round structure for the QA test architecture workshop" +type: workshop +status: archived +workshop: test-architecture +agent: "" +round: 0 +created: 2026-02-16 +--- + # QA Strategy & Test Architecture Workshop Brief **Goal:** Design a comprehensive testing strategy — test world, automation framework, content scaling safety, and CI pipeline — that catches integration boundary bugs before they reach manual playtesting, and scales safely as content grows. Produce concrete specifications and a prioritized implementation backlog. diff --git a/docs/workshops/test-architecture/tyre-round2.md b/docs/workshops/test-architecture/tyre-round2.md index d0c4a9f09..a94315237 100644 --- a/docs/workshops/test-architecture/tyre-round2.md +++ b/docs/workshops/test-architecture/tyre-round2.md @@ -1,3 +1,14 @@ +--- +title: "Tyre — Round 2 Analysis: Test Client Binary, Cross-Review, Open Questions" +description: "Tyre's test client binary architecture, cross-review of all round 1 outputs, and open question resolution" +type: workshop +status: archived +workshop: test-architecture +agent: "tyre" +round: 2 +created: 2026-02-17 +--- + # Tyre — Round 2 Analysis: Test Client Binary, Cross-Review, Open Questions **Workshop:** QA Strategy & Test Architecture diff --git a/docs/workshops/test-architecture/tyre-round3.md b/docs/workshops/test-architecture/tyre-round3.md index 86587e422..80776aef6 100644 --- a/docs/workshops/test-architecture/tyre-round3.md +++ b/docs/workshops/test-architecture/tyre-round3.md @@ -1,3 +1,14 @@ +--- +title: "Tyre — Round 3: Sprint 8 Implementation Plan, Test Client Final Spec, Roadmap" +description: "Tyre's sprint 8 implementation plan with final test client spec and multi-sprint roadmap" +type: workshop +status: archived +workshop: test-architecture +agent: "tyre" +round: 3 +created: 2026-02-17 +--- + # Tyre — Round 3: Sprint 8 Implementation Plan, Test Client Final Spec, Roadmap **Workshop:** QA Strategy & Test Architecture diff --git a/docs/workshops/test-architecture/workshop-outcomes.md b/docs/workshops/test-architecture/workshop-outcomes.md index 84aee086d..a1a51e666 100644 --- a/docs/workshops/test-architecture/workshop-outcomes.md +++ b/docs/workshops/test-architecture/workshop-outcomes.md @@ -1,3 +1,14 @@ +--- +title: "QA Strategy & Test Architecture Workshop — Outcomes" +description: "Definitive workshop output summarizing all decisions, specifications, and the sprint 8 implementation backlog" +type: workshop +status: archived +workshop: test-architecture +agent: "" +round: 0 +created: 2026-02-17 +--- + # QA Strategy & Test Architecture Workshop — Outcomes **Workshop:** QA Strategy & Test Architecture From ba3ade434edbd34a2f55ff59f50b19362110e1b3 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Sat, 14 Mar 2026 00:01:28 +0100 Subject: [PATCH 21/28] docs(docs): add frontmatter to v01-gap-analysis workshop Standardized YAML frontmatter on all 16 files. Co-Authored-By: Claude Opus 4.6 --- docs/workshops/v01-gap-analysis/round1-gestalt.md | 11 +++++++++++ docs/workshops/v01-gap-analysis/round1-gore.md | 11 +++++++++++ docs/workshops/v01-gap-analysis/round1-hoshe.md | 11 +++++++++++ docs/workshops/v01-gap-analysis/round1-nigel.md | 11 +++++++++++ docs/workshops/v01-gap-analysis/round1-ozzie.md | 11 +++++++++++ docs/workshops/v01-gap-analysis/round1-paula.md | 11 +++++++++++ docs/workshops/v01-gap-analysis/round1-tyre.md | 11 +++++++++++ docs/workshops/v01-gap-analysis/round2-gestalt.md | 11 +++++++++++ docs/workshops/v01-gap-analysis/round2-gore.md | 11 +++++++++++ docs/workshops/v01-gap-analysis/round2-nigel.md | 11 +++++++++++ docs/workshops/v01-gap-analysis/round2-ozzie.md | 11 +++++++++++ docs/workshops/v01-gap-analysis/round2-paula.md | 11 +++++++++++ docs/workshops/v01-gap-analysis/round2-tyre.md | 11 +++++++++++ docs/workshops/v01-gap-analysis/si-ticket-changes.md | 11 +++++++++++ .../v01-gap-analysis-workshop-brief.md | 11 +++++++++++ docs/workshops/v01-gap-analysis/workshop-outcomes.md | 11 +++++++++++ 16 files changed, 176 insertions(+) diff --git a/docs/workshops/v01-gap-analysis/round1-gestalt.md b/docs/workshops/v01-gap-analysis/round1-gestalt.md index ae4c52b4a..a46152ecc 100644 --- a/docs/workshops/v01-gap-analysis/round1-gestalt.md +++ b/docs/workshops/v01-gap-analysis/round1-gestalt.md @@ -1,3 +1,14 @@ +--- +title: "Round 1 Workshop Response: Gestalt (Systems Design)" +description: "Systems design analysis of concept proof strength, fun/wow factor, and missing systems for v0.1" +type: workshop +status: archived +workshop: v01-gap-analysis +agent: gestalt +round: 1 +created: 2026-02-11 +--- + # Round 1 Workshop Response: Gestalt (Systems Design) **Agent:** Gestalt (Systems Design & Fun Factor) diff --git a/docs/workshops/v01-gap-analysis/round1-gore.md b/docs/workshops/v01-gap-analysis/round1-gore.md index 8db27c9f7..694405303 100644 --- a/docs/workshops/v01-gap-analysis/round1-gore.md +++ b/docs/workshops/v01-gap-analysis/round1-gore.md @@ -1,3 +1,14 @@ +--- +title: "Gap Analysis Workshop - Round 1: Gore (Themes & Endgame Design)" +description: "Thematic evaluation of concept proof claims, interpretive asymmetry gaps, and dual interpretation authoring needs" +type: workshop +status: archived +workshop: v01-gap-analysis +agent: gore +round: 1 +created: 2026-02-11 +--- + # Gap Analysis Workshop - Round 1: Gore (Themes & Endgame Design) ## Track 1: Strength of Concept Proof - Thematic Evaluation diff --git a/docs/workshops/v01-gap-analysis/round1-hoshe.md b/docs/workshops/v01-gap-analysis/round1-hoshe.md index ab85bbf01..50efb580f 100644 --- a/docs/workshops/v01-gap-analysis/round1-hoshe.md +++ b/docs/workshops/v01-gap-analysis/round1-hoshe.md @@ -1,3 +1,14 @@ +--- +title: "Round 1: Testability Deep-Dive (Track 4) — Hoshe" +description: "QA analysis of test architecture, Rust/Godot framework selection, IPC testing layers, and success criteria automation" +type: workshop +status: archived +workshop: v01-gap-analysis +agent: hoshe +round: 1 +created: 2026-02-11 +--- + # Round 1: Testability Deep-Dive (Track 4) — Hoshe **Workshop:** v0.1 Gap Analysis Workshop diff --git a/docs/workshops/v01-gap-analysis/round1-nigel.md b/docs/workshops/v01-gap-analysis/round1-nigel.md index d4d27e64f..b6ce87313 100644 --- a/docs/workshops/v01-gap-analysis/round1-nigel.md +++ b/docs/workshops/v01-gap-analysis/round1-nigel.md @@ -1,3 +1,14 @@ +--- +title: "Workshop Round 1 - Nigel: Sandbox & Replayability Analysis" +description: "Replayability analysis of concept proof claims, seed-based variation gaps, and replay ceiling estimates" +type: workshop +status: archived +workshop: v01-gap-analysis +agent: nigel +round: 1 +created: 2026-02-11 +--- + # Workshop Round 1 - Nigel: Sandbox & Replayability Analysis ## Track 1: Strength of Concept Proof — "What happens the SECOND time you play this?" diff --git a/docs/workshops/v01-gap-analysis/round1-ozzie.md b/docs/workshops/v01-gap-analysis/round1-ozzie.md index 69c6d0b1d..f259a7fef 100644 --- a/docs/workshops/v01-gap-analysis/round1-ozzie.md +++ b/docs/workshops/v01-gap-analysis/round1-ozzie.md @@ -1,3 +1,14 @@ +--- +title: "Workshop Round 1 - Ozzie's Analysis" +description: "Emotional delivery and fun factor analysis of concept proof claims, observation pipeline design, and missing wow moments" +type: workshop +status: archived +workshop: v01-gap-analysis +agent: ozzie +round: 1 +created: 2026-02-11 +--- + # Workshop Round 1 - Ozzie's Analysis ## Track 1: Strength of Concept Proof + Track 2: Fun & Wow Factor diff --git a/docs/workshops/v01-gap-analysis/round1-paula.md b/docs/workshops/v01-gap-analysis/round1-paula.md index 9ae11c863..850f0669f 100644 --- a/docs/workshops/v01-gap-analysis/round1-paula.md +++ b/docs/workshops/v01-gap-analysis/round1-paula.md @@ -1,3 +1,14 @@ +--- +title: "Round 1 — Paula's Track 1 Analysis: Strength of Concept Proof" +description: "Narrative depth analysis of concept proof claims across mechanical coverage, narrative delivery, and emotional resonance" +type: workshop +status: archived +workshop: v01-gap-analysis +agent: paula +round: 1 +created: 2026-02-11 +--- + # Round 1 — Paula's Track 1 Analysis: Strength of Concept Proof **Agent:** Paula (Narrative & Political Depth) diff --git a/docs/workshops/v01-gap-analysis/round1-tyre.md b/docs/workshops/v01-gap-analysis/round1-tyre.md index dd6c1e3ed..6347aac51 100644 --- a/docs/workshops/v01-gap-analysis/round1-tyre.md +++ b/docs/workshops/v01-gap-analysis/round1-tyre.md @@ -1,3 +1,14 @@ +--- +title: "Workshop Round 1 — Tyre (Technical Architect)" +description: "Technical gap analysis identifying hard blockers (collision, pathfinding, time system) and testability architecture recommendations" +type: workshop +status: archived +workshop: v01-gap-analysis +agent: tyre +round: 1 +created: 2026-02-11 +--- + # Workshop Round 1 — Tyre (Technical Architect) **Tracks:** 3 (Things We May Have Forgotten) + 4 (Testability Deep-Dive) diff --git a/docs/workshops/v01-gap-analysis/round2-gestalt.md b/docs/workshops/v01-gap-analysis/round2-gestalt.md index 0cf0bbaa3..88cbd5867 100644 --- a/docs/workshops/v01-gap-analysis/round2-gestalt.md +++ b/docs/workshops/v01-gap-analysis/round2-gestalt.md @@ -1,3 +1,14 @@ +--- +title: "Round 2 Workshop Response: Gestalt (Systems Design)" +description: "Synthesis of unified observation system design, consolidated ticket list (49 to 33), and cross-agent priority alignment" +type: workshop +status: archived +workshop: v01-gap-analysis +agent: gestalt +round: 2 +created: 2026-02-11 +--- + # Round 2 Workshop Response: Gestalt (Systems Design) **Agent:** Gestalt (Systems Design & Fun Factor) diff --git a/docs/workshops/v01-gap-analysis/round2-gore.md b/docs/workshops/v01-gap-analysis/round2-gore.md index 3a3c329a6..8f0ccc941 100644 --- a/docs/workshops/v01-gap-analysis/round2-gore.md +++ b/docs/workshops/v01-gap-analysis/round2-gore.md @@ -1,3 +1,14 @@ +--- +title: "Gap Analysis Workshop - Round 2: Gore (Themes & Endgame Design)" +description: "Thematic synthesis defining load-bearing moments, Dual Lens Authoring Guide specification, and final thematic priorities" +type: workshop +status: archived +workshop: v01-gap-analysis +agent: gore +round: 2 +created: 2026-02-11 +--- + # Gap Analysis Workshop - Round 2: Gore (Themes & Endgame Design) ## Preamble diff --git a/docs/workshops/v01-gap-analysis/round2-nigel.md b/docs/workshops/v01-gap-analysis/round2-nigel.md index 131e23eb3..c05d95d78 100644 --- a/docs/workshops/v01-gap-analysis/round2-nigel.md +++ b/docs/workshops/v01-gap-analysis/round2-nigel.md @@ -1,3 +1,14 @@ +--- +title: "Workshop Round 2 - Nigel: Cross-Pollination & Synthesis" +description: "Revised replay ceiling estimates (10-12 playthroughs), experience layer as replayability multiplier, and seed variation priority case" +type: workshop +status: archived +workshop: v01-gap-analysis +agent: nigel +round: 2 +created: 2026-02-11 +--- + # Workshop Round 2 - Nigel: Cross-Pollination & Synthesis **Agent:** Nigel (Sandbox & Replayability) diff --git a/docs/workshops/v01-gap-analysis/round2-ozzie.md b/docs/workshops/v01-gap-analysis/round2-ozzie.md index 24e4c452f..97413ff88 100644 --- a/docs/workshops/v01-gap-analysis/round2-ozzie.md +++ b/docs/workshops/v01-gap-analysis/round2-ozzie.md @@ -1,3 +1,14 @@ +--- +title: "Workshop Round 2 - Ozzie's Response" +description: "Concrete observation event pipeline architecture, reaction to Paula's interpretive framing and Gore's ethical dimension" +type: workshop +status: archived +workshop: v01-gap-analysis +agent: ozzie +round: 2 +created: 2026-02-11 +--- + # Workshop Round 2 - Ozzie's Response ## Cross-Pollination, Pipeline Design, and Final Priorities diff --git a/docs/workshops/v01-gap-analysis/round2-paula.md b/docs/workshops/v01-gap-analysis/round2-paula.md index a8a834dd5..132dc650e 100644 --- a/docs/workshops/v01-gap-analysis/round2-paula.md +++ b/docs/workshops/v01-gap-analysis/round2-paula.md @@ -1,3 +1,14 @@ +--- +title: "Round 2 — Paula's Cross-Pollination Response" +description: "Three load-bearing narrative moments, Perspective and Arc authoring specification, and role-archetype authoring for seed variation" +type: workshop +status: archived +workshop: v01-gap-analysis +agent: paula +round: 2 +created: 2026-02-11 +--- + # Round 2 — Paula's Cross-Pollination Response **Agent:** Paula (Narrative & Political Depth) diff --git a/docs/workshops/v01-gap-analysis/round2-tyre.md b/docs/workshops/v01-gap-analysis/round2-tyre.md index ef22a2d3b..c94bf7a28 100644 --- a/docs/workshops/v01-gap-analysis/round2-tyre.md +++ b/docs/workshops/v01-gap-analysis/round2-tyre.md @@ -1,3 +1,14 @@ +--- +title: "Workshop Round 2 — Tyre (Technical Architect)" +description: "Revised testability decisions (GUT to gdUnit4), three-layer IPC test architecture, CauseChain endorsement, and final ticket list" +type: workshop +status: archived +workshop: v01-gap-analysis +agent: tyre +round: 2 +created: 2026-02-11 +--- + # Workshop Round 2 — Tyre (Technical Architect) **Tracks:** 3 + 4 (Cross-pollination and synthesis) diff --git a/docs/workshops/v01-gap-analysis/si-ticket-changes.md b/docs/workshops/v01-gap-analysis/si-ticket-changes.md index f21e89d3f..25a77a8eb 100644 --- a/docs/workshops/v01-gap-analysis/si-ticket-changes.md +++ b/docs/workshops/v01-gap-analysis/si-ticket-changes.md @@ -1,3 +1,14 @@ +--- +title: "v0.1 Gap Analysis Workshop — Ticket Changes" +description: "Project manager summary of all ticket changes: 15 promotions, 3 new epics, 38 new stories, 21 dependencies added" +type: workshop +status: archived +workshop: v01-gap-analysis +agent: si +round: 0 +created: 2026-02-11 +--- + # v0.1 Gap Analysis Workshop — Ticket Changes **Processed by:** Si (Project Manager) diff --git a/docs/workshops/v01-gap-analysis/v01-gap-analysis-workshop-brief.md b/docs/workshops/v01-gap-analysis/v01-gap-analysis-workshop-brief.md index d3ffecfd6..87b9b87ec 100644 --- a/docs/workshops/v01-gap-analysis/v01-gap-analysis-workshop-brief.md +++ b/docs/workshops/v01-gap-analysis/v01-gap-analysis-workshop-brief.md @@ -1,3 +1,14 @@ +--- +title: "v0.1 GAP Analysis Workshop Brief" +description: "Workshop brief defining four analysis tracks: concept proof, fun/wow factor, completeness gaps, and testability deep-dive" +type: workshop +status: archived +workshop: v01-gap-analysis +agent: "" +round: 0 +created: 2026-02-11 +--- + # v0.1 GAP Analysis Workshop Brief **Goal:** Stress-test the full v0.1 plan against concept proof, fun delivery, and completeness diff --git a/docs/workshops/v01-gap-analysis/workshop-outcomes.md b/docs/workshops/v01-gap-analysis/workshop-outcomes.md index 2f4bda737..7da8f43bd 100644 --- a/docs/workshops/v01-gap-analysis/workshop-outcomes.md +++ b/docs/workshops/v01-gap-analysis/workshop-outcomes.md @@ -1,3 +1,14 @@ +--- +title: "Workshop Outcomes: v0.1 Gap Analysis" +description: "Final outcomes summary: 6 decisions confirmed, 41 new tickets, critical path Sprint 1-5, and dependency chain" +type: workshop +status: archived +workshop: v01-gap-analysis +agent: qatux +round: 0 +created: 2026-02-25 +--- + # Workshop Outcomes: v0.1 Gap Analysis **Workshop:** v0.1 Gap Analysis From 36d3bc2c2ef93e819aa5c4a78270eb6d5a6bf24d Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Sat, 14 Mar 2026 00:01:35 +0100 Subject: [PATCH 22/28] docs(docs): add frontmatter to wheres-the-fun workshop Standardized YAML frontmatter on all 47 files. Co-Authored-By: Claude Opus 4.6 --- .../wheres-the-fun/interview-supplement-round4.md | 11 +++++++++++ docs/workshops/wheres-the-fun/interview-supplement.md | 11 +++++++++++ docs/workshops/wheres-the-fun/lead-interview.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round-1-notes.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round-3-notes.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round-4-notes.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round-5-notes.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round1-araminta.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round1-gestalt.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round1-gore.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round1-mellanie.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round1-miri.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round1-nigel.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round1-ozzie.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round1-paula.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round1-tyre.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round3-araminta.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round3-gestalt.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round3-gore.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round3-mellanie.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round3-miri.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round3-nigel.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round3-ozzie.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round3-paula.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round3-tyre.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round4-araminta.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round4-gestalt.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round4-gore.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round4-interview.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round4-mellanie.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round4-miri.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round4-nigel.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round4-ozzie.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round4-paula.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round4-tyre.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round5-araminta.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round5-gestalt.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round5-gore.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round5-interview.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round5-mellanie.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round5-miri.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round5-nigel.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round5-ozzie.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round5-paula.md | 11 +++++++++++ docs/workshops/wheres-the-fun/round5-tyre.md | 11 +++++++++++ .../wheres-the-fun/wheres-the-fun-workshop-brief.md | 11 +++++++++++ docs/workshops/wheres-the-fun/workshop-outcomes.md | 11 +++++++++++ 47 files changed, 517 insertions(+) diff --git a/docs/workshops/wheres-the-fun/interview-supplement-round4.md b/docs/workshops/wheres-the-fun/interview-supplement-round4.md index cfe564bf7..f4712a82d 100644 --- a/docs/workshops/wheres-the-fun/interview-supplement-round4.md +++ b/docs/workshops/wheres-the-fun/interview-supplement-round4.md @@ -1,3 +1,14 @@ +--- +title: "Interview Supplement — Round 4 Decisions" +description: "Summary of 15 decisions locked during round 4 interview" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "" +round: 4 +created: 2026-03-05 +--- + # Interview Supplement — Round 4 Decisions ## Where's the Fun? Workshop | 2026-03-05 diff --git a/docs/workshops/wheres-the-fun/interview-supplement.md b/docs/workshops/wheres-the-fun/interview-supplement.md index 014c7ef1b..96541d155 100644 --- a/docs/workshops/wheres-the-fun/interview-supplement.md +++ b/docs/workshops/wheres-the-fun/interview-supplement.md @@ -1,3 +1,14 @@ +--- +title: "Interview Supplement — Post-Round 3 Direction" +description: "Post-round 3 design direction decisions from facilitator interview with Jeroen" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "" +round: 3 +created: 2026-03-05 +--- + # Interview Supplement — Post-Round 3 Direction ## Where's the Fun? Workshop | 2026-03-05 diff --git a/docs/workshops/wheres-the-fun/lead-interview.md b/docs/workshops/wheres-the-fun/lead-interview.md index 2c63815b3..304475163 100644 --- a/docs/workshops/wheres-the-fun/lead-interview.md +++ b/docs/workshops/wheres-the-fun/lead-interview.md @@ -1,3 +1,14 @@ +--- +title: "Round 2: Interview Transcript" +description: "Full round 2 interview transcript with Jeroen on v0.1 playtest experience" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "" +round: 2 +created: 2026-03-05 +--- + # Round 2: Interview Transcript ## Where's the Fun? Workshop | 2026-03-05 diff --git a/docs/workshops/wheres-the-fun/round-1-notes.md b/docs/workshops/wheres-the-fun/round-1-notes.md index 0703a3d44..e14eefc69 100644 --- a/docs/workshops/wheres-the-fun/round-1-notes.md +++ b/docs/workshops/wheres-the-fun/round-1-notes.md @@ -1,3 +1,14 @@ +--- +title: "Round 1 Notes — Where's the Fun? Workshop" +description: "Qatux's consolidated notes from all 9 agent diagnosis submissions" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "qatux" +round: 1 +created: 2026-03-05 +--- + # Round 1 Notes — Where's the Fun? Workshop ## QATUX — Documenter diff --git a/docs/workshops/wheres-the-fun/round-3-notes.md b/docs/workshops/wheres-the-fun/round-3-notes.md index 72900044f..90ac704e3 100644 --- a/docs/workshops/wheres-the-fun/round-3-notes.md +++ b/docs/workshops/wheres-the-fun/round-3-notes.md @@ -1,3 +1,14 @@ +--- +title: "Round 3 Notes — Where's the Fun? Workshop" +description: "Qatux's consolidated notes from all 9 agent proposal submissions" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "qatux" +round: 3 +created: 2026-03-05 +--- + # Round 3 Notes — Where's the Fun? Workshop ## QATUX — Documenter diff --git a/docs/workshops/wheres-the-fun/round-4-notes.md b/docs/workshops/wheres-the-fun/round-4-notes.md index e0ece4d9d..704085395 100644 --- a/docs/workshops/wheres-the-fun/round-4-notes.md +++ b/docs/workshops/wheres-the-fun/round-4-notes.md @@ -1,3 +1,14 @@ +--- +title: "Round 4 Notes — Cross-Review and Refinement" +description: "Qatux's consolidated notes from all 9 agent cross-review submissions" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "qatux" +round: 4 +created: 2026-03-05 +--- + # Round 4 Notes — Cross-Review and Refinement ## Where's the Fun? Workshop | 2026-03-05 diff --git a/docs/workshops/wheres-the-fun/round-5-notes.md b/docs/workshops/wheres-the-fun/round-5-notes.md index 8a9ba929d..55e487f7c 100644 --- a/docs/workshops/wheres-the-fun/round-5-notes.md +++ b/docs/workshops/wheres-the-fun/round-5-notes.md @@ -1,3 +1,14 @@ +--- +title: "Round 5 Notes — QATUX Summary" +description: "Qatux's consolidated summary of all 9 agent decision reactions" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "qatux" +round: 5 +created: 2026-03-05 +--- + # Round 5 Notes — QATUX Summary ## Where's the Fun? Workshop | 2026-03-05 diff --git a/docs/workshops/wheres-the-fun/round1-araminta.md b/docs/workshops/wheres-the-fun/round1-araminta.md index d8fbd2294..68c2062db 100644 --- a/docs/workshops/wheres-the-fun/round1-araminta.md +++ b/docs/workshops/wheres-the-fun/round1-araminta.md @@ -1,3 +1,14 @@ +--- +title: "Round 1: Diagnosis — Araminta (Visual Designer)" +description: "Araminta's visual design diagnosis questions on fog, HUD, and signal-to-noise" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "araminta" +round: 1 +created: 2026-03-05 +--- + # Round 1: Diagnosis — Araminta (Visual Designer) **Workshop:** Where's the Fun? diff --git a/docs/workshops/wheres-the-fun/round1-gestalt.md b/docs/workshops/wheres-the-fun/round1-gestalt.md index 71a185b34..d287b94b1 100644 --- a/docs/workshops/wheres-the-fun/round1-gestalt.md +++ b/docs/workshops/wheres-the-fun/round1-gestalt.md @@ -1,3 +1,14 @@ +--- +title: "Round 1: GESTALT Interview Questions" +description: "Gestalt's systems design diagnosis on asymmetric information as core mechanic" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "gestalt" +round: 1 +created: 2026-03-05 +--- + # Round 1: GESTALT Interview Questions ## Workshop: Where's the Fun? — Diagnosis Round diff --git a/docs/workshops/wheres-the-fun/round1-gore.md b/docs/workshops/wheres-the-fun/round1-gore.md index a2296c826..b9703079e 100644 --- a/docs/workshops/wheres-the-fun/round1-gore.md +++ b/docs/workshops/wheres-the-fun/round1-gore.md @@ -1,3 +1,14 @@ +--- +title: "Round 1 — Gore: Diagnosis Questions" +description: "Gore's diagnosis questions on themes, endgame, and narrative payoff" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "gore" +round: 1 +created: 2026-03-05 +--- + # Round 1 — Gore: Diagnosis Questions **Workshop:** Where's the Fun? diff --git a/docs/workshops/wheres-the-fun/round1-mellanie.md b/docs/workshops/wheres-the-fun/round1-mellanie.md index ed1cb05d8..389525561 100644 --- a/docs/workshops/wheres-the-fun/round1-mellanie.md +++ b/docs/workshops/wheres-the-fun/round1-mellanie.md @@ -1,3 +1,14 @@ +--- +title: "Round 1: Mellanie — Monologue Diagnosis Questions" +description: "Mellanie's diagnosis questions on monologue voice and copy clarity" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "mellanie" +round: 1 +created: 2026-03-05 +--- + # Round 1: Mellanie — Monologue Diagnosis Questions **Workshop:** Where's the Fun? | **Round:** 1 (Diagnosis) | **Agent:** Mellanie diff --git a/docs/workshops/wheres-the-fun/round1-miri.md b/docs/workshops/wheres-the-fun/round1-miri.md index 27f9e9765..d0308227d 100644 --- a/docs/workshops/wheres-the-fun/round1-miri.md +++ b/docs/workshops/wheres-the-fun/round1-miri.md @@ -1,3 +1,14 @@ +--- +title: "Round 1 — Miri: Diagnosis Questions" +description: "Miri's worldbuilding diagnosis on whether the setting sells itself in 30 seconds" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "miri" +round: 1 +created: 2026-03-05 +--- + # Round 1 — Miri: Diagnosis Questions ## Where's the Fun? Workshop — 2026-03-05 diff --git a/docs/workshops/wheres-the-fun/round1-nigel.md b/docs/workshops/wheres-the-fun/round1-nigel.md index 5886c4173..570df378f 100644 --- a/docs/workshops/wheres-the-fun/round1-nigel.md +++ b/docs/workshops/wheres-the-fun/round1-nigel.md @@ -1,3 +1,14 @@ +--- +title: "Round 1 — Nigel: Diagnosis Questions" +description: "Nigel's diagnosis questions on sandbox replayability and emergent gameplay" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "nigel" +round: 1 +created: 2026-03-05 +--- + # Round 1 — Nigel: Diagnosis Questions **Workshop:** Where's the Fun? v0.1 Playtest Reckoning diff --git a/docs/workshops/wheres-the-fun/round1-ozzie.md b/docs/workshops/wheres-the-fun/round1-ozzie.md index 9141dabc7..71c85dd5b 100644 --- a/docs/workshops/wheres-the-fun/round1-ozzie.md +++ b/docs/workshops/wheres-the-fun/round1-ozzie.md @@ -1,3 +1,14 @@ +--- +title: "Round 1 — Ozzie: Diagnosis Questions" +description: "Ozzie's diagnosis questions on player experience and wow factor" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "ozzie" +round: 1 +created: 2026-03-05 +--- + # Round 1 — Ozzie: Diagnosis Questions **Workshop:** Where's the Fun? v0.1 Playtest Reckoning diff --git a/docs/workshops/wheres-the-fun/round1-paula.md b/docs/workshops/wheres-the-fun/round1-paula.md index 7d7287375..e08b3fad6 100644 --- a/docs/workshops/wheres-the-fun/round1-paula.md +++ b/docs/workshops/wheres-the-fun/round1-paula.md @@ -1,3 +1,14 @@ +--- +title: "Round 1: Paula — Diagnosis Questions" +description: "Paula's narrative design diagnosis questions on story hooks and player agency" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "paula" +round: 1 +created: 2026-03-05 +--- + # Round 1: Paula — Diagnosis Questions ## Where's the Fun? Workshop | 2026-03-05 diff --git a/docs/workshops/wheres-the-fun/round1-tyre.md b/docs/workshops/wheres-the-fun/round1-tyre.md index 00243a7c7..c9dd8b10f 100644 --- a/docs/workshops/wheres-the-fun/round1-tyre.md +++ b/docs/workshops/wheres-the-fun/round1-tyre.md @@ -1,3 +1,14 @@ +--- +title: "Round 1: Tyre — Diagnosis Questions" +description: "Tyre's technical architecture diagnosis on engine constraints and feasibility" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "tyre" +round: 1 +created: 2026-03-05 +--- + # Round 1: Tyre — Diagnosis Questions **Role:** Technical Architect diff --git a/docs/workshops/wheres-the-fun/round3-araminta.md b/docs/workshops/wheres-the-fun/round3-araminta.md index d881ad77f..30a1b6538 100644 --- a/docs/workshops/wheres-the-fun/round3-araminta.md +++ b/docs/workshops/wheres-the-fun/round3-araminta.md @@ -1,3 +1,14 @@ +--- +title: "Round 3: Araminta — Visual Design Proposals" +description: "Araminta's visual design proposals for fog, HUD, and environmental storytelling" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "araminta" +round: 3 +created: 2026-03-05 +--- + # Round 3: Araminta — Visual Design Proposals ## Where's the Fun? Workshop | 2026-03-05 diff --git a/docs/workshops/wheres-the-fun/round3-gestalt.md b/docs/workshops/wheres-the-fun/round3-gestalt.md index 095251cbc..6cfae4d6d 100644 --- a/docs/workshops/wheres-the-fun/round3-gestalt.md +++ b/docs/workshops/wheres-the-fun/round3-gestalt.md @@ -1,3 +1,14 @@ +--- +title: "Round 3: GESTALT — Systems Design Proposals" +description: "Gestalt's systems design proposals based on full interview transcript" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "gestalt" +round: 3 +created: 2026-03-05 +--- + # Round 3: GESTALT — Systems Design Proposals ## Workshop: Where's the Fun? | 2026-03-05 diff --git a/docs/workshops/wheres-the-fun/round3-gore.md b/docs/workshops/wheres-the-fun/round3-gore.md index d739d06db..a49e9ed17 100644 --- a/docs/workshops/wheres-the-fun/round3-gore.md +++ b/docs/workshops/wheres-the-fun/round3-gore.md @@ -1,3 +1,14 @@ +--- +title: "Round 3 — Gore: Proposals" +description: "Gore's proposals on themes, endgame hooks, and narrative payoff systems" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "gore" +round: 3 +created: 2026-03-05 +--- + # Round 3 — Gore: Proposals **Workshop:** Where's the Fun? diff --git a/docs/workshops/wheres-the-fun/round3-mellanie.md b/docs/workshops/wheres-the-fun/round3-mellanie.md index f0e445e0e..afa587409 100644 --- a/docs/workshops/wheres-the-fun/round3-mellanie.md +++ b/docs/workshops/wheres-the-fun/round3-mellanie.md @@ -1,3 +1,14 @@ +--- +title: "Round 3: Mellanie — Copy & Voice Proposals" +description: "Mellanie's copy and voice proposals for monologue, UI text, and tone" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "mellanie" +round: 3 +created: 2026-03-05 +--- + # Round 3: Mellanie — Copy & Voice Proposals **Workshop:** Where's the Fun? | **Round:** 3 (Proposals) | **Agent:** Mellanie diff --git a/docs/workshops/wheres-the-fun/round3-miri.md b/docs/workshops/wheres-the-fun/round3-miri.md index d79e9902d..50d69730a 100644 --- a/docs/workshops/wheres-the-fun/round3-miri.md +++ b/docs/workshops/wheres-the-fun/round3-miri.md @@ -1,3 +1,14 @@ +--- +title: "Round 3 — Miri: Worldbuilding & Setting Proposals" +description: "Miri's worldbuilding proposals for setting identity and environmental narrative" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "miri" +round: 3 +created: 2026-03-05 +--- + # Round 3 — Miri: Worldbuilding & Setting Proposals ## Where's the Fun? Workshop | 2026-03-05 diff --git a/docs/workshops/wheres-the-fun/round3-nigel.md b/docs/workshops/wheres-the-fun/round3-nigel.md index c08cebf86..e1ab209a3 100644 --- a/docs/workshops/wheres-the-fun/round3-nigel.md +++ b/docs/workshops/wheres-the-fun/round3-nigel.md @@ -1,3 +1,14 @@ +--- +title: "Round 3 — Nigel: Proposals" +description: "Nigel's sandbox and replayability proposals for emergent gameplay systems" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "nigel" +round: 3 +created: 2026-03-05 +--- + # Round 3 — Nigel: Proposals **Workshop:** Where's the Fun? v0.1 Playtest Reckoning diff --git a/docs/workshops/wheres-the-fun/round3-ozzie.md b/docs/workshops/wheres-the-fun/round3-ozzie.md index 0d5fa1313..780a62ea5 100644 --- a/docs/workshops/wheres-the-fun/round3-ozzie.md +++ b/docs/workshops/wheres-the-fun/round3-ozzie.md @@ -1,3 +1,14 @@ +--- +title: "Round 3 — Ozzie: Proposals" +description: "Ozzie's player experience proposals for first-impression and wow moments" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "ozzie" +round: 3 +created: 2026-03-05 +--- + # Round 3 — Ozzie: Proposals ## Where's the Fun? Workshop | 2026-03-05 diff --git a/docs/workshops/wheres-the-fun/round3-paula.md b/docs/workshops/wheres-the-fun/round3-paula.md index 25080d3a3..669ac6b1b 100644 --- a/docs/workshops/wheres-the-fun/round3-paula.md +++ b/docs/workshops/wheres-the-fun/round3-paula.md @@ -1,3 +1,14 @@ +--- +title: "Round 3: Paula — Proposals" +description: "Paula's narrative design proposals for story structure and player motivation" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "paula" +round: 3 +created: 2026-03-05 +--- + # Round 3: Paula — Proposals ## Where's the Fun? Workshop | 2026-03-05 diff --git a/docs/workshops/wheres-the-fun/round3-tyre.md b/docs/workshops/wheres-the-fun/round3-tyre.md index 72210a57a..2ec5caf1e 100644 --- a/docs/workshops/wheres-the-fun/round3-tyre.md +++ b/docs/workshops/wheres-the-fun/round3-tyre.md @@ -1,3 +1,14 @@ +--- +title: "Round 3: Tyre — Technical Architecture Proposal" +description: "Tyre's technical architecture proposal for implementation feasibility" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "tyre" +round: 3 +created: 2026-03-05 +--- + # Round 3: Tyre — Technical Architecture Proposal **Workshop:** Where's the Fun? | **Round:** 3 (Proposals) | **Agent:** Tyre (Technical Architect) diff --git a/docs/workshops/wheres-the-fun/round4-araminta.md b/docs/workshops/wheres-the-fun/round4-araminta.md index ea7f1c9ce..030860a0b 100644 --- a/docs/workshops/wheres-the-fun/round4-araminta.md +++ b/docs/workshops/wheres-the-fun/round4-araminta.md @@ -1,3 +1,14 @@ +--- +title: "Round 4: Araminta — Cross-Review and Refinement" +description: "Araminta's cross-review and refinement of round 3 proposals" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "araminta" +round: 4 +created: 2026-03-05 +--- + # Round 4: Araminta — Cross-Review and Refinement ## Where's the Fun? Workshop | 2026-03-05 diff --git a/docs/workshops/wheres-the-fun/round4-gestalt.md b/docs/workshops/wheres-the-fun/round4-gestalt.md index 72dd48270..12aa3d928 100644 --- a/docs/workshops/wheres-the-fun/round4-gestalt.md +++ b/docs/workshops/wheres-the-fun/round4-gestalt.md @@ -1,3 +1,14 @@ +--- +title: "Round 4: GESTALT — Cross-Review and Questions" +description: "Gestalt's cross-review questions on systems design interactions" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "gestalt" +round: 4 +created: 2026-03-05 +--- + # Round 4: GESTALT — Cross-Review and Questions ## Workshop: Where's the Fun? | 2026-03-05 diff --git a/docs/workshops/wheres-the-fun/round4-gore.md b/docs/workshops/wheres-the-fun/round4-gore.md index 4835b1340..200ad8e88 100644 --- a/docs/workshops/wheres-the-fun/round4-gore.md +++ b/docs/workshops/wheres-the-fun/round4-gore.md @@ -1,3 +1,14 @@ +--- +title: "Round 4 — Gore: Cross-Review and Refinement Questions" +description: "Gore's cross-review and refinement questions on themes and endgame" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "gore" +round: 4 +created: 2026-03-05 +--- + # Round 4 — Gore: Cross-Review and Refinement Questions **Workshop:** Where's the Fun? diff --git a/docs/workshops/wheres-the-fun/round4-interview.md b/docs/workshops/wheres-the-fun/round4-interview.md index 6fd2c42c0..49b36f11c 100644 --- a/docs/workshops/wheres-the-fun/round4-interview.md +++ b/docs/workshops/wheres-the-fun/round4-interview.md @@ -1,3 +1,14 @@ +--- +title: "Round 4 Interview: Near-Miss Refinement" +description: "Round 4 interview transcript refining near-miss decisions with Jeroen" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "" +round: 4 +created: 2026-03-05 +--- + # Round 4 Interview: Near-Miss Refinement ## Where's the Fun? Workshop | 2026-03-05 diff --git a/docs/workshops/wheres-the-fun/round4-mellanie.md b/docs/workshops/wheres-the-fun/round4-mellanie.md index f12f020f8..99367c26e 100644 --- a/docs/workshops/wheres-the-fun/round4-mellanie.md +++ b/docs/workshops/wheres-the-fun/round4-mellanie.md @@ -1,3 +1,14 @@ +--- +title: "Round 4: Mellanie — Cross-Review and Refinement Questions" +description: "Mellanie's cross-review and refinement questions on copy and voice" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "mellanie" +round: 4 +created: 2026-03-05 +--- + # Round 4: Mellanie — Cross-Review and Refinement Questions **Workshop:** Where's the Fun? | **Round:** 4 (Synthesis) | **Agent:** Mellanie diff --git a/docs/workshops/wheres-the-fun/round4-miri.md b/docs/workshops/wheres-the-fun/round4-miri.md index 339ff9823..e055b4794 100644 --- a/docs/workshops/wheres-the-fun/round4-miri.md +++ b/docs/workshops/wheres-the-fun/round4-miri.md @@ -1,3 +1,14 @@ +--- +title: "Round 4 — Miri: Cross-Review and Refinement" +description: "Miri's cross-review and refinement of worldbuilding proposals" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "miri" +round: 4 +created: 2026-03-05 +--- + # Round 4 — Miri: Cross-Review and Refinement ## Where's the Fun? Workshop | 2026-03-05 diff --git a/docs/workshops/wheres-the-fun/round4-nigel.md b/docs/workshops/wheres-the-fun/round4-nigel.md index bb511aba7..80869a992 100644 --- a/docs/workshops/wheres-the-fun/round4-nigel.md +++ b/docs/workshops/wheres-the-fun/round4-nigel.md @@ -1,3 +1,14 @@ +--- +title: "Round 4 — Nigel: Cross-Review and Refinement" +description: "Nigel's cross-review and refinement of sandbox and replayability proposals" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "nigel" +round: 4 +created: 2026-03-05 +--- + # Round 4 — Nigel: Cross-Review and Refinement **Workshop:** Where's the Fun? v0.1 Playtest Reckoning diff --git a/docs/workshops/wheres-the-fun/round4-ozzie.md b/docs/workshops/wheres-the-fun/round4-ozzie.md index 605920149..f62eee088 100644 --- a/docs/workshops/wheres-the-fun/round4-ozzie.md +++ b/docs/workshops/wheres-the-fun/round4-ozzie.md @@ -1,3 +1,14 @@ +--- +title: "Round 4 — Ozzie: Cross-Review and Refinement Questions" +description: "Ozzie's cross-review and refinement questions on player experience" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "ozzie" +round: 4 +created: 2026-03-05 +--- + # Round 4 — Ozzie: Cross-Review and Refinement Questions ## Where's the Fun? Workshop | 2026-03-05 diff --git a/docs/workshops/wheres-the-fun/round4-paula.md b/docs/workshops/wheres-the-fun/round4-paula.md index c08708021..3746126b7 100644 --- a/docs/workshops/wheres-the-fun/round4-paula.md +++ b/docs/workshops/wheres-the-fun/round4-paula.md @@ -1,3 +1,14 @@ +--- +title: "Round 4: Paula — Cross-Review and Refinement Questions" +description: "Paula's cross-review and refinement questions on narrative design" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "paula" +round: 4 +created: 2026-03-05 +--- + # Round 4: Paula — Cross-Review and Refinement Questions ## Where's the Fun? Workshop | 2026-03-05 diff --git a/docs/workshops/wheres-the-fun/round4-tyre.md b/docs/workshops/wheres-the-fun/round4-tyre.md index b26d4c922..87c7c03ad 100644 --- a/docs/workshops/wheres-the-fun/round4-tyre.md +++ b/docs/workshops/wheres-the-fun/round4-tyre.md @@ -1,3 +1,14 @@ +--- +title: "Round 4: Tyre — Cross-Review and Refinement Questions" +description: "Tyre's cross-review and refinement questions on technical architecture" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "tyre" +round: 4 +created: 2026-03-05 +--- + # Round 4: Tyre — Cross-Review and Refinement Questions **Workshop:** Where's the Fun? | **Round:** 4 (Synthesis) | **Agent:** Tyre (Technical Architect) diff --git a/docs/workshops/wheres-the-fun/round5-araminta.md b/docs/workshops/wheres-the-fun/round5-araminta.md index 4820fadd9..315b45792 100644 --- a/docs/workshops/wheres-the-fun/round5-araminta.md +++ b/docs/workshops/wheres-the-fun/round5-araminta.md @@ -1,3 +1,14 @@ +--- +title: "Round 5: Araminta — Visual Design Reaction to 15 Decisions" +description: "Araminta's visual design reactions to the 15 locked decisions" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "araminta" +round: 5 +created: 2026-03-05 +--- + # Round 5: Araminta — Visual Design Reaction to 15 Decisions ## Where's the Fun? Workshop | 2026-03-05 diff --git a/docs/workshops/wheres-the-fun/round5-gestalt.md b/docs/workshops/wheres-the-fun/round5-gestalt.md index a1cf8a7a7..c9211833c 100644 --- a/docs/workshops/wheres-the-fun/round5-gestalt.md +++ b/docs/workshops/wheres-the-fun/round5-gestalt.md @@ -1,3 +1,14 @@ +--- +title: "Round 5: GESTALT — Systems Design Reaction to 15 Locked Decisions" +description: "Gestalt's systems design reactions to the 15 locked decisions" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "gestalt" +round: 5 +created: 2026-03-05 +--- + # Round 5: GESTALT — Systems Design Reaction to 15 Locked Decisions ## Where's the Fun? Workshop | 2026-03-05 diff --git a/docs/workshops/wheres-the-fun/round5-gore.md b/docs/workshops/wheres-the-fun/round5-gore.md index be9d27050..669af1b47 100644 --- a/docs/workshops/wheres-the-fun/round5-gore.md +++ b/docs/workshops/wheres-the-fun/round5-gore.md @@ -1,3 +1,14 @@ +--- +title: "Round 5 — Gore: Reacting to the 15 Locked Decisions" +description: "Gore's thematic reactions to the 15 locked decisions" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "gore" +round: 5 +created: 2026-03-05 +--- + # Round 5 — Gore: Reacting to the 15 Locked Decisions ## Where's the Fun? Workshop | 2026-03-05 diff --git a/docs/workshops/wheres-the-fun/round5-interview.md b/docs/workshops/wheres-the-fun/round5-interview.md index 510e6c714..d425768c2 100644 --- a/docs/workshops/wheres-the-fun/round5-interview.md +++ b/docs/workshops/wheres-the-fun/round5-interview.md @@ -1,3 +1,14 @@ +--- +title: "Round 5 Interview: Decision Reaction Refinement" +description: "Round 5 interview refining decision reactions with Jeroen" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "" +round: 5 +created: 2026-03-05 +--- + # Round 5 Interview: Decision Reaction Refinement ## Where's the Fun? Workshop | 2026-03-05 diff --git a/docs/workshops/wheres-the-fun/round5-mellanie.md b/docs/workshops/wheres-the-fun/round5-mellanie.md index c7fbc3e26..26ad6dd79 100644 --- a/docs/workshops/wheres-the-fun/round5-mellanie.md +++ b/docs/workshops/wheres-the-fun/round5-mellanie.md @@ -1,3 +1,14 @@ +--- +title: "Round 5: Mellanie — Copy Perspective on 15 Decisions" +description: "Mellanie's copy perspective reactions to the 15 locked decisions" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "mellanie" +round: 5 +created: 2026-03-05 +--- + # Round 5: Mellanie — Copy Perspective on 15 Decisions **Workshop:** Where's the Fun? | **Round:** 5 (Deep Dive) | **Agent:** Mellanie diff --git a/docs/workshops/wheres-the-fun/round5-miri.md b/docs/workshops/wheres-the-fun/round5-miri.md index bf6fefc65..99536d022 100644 --- a/docs/workshops/wheres-the-fun/round5-miri.md +++ b/docs/workshops/wheres-the-fun/round5-miri.md @@ -1,3 +1,14 @@ +--- +title: "Round 5 — Miri: Reactions to 15 Decisions" +description: "Miri's worldbuilding reactions to the 15 locked decisions" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "miri" +round: 5 +created: 2026-03-05 +--- + # Round 5 — Miri: Reactions to 15 Decisions ## Where's the Fun? Workshop | 2026-03-05 diff --git a/docs/workshops/wheres-the-fun/round5-nigel.md b/docs/workshops/wheres-the-fun/round5-nigel.md index a61daffde..0856edfc1 100644 --- a/docs/workshops/wheres-the-fun/round5-nigel.md +++ b/docs/workshops/wheres-the-fun/round5-nigel.md @@ -1,3 +1,14 @@ +--- +title: "Round 5 — Nigel: Deep Reaction to the 15 Locked Decisions" +description: "Nigel's sandbox and replayability reactions to the 15 locked decisions" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "nigel" +round: 5 +created: 2026-03-05 +--- + # Round 5 — Nigel: Deep Reaction to the 15 Locked Decisions ## Where's the Fun? Workshop | 2026-03-05 diff --git a/docs/workshops/wheres-the-fun/round5-ozzie.md b/docs/workshops/wheres-the-fun/round5-ozzie.md index 3e02e433b..39458a078 100644 --- a/docs/workshops/wheres-the-fun/round5-ozzie.md +++ b/docs/workshops/wheres-the-fun/round5-ozzie.md @@ -1,3 +1,14 @@ +--- +title: "Round 5 — Ozzie: React to 15 Locked Decisions" +description: "Ozzie's player experience reactions to the 15 locked decisions" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "ozzie" +round: 5 +created: 2026-03-05 +--- + # Round 5 — Ozzie: React to 15 Locked Decisions ## Where's the Fun? Workshop | 2026-03-05 diff --git a/docs/workshops/wheres-the-fun/round5-paula.md b/docs/workshops/wheres-the-fun/round5-paula.md index 65d0aa3b3..f993c08ae 100644 --- a/docs/workshops/wheres-the-fun/round5-paula.md +++ b/docs/workshops/wheres-the-fun/round5-paula.md @@ -1,3 +1,14 @@ +--- +title: "Round 5: Paula — Narrative Reactions to the 15 Locked Decisions" +description: "Paula's narrative reactions to the 15 locked decisions" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "paula" +round: 5 +created: 2026-03-05 +--- + # Round 5: Paula — Narrative Reactions to the 15 Locked Decisions ## Where's the Fun? Workshop | 2026-03-05 diff --git a/docs/workshops/wheres-the-fun/round5-tyre.md b/docs/workshops/wheres-the-fun/round5-tyre.md index ac277dcb0..ed57725d1 100644 --- a/docs/workshops/wheres-the-fun/round5-tyre.md +++ b/docs/workshops/wheres-the-fun/round5-tyre.md @@ -1,3 +1,14 @@ +--- +title: "Round 5: Tyre -- Deep Dive on 15 Locked Decisions" +description: "Tyre's technical architecture reactions to the 15 locked decisions" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "tyre" +round: 5 +created: 2026-03-05 +--- + # Round 5: Tyre -- Deep Dive on 15 Locked Decisions **Workshop:** Where's the Fun? | **Round:** 5 (Decision Reaction) | **Agent:** Tyre (Technical Architect) diff --git a/docs/workshops/wheres-the-fun/wheres-the-fun-workshop-brief.md b/docs/workshops/wheres-the-fun/wheres-the-fun-workshop-brief.md index d5e3d9752..0a09f73f5 100644 --- a/docs/workshops/wheres-the-fun/wheres-the-fun-workshop-brief.md +++ b/docs/workshops/wheres-the-fun/wheres-the-fun-workshop-brief.md @@ -1,3 +1,14 @@ +--- +title: "Workshop Brief: Where's the Fun?" +description: "Workshop brief and agenda for the v0.1 playtest reckoning" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "" +round: 0 +created: 2026-03-05 +--- + # Workshop Brief: Where's the Fun? ## v0.1 Playtest Reckoning diff --git a/docs/workshops/wheres-the-fun/workshop-outcomes.md b/docs/workshops/wheres-the-fun/workshop-outcomes.md index fd458b6f5..b69c9daf3 100644 --- a/docs/workshops/wheres-the-fun/workshop-outcomes.md +++ b/docs/workshops/wheres-the-fun/workshop-outcomes.md @@ -1,3 +1,14 @@ +--- +title: "Workshop Outcomes: Where's the Fun?" +description: "Final workshop outcomes summarising all 5 rounds and 24 locked decisions" +type: workshop +status: archived +workshop: wheres-the-fun +agent: "qatux" +round: 0 +created: 2026-03-05 +--- + # Workshop Outcomes: Where's the Fun? ## The Settled Reach | 2026-03-05 From 5805f6876048511659f57b5e9f0531d6c0e492fc Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Sat, 14 Mar 2026 00:01:44 +0100 Subject: [PATCH 23/28] docs(docs): add frontmatter to wiki-review workshop Standardized YAML frontmatter on all 43 files. Co-Authored-By: Claude Opus 4.6 --- docs/workshops/wiki-review/SUMMARY.md | 11 +++++++++++ docs/workshops/wiki-review/lead-interview.md | 11 +++++++++++ docs/workshops/wiki-review/round1-gestalt.md | 11 +++++++++++ docs/workshops/wiki-review/round1-gore.md | 11 +++++++++++ docs/workshops/wiki-review/round1-mellanie.md | 11 +++++++++++ docs/workshops/wiki-review/round1-miri.md | 11 +++++++++++ docs/workshops/wiki-review/round1-nigel.md | 11 +++++++++++ docs/workshops/wiki-review/round1-ozzie.md | 11 +++++++++++ docs/workshops/wiki-review/round1-paula.md | 11 +++++++++++ docs/workshops/wiki-review/round1-tracking.md | 11 +++++++++++ docs/workshops/wiki-review/round1-tyre.md | 11 +++++++++++ docs/workshops/wiki-review/round2-gestalt.md | 11 +++++++++++ docs/workshops/wiki-review/round2-gore.md | 11 +++++++++++ docs/workshops/wiki-review/round2-mellanie.md | 11 +++++++++++ docs/workshops/wiki-review/round2-miri.md | 11 +++++++++++ docs/workshops/wiki-review/round2-nigel.md | 11 +++++++++++ docs/workshops/wiki-review/round2-ozzie.md | 11 +++++++++++ docs/workshops/wiki-review/round2-paula.md | 11 +++++++++++ docs/workshops/wiki-review/round2-tracking.md | 11 +++++++++++ docs/workshops/wiki-review/round2-tyre.md | 11 +++++++++++ docs/workshops/wiki-review/round3-gestalt.md | 11 +++++++++++ docs/workshops/wiki-review/round3-gore.md | 11 +++++++++++ docs/workshops/wiki-review/round3-mellanie.md | 11 +++++++++++ docs/workshops/wiki-review/round3-miri.md | 11 +++++++++++ docs/workshops/wiki-review/round3-nigel.md | 11 +++++++++++ docs/workshops/wiki-review/round3-ozzie.md | 11 +++++++++++ docs/workshops/wiki-review/round3-paula.md | 11 +++++++++++ docs/workshops/wiki-review/round3-si.md | 11 +++++++++++ docs/workshops/wiki-review/round3-tracking.md | 11 +++++++++++ docs/workshops/wiki-review/round3-tyre.md | 11 +++++++++++ docs/workshops/wiki-review/round4-gestalt.md | 11 +++++++++++ docs/workshops/wiki-review/round4-gore.md | 11 +++++++++++ docs/workshops/wiki-review/round4-mellanie.md | 11 +++++++++++ docs/workshops/wiki-review/round4-miri.md | 11 +++++++++++ docs/workshops/wiki-review/round4-nigel.md | 11 +++++++++++ docs/workshops/wiki-review/round4-ozzie.md | 11 +++++++++++ docs/workshops/wiki-review/round4-paula.md | 11 +++++++++++ docs/workshops/wiki-review/round4-si.md | 11 +++++++++++ docs/workshops/wiki-review/round4-tracking.md | 11 +++++++++++ docs/workshops/wiki-review/round4-tyre.md | 11 +++++++++++ docs/workshops/wiki-review/si-ticket-changes.md | 11 +++++++++++ .../wiki-review/wiki-review-workshop-brief.md | 11 +++++++++++ docs/workshops/wiki-review/workshop-outcomes.md | 11 +++++++++++ 43 files changed, 473 insertions(+) diff --git a/docs/workshops/wiki-review/SUMMARY.md b/docs/workshops/wiki-review/SUMMARY.md index a09a83900..976be07b5 100644 --- a/docs/workshops/wiki-review/SUMMARY.md +++ b/docs/workshops/wiki-review/SUMMARY.md @@ -1,3 +1,14 @@ +--- +title: "Wiki Review Workshop — Summary & Long-Term Content Strategy" +description: "Full workshop summary covering 4 rounds, lead interview, and key decisions" +type: workshop +status: archived +workshop: wiki-review +agent: "" +round: 0 +created: 2026-02-12 +--- + # Wiki Review Workshop — Summary & Long-Term Content Strategy ## Workshop Overview diff --git a/docs/workshops/wiki-review/lead-interview.md b/docs/workshops/wiki-review/lead-interview.md index fe56dc0dc..d1fca96df 100644 --- a/docs/workshops/wiki-review/lead-interview.md +++ b/docs/workshops/wiki-review/lead-interview.md @@ -1,3 +1,14 @@ +--- +title: "Lead Interview — Between Round 3 and Round 4" +description: "Interactive interview with project lead on cultural groups, NPC composition, and game direction" +type: workshop +status: archived +workshop: wiki-review +agent: "" +round: 0 +created: 2026-02-12 +--- + # Lead Interview — Between Round 3 and Round 4 **Date:** 2026-02-12 diff --git a/docs/workshops/wiki-review/round1-gestalt.md b/docs/workshops/wiki-review/round1-gestalt.md index d22882803..6b1d0de18 100644 --- a/docs/workshops/wiki-review/round1-gestalt.md +++ b/docs/workshops/wiki-review/round1-gestalt.md @@ -1,3 +1,14 @@ +--- +title: "Round 1 — Gestalt (Systems Design)" +description: "Systems design analysis of game triangles, mechanical decisions, and content structure" +type: workshop +status: archived +workshop: wiki-review +agent: "gestalt" +round: 1 +created: 2026-02-12 +--- + # Round 1 — Gestalt (Systems Design) *cracks knuckles* diff --git a/docs/workshops/wiki-review/round1-gore.md b/docs/workshops/wiki-review/round1-gore.md index 078cf2c86..c0ad92c3b 100644 --- a/docs/workshops/wiki-review/round1-gore.md +++ b/docs/workshops/wiki-review/round1-gore.md @@ -1,3 +1,14 @@ +--- +title: "Round 1 — Gore" +description: "Thematic direction check on whether the wiki captures what the game is about" +type: workshop +status: archived +workshop: wiki-review +agent: "gore" +round: 1 +created: 2026-02-12 +--- + # Round 1 — Gore ## Topic 1: Direction Check — Is This the Game We Want? diff --git a/docs/workshops/wiki-review/round1-mellanie.md b/docs/workshops/wiki-review/round1-mellanie.md index 026e81d06..bd5c2ffeb 100644 --- a/docs/workshops/wiki-review/round1-mellanie.md +++ b/docs/workshops/wiki-review/round1-mellanie.md @@ -1,3 +1,14 @@ +--- +title: "Round 1 — Mellanie (Librarian)" +description: "Authoring conventions, style guide findings, and environmental text patterns" +type: workshop +status: archived +workshop: wiki-review +agent: "mellanie" +round: 1 +created: 2026-02-12 +--- + # Round 1 Response: Mellanie (Librarian) **Topics:** 2 (Authoring Conventions / Style Guide), 3 (Environmental Text & Regional Culture) diff --git a/docs/workshops/wiki-review/round1-miri.md b/docs/workshops/wiki-review/round1-miri.md index ce98bee49..0677187c5 100644 --- a/docs/workshops/wiki-review/round1-miri.md +++ b/docs/workshops/wiki-review/round1-miri.md @@ -1,3 +1,14 @@ +--- +title: "Round 1 — Miri (Worldbuilder / Setting Designer)" +description: "Regional style guide template and Krenn System cultural brief" +type: workshop +status: archived +workshop: wiki-review +agent: "miri" +round: 1 +created: 2026-02-12 +--- + # Workshop Round 1 — Miri (Worldbuilder / Setting Designer) **Topics assigned:** 3 (Regional Style Guide + Krenn System Cultural Brief), 4 (Growth Planning / Wiki Scaling) diff --git a/docs/workshops/wiki-review/round1-nigel.md b/docs/workshops/wiki-review/round1-nigel.md index d5c8121ca..907d09660 100644 --- a/docs/workshops/wiki-review/round1-nigel.md +++ b/docs/workshops/wiki-review/round1-nigel.md @@ -1,3 +1,14 @@ +--- +title: "Round 1 — Nigel (Sandbox & Replayability)" +description: "Mod structure analysis and replayability thesis for content pools" +type: workshop +status: archived +workshop: wiki-review +agent: "nigel" +round: 1 +created: 2026-02-12 +--- + # Round 1 — Nigel (Sandbox & Replayability) ## Topic 5: Mod Structure — "Add a new NPC to the bar" diff --git a/docs/workshops/wiki-review/round1-ozzie.md b/docs/workshops/wiki-review/round1-ozzie.md index ddbb76b64..9c7d7e976 100644 --- a/docs/workshops/wiki-review/round1-ozzie.md +++ b/docs/workshops/wiki-review/round1-ozzie.md @@ -1,3 +1,14 @@ +--- +title: "Round 1 — Ozzie (Player Experience / Wow Factor)" +description: "Emotional impact assessment of NPCs and player experience moments" +type: workshop +status: archived +workshop: wiki-review +agent: "ozzie" +round: 1 +created: 2026-02-12 +--- + # Round 1 — Ozzie (Player Experience / Wow Factor) ## Topic 1: Emotional Impact — Who Makes Me Feel Something? diff --git a/docs/workshops/wiki-review/round1-paula.md b/docs/workshops/wiki-review/round1-paula.md index 2f36581e4..3c4e9bd72 100644 --- a/docs/workshops/wiki-review/round1-paula.md +++ b/docs/workshops/wiki-review/round1-paula.md @@ -1,3 +1,14 @@ +--- +title: "Round 1 — Paula (Librarian)" +description: "Honest trade-off assessment of wiki content, tier templates, and naming patterns" +type: workshop +status: archived +workshop: wiki-review +agent: "paula" +round: 1 +created: 2026-02-12 +--- + # Round 1 — Paula (Librarian) **Topics**: 1 (Trade-offs), 2 (Tier Templates), 3 (Naming Patterns), 6 (PC Upgrade Fields) diff --git a/docs/workshops/wiki-review/round1-tracking.md b/docs/workshops/wiki-review/round1-tracking.md index 13148533d..27f79cd25 100644 --- a/docs/workshops/wiki-review/round1-tracking.md +++ b/docs/workshops/wiki-review/round1-tracking.md @@ -1,3 +1,14 @@ +--- +title: "Round 1 Tracking Document" +description: "Proposal registry, tensions, and open questions catalogued from Round 1 responses" +type: workshop +status: archived +workshop: wiki-review +agent: "" +round: 1 +created: 2026-02-12 +--- + # Wiki Review Workshop — Round 1 Tracking Document **Compiled by:** Qatux (Documenter) diff --git a/docs/workshops/wiki-review/round1-tyre.md b/docs/workshops/wiki-review/round1-tyre.md index c0507b403..d20becef0 100644 --- a/docs/workshops/wiki-review/round1-tyre.md +++ b/docs/workshops/wiki-review/round1-tyre.md @@ -1,3 +1,14 @@ +--- +title: "Round 1 — Tyre (Technical Architect)" +description: "Wiki taxonomy hardening and content directory structure with mod overlay" +type: workshop +status: archived +workshop: wiki-review +agent: "tyre" +round: 1 +created: 2026-02-12 +--- + # Wiki Review Workshop — Round 1: Tyre (Technical Architect) **Topics:** 4 (Taxonomy Nesting) and 5 (Content Directory Structure + Mod Overlay) diff --git a/docs/workshops/wiki-review/round2-gestalt.md b/docs/workshops/wiki-review/round2-gestalt.md index 2ea172f42..856f77bca 100644 --- a/docs/workshops/wiki-review/round2-gestalt.md +++ b/docs/workshops/wiki-review/round2-gestalt.md @@ -1,3 +1,14 @@ +--- +title: "Round 2 — Gestalt (Systems Design)" +description: "Cross-pollination synthesis reconciling five tensions from Round 1" +type: workshop +status: archived +workshop: wiki-review +agent: "gestalt" +round: 2 +created: 2026-02-12 +--- + # Round 2 — Gestalt (Systems Design) *cracks knuckles* diff --git a/docs/workshops/wiki-review/round2-gore.md b/docs/workshops/wiki-review/round2-gore.md index 2ade8f194..d729f371c 100644 --- a/docs/workshops/wiki-review/round2-gore.md +++ b/docs/workshops/wiki-review/round2-gore.md @@ -1,3 +1,14 @@ +--- +title: "Round 2 — Gore (Cross-Pollination)" +description: "FRIEND pool requirements, complicity theme refinement, and cross-agent tension resolution" +type: workshop +status: archived +workshop: wiki-review +agent: "gore" +round: 2 +created: 2026-02-12 +--- + # Round 2 — Gore (Cross-Pollination) Four tensions to address. I'll take them in the order that builds on itself. diff --git a/docs/workshops/wiki-review/round2-mellanie.md b/docs/workshops/wiki-review/round2-mellanie.md index ed60c9cd3..6a5019119 100644 --- a/docs/workshops/wiki-review/round2-mellanie.md +++ b/docs/workshops/wiki-review/round2-mellanie.md @@ -1,3 +1,14 @@ +--- +title: "Round 2 — Mellanie (Cross-Pollination)" +description: "Environmental text examples using Miri's cultural brief and responses to all Round 1 proposals" +type: workshop +status: archived +workshop: wiki-review +agent: "mellanie" +round: 2 +created: 2026-02-12 +--- + # Round 2 Response: Mellanie **Responding to:** Miri (cultural brief), Paula (tier templates), Gore (complicity + smuggler gap), Ozzie (gut-check line), Gestalt (mechanical constraints), Tyre (content directory), Nigel (mod authoring) diff --git a/docs/workshops/wiki-review/round2-miri.md b/docs/workshops/wiki-review/round2-miri.md index 7b26dc374..3df38d86f 100644 --- a/docs/workshops/wiki-review/round2-miri.md +++ b/docs/workshops/wiki-review/round2-miri.md @@ -1,3 +1,14 @@ +--- +title: "Round 2 — Miri (Worldbuilder / Setting Designer)" +description: "Full canonical NPC names and cross-pollination responses to all Round 1 files" +type: workshop +status: archived +workshop: wiki-review +agent: "miri" +round: 2 +created: 2026-02-12 +--- + # Workshop Round 2 — Miri (Worldbuilder / Setting Designer) **Cross-pollination responses.** I've read all Round 1 files. diff --git a/docs/workshops/wiki-review/round2-nigel.md b/docs/workshops/wiki-review/round2-nigel.md index 79ab4b866..c4e3ec747 100644 --- a/docs/workshops/wiki-review/round2-nigel.md +++ b/docs/workshops/wiki-review/round2-nigel.md @@ -1,3 +1,14 @@ +--- +title: "Round 2 — Nigel (Sandbox & Replayability)" +description: "Cross-pollination synthesis on FRIEND pool depth and convergence across tensions" +type: workshop +status: archived +workshop: wiki-review +agent: "nigel" +round: 2 +created: 2026-02-12 +--- + # Round 2 — Nigel (Sandbox & Replayability) ## Cross-Pollination Synthesis diff --git a/docs/workshops/wiki-review/round2-ozzie.md b/docs/workshops/wiki-review/round2-ozzie.md index 5eddbcc08..66bf3fad3 100644 --- a/docs/workshops/wiki-review/round2-ozzie.md +++ b/docs/workshops/wiki-review/round2-ozzie.md @@ -1,3 +1,14 @@ +--- +title: "Round 2 — Ozzie (Player Experience / Wow Factor)" +description: "Cross-pollination on Hael tier status and player experience tension responses" +type: workshop +status: archived +workshop: wiki-review +agent: "ozzie" +round: 2 +created: 2026-02-12 +--- + # Round 2 — Ozzie (Player Experience / Wow Factor) ## Response to Round 1 Proposals — Cross-Pollination diff --git a/docs/workshops/wiki-review/round2-paula.md b/docs/workshops/wiki-review/round2-paula.md index bc1748236..a57c1fa32 100644 --- a/docs/workshops/wiki-review/round2-paula.md +++ b/docs/workshops/wiki-review/round2-paula.md @@ -1,3 +1,14 @@ +--- +title: "Round 2 — Paula (Librarian, Cross-Pollination)" +description: "Smuggler lens fix via complicity knowledge graph and cross-agent responses" +type: workshop +status: archived +workshop: wiki-review +agent: "paula" +round: 2 +created: 2026-02-12 +--- + # Round 2 — Paula (Librarian, Cross-Pollination) **Responding to:** Gore, Gestalt, Ozzie, Miri, Nigel, Tyre, Mellanie diff --git a/docs/workshops/wiki-review/round2-tracking.md b/docs/workshops/wiki-review/round2-tracking.md index f870c24c3..75fea0c76 100644 --- a/docs/workshops/wiki-review/round2-tracking.md +++ b/docs/workshops/wiki-review/round2-tracking.md @@ -1,3 +1,14 @@ +--- +title: "Round 2 Tracking Document" +description: "Tension resolution status and synthesis of Round 2 cross-pollination responses" +type: workshop +status: archived +workshop: wiki-review +agent: "" +round: 2 +created: 2026-02-12 +--- + # Wiki Review Workshop — Round 2 Tracking Document **Compiled by:** Qatux (Documenter) diff --git a/docs/workshops/wiki-review/round2-tyre.md b/docs/workshops/wiki-review/round2-tyre.md index 67a3b1dff..c3c7ab3bf 100644 --- a/docs/workshops/wiki-review/round2-tyre.md +++ b/docs/workshops/wiki-review/round2-tyre.md @@ -1,3 +1,14 @@ +--- +title: "Round 2 — Tyre (Technical Architect)" +description: "Unified content directory structure and architectural reconciliation of Round 1 proposals" +type: workshop +status: archived +workshop: wiki-review +agent: "tyre" +round: 2 +created: 2026-02-12 +--- + # Wiki Review Workshop — Round 2: Tyre (Technical Architect) Cross-pollination synthesis. Responding to all Round 1 outputs with architectural reconciliation. diff --git a/docs/workshops/wiki-review/round3-gestalt.md b/docs/workshops/wiki-review/round3-gestalt.md index e72190d26..21a8f4e81 100644 --- a/docs/workshops/wiki-review/round3-gestalt.md +++ b/docs/workshops/wiki-review/round3-gestalt.md @@ -1,3 +1,14 @@ +--- +title: "Round 3 — Gestalt (Systems Design)" +description: "Long-term content strategy for scaling to 20+ districts without linear authoring effort" +type: workshop +status: archived +workshop: wiki-review +agent: "gestalt" +round: 3 +created: 2026-02-12 +--- + # Round 3 — Gestalt (Systems Design): Long-Term Content Strategy *cracks knuckles* diff --git a/docs/workshops/wiki-review/round3-gore.md b/docs/workshops/wiki-review/round3-gore.md index 44f101060..49814c9ce 100644 --- a/docs/workshops/wiki-review/round3-gore.md +++ b/docs/workshops/wiki-review/round3-gore.md @@ -1,3 +1,14 @@ +--- +title: "Round 3 — Gore (Long-Term Content Strategy)" +description: "Reframing complicity as Sova-specific within a broader thematic framework" +type: workshop +status: archived +workshop: wiki-review +agent: "gore" +round: 3 +created: 2026-02-12 +--- + # Round 3 — Gore (Long-Term Content Strategy) This is the conversation I've been waiting for. Everything before this was about Sova. This is about the game. diff --git a/docs/workshops/wiki-review/round3-mellanie.md b/docs/workshops/wiki-review/round3-mellanie.md index 129a71f34..f1799d93a 100644 --- a/docs/workshops/wiki-review/round3-mellanie.md +++ b/docs/workshops/wiki-review/round3-mellanie.md @@ -1,3 +1,14 @@ +--- +title: "Round 3 — Mellanie (Long-Term Content Strategy)" +description: "Writer's perspective on scaling authored content across dozens of districts and cultural registers" +type: workshop +status: archived +workshop: wiki-review +agent: "mellanie" +round: 3 +created: 2026-02-12 +--- + # Round 3 Response: Mellanie — Long-Term Content Strategy *The writer's perspective on building a game that requires thousands of authored lines across dozens of districts, hundreds of NPCs, and multiple cultural registers.* diff --git a/docs/workshops/wiki-review/round3-miri.md b/docs/workshops/wiki-review/round3-miri.md index 2d1eae031..4dbbca5a6 100644 --- a/docs/workshops/wiki-review/round3-miri.md +++ b/docs/workshops/wiki-review/round3-miri.md @@ -1,3 +1,14 @@ +--- +title: "Round 3 — Miri (Worldbuilder / Setting Designer)" +description: "Long-term worldbuilding content strategy and thematic scope analysis" +type: workshop +status: archived +workshop: wiki-review +agent: "miri" +round: 3 +created: 2026-02-12 +--- + # Workshop Round 3 — Miri (Worldbuilder / Setting Designer) **Long-term content strategy from the worldbuilding perspective.** diff --git a/docs/workshops/wiki-review/round3-nigel.md b/docs/workshops/wiki-review/round3-nigel.md index 3dced53a3..67c37d7c1 100644 --- a/docs/workshops/wiki-review/round3-nigel.md +++ b/docs/workshops/wiki-review/round3-nigel.md @@ -1,3 +1,14 @@ +--- +title: "Round 3 — Nigel (Sandbox & Replayability)" +description: "Long-term replayability at scale without v0.1 constraints" +type: workshop +status: archived +workshop: wiki-review +agent: "nigel" +round: 3 +created: 2026-02-12 +--- + # Round 3 — Nigel (Sandbox & Replayability) ## Long-Term Content Strategy: Replayability at Scale diff --git a/docs/workshops/wiki-review/round3-ozzie.md b/docs/workshops/wiki-review/round3-ozzie.md index a24ef47c7..542458a2f 100644 --- a/docs/workshops/wiki-review/round3-ozzie.md +++ b/docs/workshops/wiki-review/round3-ozzie.md @@ -1,3 +1,14 @@ +--- +title: "Round 3 — Ozzie (Player Experience / Wow Factor)" +description: "Full game player experience vision across dozens of districts and multiple playthroughs" +type: workshop +status: archived +workshop: wiki-review +agent: "ozzie" +round: 3 +created: 2026-02-12 +--- + # Round 3 — Ozzie (Player Experience / Wow Factor) ## Long-Term Content Strategy: What Does the Full Game Feel Like? diff --git a/docs/workshops/wiki-review/round3-paula.md b/docs/workshops/wiki-review/round3-paula.md index 28ed218c6..6062589bf 100644 --- a/docs/workshops/wiki-review/round3-paula.md +++ b/docs/workshops/wiki-review/round3-paula.md @@ -1,3 +1,14 @@ +--- +title: "Round 3 — Paula (Librarian, Long-Term Content Strategy)" +description: "Long-term content strategy for multiple star systems, hundreds of NPCs, and years of content" +type: workshop +status: archived +workshop: wiki-review +agent: "paula" +round: 3 +created: 2026-02-12 +--- + # Round 3 — Paula (Librarian, Long-Term Content Strategy) **Scope:** The full game. Multiple star systems, dozens of districts, hundreds of NPCs, years of content. diff --git a/docs/workshops/wiki-review/round3-si.md b/docs/workshops/wiki-review/round3-si.md index 97204996d..39aee0e59 100644 --- a/docs/workshops/wiki-review/round3-si.md +++ b/docs/workshops/wiki-review/round3-si.md @@ -1,3 +1,14 @@ +--- +title: "Round 3 — SI (Project Manager)" +description: "Production perspective on long-term content strategy and per-district thematic variation" +type: workshop +status: archived +workshop: wiki-review +agent: "si" +round: 3 +created: 2026-02-12 +--- + # Round 3 — SI (Project Manager) Long-term content strategy from the production perspective. I don't design — I plan delivery. Here's what I see when I look at 20+ districts, 300+ NPCs, and years of content. diff --git a/docs/workshops/wiki-review/round3-tracking.md b/docs/workshops/wiki-review/round3-tracking.md index bede625e3..13c3e98ba 100644 --- a/docs/workshops/wiki-review/round3-tracking.md +++ b/docs/workshops/wiki-review/round3-tracking.md @@ -1,3 +1,14 @@ +--- +title: "Round 3 Tracking — Long-Term Content Strategy" +description: "Theme proposals and synthesis from all 9 Round 3 contributor responses" +type: workshop +status: archived +workshop: wiki-review +agent: "" +round: 3 +created: 2026-02-12 +--- + # Round 3 Tracking — Long-Term Content Strategy **Round focus:** Long-term vision only. No v0.1 scoping. "What does the full game look like?" diff --git a/docs/workshops/wiki-review/round3-tyre.md b/docs/workshops/wiki-review/round3-tyre.md index 73104c38c..30726ec26 100644 --- a/docs/workshops/wiki-review/round3-tyre.md +++ b/docs/workshops/wiki-review/round3-tyre.md @@ -1,3 +1,14 @@ +--- +title: "Round 3 — Tyre (Technical Architect)" +description: "Systems architecture perspective on full-game content strategy and mod ecosystem" +type: workshop +status: archived +workshop: wiki-review +agent: "tyre" +round: 3 +created: 2026-02-12 +--- + # Round 3 — Tyre (Technical Architect) Long-term content strategy from the systems architecture perspective. Thinking about the full game: multiple star systems, dozens of districts, hundreds of NPCs, mod ecosystem, years of content production. diff --git a/docs/workshops/wiki-review/round4-gestalt.md b/docs/workshops/wiki-review/round4-gestalt.md index 236fa12cf..ad6510e50 100644 --- a/docs/workshops/wiki-review/round4-gestalt.md +++ b/docs/workshops/wiki-review/round4-gestalt.md @@ -1,3 +1,14 @@ +--- +title: "Round 4 — Gestalt (Systems Design)" +description: "Generator-input reframe of content strategy for 300-world procedural scale" +type: workshop +status: archived +workshop: wiki-review +agent: "gestalt" +round: 4 +created: 2026-02-12 +--- + # Round 4 — Gestalt (Systems Design): Generator-Input Reframe *cracks knuckles* diff --git a/docs/workshops/wiki-review/round4-gore.md b/docs/workshops/wiki-review/round4-gore.md index 911489a28..bb6044a0c 100644 --- a/docs/workshops/wiki-review/round4-gore.md +++ b/docs/workshops/wiki-review/round4-gore.md @@ -1,3 +1,14 @@ +--- +title: "Round 4 — Gore (Responding to Lead's Direction)" +description: "Reframing complicity and authoring for 300-world generator-driven scale" +type: workshop +status: archived +workshop: wiki-review +agent: "gore" +round: 4 +created: 2026-02-12 +--- + # Round 4 — Gore (Responding to Lead's Direction) 300 worlds. diff --git a/docs/workshops/wiki-review/round4-mellanie.md b/docs/workshops/wiki-review/round4-mellanie.md index e11a6be5c..ae7c3afc2 100644 --- a/docs/workshops/wiki-review/round4-mellanie.md +++ b/docs/workshops/wiki-review/round4-mellanie.md @@ -1,3 +1,14 @@ +--- +title: "Round 4 — Mellanie (300-World Generator-Input Scale)" +description: "Reframing style briefs as generator inputs for 300-world procedural generation" +type: workshop +status: archived +workshop: wiki-review +agent: "mellanie" +round: 4 +created: 2026-02-12 +--- + # Round 4 Response: Mellanie — 300-World Generator-Input Scale *Responding to the project lead's decisions. Reframing everything I proposed in Rounds 1-3 for a 300-world procedurally generated game where style briefs ARE generator inputs.* diff --git a/docs/workshops/wiki-review/round4-miri.md b/docs/workshops/wiki-review/round4-miri.md index 487e790b9..abf52547e 100644 --- a/docs/workshops/wiki-review/round4-miri.md +++ b/docs/workshops/wiki-review/round4-miri.md @@ -1,3 +1,14 @@ +--- +title: "Round 4 — Miri (Worldbuilder / Setting Designer)" +description: "Worldbuilding reframe for 300-world generator-input scale" +type: workshop +status: archived +workshop: wiki-review +agent: "miri" +round: 4 +created: 2026-02-12 +--- + # Workshop Round 4 — Miri (Worldbuilder / Setting Designer) **Responding to the lead's decisions. Reframing for 300-world generator-input scale.** diff --git a/docs/workshops/wiki-review/round4-nigel.md b/docs/workshops/wiki-review/round4-nigel.md index eee5b2de4..8a3d4a6c3 100644 --- a/docs/workshops/wiki-review/round4-nigel.md +++ b/docs/workshops/wiki-review/round4-nigel.md @@ -1,3 +1,14 @@ +--- +title: "Round 4 — Nigel (Sandbox & Replayability)" +description: "Replayability proposals reframed for 300-world generator-driven scale" +type: workshop +status: archived +workshop: wiki-review +agent: "nigel" +round: 4 +created: 2026-02-12 +--- + # Round 4 — Nigel (Sandbox & Replayability) ## Responding to the Lead's Direction: 300 Worlds, Generators, and THE NOBODY diff --git a/docs/workshops/wiki-review/round4-ozzie.md b/docs/workshops/wiki-review/round4-ozzie.md index cbea5b90d..81be623a4 100644 --- a/docs/workshops/wiki-review/round4-ozzie.md +++ b/docs/workshops/wiki-review/round4-ozzie.md @@ -1,3 +1,14 @@ +--- +title: "Round 4 — Ozzie (Player Experience / Wow Factor)" +description: "Player experience reframe for procedurally achieving wow moments at 300-world scale" +type: workshop +status: archived +workshop: wiki-review +agent: "ozzie" +round: 4 +created: 2026-02-12 +--- + # Round 4 — Ozzie (Player Experience / Wow Factor) ## Responding to the Lead's Decisions — 300-World Scale diff --git a/docs/workshops/wiki-review/round4-paula.md b/docs/workshops/wiki-review/round4-paula.md index dae642299..a396e1523 100644 --- a/docs/workshops/wiki-review/round4-paula.md +++ b/docs/workshops/wiki-review/round4-paula.md @@ -1,3 +1,14 @@ +--- +title: "Round 4 — Paula (Librarian, Response to Lead's Direction)" +description: "Reality check on 300-world reframe for NPC composition and content pipelines" +type: workshop +status: archived +workshop: wiki-review +agent: "paula" +round: 4 +created: 2026-02-12 +--- + # Round 4 — Paula (Librarian, Response to Lead's Direction) **Responding to:** Lead's decisions on cultural ingredients, NPC composition, PC archetypes, Sacred/Profane/Middle Kingdom, and the 300-world reframe. diff --git a/docs/workshops/wiki-review/round4-si.md b/docs/workshops/wiki-review/round4-si.md index c64813c4b..3bc187ea6 100644 --- a/docs/workshops/wiki-review/round4-si.md +++ b/docs/workshops/wiki-review/round4-si.md @@ -1,3 +1,14 @@ +--- +title: "Round 4 — SI (Project Manager)" +description: "Production plan rewrite for 300-world generator-driven project scope" +type: workshop +status: archived +workshop: wiki-review +agent: "si" +round: 4 +created: 2026-02-12 +--- + # Round 4 — SI (Project Manager) Responding to the lead's direction. The 300-world reframe changes everything I said in Round 3. Let me redo the math and the plan. diff --git a/docs/workshops/wiki-review/round4-tracking.md b/docs/workshops/wiki-review/round4-tracking.md index b00b649a7..056a992fb 100644 --- a/docs/workshops/wiki-review/round4-tracking.md +++ b/docs/workshops/wiki-review/round4-tracking.md @@ -1,3 +1,14 @@ +--- +title: "Round 4 Tracking — 300-World Generator Reframe" +description: "Synthesis of all 9 contributor responses to the 300-world generator reframe" +type: workshop +status: archived +workshop: wiki-review +agent: "" +round: 4 +created: 2026-02-12 +--- + # Round 4 Tracking — 300-World Generator Reframe **Round focus:** Apply the lead's decisions from the interview to all workshop topics. Reframe everything for 300-world generator-input scale. diff --git a/docs/workshops/wiki-review/round4-tyre.md b/docs/workshops/wiki-review/round4-tyre.md index df9f33293..8711f1dea 100644 --- a/docs/workshops/wiki-review/round4-tyre.md +++ b/docs/workshops/wiki-review/round4-tyre.md @@ -1,3 +1,14 @@ +--- +title: "Round 4 — Tyre (Technical Architect)" +description: "Architectural pivot from content loading to generator specification at 300-world scale" +type: workshop +status: archived +workshop: wiki-review +agent: "tyre" +round: 4 +created: 2026-02-12 +--- + # Round 4 — Tyre (Technical Architect) Responding to the lead's direction. *cracks knuckles* — the 300-world reframe is architecturally transformative. Let me be honest about what this means technically: it doesn't just scale up my Round 3 proposals. It changes what the architecture IS. diff --git a/docs/workshops/wiki-review/si-ticket-changes.md b/docs/workshops/wiki-review/si-ticket-changes.md index 59e0afb9e..314870218 100644 --- a/docs/workshops/wiki-review/si-ticket-changes.md +++ b/docs/workshops/wiki-review/si-ticket-changes.md @@ -1,3 +1,14 @@ +--- +title: "Wiki Review Workshop — Ticket Changes" +description: "Ticket updates and new ticket proposals from Round 2 workshop outputs" +type: workshop +status: archived +workshop: wiki-review +agent: "si" +round: 0 +created: 2026-02-12 +--- + # Wiki Review Workshop — Ticket Changes **Author:** SI (Project Manager) diff --git a/docs/workshops/wiki-review/wiki-review-workshop-brief.md b/docs/workshops/wiki-review/wiki-review-workshop-brief.md index d43a42399..5966cd55d 100644 --- a/docs/workshops/wiki-review/wiki-review-workshop-brief.md +++ b/docs/workshops/wiki-review/wiki-review-workshop-brief.md @@ -1,3 +1,14 @@ +--- +title: "Workshop Brief: Wiki Review & Content Standards" +description: "Workshop brief defining scope, participants, and topics for the wiki review" +type: workshop +status: archived +workshop: wiki-review +agent: "" +round: 0 +created: 2026-02-12 +--- + # Workshop Brief: Wiki Review & Content Standards ## Locking Down the Foundation diff --git a/docs/workshops/wiki-review/workshop-outcomes.md b/docs/workshops/wiki-review/workshop-outcomes.md index 702389a80..783760ad8 100644 --- a/docs/workshops/wiki-review/workshop-outcomes.md +++ b/docs/workshops/wiki-review/workshop-outcomes.md @@ -1,3 +1,14 @@ +--- +title: "Workshop Outcomes: Wiki Review & Content Standards" +description: "Final outcomes document with all decisions filed and tickets created" +type: workshop +status: archived +workshop: wiki-review +agent: "" +round: 0 +created: 2026-02-25 +--- + # Workshop Outcomes: Wiki Review & Content Standards **Workshop:** Wiki Review & Content Standards From 1e5a1fb23a8f25f7d85e821a6a47594005ff9c31 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Sat, 14 Mar 2026 00:01:58 +0100 Subject: [PATCH 24/28] docs(docs): add frontmatter to workshops README Co-Authored-By: Claude Opus 4.6 --- docs/workshops/README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/workshops/README.md b/docs/workshops/README.md index b74645a1b..1da5e3431 100644 --- a/docs/workshops/README.md +++ b/docs/workshops/README.md @@ -1,3 +1,10 @@ +--- +title: "Workshops Index" +description: "Directory index of all multi-agent design workshops with status and convention docs" +type: workshop +status: active +--- + # Workshops Each workshop gets its own directory containing the brief and all output files. From a5ce7fa603809b62b40a45465225933640a9ec1a Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Sat, 14 Mar 2026 00:15:38 +0100 Subject: [PATCH 25/28] docs(docs): add frontmatter to DEVOPS.md and scratchpad.md Co-Authored-By: Claude Opus 4.6 --- docs/DEVOPS.md | 7 +++++++ docs/scratchpad.md | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/docs/DEVOPS.md b/docs/DEVOPS.md index 0c2e88f73..6375884a3 100644 --- a/docs/DEVOPS.md +++ b/docs/DEVOPS.md @@ -1,3 +1,10 @@ +--- +title: "DevOps Procedures" +description: "Build, test, lint, and CI procedures for the Settled Reach project — Makefile targets, worktree setup, server/client builds" +type: architecture +status: active +--- + # DevOps Procedures Operational procedures for building, testing, and running The Settled Reach. diff --git a/docs/scratchpad.md b/docs/scratchpad.md index 9e8bf4f45..aadeab92d 100644 --- a/docs/scratchpad.md +++ b/docs/scratchpad.md @@ -1,3 +1,10 @@ +--- +title: "Scratchpad" +description: "Personal notes and ideas — postcards pipeline, Veo gate transitions, remote terminal proxy, asset registry" +type: design +status: draft +--- + # Scratchpad Personal notes and random thoughts. Not acted upon unless explicitly instructed. From bccdcfcdcb5987786b3e296fd5a491702fe80ca9 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Sat, 14 Mar 2026 00:15:45 +0100 Subject: [PATCH 26/28] docs(docs): add frontmatter to all sprint briefings Standardized YAML frontmatter on all 115 sprint briefing files across sprints 1-26 with title, description, type, status, sprint number, and team fields. Co-Authored-By: Claude Opus 4.6 --- docs/sprints/sprint-1/client.md | 9 +++++++++ docs/sprints/sprint-1/joint.md | 9 +++++++++ docs/sprints/sprint-1/server.md | 9 +++++++++ docs/sprints/sprint-10/audio.md | 9 +++++++++ docs/sprints/sprint-10/ci.md | 9 +++++++++ docs/sprints/sprint-10/client.md | 9 +++++++++ docs/sprints/sprint-10/joint.md | 9 +++++++++ docs/sprints/sprint-10/server.md | 9 +++++++++ docs/sprints/sprint-11/client.md | 9 +++++++++ docs/sprints/sprint-11/joint.md | 9 +++++++++ docs/sprints/sprint-11/server.md | 9 +++++++++ docs/sprints/sprint-12/ci.md | 9 +++++++++ docs/sprints/sprint-12/client.md | 9 +++++++++ docs/sprints/sprint-12/copy.md | 9 +++++++++ docs/sprints/sprint-12/joint.md | 9 +++++++++ docs/sprints/sprint-12/server.md | 9 +++++++++ docs/sprints/sprint-12/visual.md | 9 +++++++++ docs/sprints/sprint-13/audio.md | 9 +++++++++ docs/sprints/sprint-13/client.md | 9 +++++++++ docs/sprints/sprint-13/joint.md | 9 +++++++++ docs/sprints/sprint-13/server.md | 9 +++++++++ docs/sprints/sprint-13/visual.md | 9 +++++++++ docs/sprints/sprint-14/client.md | 9 +++++++++ docs/sprints/sprint-14/copy.md | 9 +++++++++ docs/sprints/sprint-14/joint.md | 9 +++++++++ docs/sprints/sprint-14/server.md | 9 +++++++++ docs/sprints/sprint-14/visual.md | 9 +++++++++ docs/sprints/sprint-15/client.md | 9 +++++++++ docs/sprints/sprint-15/copy.md | 9 +++++++++ docs/sprints/sprint-15/joint.md | 9 +++++++++ docs/sprints/sprint-15/server.md | 9 +++++++++ docs/sprints/sprint-16/client.md | 9 +++++++++ docs/sprints/sprint-16/copy.md | 9 +++++++++ docs/sprints/sprint-16/joint.md | 9 +++++++++ docs/sprints/sprint-16/server.md | 9 +++++++++ docs/sprints/sprint-16/visual.md | 9 +++++++++ docs/sprints/sprint-17/client.md | 9 +++++++++ docs/sprints/sprint-17/copy.md | 9 +++++++++ docs/sprints/sprint-17/joint.md | 9 +++++++++ docs/sprints/sprint-17/server.md | 9 +++++++++ docs/sprints/sprint-17/visual.md | 9 +++++++++ docs/sprints/sprint-18/client.md | 9 +++++++++ docs/sprints/sprint-18/copy.md | 9 +++++++++ docs/sprints/sprint-18/joint.md | 9 +++++++++ docs/sprints/sprint-18/server.md | 9 +++++++++ docs/sprints/sprint-19/ci.md | 9 +++++++++ docs/sprints/sprint-19/client.md | 9 +++++++++ docs/sprints/sprint-19/joint.md | 9 +++++++++ docs/sprints/sprint-19/server.md | 9 +++++++++ docs/sprints/sprint-2/client.md | 9 +++++++++ docs/sprints/sprint-2/copy.md | 9 +++++++++ docs/sprints/sprint-2/joint.md | 9 +++++++++ docs/sprints/sprint-2/server.md | 9 +++++++++ docs/sprints/sprint-20/client.md | 9 +++++++++ docs/sprints/sprint-20/joint.md | 9 +++++++++ docs/sprints/sprint-20/planning.md | 9 +++++++++ docs/sprints/sprint-20/server.md | 9 +++++++++ docs/sprints/sprint-21/ci.md | 9 +++++++++ docs/sprints/sprint-21/client.md | 9 +++++++++ docs/sprints/sprint-21/joint.md | 9 +++++++++ docs/sprints/sprint-21/server.md | 9 +++++++++ docs/sprints/sprint-21/visual.md | 9 +++++++++ docs/sprints/sprint-22/ci.md | 9 +++++++++ docs/sprints/sprint-22/client.md | 9 +++++++++ docs/sprints/sprint-22/joint.md | 9 +++++++++ docs/sprints/sprint-22/planning.md | 9 +++++++++ docs/sprints/sprint-22/server.md | 9 +++++++++ docs/sprints/sprint-22/visual.md | 9 +++++++++ docs/sprints/sprint-23/client.md | 9 +++++++++ docs/sprints/sprint-23/joint.md | 9 +++++++++ docs/sprints/sprint-23/server.md | 9 +++++++++ docs/sprints/sprint-23/visual.md | 9 +++++++++ docs/sprints/sprint-24/client.md | 9 +++++++++ docs/sprints/sprint-24/copy.md | 9 +++++++++ docs/sprints/sprint-24/joint.md | 9 +++++++++ docs/sprints/sprint-24/server.md | 9 +++++++++ docs/sprints/sprint-25/copy.md | 9 +++++++++ docs/sprints/sprint-25/joint.md | 9 +++++++++ docs/sprints/sprint-25/server.md | 9 +++++++++ docs/sprints/sprint-26/client.md | 9 +++++++++ docs/sprints/sprint-26/copy.md | 9 +++++++++ docs/sprints/sprint-26/joint.md | 9 +++++++++ docs/sprints/sprint-26/planning.md | 9 +++++++++ docs/sprints/sprint-26/server.md | 9 +++++++++ docs/sprints/sprint-3/client.md | 9 +++++++++ docs/sprints/sprint-3/copy.md | 9 +++++++++ docs/sprints/sprint-3/joint.md | 9 +++++++++ docs/sprints/sprint-3/server.md | 9 +++++++++ docs/sprints/sprint-4/ci.md | 9 +++++++++ docs/sprints/sprint-4/client.md | 9 +++++++++ docs/sprints/sprint-4/copy.md | 9 +++++++++ docs/sprints/sprint-4/joint.md | 9 +++++++++ docs/sprints/sprint-4/server.md | 9 +++++++++ docs/sprints/sprint-5/ci.md | 9 +++++++++ docs/sprints/sprint-5/client.md | 9 +++++++++ docs/sprints/sprint-5/copy.md | 9 +++++++++ docs/sprints/sprint-5/joint.md | 9 +++++++++ docs/sprints/sprint-6/client.md | 9 +++++++++ docs/sprints/sprint-6/copy.md | 9 +++++++++ docs/sprints/sprint-6/joint.md | 9 +++++++++ docs/sprints/sprint-6/server.md | 9 +++++++++ docs/sprints/sprint-7/audio.md | 9 +++++++++ docs/sprints/sprint-7/client.md | 9 +++++++++ docs/sprints/sprint-7/copy.md | 9 +++++++++ docs/sprints/sprint-7/joint.md | 9 +++++++++ docs/sprints/sprint-7/server.md | 9 +++++++++ docs/sprints/sprint-8/audio.md | 9 +++++++++ docs/sprints/sprint-8/client.md | 9 +++++++++ docs/sprints/sprint-8/joint.md | 9 +++++++++ docs/sprints/sprint-8/server.md | 9 +++++++++ docs/sprints/sprint-9/audio.md | 9 +++++++++ docs/sprints/sprint-9/ci.md | 9 +++++++++ docs/sprints/sprint-9/client.md | 9 +++++++++ docs/sprints/sprint-9/joint.md | 9 +++++++++ docs/sprints/sprint-9/server.md | 9 +++++++++ 115 files changed, 1035 insertions(+) diff --git a/docs/sprints/sprint-1/client.md b/docs/sprints/sprint-1/client.md index d91c6f4e0..2d2fb2a73 100644 --- a/docs/sprints/sprint-1/client.md +++ b/docs/sprints/sprint-1/client.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 1 — Client Briefing" +description: "MessagePack GDScript serialization, LocalBridge GDScript implementation" +type: sprint +status: archived +sprint: 1 +team: "client" +--- + # Sprint 1: Run — Client Tasks **Goal:** Get a player-controlled character moving on screen through working IPC bridge. diff --git a/docs/sprints/sprint-1/joint.md b/docs/sprints/sprint-1/joint.md index 687923567..aa93359f6 100644 --- a/docs/sprints/sprint-1/joint.md +++ b/docs/sprints/sprint-1/joint.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 1 — Joint Briefing" +description: "End-to-end connection test, tick loop synchronization, moving character proof" +type: sprint +status: archived +sprint: 1 +team: "joint" +--- + # Sprint 1: Run — Joint Tasks **Goal:** Get a player-controlled character moving on screen through working IPC bridge. diff --git a/docs/sprints/sprint-1/server.md b/docs/sprints/sprint-1/server.md index bd4bf1665..e7e38715b 100644 --- a/docs/sprints/sprint-1/server.md +++ b/docs/sprints/sprint-1/server.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 1 — Server Briefing" +description: "LocalBridge Rust implementation, tile collision system, IPC protocol" +type: sprint +status: archived +sprint: 1 +team: "server" +--- + # Sprint 1: Run — Server Tasks **Goal:** Get a player-controlled character moving on screen through working IPC bridge. diff --git a/docs/sprints/sprint-10/audio.md b/docs/sprints/sprint-10/audio.md index 15549deef..0aa2b15ed 100644 --- a/docs/sprints/sprint-10/audio.md +++ b/docs/sprints/sprint-10/audio.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 10 — Audio Briefing" +description: "Audio asset set — 8 minimum viable files via Stable Audio Open" +type: sprint +status: archived +sprint: 10 +team: "audio" +--- + # Sprint 10: Prove — Audio Tasks **Goal:** Expand the Gauntlet test suite with new rooms and cross-room scenarios, wire the audio architecture end-to-end, and complete client UX polish from Sprint 9 carry-overs — proving the full system holds together. diff --git a/docs/sprints/sprint-10/ci.md b/docs/sprints/sprint-10/ci.md index 4a39c7514..5c85e8a3b 100644 --- a/docs/sprints/sprint-10/ci.md +++ b/docs/sprints/sprint-10/ci.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 10 — CI Briefing" +description: "Performance baseline tooling, CI pipeline Gitea Actions, relationship consistency validation" +type: sprint +status: archived +sprint: 10 +team: "ci" +--- + # Sprint 10: Prove — CI Tasks **Goal:** Expand the Gauntlet test suite with new rooms and cross-room scenarios, wire the audio architecture end-to-end, and complete client UX polish from Sprint 9 carry-overs — proving the full system holds together. diff --git a/docs/sprints/sprint-10/client.md b/docs/sprints/sprint-10/client.md index a0d6cc465..cf38b2a28 100644 --- a/docs/sprints/sprint-10/client.md +++ b/docs/sprints/sprint-10/client.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 10 — Client Briefing" +description: "Hub teleport UX, room reset UX, auto-checklist progress tracking" +type: sprint +status: archived +sprint: 10 +team: "client" +--- + # Sprint 10: Prove — Client Tasks **Goal:** Expand the Gauntlet test suite with new rooms and cross-room scenarios, wire the audio architecture end-to-end, and complete client UX polish from Sprint 9 carry-overs — proving the full system holds together. diff --git a/docs/sprints/sprint-10/joint.md b/docs/sprints/sprint-10/joint.md index 829d95b47..0ed53fe50 100644 --- a/docs/sprints/sprint-10/joint.md +++ b/docs/sprints/sprint-10/joint.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 10 — Joint Briefing" +description: "Gauntlet expansion, audio architecture wiring, client UX polish carry-overs" +type: sprint +status: archived +sprint: 10 +team: "joint" +--- + # Sprint 10: Prove — Joint / Integration **Goal:** Expand the Gauntlet test suite with new rooms and cross-room scenarios, wire the audio architecture end-to-end, and complete client UX polish from Sprint 9 carry-overs — proving the full system holds together. diff --git a/docs/sprints/sprint-10/server.md b/docs/sprints/sprint-10/server.md index 1d2a42e00..7b3e0facb 100644 --- a/docs/sprints/sprint-10/server.md +++ b/docs/sprints/sprint-10/server.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 10 — Server Briefing" +description: "Gauntlet room expansion, hub teleport action, replay loading, content scaling test" +type: sprint +status: archived +sprint: 10 +team: "server" +--- + # Sprint 10: Prove — Server Tasks **Goal:** Expand the Gauntlet test suite with new rooms and cross-room scenarios, wire the audio architecture end-to-end, and complete client UX polish from Sprint 9 carry-overs — proving the full system holds together. diff --git a/docs/sprints/sprint-11/client.md b/docs/sprints/sprint-11/client.md index b63b39423..920b4f556 100644 --- a/docs/sprints/sprint-11/client.md +++ b/docs/sprints/sprint-11/client.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 11 — Client Briefing" +description: "WRONG button full captures, OQ-07 no-insert interaction resolution" +type: sprint +status: archived +sprint: 11 +team: "client" +--- + # Sprint 11: Combine — Client Tasks **Goal:** Complete the Gauntlet test matrix with final interaction-combination rooms and cross-room scenarios, deliver the WRONG-button bug-capture system, resolve open implementation questions OQ-07 and OQ-18, and add contraband detection — hardening the system as a fully covered, testable unit. diff --git a/docs/sprints/sprint-11/joint.md b/docs/sprints/sprint-11/joint.md index 95cb18fe5..065c58c0b 100644 --- a/docs/sprints/sprint-11/joint.md +++ b/docs/sprints/sprint-11/joint.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 11 — Joint Briefing" +description: "Gauntlet test matrix completion, WRONG-button bug capture, OQ-07/OQ-18 resolution" +type: sprint +status: archived +sprint: 11 +team: "joint" +--- + # Sprint 11: Combine — Joint / Integration **Goal:** Complete the Gauntlet test matrix with final interaction-combination rooms and cross-room scenarios, deliver the WRONG-button bug-capture system, resolve open implementation questions OQ-07 and OQ-18, and add contraband detection — hardening the system as a fully covered, testable unit. diff --git a/docs/sprints/sprint-11/server.md b/docs/sprints/sprint-11/server.md index 47bd4341d..ab1ef567d 100644 --- a/docs/sprints/sprint-11/server.md +++ b/docs/sprints/sprint-11/server.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 11 — Server Briefing" +description: "Gauntlet interaction rooms, cross-room transitions, contraband detection, stress testing" +type: sprint +status: archived +sprint: 11 +team: "server" +--- + # Sprint 11: Combine — Server Tasks **Goal:** Complete the Gauntlet test matrix with final interaction-combination rooms and cross-room scenarios, deliver the WRONG-button bug-capture system, resolve open implementation questions OQ-07 and OQ-18, and add contraband detection — hardening the system as a fully covered, testable unit. diff --git a/docs/sprints/sprint-12/ci.md b/docs/sprints/sprint-12/ci.md index 5933fa706..0767edcaa 100644 --- a/docs/sprints/sprint-12/ci.md +++ b/docs/sprints/sprint-12/ci.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 12 — CI Briefing" +description: "Ban HashMap via clippy, tracing infrastructure, system dependency graph, rng_seed field" +type: sprint +status: archived +sprint: 12 +team: "ci" +--- + # Sprint 12: Build — CI Tasks **Goal:** Lay the production-layer foundations — simulation tier system, sound event pipeline, visual grammar, and knowledge boundary enforcement — and complete all v0.1 copy authoring so content packs, opening hooks, and world-building docs are done. diff --git a/docs/sprints/sprint-12/client.md b/docs/sprints/sprint-12/client.md index 0f507228e..c6610a043 100644 --- a/docs/sprints/sprint-12/client.md +++ b/docs/sprints/sprint-12/client.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 12 — Client Briefing" +description: "Close-range stereo audio, medium-range visual indicators, entity renderer fix, dialogue width" +type: sprint +status: archived +sprint: 12 +team: "client" +--- + # Sprint 12: Build — Client Tasks **Goal:** Lay the production-layer foundations — simulation tier system, sound event pipeline, visual grammar, and knowledge boundary enforcement — and complete all v0.1 copy authoring so content packs, opening hooks, and world-building docs are done. diff --git a/docs/sprints/sprint-12/copy.md b/docs/sprints/sprint-12/copy.md index 09b002a06..0ba855b99 100644 --- a/docs/sprints/sprint-12/copy.md +++ b/docs/sprints/sprint-12/copy.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 12 — Copy Briefing" +description: "Knowledge vocabulary, cultural generation guide, Sova texture appendix, content packs" +type: sprint +status: archived +sprint: 12 +team: "copy" +--- + # Sprint 12: Build — Copy Tasks **Goal:** Lay the production-layer foundations — simulation tier system, sound event pipeline, visual grammar, and knowledge boundary enforcement — and complete all v0.1 copy authoring so content packs, opening hooks, and world-building docs are done. diff --git a/docs/sprints/sprint-12/joint.md b/docs/sprints/sprint-12/joint.md index 626a9a158..a8e1bd41e 100644 --- a/docs/sprints/sprint-12/joint.md +++ b/docs/sprints/sprint-12/joint.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 12 — Joint Briefing" +description: "Simulation tier system, sound event pipeline, visual grammar, knowledge boundary enforcement" +type: sprint +status: archived +sprint: 12 +team: "joint" +--- + # Sprint 12: Build — Joint / Integration Notes **Goal:** Lay the production-layer foundations — simulation tier system, sound event pipeline, visual grammar, and knowledge boundary enforcement — and complete all v0.1 copy authoring so content packs, opening hooks, and world-building docs are done. diff --git a/docs/sprints/sprint-12/server.md b/docs/sprints/sprint-12/server.md index b9a6389ee..e38b7c697 100644 --- a/docs/sprints/sprint-12/server.md +++ b/docs/sprints/sprint-12/server.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 12 — Server Briefing" +description: "Tier marker components, active tier simulation, information tag schema, access control" +type: sprint +status: archived +sprint: 12 +team: "server" +--- + # Sprint 12: Build — Server Tasks **Goal:** Lay the production-layer foundations — simulation tier system, sound event pipeline, visual grammar, and knowledge boundary enforcement — and complete all v0.1 copy authoring so content packs, opening hooks, and world-building docs are done. diff --git a/docs/sprints/sprint-12/visual.md b/docs/sprints/sprint-12/visual.md index 4bb79be60..777015000 100644 --- a/docs/sprints/sprint-12/visual.md +++ b/docs/sprints/sprint-12/visual.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 12 — Visual Briefing" +description: "Visual grammar document, placeholder art spec, spatial layouts (Hub, Bar, corridors)" +type: sprint +status: archived +sprint: 12 +team: "visual" +--- + # Sprint 12: Build — Visual Tasks **Goal:** Lay the production-layer foundations — simulation tier system, sound event pipeline, visual grammar, and knowledge boundary enforcement — and complete all v0.1 copy authoring so content packs, opening hooks, and world-building docs are done. diff --git a/docs/sprints/sprint-13/audio.md b/docs/sprints/sprint-13/audio.md index f075d4db7..90a7eef61 100644 --- a/docs/sprints/sprint-13/audio.md +++ b/docs/sprints/sprint-13/audio.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 13 — Audio Briefing" +description: "NPC conversation murmur asset, World SFX bus wiring" +type: sprint +status: archived +sprint: 13 +team: "audio" +--- + # Sprint 13: Sound — Audio Tasks **Goal:** Wire the full audio architecture end-to-end — AudioManager, zone crossfades, dip profiles, recognition chime, and conversation murmur — and complete v0.1 content authoring so opening hooks, tutorial monologue, and all content packs are done. diff --git a/docs/sprints/sprint-13/client.md b/docs/sprints/sprint-13/client.md index 42ae02f47..f91fee279 100644 --- a/docs/sprints/sprint-13/client.md +++ b/docs/sprints/sprint-13/client.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 13 — Client Briefing" +description: "AudioManager 5-bus implementation, zone crossfade, audio dip profiles, recognition chime" +type: sprint +status: archived +sprint: 13 +team: "client" +--- + # Sprint 13: Sound — Client Tasks **Goal:** Wire the full audio architecture end-to-end — AudioManager, zone crossfades, dip profiles, recognition chime, and conversation murmur — and complete v0.1 content authoring so opening hooks, tutorial monologue, and all content packs are done. diff --git a/docs/sprints/sprint-13/joint.md b/docs/sprints/sprint-13/joint.md index 26cf4834e..ef2cff16f 100644 --- a/docs/sprints/sprint-13/joint.md +++ b/docs/sprints/sprint-13/joint.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 13 — Joint Briefing" +description: "Full audio architecture wiring, zone crossfades, dip profiles, v0.1 content completion" +type: sprint +status: archived +sprint: 13 +team: "joint" +--- + # Sprint 13: Sound — Joint / Integration Notes **Goal:** Wire the full audio architecture end-to-end — AudioManager, zone crossfades, dip profiles, recognition chime, and conversation murmur — and complete v0.1 content authoring so opening hooks, tutorial monologue, and all content packs are done. diff --git a/docs/sprints/sprint-13/server.md b/docs/sprints/sprint-13/server.md index e3610fb5d..464c2b739 100644 --- a/docs/sprints/sprint-13/server.md +++ b/docs/sprints/sprint-13/server.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 13 — Server Briefing" +description: "Gauntlet rooms (Sound Lab, Decay Observatory, Shift Change), OQ-09 zone temperature" +type: sprint +status: archived +sprint: 13 +team: "server" +--- + # Sprint 13: Sound — Server Tasks **Goal:** Wire the full audio architecture end-to-end — AudioManager, zone crossfades, dip profiles, recognition chime, and conversation murmur — and complete v0.1 content authoring so opening hooks, tutorial monologue, and all content packs are done. diff --git a/docs/sprints/sprint-13/visual.md b/docs/sprints/sprint-13/visual.md index 697c74c43..e94f23899 100644 --- a/docs/sprints/sprint-13/visual.md +++ b/docs/sprints/sprint-13/visual.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 13 — Visual Briefing" +description: "Monologue display system visual spec" +type: sprint +status: archived +sprint: 13 +team: "visual" +--- + # Sprint 13: Sound — Visual Tasks **Goal:** Wire the full audio architecture end-to-end — AudioManager, zone crossfades, dip profiles, recognition chime, and conversation murmur — and complete v0.1 content authoring so opening hooks, tutorial monologue, and all content packs are done. diff --git a/docs/sprints/sprint-14/client.md b/docs/sprints/sprint-14/client.md index 000f55836..62713776f 100644 --- a/docs/sprints/sprint-14/client.md +++ b/docs/sprints/sprint-14/client.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 14 — Client Briefing" +description: "Monologue display, passive dialogue panel, F3 debug overlay" +type: sprint +status: archived +sprint: 14 +team: "client" +--- + # Sprint 14: Live — Client Tasks **Goal:** Bring NPCs to life — mood, trust, routine execution, and NPC-to-NPC conversation drive the first emergent social observables; the simulation produces a world that breathes independently of the player. diff --git a/docs/sprints/sprint-14/copy.md b/docs/sprints/sprint-14/copy.md index 9e7a5798b..1fb8ffe3e 100644 --- a/docs/sprints/sprint-14/copy.md +++ b/docs/sprints/sprint-14/copy.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 14 — Copy Briefing" +description: "Monologue content architecture, character voice variation, tagged line pool structure" +type: sprint +status: archived +sprint: 14 +team: "copy" +--- + # Sprint 14: Live — Copy Tasks **Goal:** Bring NPCs to life — mood, trust, routine execution, and NPC-to-NPC conversation drive the first emergent social observables; the simulation produces a world that breathes independently of the player. diff --git a/docs/sprints/sprint-14/joint.md b/docs/sprints/sprint-14/joint.md index aacaa6350..5c4f06c74 100644 --- a/docs/sprints/sprint-14/joint.md +++ b/docs/sprints/sprint-14/joint.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 14 — Joint Briefing" +description: "NPC mood/trust/routine systems, dialogue layers, monologue pools coordination" +type: sprint +status: archived +sprint: 14 +team: "joint" +--- + # Sprint 14: Live — Joint / Integration Notes **Goal:** Bring NPCs to life — mood, trust, routine execution, and NPC-to-NPC conversation drive the first emergent social observables; the simulation produces a world that breathes independently of the player. diff --git a/docs/sprints/sprint-14/server.md b/docs/sprints/sprint-14/server.md index 02f3b5c04..67d16de4e 100644 --- a/docs/sprints/sprint-14/server.md +++ b/docs/sprints/sprint-14/server.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 14 — Server Briefing" +description: "NPC mood state machine, trust progression, routine execution system" +type: sprint +status: archived +sprint: 14 +team: "server" +--- + # Sprint 14: Live — Server Tasks **Goal:** Bring NPCs to life — mood, trust, routine execution, and NPC-to-NPC conversation drive the first emergent social observables; the simulation produces a world that breathes independently of the player. diff --git a/docs/sprints/sprint-14/visual.md b/docs/sprints/sprint-14/visual.md index 65fcd43d6..c45c200a7 100644 --- a/docs/sprints/sprint-14/visual.md +++ b/docs/sprints/sprint-14/visual.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 14 — Visual Briefing" +description: "Entity color system spec, text display hierarchy, sound indicator visual design" +type: sprint +status: archived +sprint: 14 +team: "visual" +--- + # Sprint 14: Live — Visual Tasks **Goal:** Bring NPCs to life — mood, trust, routine execution, and NPC-to-NPC conversation drive the first emergent social observables; the simulation produces a world that breathes independently of the player. diff --git a/docs/sprints/sprint-15/client.md b/docs/sprints/sprint-15/client.md index 85b864314..31c8f929d 100644 --- a/docs/sprints/sprint-15/client.md +++ b/docs/sprints/sprint-15/client.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 15 — Client Briefing" +description: "Tilemap rendering, entity sprite system, input capture, smooth camera" +type: sprint +status: archived +sprint: 15 +team: "client" +--- + # Sprint 15: React — Client Tasks **Goal:** The player acts and the world reacts — follow and examine mechanics connect the player to the living NPC simulation; the dialogue system's first two access layers open up information gating; server-side monologue events fire in context; and the personality/tell system completes the NPC data model. diff --git a/docs/sprints/sprint-15/copy.md b/docs/sprints/sprint-15/copy.md index 8ee4f1260..8f4054039 100644 --- a/docs/sprints/sprint-15/copy.md +++ b/docs/sprints/sprint-15/copy.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 15 — Copy Briefing" +description: "Opening hook content for smuggler/detective, access tier filtering, relationship history" +type: sprint +status: archived +sprint: 15 +team: "copy" +--- + # Sprint 15: React — Copy Tasks **Goal:** The player acts and the world reacts — follow and examine mechanics connect the player to the living NPC simulation; the dialogue system's first two access layers open up information gating; server-side monologue events fire in context; and the personality/tell system completes the NPC data model. diff --git a/docs/sprints/sprint-15/joint.md b/docs/sprints/sprint-15/joint.md index ab617f725..1d4f43ade 100644 --- a/docs/sprints/sprint-15/joint.md +++ b/docs/sprints/sprint-15/joint.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 15 — Joint Briefing" +description: "Cross-team coordination for follow/examine mechanics, dialogue layers, personality system" +type: sprint +status: archived +sprint: 15 +team: "joint" +--- + # Sprint 15: React — Joint Coordination **Goal:** The player acts and the world reacts — follow and examine mechanics connect the player to the living NPC simulation; the dialogue system's first two access layers open up information gating; server-side monologue events fire in context; and the personality/tell system completes the NPC data model. diff --git a/docs/sprints/sprint-15/server.md b/docs/sprints/sprint-15/server.md index 6451aa92a..6433557e7 100644 --- a/docs/sprints/sprint-15/server.md +++ b/docs/sprints/sprint-15/server.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 15 — Server Briefing" +description: "Monologue event generation, NPC generation pipeline, follow mechanic" +type: sprint +status: archived +sprint: 15 +team: "server" +--- + # Sprint 15: React — Server Tasks **Goal:** The player acts and the world reacts — follow and examine mechanics connect the player to the living NPC simulation; the dialogue system's first two access layers open up information gating; server-side monologue events fire in context; and the personality/tell system completes the NPC data model. diff --git a/docs/sprints/sprint-16/client.md b/docs/sprints/sprint-16/client.md index 5050645dd..4f1558160 100644 --- a/docs/sprints/sprint-16/client.md +++ b/docs/sprints/sprint-16/client.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 16 — Client Briefing" +description: "Zone ID extraction optimization, sprite camera angle adjustment" +type: sprint +status: archived +sprint: 16 +team: "client" +--- + # Sprint 16: Converse — Client Tasks **Goal:** Dialogue becomes a two-way exchange — players pick options and the server responds; NPC information-giving deepens through trust and trait-shaped delivery; the sprite pipeline gets its correct art-direction angle; and housekeeping fixes land across all three active teams. diff --git a/docs/sprints/sprint-16/copy.md b/docs/sprints/sprint-16/copy.md index a86f70bcb..56a95893a 100644 --- a/docs/sprints/sprint-16/copy.md +++ b/docs/sprints/sprint-16/copy.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 16 — Copy Briefing" +description: "Migrate line IDs from location-scoped to NPC-scoped namespace" +type: sprint +status: archived +sprint: 16 +team: "copy" +--- + # Sprint 16: Converse — Copy Tasks **Goal:** Dialogue becomes a two-way exchange — players pick options and the server responds; NPC information-giving deepens through trust and trait-shaped delivery; the sprite pipeline gets its correct art-direction angle; and housekeeping fixes land across all three active teams. diff --git a/docs/sprints/sprint-16/joint.md b/docs/sprints/sprint-16/joint.md index cd3d7872b..db9c6dc50 100644 --- a/docs/sprints/sprint-16/joint.md +++ b/docs/sprints/sprint-16/joint.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 16 — Joint Briefing" +description: "Dialogue response integration, sprite pipeline coordination, line ID scheme" +type: sprint +status: archived +sprint: 16 +team: "joint" +--- + # Sprint 16: Converse — Joint Coordination **Goal:** Dialogue becomes a two-way exchange — players pick options and the server responds; NPC information-giving deepens through trust and trait-shaped delivery; the sprite pipeline gets its correct art-direction angle; and housekeeping fixes land across all three active teams. diff --git a/docs/sprints/sprint-16/server.md b/docs/sprints/sprint-16/server.md index 5ce0cfe45..b447a791b 100644 --- a/docs/sprints/sprint-16/server.md +++ b/docs/sprints/sprint-16/server.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 16 — Server Briefing" +description: "Dialogue response handler, trust-gated gossip, line variety tracker" +type: sprint +status: archived +sprint: 16 +team: "server" +--- + # Sprint 16: Converse — Server Tasks **Goal:** Dialogue becomes a two-way exchange — players pick options and the server responds; NPC information-giving deepens through trust and trait-shaped delivery; the sprite pipeline gets its correct art-direction angle; and housekeeping fixes land across all three active teams. diff --git a/docs/sprints/sprint-16/visual.md b/docs/sprints/sprint-16/visual.md index 20575dd22..48032e022 100644 --- a/docs/sprints/sprint-16/visual.md +++ b/docs/sprints/sprint-16/visual.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 16 — Visual Briefing" +description: "3D sprite render pipeline setup" +type: sprint +status: archived +sprint: 16 +team: "visual" +--- + # Sprint 16: Converse — Visual Tasks **Goal:** Dialogue becomes a two-way exchange — players pick options and the server responds; NPC information-giving deepens through trust and trait-shaped delivery; the sprite pipeline gets its correct art-direction angle; and housekeeping fixes land across all three active teams. diff --git a/docs/sprints/sprint-17/client.md b/docs/sprints/sprint-17/client.md index f2286a2f5..6e47c4d67 100644 --- a/docs/sprints/sprint-17/client.md +++ b/docs/sprints/sprint-17/client.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 17 — Client Briefing" +description: "Time display on insert HUD, E-Talk overlay improvement" +type: sprint +status: archived +sprint: 17 +team: "client" +--- + # Sprint 17: Tell — Client Tasks **Goal:** NPCs volunteer information unprompted and express personality through delivery; the player can read time and orientation at a glance from the insert HUD; POI infrastructure lands on the server. diff --git a/docs/sprints/sprint-17/copy.md b/docs/sprints/sprint-17/copy.md index 8fc0d3c84..ba9fff37c 100644 --- a/docs/sprints/sprint-17/copy.md +++ b/docs/sprints/sprint-17/copy.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 17 — Copy Briefing" +description: "Diegetic tutorial monologue lines, contradiction monologue lines" +type: sprint +status: archived +sprint: 17 +team: "copy" +--- + # Sprint 17: Tell — Copy Tasks **Goal:** NPCs volunteer information unprompted and express personality through delivery; the player can read time and orientation at a glance from the insert HUD; POI infrastructure lands on the server. diff --git a/docs/sprints/sprint-17/joint.md b/docs/sprints/sprint-17/joint.md index a61a624ba..2c3403498 100644 --- a/docs/sprints/sprint-17/joint.md +++ b/docs/sprints/sprint-17/joint.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 17 — Joint Briefing" +description: "Knowledge flow workshop outcomes, unprompted disclosure, contradiction detection" +type: sprint +status: archived +sprint: 17 +team: "joint" +--- + # Sprint 17: Tell — Joint Tasks **Goal:** NPCs volunteer information unprompted and express personality through delivery; the player can read time and orientation at a glance from the insert HUD; POI infrastructure lands on the server. diff --git a/docs/sprints/sprint-17/server.md b/docs/sprints/sprint-17/server.md index edab53736..eb36885a6 100644 --- a/docs/sprints/sprint-17/server.md +++ b/docs/sprints/sprint-17/server.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 17 — Server Briefing" +description: "Knowledge grant architecture, NPC-to-NPC propagation, unprompted disclosure, POI infrastructure" +type: sprint +status: archived +sprint: 17 +team: "server" +--- + # Sprint 17: Tell — Server Tasks **Goal:** NPCs volunteer information unprompted and express personality through delivery; the knowledge graph becomes a live system with grants, propagation, contradiction detection, and NPC information boundaries; POI infrastructure lands; protocol versioning ships. diff --git a/docs/sprints/sprint-17/visual.md b/docs/sprints/sprint-17/visual.md index ac4290848..686564ae9 100644 --- a/docs/sprints/sprint-17/visual.md +++ b/docs/sprints/sprint-17/visual.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 17 — Visual Briefing" +description: "Insert/HUD wireframe and spec, dual character variants" +type: sprint +status: archived +sprint: 17 +team: "visual" +--- + # Sprint 17: Tell — Visual Tasks **Goal:** NPCs volunteer information unprompted and express personality through delivery; the player can read time and orientation at a glance from the insert HUD; POI infrastructure lands on the server. diff --git a/docs/sprints/sprint-18/client.md b/docs/sprints/sprint-18/client.md index fbf151712..5a6e3300f 100644 --- a/docs/sprints/sprint-18/client.md +++ b/docs/sprints/sprint-18/client.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 18 — Client Briefing" +description: "Minimap rendering, dialogue UI, knowledge/journal display" +type: sprint +status: archived +sprint: 18 +team: "client" +--- + # Sprint 18: Touch — Client Tasks **Goal:** The player can examine entities and objects to generate character-filtered observations; NPCs detect and react when watched; social actions propagate through the relationship graph; minimap renders POIs on the client. diff --git a/docs/sprints/sprint-18/copy.md b/docs/sprints/sprint-18/copy.md index f573bb5af..53cc9a054 100644 --- a/docs/sprints/sprint-18/copy.md +++ b/docs/sprints/sprint-18/copy.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 18 — Copy Briefing" +description: "Collision-resistant line IDs for auto-generated NPCs, drama module schema" +type: sprint +status: archived +sprint: 18 +team: "copy" +--- + # Sprint 18: Touch — Copy Tasks **Goal:** The player can examine entities and objects to generate character-filtered observations; NPCs detect and react when watched; social actions propagate through the relationship graph; minimap renders POIs on the client. diff --git a/docs/sprints/sprint-18/joint.md b/docs/sprints/sprint-18/joint.md index 177c6db7f..7c57de6ab 100644 --- a/docs/sprints/sprint-18/joint.md +++ b/docs/sprints/sprint-18/joint.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 18 — Joint Briefing" +description: "Examine mechanic integration, knowledge graph wire format, NPC vision coordination" +type: sprint +status: archived +sprint: 18 +team: "joint" +--- + # Sprint 18: Touch — Joint Tasks **Goal:** The player can examine entities and objects to generate character-filtered observations; NPCs detect and react when watched; social actions propagate through the relationship graph; minimap renders POIs on the client. diff --git a/docs/sprints/sprint-18/server.md b/docs/sprints/sprint-18/server.md index 68eacd449..29d82923d 100644 --- a/docs/sprints/sprint-18/server.md +++ b/docs/sprints/sprint-18/server.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 18 — Server Briefing" +description: "Examine mechanic, NPC player-awareness, character goal framework, social propagation" +type: sprint +status: archived +sprint: 18 +team: "server" +--- + # Sprint 18: Touch — Server Tasks **Goal:** The player can examine entities and objects to generate character-filtered observations; NPCs detect and react when watched; social actions propagate through the relationship graph; minimap renders POIs on the client. diff --git a/docs/sprints/sprint-19/ci.md b/docs/sprints/sprint-19/ci.md index 0c9e79a9f..68409476a 100644 --- a/docs/sprints/sprint-19/ci.md +++ b/docs/sprints/sprint-19/ci.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 19 — CI Briefing" +description: "Test runner scripts, protocol version handshake, IPC round-trip benchmark" +type: sprint +status: archived +sprint: 19 +team: "ci" +--- + # Sprint 19: Persist — CI Tasks **Goal:** The player can save and resume a game session with per-game directories; the simulation tier system gains eviction and scope pinning; and the first test infrastructure ships with information boundary validation and IPC hardening. diff --git a/docs/sprints/sprint-19/client.md b/docs/sprints/sprint-19/client.md index ad7bb34f4..4379cf092 100644 --- a/docs/sprints/sprint-19/client.md +++ b/docs/sprints/sprint-19/client.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 19 — Client Briefing" +description: "Save/load client UI, game session management, GDScript test framework" +type: sprint +status: archived +sprint: 19 +team: "client" +--- + # Sprint 19: Persist — Client Tasks **Goal:** The player can save and resume a game session with per-game directories; the simulation tier system gains eviction and scope pinning; and the first test infrastructure ships with information boundary validation and IPC hardening. diff --git a/docs/sprints/sprint-19/joint.md b/docs/sprints/sprint-19/joint.md index d09c4664f..21bf164a1 100644 --- a/docs/sprints/sprint-19/joint.md +++ b/docs/sprints/sprint-19/joint.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 19 — Joint Briefing" +description: "Save/load IPC protocol coordination, handshake wire format, fixture file format" +type: sprint +status: archived +sprint: 19 +team: "joint" +--- + # Sprint 19: Persist — Joint Briefing **Goal:** The player can save and resume a game session with per-game directories; the simulation tier system gains eviction and scope pinning; and the first test infrastructure ships with information boundary validation and IPC hardening. diff --git a/docs/sprints/sprint-19/server.md b/docs/sprints/sprint-19/server.md index 3470cd932..5776e5906 100644 --- a/docs/sprints/sprint-19/server.md +++ b/docs/sprints/sprint-19/server.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 19 — Server Briefing" +description: "Save/load ECS extraction, state serialization, timestamp-based eviction, scope tags" +type: sprint +status: archived +sprint: 19 +team: "server" +--- + # Sprint 19: Persist — Server Tasks **Goal:** The player can save and resume a game session with per-game directories; the simulation tier system gains eviction and scope pinning; and the first test infrastructure ships with information boundary validation and IPC hardening. diff --git a/docs/sprints/sprint-2/client.md b/docs/sprints/sprint-2/client.md index 9bc4ffbca..7801734f9 100644 --- a/docs/sprints/sprint-2/client.md +++ b/docs/sprints/sprint-2/client.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 2 — Client Briefing" +description: "Camera lock, tile rendering engine, fog overlay rendering, entity sprite management" +type: sprint +status: archived +sprint: 2 +team: "client" +--- + # Sprint 2: See — Client Tasks **Goal:** Fog of perception working through the bridge — server computes LOS visibility, client renders fog. diff --git a/docs/sprints/sprint-2/copy.md b/docs/sprints/sprint-2/copy.md index 9b81a76cb..5694502af 100644 --- a/docs/sprints/sprint-2/copy.md +++ b/docs/sprints/sprint-2/copy.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 2 — Copy Briefing" +description: "Knowledge vocabulary definition, FactId categories, entity-attributes keys" +type: sprint +status: archived +sprint: 2 +team: "copy" +--- + # Sprint 2: See — Copy Tasks **Goal:** Define the knowledge vocabulary that content authoring requires. Deliver the FactId categories, known_attributes keys, and RelationshipState transition patterns for v0.1. diff --git a/docs/sprints/sprint-2/joint.md b/docs/sprints/sprint-2/joint.md index cd38cd720..2928b2496 100644 --- a/docs/sprints/sprint-2/joint.md +++ b/docs/sprints/sprint-2/joint.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 2 — Joint Briefing" +description: "Shadowcasting algorithm selection, ObserverSnapshot v2 schema, knowledge graph integration" +type: sprint +status: archived +sprint: 2 +team: "joint" +--- + # Sprint 2: See — Joint Tasks **Goal:** Fog of perception working through the bridge — server computes LOS visibility, client renders fog. diff --git a/docs/sprints/sprint-2/server.md b/docs/sprints/sprint-2/server.md index b3bb2e6dc..9a470ac4a 100644 --- a/docs/sprints/sprint-2/server.md +++ b/docs/sprints/sprint-2/server.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 2 — Server Briefing" +description: "Shadowcasting algorithm, vision cone implementation, ObserverSnapshot v2 schema" +type: sprint +status: archived +sprint: 2 +team: "server" +--- + # Sprint 2: See — Server Tasks **Goal:** Fog of perception working through the bridge — server computes LOS visibility, client renders fog. diff --git a/docs/sprints/sprint-20/client.md b/docs/sprints/sprint-20/client.md index d575cbf2c..378ee5a3a 100644 --- a/docs/sprints/sprint-20/client.md +++ b/docs/sprints/sprint-20/client.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 20 — Client Briefing" +description: "Refactor game_state, dialogue_box, main.gd coordinator, unify YAML parsers" +type: sprint +status: archived +sprint: 20 +team: "client" +--- + # Sprint 20: Shape — Client Tasks **Goal:** The social site template system gains its foundational schema; triangles become generatable and observable as escalating tensions; the client gains save/load UI and code quality improvements. diff --git a/docs/sprints/sprint-20/joint.md b/docs/sprints/sprint-20/joint.md index ac18c79ae..aeb3b16fa 100644 --- a/docs/sprints/sprint-20/joint.md +++ b/docs/sprints/sprint-20/joint.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 20 — Joint Briefing" +description: "Triangle configuration, social site schema, client refactor coordination" +type: sprint +status: archived +sprint: 20 +team: "joint" +--- + # Sprint 20: Shape — Joint Coordination **Goal:** The social site template system gains its foundational schema; triangles become generatable and observable as escalating tensions; the client gains save/load UI and code quality improvements. diff --git a/docs/sprints/sprint-20/planning.md b/docs/sprints/sprint-20/planning.md index c86087e37..d75eac997 100644 --- a/docs/sprints/sprint-20/planning.md +++ b/docs/sprints/sprint-20/planning.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 20 — Planning Briefing" +description: "Station district layout design discussion, D-record production" +type: sprint +status: archived +sprint: 20 +team: "planning" +--- + # Sprint 20: Shape — Planning Tasks **Goal:** Resolve the station district layout design through structured discussion, producing a confirmed D-record that unblocks Sprint 21 location authoring and triangle instantiation. diff --git a/docs/sprints/sprint-20/server.md b/docs/sprints/sprint-20/server.md index 19702d172..1ef7633e0 100644 --- a/docs/sprints/sprint-20/server.md +++ b/docs/sprints/sprint-20/server.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 20 — Server Briefing" +description: "Role definition schema, spatial requirements, triangle definition and generation" +type: sprint +status: archived +sprint: 20 +team: "server" +--- + # Sprint 20: Shape — Server Tasks **Goal:** The social site template system gains its foundational schema; triangles become generatable and observable as escalating tensions; the client gains save/load UI and code quality improvements. diff --git a/docs/sprints/sprint-21/ci.md b/docs/sprints/sprint-21/ci.md index 7a3590ac6..b80801aae 100644 --- a/docs/sprints/sprint-21/ci.md +++ b/docs/sprints/sprint-21/ci.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 21 — CI Briefing" +description: "Move connector scripts from db/connectors/ to tooling/db/" +type: sprint +status: archived +sprint: 21 +team: "ci" +--- + # Sprint 21: Instantiate — CI Tasks **Goal:** The template system becomes executable — templates spawn NPCs, assign triangles, and place them in world space; cross-template triangles link social sites; the client gains save/load game flow; and the generator pipeline gets its architectural design. diff --git a/docs/sprints/sprint-21/client.md b/docs/sprints/sprint-21/client.md index fb5d7f688..27ee29f34 100644 --- a/docs/sprints/sprint-21/client.md +++ b/docs/sprints/sprint-21/client.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 21 — Client Briefing" +description: "Save/load game flow, debug overlay housekeeping" +type: sprint +status: archived +sprint: 21 +team: "client" +--- + # Sprint 21: Instantiate — Client Tasks **Goal:** The template system becomes executable — templates spawn NPCs, assign triangles, and place them in world space; cross-template triangles link social sites; the client gains save/load game flow; and the generator pipeline gets its architectural design. diff --git a/docs/sprints/sprint-21/joint.md b/docs/sprints/sprint-21/joint.md index 805be7a3f..6d6d8c594 100644 --- a/docs/sprints/sprint-21/joint.md +++ b/docs/sprints/sprint-21/joint.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 21 — Joint Briefing" +description: "Template instantiation coordination, cross-template triangles, save/load flow" +type: sprint +status: archived +sprint: 21 +team: "joint" +--- + # Sprint 21: Instantiate — Joint Coordination **Goal:** The template system becomes executable — templates spawn NPCs, assign triangles, and place them in world space; cross-template triangles link social sites; the client gains save/load game flow; and the generator pipeline gets its architectural design. diff --git a/docs/sprints/sprint-21/server.md b/docs/sprints/sprint-21/server.md index a030f1b07..9a929c220 100644 --- a/docs/sprints/sprint-21/server.md +++ b/docs/sprints/sprint-21/server.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 21 — Server Briefing" +description: "Template definition format, template-to-instance mapping, cross-template triangle generation" +type: sprint +status: archived +sprint: 21 +team: "server" +--- + # Sprint 21: Instantiate — Server Tasks **Goal:** The template system becomes executable — templates spawn NPCs, assign triangles, and place them in world space; cross-template triangles link social sites; the client gains save/load game flow; and the generator pipeline gets its architectural design. diff --git a/docs/sprints/sprint-21/visual.md b/docs/sprints/sprint-21/visual.md index 388d1291a..4ffc86be6 100644 --- a/docs/sprints/sprint-21/visual.md +++ b/docs/sprints/sprint-21/visual.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 21 — Visual Briefing" +description: "Fog shader alpha tuning for semi-transparent layers per D-059" +type: sprint +status: archived +sprint: 21 +team: "visual" +--- + # Sprint 21: Instantiate — Visual Tasks **Goal:** The template system becomes executable — templates spawn NPCs, assign triangles, and place them in world space; cross-template triangles link social sites; the client gains save/load game flow; and the generator pipeline gets its architectural design. diff --git a/docs/sprints/sprint-22/ci.md b/docs/sprints/sprint-22/ci.md index 31e76a296..e46bd1bef 100644 --- a/docs/sprints/sprint-22/ci.md +++ b/docs/sprints/sprint-22/ci.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 22 — CI Briefing" +description: "Remove db/connectors symlink housekeeping" +type: sprint +status: archived +sprint: 22 +team: "ci" +--- + # Sprint 22: Wire — CI Tasks **Goal:** Fix the fog regression, wire the authored Sova content into a production population and triangle set, and activate the contamination pacing layer that gives the vertical slice its 30-minute shape. diff --git a/docs/sprints/sprint-22/client.md b/docs/sprints/sprint-22/client.md index 1efc2cd7f..5fb45bce3 100644 --- a/docs/sprints/sprint-22/client.md +++ b/docs/sprints/sprint-22/client.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 22 — Client Briefing" +description: "Fix fog system blocky edges, entanglement ratio configuration, seed-based variation" +type: sprint +status: archived +sprint: 22 +team: "client" +--- + # Sprint 22: Wire — Client Tasks **Goal:** Fix the fog regression, wire the authored Sova content into a production population and triangle set, and activate the contamination pacing layer that gives the vertical slice its 30-minute shape. diff --git a/docs/sprints/sprint-22/joint.md b/docs/sprints/sprint-22/joint.md index 4f9ae36a2..b7453d551 100644 --- a/docs/sprints/sprint-22/joint.md +++ b/docs/sprints/sprint-22/joint.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 22 — Joint Briefing" +description: "Fog regression fix coordination, triangle pressure threshold, entanglement config sync" +type: sprint +status: archived +sprint: 22 +team: "joint" +--- + # Sprint 22: Wire — Joint / Integration **Goal:** Fix the fog regression, wire the authored Sova content into a production population and triangle set, and activate the contamination pacing layer that gives the vertical slice its 30-minute shape. diff --git a/docs/sprints/sprint-22/planning.md b/docs/sprints/sprint-22/planning.md index 236019a3f..e03e868f4 100644 --- a/docs/sprints/sprint-22/planning.md +++ b/docs/sprints/sprint-22/planning.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 22 — Planning Briefing" +description: "MobileChunk Idle state documentation, storyteller module activation scoping" +type: sprint +status: archived +sprint: 22 +team: "planning" +--- + # Sprint 22: Wire — Planning Tasks **Goal:** Fix the fog regression, wire the authored Sova content into a production population and triangle set, and activate the contamination pacing layer that gives the vertical slice its 30-minute shape. diff --git a/docs/sprints/sprint-22/server.md b/docs/sprints/sprint-22/server.md index b7a6deb5b..f0d85bd84 100644 --- a/docs/sprints/sprint-22/server.md +++ b/docs/sprints/sprint-22/server.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 22 — Server Briefing" +description: "Signed z-level fix, NPC pool generation, triangle instantiation, contamination activation" +type: sprint +status: archived +sprint: 22 +team: "server" +--- + # Sprint 22: Wire — Server Tasks **Goal:** Fix the fog regression, wire the authored Sova content into a production population and triangle set, and activate the contamination pacing layer that gives the vertical slice its 30-minute shape. diff --git a/docs/sprints/sprint-22/visual.md b/docs/sprints/sprint-22/visual.md index e48c2042a..b47dbe11e 100644 --- a/docs/sprints/sprint-22/visual.md +++ b/docs/sprints/sprint-22/visual.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 22 — Visual Briefing" +description: "Fog shader alpha tuning for semi-transparent layers per D-059" +type: sprint +status: archived +sprint: 22 +team: "visual" +--- + # Sprint 22: Wire — Visual Tasks **Goal:** Fix the fog regression, wire the authored Sova content into a production population and triangle set, and activate the contamination pacing layer that gives the vertical slice its 30-minute shape. diff --git a/docs/sprints/sprint-23/client.md b/docs/sprints/sprint-23/client.md index 80acb597c..67a392d91 100644 --- a/docs/sprints/sprint-23/client.md +++ b/docs/sprints/sprint-23/client.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 23 — Client Briefing" +description: "Dialogue speaker colors fix, test failures fix, debug console UI, wall LOS rendering" +type: sprint +status: archived +sprint: 23 +team: "client" +--- + # Sprint 23: Terrain — Client Tasks **Goal:** Build the walkable Sova world under the authored content, complete the storyteller engagement layer, and add the debug console — clearing the path to v0.1 integration in Sprint 24. diff --git a/docs/sprints/sprint-23/joint.md b/docs/sprints/sprint-23/joint.md index 1c2ca7259..a179a5779 100644 --- a/docs/sprints/sprint-23/joint.md +++ b/docs/sprints/sprint-23/joint.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 23 — Joint Briefing" +description: "Tile format coordination, debug command wire format, protocol version bump" +type: sprint +status: archived +sprint: 23 +team: "joint" +--- + # Sprint 23: Terrain — Joint / Integration **Goal:** Build the walkable Sova world under the authored content, complete the storyteller engagement layer, and add the debug console — clearing the path to v0.1 integration in Sprint 24. diff --git a/docs/sprints/sprint-23/server.md b/docs/sprints/sprint-23/server.md index 7c232b644..ac9118b6e 100644 --- a/docs/sprints/sprint-23/server.md +++ b/docs/sprints/sprint-23/server.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 23 — Server Briefing" +description: "Chunk data structure, tile format loader, storyteller engagement and activation systems" +type: sprint +status: archived +sprint: 23 +team: "server" +--- + # Sprint 23: Terrain — Server Tasks **Goal:** Build the walkable Sova world under the authored content, complete the storyteller engagement layer, and add the debug console — clearing the path to v0.1 integration in Sprint 24. diff --git a/docs/sprints/sprint-23/visual.md b/docs/sprints/sprint-23/visual.md index 97d1a5d5d..5165b7bed 100644 --- a/docs/sprints/sprint-23/visual.md +++ b/docs/sprints/sprint-23/visual.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 23 — Visual Briefing" +description: "Author tile maps for The Terminal, The Last Shift, maintenance and gate corridors" +type: sprint +status: archived +sprint: 23 +team: "visual" +--- + # Sprint 23: Terrain — Visual Tasks **Goal:** Build the walkable Sova world under the authored content, complete the storyteller engagement layer, and add the debug console — clearing the path to v0.1 integration in Sprint 24. diff --git a/docs/sprints/sprint-24/client.md b/docs/sprints/sprint-24/client.md index 5cbb70896..dab5bea6d 100644 --- a/docs/sprints/sprint-24/client.md +++ b/docs/sprints/sprint-24/client.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 24 — Client Briefing" +description: "Character select screen, triangle activation response, news ticker display" +type: sprint +status: archived +sprint: 24 +team: "client" +--- + # Sprint 24: Signal — Client Tasks **Goal:** Wire the storyteller's activation event into player-visible consequences, thread character archetype through the full session lifecycle, and deliver the first unscripted end-to-end v0.1 playthrough — from main menu to triangle activation. diff --git a/docs/sprints/sprint-24/copy.md b/docs/sprints/sprint-24/copy.md index 678e8c0c1..fccfac233 100644 --- a/docs/sprints/sprint-24/copy.md +++ b/docs/sprints/sprint-24/copy.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 24 — Copy Briefing" +description: "Triangle activation monologue lines, per-archetype proximity content" +type: sprint +status: archived +sprint: 24 +team: "copy" +--- + # Sprint 24: Signal — Copy Tasks **Goal:** Wire the storyteller's activation event into player-visible consequences, thread character archetype through the full session lifecycle, and deliver the first unscripted end-to-end v0.1 playthrough — from main menu to triangle activation. diff --git a/docs/sprints/sprint-24/joint.md b/docs/sprints/sprint-24/joint.md index 8150fb5b0..28a2a2a91 100644 --- a/docs/sprints/sprint-24/joint.md +++ b/docs/sprints/sprint-24/joint.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 24 — Joint Briefing" +description: "v0.1 capstone coordination, StartupMessage wire format, end-to-end playthrough proof" +type: sprint +status: archived +sprint: 24 +team: "joint" +--- + # Sprint 24: Signal — Joint / Integration **Goal:** Wire the storyteller's activation event into player-visible consequences, thread character archetype through the full session lifecycle, and deliver the first unscripted end-to-end v0.1 playthrough — from main menu to triangle activation. diff --git a/docs/sprints/sprint-24/server.md b/docs/sprints/sprint-24/server.md index 48d72c07f..fa583a8f3 100644 --- a/docs/sprints/sprint-24/server.md +++ b/docs/sprints/sprint-24/server.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 24 — Server Briefing" +description: "Character archetype spawning, triangle activation consumer, news ticker" +type: sprint +status: archived +sprint: 24 +team: "server" +--- + # Sprint 24: Signal — Server Tasks **Goal:** Wire the storyteller's activation event into player-visible consequences, thread character archetype through the full session lifecycle, and deliver the first unscripted end-to-end v0.1 playthrough — from main menu to triangle activation. diff --git a/docs/sprints/sprint-25/copy.md b/docs/sprints/sprint-25/copy.md index 3eb38fdbe..447822964 100644 --- a/docs/sprints/sprint-25/copy.md +++ b/docs/sprints/sprint-25/copy.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 25 — Copy Briefing" +description: "Zone identity spec, Krenn culture profile" +type: sprint +status: archived +sprint: 25 +team: "copy" +--- + # Sprint 25: Emerge — Copy Tasks **Goal:** Prove the generator can extrapolate from minimal input — a rural Krenn area AND an industrial Krenn zone from zone type and culture profile alone, no per-location spec. Two zone types, one culture, side-by-side comparison. diff --git a/docs/sprints/sprint-25/joint.md b/docs/sprints/sprint-25/joint.md index 79c621e5a..67707a512 100644 --- a/docs/sprints/sprint-25/joint.md +++ b/docs/sprints/sprint-25/joint.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 25 — Joint Briefing" +description: "Generator proof-of-life coordination, zone spec handoff, throwaway render test" +type: sprint +status: archived +sprint: 25 +team: "joint" +--- + # Sprint 25: Emerge — Joint **Confidence: 15%.** This sprint is exploratory — we learn whether the approach works, not whether we can ship it. Declare what we learned, not victory. diff --git a/docs/sprints/sprint-25/server.md b/docs/sprints/sprint-25/server.md index 3c03edb24..312dcf58c 100644 --- a/docs/sprints/sprint-25/server.md +++ b/docs/sprints/sprint-25/server.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 25 — Server Briefing" +description: "NpcBlueprint struct design, template assembly generator" +type: sprint +status: archived +sprint: 25 +team: "server" +--- + # Sprint 25: Emerge — Server Tasks **Goal:** Prove the generator can extrapolate from minimal input — a rural Krenn area AND an industrial Krenn zone from zone type and culture profile alone, no per-location spec. Two zone types, one culture, side-by-side comparison. diff --git a/docs/sprints/sprint-26/client.md b/docs/sprints/sprint-26/client.md index 0b2957ec0..82f7c76cc 100644 --- a/docs/sprints/sprint-26/client.md +++ b/docs/sprints/sprint-26/client.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 26 — Client Briefing" +description: "AI-Enhanced Dialogue toggle, hardware detection UX" +type: sprint +status: archived +sprint: 26 +team: "client" +--- + # Sprint 26: Clean House — Client Tasks **Goal:** Ship the voice pipeline to production by integrating observer, removing v0.1 dead weight, and stabilizing the codebase. diff --git a/docs/sprints/sprint-26/copy.md b/docs/sprints/sprint-26/copy.md index 7d1088655..ef6d54dd7 100644 --- a/docs/sprints/sprint-26/copy.md +++ b/docs/sprints/sprint-26/copy.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 26 — Copy Briefing" +description: "D-record amendments, base text elevation pass, remove handwritten Krenn content" +type: sprint +status: archived +sprint: 26 +team: "copy" +--- + # Sprint 26: Clean House — Copy Tasks **Goal:** Ship the voice pipeline to production by integrating observer, removing v0.1 dead weight, and stabilizing the codebase. diff --git a/docs/sprints/sprint-26/joint.md b/docs/sprints/sprint-26/joint.md index dd1be91d6..d2251857c 100644 --- a/docs/sprints/sprint-26/joint.md +++ b/docs/sprints/sprint-26/joint.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 26 — Joint Briefing" +description: "Voice pipeline integration coordination, behavior primitive format agreement" +type: sprint +status: archived +sprint: 26 +team: "joint" +--- + # Sprint 26: Clean House — Joint **Goal:** Ship the voice pipeline to production by integrating observer, removing v0.1 dead weight, and stabilizing the codebase. diff --git a/docs/sprints/sprint-26/planning.md b/docs/sprints/sprint-26/planning.md index 496260f2c..f6a66847c 100644 --- a/docs/sprints/sprint-26/planning.md +++ b/docs/sprints/sprint-26/planning.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 26 — Planning Briefing" +description: "Update agent profiles and briefings for v0.2" +type: sprint +status: archived +sprint: 26 +team: "planning" +--- + # Sprint 26: Clean House — Planning Tasks **Goal:** Ship the voice pipeline to production by integrating observer, removing v0.1 dead weight, and stabilizing the codebase. diff --git a/docs/sprints/sprint-26/server.md b/docs/sprints/sprint-26/server.md index 1ee42e42f..1ee8d9163 100644 --- a/docs/sprints/sprint-26/server.md +++ b/docs/sprints/sprint-26/server.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 26 — Server Briefing" +description: "Composable behavior engine, SQLite settings storage, voice pipeline observer integration" +type: sprint +status: archived +sprint: 26 +team: "server" +--- + # Sprint 26: Clean House — Server Tasks **Goal:** Ship the voice pipeline to production by integrating observer, removing v0.1 dead weight, and stabilizing the codebase. diff --git a/docs/sprints/sprint-3/client.md b/docs/sprints/sprint-3/client.md index fc1f9e928..7538b52c6 100644 --- a/docs/sprints/sprint-3/client.md +++ b/docs/sprints/sprint-3/client.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 3 — Client Briefing" +description: "Interaction prompt system, client-side interaction infrastructure" +type: sprint +status: archived +sprint: 3 +team: "client" +--- + # Sprint 3: Content Foundation — Client Tasks **Goal:** Build client-side interaction infrastructure to support v0.1 gameplay. diff --git a/docs/sprints/sprint-3/copy.md b/docs/sprints/sprint-3/copy.md index 0cb6fe670..71fad2afd 100644 --- a/docs/sprints/sprint-3/copy.md +++ b/docs/sprints/sprint-3/copy.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 3 — Copy Briefing" +description: "Character specs, NPC patterns, content directory structure design, wiki maintenance" +type: sprint +status: archived +sprint: 3 +team: "copy" +--- + # Sprint 3: Content Foundation — Copy Tasks **Goal:** Build the content design foundation for v0.1 — character specs, patterns, content structure, and wiki maintenance. diff --git a/docs/sprints/sprint-3/joint.md b/docs/sprints/sprint-3/joint.md index 4e8066caa..d4c6f68fa 100644 --- a/docs/sprints/sprint-3/joint.md +++ b/docs/sprints/sprint-3/joint.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 3 — Joint Briefing" +description: "Cross-team content infrastructure coordination, copy-to-server dependency chain" +type: sprint +status: archived +sprint: 3 +team: "joint" +--- + # Sprint 3: Content Foundation — Joint Tasks **Goal:** Coordinate cross-team dependencies for content infrastructure and interaction systems. diff --git a/docs/sprints/sprint-3/server.md b/docs/sprints/sprint-3/server.md index 69d347853..967961806 100644 --- a/docs/sprints/sprint-3/server.md +++ b/docs/sprints/sprint-3/server.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 3 — Server Briefing" +description: "Content directory skeleton, YAML schema definitions, validate-content CLI, proximity detection" +type: sprint +status: archived +sprint: 3 +team: "server" +--- + # Sprint 3: Content Foundation — Server Tasks **Goal:** Build the content infrastructure for v0.1 — directory structure, schema validation, and interaction mechanics. diff --git a/docs/sprints/sprint-4/ci.md b/docs/sprints/sprint-4/ci.md index 76612d494..486120a95 100644 --- a/docs/sprints/sprint-4/ci.md +++ b/docs/sprints/sprint-4/ci.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 4 — CI Briefing" +description: "Pre-commit FactId typo check" +type: sprint +status: archived +sprint: 4 +team: "ci" +--- + # Sprint 4: Feel — CI Tasks **Goal:** Content conversion and authoring begins — wiki to YAML, content packs, monologue pool diff --git a/docs/sprints/sprint-4/client.md b/docs/sprints/sprint-4/client.md index c6936df3a..c43dbb015 100644 --- a/docs/sprints/sprint-4/client.md +++ b/docs/sprints/sprint-4/client.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 4 — Client Briefing" +description: "Interaction prompt carry-over from Sprint 3, content-focused sprint" +type: sprint +status: archived +sprint: 4 +team: "client" +--- + # Sprint 4: Feel — Client Tasks **Goal:** Content conversion and authoring begins — wiki to YAML, content packs, monologue pool diff --git a/docs/sprints/sprint-4/copy.md b/docs/sprints/sprint-4/copy.md index 94fa4d909..fefa4b2e2 100644 --- a/docs/sprints/sprint-4/copy.md +++ b/docs/sprints/sprint-4/copy.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 4 — Copy Briefing" +description: "FactId progression text, PC-as-NPC briefs, wiki-to-YAML NPC conversion, monologue pool" +type: sprint +status: archived +sprint: 4 +team: "copy" +--- + # Sprint 4: Feel — Copy Tasks **Goal:** Content conversion and authoring begins — wiki to YAML, content packs, monologue pool diff --git a/docs/sprints/sprint-4/joint.md b/docs/sprints/sprint-4/joint.md index 3cbd9a391..f0a686add 100644 --- a/docs/sprints/sprint-4/joint.md +++ b/docs/sprints/sprint-4/joint.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 4 — Joint Briefing" +description: "Infrastructure-to-content transition, parallel content authoring and systems implementation" +type: sprint +status: archived +sprint: 4 +team: "joint" +--- + # Sprint 4: Feel — Joint Tasks **Goal:** Content conversion and authoring begins — wiki to YAML, content packs, monologue pool diff --git a/docs/sprints/sprint-4/server.md b/docs/sprints/sprint-4/server.md index d3cc044a5..8dcf3a696 100644 --- a/docs/sprints/sprint-4/server.md +++ b/docs/sprints/sprint-4/server.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 4 — Server Briefing" +description: "YAML content loader phase 2, enum/attribute/pool/template population, seed schema design" +type: sprint +status: archived +sprint: 4 +team: "server" +--- + # Sprint 4: Feel — Server Tasks **Goal:** Content conversion and authoring begins — wiki to YAML, content packs, monologue pool diff --git a/docs/sprints/sprint-5/ci.md b/docs/sprints/sprint-5/ci.md index b76798041..36e5afd3f 100644 --- a/docs/sprints/sprint-5/ci.md +++ b/docs/sprints/sprint-5/ci.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 5 — CI Briefing" +description: "Pre-commit FactId typo check validation hook" +type: sprint +status: archived +sprint: 5 +team: "ci" +--- + # Sprint 5: Live — CI Tasks **Goal:** Content at scale — FRIEND packs, PC-as-NPC authoring, NPC style guide diff --git a/docs/sprints/sprint-5/client.md b/docs/sprints/sprint-5/client.md index 6425effa3..db8dbf55c 100644 --- a/docs/sprints/sprint-5/client.md +++ b/docs/sprints/sprint-5/client.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 5 — Client Briefing" +description: "Interaction prompt carry-over, UI microcopy joint work" +type: sprint +status: archived +sprint: 5 +team: "client" +--- + # Sprint 5: Live — Client Tasks **Goal:** Content at scale — FRIEND packs, PC-as-NPC authoring, NPC style guide diff --git a/docs/sprints/sprint-5/copy.md b/docs/sprints/sprint-5/copy.md index 2d51bfc3a..dd31529f5 100644 --- a/docs/sprints/sprint-5/copy.md +++ b/docs/sprints/sprint-5/copy.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 5 — Copy Briefing" +description: "FRIEND NPC content packs, character voice speech patterns, NPC authoring style guide" +type: sprint +status: archived +sprint: 5 +team: "copy" +--- + # Sprint 5: Live — Copy Tasks **Goal:** Content at scale — FRIEND packs, PC-as-NPC authoring, NPC style guide diff --git a/docs/sprints/sprint-5/joint.md b/docs/sprints/sprint-5/joint.md index 986251ea9..27555f065 100644 --- a/docs/sprints/sprint-5/joint.md +++ b/docs/sprints/sprint-5/joint.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 5 — Joint Briefing" +description: "Content-focused sprint coordination, FRIEND NPC packs, copy-heavy workload" +type: sprint +status: archived +sprint: 5 +team: "joint" +--- + # Sprint 5: Live — Joint Integration **Goal:** Content at scale — FRIEND packs, PC-as-NPC authoring, NPC style guide diff --git a/docs/sprints/sprint-6/client.md b/docs/sprints/sprint-6/client.md index c22ef5625..7664fcfed 100644 --- a/docs/sprints/sprint-6/client.md +++ b/docs/sprints/sprint-6/client.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 6 — Client Briefing" +description: "Cursor state machine, fog shader rebuild, entity interaction list, inventory UI" +type: sprint +status: archived +sprint: 6 +team: "client" +--- + # Sprint 6: Touch — Client Tasks **Goal:** Movement stances, fog rebuild, multi-verb interactions, and smuggler inventory diff --git a/docs/sprints/sprint-6/copy.md b/docs/sprints/sprint-6/copy.md index e1910d3ba..61394ac4d 100644 --- a/docs/sprints/sprint-6/copy.md +++ b/docs/sprints/sprint-6/copy.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 6 — Copy Briefing" +description: "Smuggler item specs — manifest copy, access token, comm log" +type: sprint +status: archived +sprint: 6 +team: "copy" +--- + # Sprint 6: Touch — Copy Tasks **Goal:** Movement stances, fog rebuild, multi-verb interactions, and smuggler inventory diff --git a/docs/sprints/sprint-6/joint.md b/docs/sprints/sprint-6/joint.md index 9ea7505c3..8c0fc0749 100644 --- a/docs/sprints/sprint-6/joint.md +++ b/docs/sprints/sprint-6/joint.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 6 — Joint Briefing" +description: "Control and interaction sprint, movement stances, fog shader, multi-verb system, inventory" +type: sprint +status: archived +sprint: 6 +team: "joint" +--- + # Sprint 6: Touch — Joint Integration **Goal:** Movement stances, fog rebuild, multi-verb interactions, and smuggler inventory diff --git a/docs/sprints/sprint-6/server.md b/docs/sprints/sprint-6/server.md index 5c4a1625e..f2d137dec 100644 --- a/docs/sprints/sprint-6/server.md +++ b/docs/sprints/sprint-6/server.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 6 — Server Briefing" +description: "Stance system, tile occupancy, two-phase verb computation, smuggler inventory" +type: sprint +status: archived +sprint: 6 +team: "server" +--- + # Sprint 6: Touch — Server Tasks **Goal:** Movement stances, fog rebuild, multi-verb interactions, and smuggler inventory diff --git a/docs/sprints/sprint-7/audio.md b/docs/sprints/sprint-7/audio.md index a02460dd4..20f337fb5 100644 --- a/docs/sprints/sprint-7/audio.md +++ b/docs/sprints/sprint-7/audio.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 7 — Audio Briefing" +description: "6 interaction audio assets — cursor hover, weapon mode, fog recognition, dialogue" +type: sprint +status: archived +sprint: 7 +team: "audio" +--- + # Sprint 7: Talk — Audio Tasks **Goal:** Complete interaction UI layer and activate basic dialogue system with NPC conversations. diff --git a/docs/sprints/sprint-7/client.md b/docs/sprints/sprint-7/client.md index ff4a37f9d..c647eeafd 100644 --- a/docs/sprints/sprint-7/client.md +++ b/docs/sprints/sprint-7/client.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 7 — Client Briefing" +description: "Sprint 6 UI carry-over (cursor, fog shader, interaction list, radial menu, inventory, stance)" +type: sprint +status: archived +sprint: 7 +team: "client" +--- + # Sprint 7: Talk — Client Tasks **Goal:** Complete interaction UI layer and activate basic dialogue system with NPC conversations. diff --git a/docs/sprints/sprint-7/copy.md b/docs/sprints/sprint-7/copy.md index d786ee14c..9167f4e83 100644 --- a/docs/sprints/sprint-7/copy.md +++ b/docs/sprints/sprint-7/copy.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 7 — Copy Briefing" +description: "Archetype evidence presentation spec — detective case file vs smuggler notebook" +type: sprint +status: archived +sprint: 7 +team: "copy" +--- + # Sprint 7: Talk — Copy Tasks **Goal:** Complete interaction UI layer and activate basic dialogue system with NPC conversations. diff --git a/docs/sprints/sprint-7/joint.md b/docs/sprints/sprint-7/joint.md index 96e693aae..4bc0d1daa 100644 --- a/docs/sprints/sprint-7/joint.md +++ b/docs/sprints/sprint-7/joint.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 7 — Joint Briefing" +description: "Sprint 6 UI carry-over completion, dialogue system foundation, NPC conversations" +type: sprint +status: archived +sprint: 7 +team: "joint" +--- + # Sprint 7: Talk — Joint Integration **Goal:** Complete interaction UI layer and activate basic dialogue system with NPC conversations. diff --git a/docs/sprints/sprint-7/server.md b/docs/sprints/sprint-7/server.md index 2ad9f56b9..282ebbe65 100644 --- a/docs/sprints/sprint-7/server.md +++ b/docs/sprints/sprint-7/server.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 7 — Server Briefing" +description: "Cognitive delay system, line pool format, YAML hot-reload, InteractionMemory KG schema" +type: sprint +status: archived +sprint: 7 +team: "server" +--- + # Sprint 7: Talk — Server Tasks **Goal:** Complete interaction UI layer and activate basic dialogue system with NPC conversations. diff --git a/docs/sprints/sprint-8/audio.md b/docs/sprints/sprint-8/audio.md index 1babdb99d..63b802350 100644 --- a/docs/sprints/sprint-8/audio.md +++ b/docs/sprints/sprint-8/audio.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 8 — Audio Briefing" +description: "Interaction audio assets carry-over — remaining 2 of 6 assets" +type: sprint +status: archived +sprint: 8 +team: "audio" +--- + # Sprint 8: React — Audio Tasks **Goal:** Activate the dialogue pipeline end-to-end — player talks to NPCs, NPCs respond, the world reacts. diff --git a/docs/sprints/sprint-8/client.md b/docs/sprints/sprint-8/client.md index 1466d4984..865b3b418 100644 --- a/docs/sprints/sprint-8/client.md +++ b/docs/sprints/sprint-8/client.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 8 — Client Briefing" +description: "Dialogue response selection, walk-away mechanic, confrontation text styling" +type: sprint +status: archived +sprint: 8 +team: "client" +--- + # Sprint 8: React — Client Tasks **Goal:** Activate the dialogue pipeline end-to-end — player talks to NPCs, NPCs respond, the world reacts. diff --git a/docs/sprints/sprint-8/joint.md b/docs/sprints/sprint-8/joint.md index b6403c4d2..a420d70dc 100644 --- a/docs/sprints/sprint-8/joint.md +++ b/docs/sprints/sprint-8/joint.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 8 — Joint Briefing" +description: "End-to-end dialogue pipeline activation, NPC conversations, world reactions" +type: sprint +status: archived +sprint: 8 +team: "joint" +--- + # Sprint 8: React — Joint / Integration Tasks **Goal:** Activate the dialogue pipeline end-to-end — player talks to NPCs, NPCs respond, the world reacts. diff --git a/docs/sprints/sprint-8/server.md b/docs/sprints/sprint-8/server.md index bad58d52e..3b353a39e 100644 --- a/docs/sprints/sprint-8/server.md +++ b/docs/sprints/sprint-8/server.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 8 — Server Briefing" +description: "Dialogue selection pipeline, walk-away KG recording, anomaly detection, monologue timing" +type: sprint +status: archived +sprint: 8 +team: "server" +--- + # Sprint 8: React — Server Tasks **Goal:** Activate the dialogue pipeline end-to-end — player talks to NPCs, NPCs respond, the world reacts. diff --git a/docs/sprints/sprint-9/audio.md b/docs/sprints/sprint-9/audio.md index b57b0f164..410fe3d36 100644 --- a/docs/sprints/sprint-9/audio.md +++ b/docs/sprints/sprint-9/audio.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 9 — Audio Briefing" +description: "Interaction audio assets completion, Sprint 7 UI audio asset revision" +type: sprint +status: archived +sprint: 9 +team: "audio" +--- + # Sprint 9: Gauntlet — Audio Tasks **Goal:** Build the test infrastructure backbone — test client binary, Gauntlet rooms 1-3, golden file suite, and client QA harness — so every future sprint can be validated end-to-end. diff --git a/docs/sprints/sprint-9/ci.md b/docs/sprints/sprint-9/ci.md index 0ad9eb5fb..4be6cf7e0 100644 --- a/docs/sprints/sprint-9/ci.md +++ b/docs/sprints/sprint-9/ci.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 9 — CI Briefing" +description: "make pre-pr target, content cross-reference validation, fixture staleness check" +type: sprint +status: archived +sprint: 9 +team: "ci" +--- + # Sprint 9: Gauntlet — CI Tasks **Goal:** Build the test infrastructure backbone — test client binary, Gauntlet rooms 1-3, golden file suite, and client QA harness — so every future sprint can be validated end-to-end. diff --git a/docs/sprints/sprint-9/client.md b/docs/sprints/sprint-9/client.md index 9b612e7d4..8900e35dd 100644 --- a/docs/sprints/sprint-9/client.md +++ b/docs/sprints/sprint-9/client.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 9 — Client Briefing" +description: "Client P2/P3 Gauntlet tests, WRONG button MVP, room timer, MessagePack fix" +type: sprint +status: archived +sprint: 9 +team: "client" +--- + # Sprint 9: Gauntlet — Client Tasks **Goal:** Build the test infrastructure backbone — test client binary, Gauntlet rooms 1-3, golden file suite, and client QA harness — so every future sprint can be validated end-to-end. diff --git a/docs/sprints/sprint-9/joint.md b/docs/sprints/sprint-9/joint.md index 894cd89f9..5dbaaee57 100644 --- a/docs/sprints/sprint-9/joint.md +++ b/docs/sprints/sprint-9/joint.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 9 — Joint Briefing" +description: "Test infrastructure backbone, Gauntlet rooms, golden file suite, client QA harness" +type: sprint +status: archived +sprint: 9 +team: "joint" +--- + # Sprint 9: Gauntlet — Joint / Integration **Goal:** Build the test infrastructure backbone — test client binary, Gauntlet rooms 1-3, golden file suite, and client QA harness — so every future sprint can be validated end-to-end. diff --git a/docs/sprints/sprint-9/server.md b/docs/sprints/sprint-9/server.md index 73c379e32..472f879dd 100644 --- a/docs/sprints/sprint-9/server.md +++ b/docs/sprints/sprint-9/server.md @@ -1,3 +1,12 @@ +--- +title: "Sprint 9 — Server Briefing" +description: "Test client binary, Gauntlet rooms 1-3, golden file suite, subprocess tests" +type: sprint +status: archived +sprint: 9 +team: "server" +--- + # Sprint 9: Gauntlet — Server Tasks **Goal:** Build the test infrastructure backbone — test client binary, Gauntlet rooms 1-3, golden file suite, and client QA harness — so every future sprint can be validated end-to-end. From e56061ecbcf58907a3d4452fdab2eb2f93b11f1d Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Sat, 14 Mar 2026 00:15:51 +0100 Subject: [PATCH 27/28] docs(docs): add frontmatter to asset pipeline docs Standardized YAML frontmatter on all 13 docs/assets/ files covering audio, visual, and video pipeline docs, palettes, and templates. Co-Authored-By: Claude Opus 4.6 --- docs/assets/README.md | 7 +++++++ docs/assets/_templates/audio.md | 7 +++++++ docs/assets/_templates/sprite.md | 7 +++++++ docs/assets/_templates/video.md | 7 +++++++ docs/assets/audio/README.md | 7 +++++++ docs/assets/audio/ambient.md | 7 +++++++ docs/assets/audio/palette.md | 7 +++++++ docs/assets/audio/sfx.md | 7 +++++++ docs/assets/audio/ui.md | 7 +++++++ docs/assets/video/README.md | 7 +++++++ docs/assets/video/palette.md | 7 +++++++ docs/assets/visual/README.md | 7 +++++++ docs/assets/visual/palette.md | 7 +++++++ 13 files changed, 91 insertions(+) diff --git a/docs/assets/README.md b/docs/assets/README.md index dcca40e1c..d808c1ca7 100644 --- a/docs/assets/README.md +++ b/docs/assets/README.md @@ -1,3 +1,10 @@ +--- +title: "Asset Pipeline Index" +description: "Master index linking all asset pipelines (audio, visual, video) with structure and conventions" +type: design +status: active +--- + # Asset Pipeline Index Centralized tracking for all production assets across pipelines. Each pipeline has its own index, palette (style bible), and per-category asset tables. diff --git a/docs/assets/_templates/audio.md b/docs/assets/_templates/audio.md index 5ceadd180..50e925d20 100644 --- a/docs/assets/_templates/audio.md +++ b/docs/assets/_templates/audio.md @@ -1,3 +1,10 @@ +--- +title: "Audio Asset Template" +description: "Row and detailed entry templates for audio asset documentation" +type: design +status: active +--- + # Audio Asset Template ## Table Row Format diff --git a/docs/assets/_templates/sprite.md b/docs/assets/_templates/sprite.md index dec19e3a1..52dd0bef9 100644 --- a/docs/assets/_templates/sprite.md +++ b/docs/assets/_templates/sprite.md @@ -1,3 +1,10 @@ +--- +title: "Sprite Asset Template" +description: "Row and detailed entry templates for sprite and visual asset documentation" +type: design +status: active +--- + # Sprite Asset Template ## Table Row Format diff --git a/docs/assets/_templates/video.md b/docs/assets/_templates/video.md index d56e672b7..031941ced 100644 --- a/docs/assets/_templates/video.md +++ b/docs/assets/_templates/video.md @@ -1,3 +1,10 @@ +--- +title: "Video Asset Template" +description: "Row and detailed entry templates for video asset documentation" +type: design +status: active +--- + # Video Asset Template ## Table Row Format diff --git a/docs/assets/audio/README.md b/docs/assets/audio/README.md index 99f6d9dee..4f2f8f7dc 100644 --- a/docs/assets/audio/README.md +++ b/docs/assets/audio/README.md @@ -1,3 +1,10 @@ +--- +title: "Audio Asset Pipeline" +description: "Audio pipeline index with category status, generation tools, bus architecture, and sprint scope" +type: design +status: active +--- + # Audio Asset Pipeline Status: **Active** — Sprint 7 (first audio sprint) diff --git a/docs/assets/audio/ambient.md b/docs/assets/audio/ambient.md index 45cafbd5e..d0ef724b3 100644 --- a/docs/assets/audio/ambient.md +++ b/docs/assets/audio/ambient.md @@ -1,3 +1,10 @@ +--- +title: "Ambient Audio Assets" +description: "Zone-based ambient loop assets for station base and zone overlays with generation and layering specs" +type: design +status: active +--- + # Ambient — Audio Assets Zone-based ambient loops. Station base plays globally; overlays crossfade based on player zone (hard tile boundary, 1.5-2s audio tween). diff --git a/docs/assets/audio/palette.md b/docs/assets/audio/palette.md index 3cb5d3a5c..f045e93aa 100644 --- a/docs/assets/audio/palette.md +++ b/docs/assets/audio/palette.md @@ -1,3 +1,10 @@ +--- +title: "Audio Palette" +description: "Sonic identity guide covering insert-tech and organic families, station palette, bus architecture, and generation approach" +type: design +status: active +--- + # Audio Palette The sonic identity of The Settled Reach. Living document — updated as the audio language evolves. diff --git a/docs/assets/audio/sfx.md b/docs/assets/audio/sfx.md index a9b5116dd..b85575226 100644 --- a/docs/assets/audio/sfx.md +++ b/docs/assets/audio/sfx.md @@ -1,3 +1,10 @@ +--- +title: "SFX Audio Assets" +description: "World sound effect assets for footsteps, NPC murmur, and environmental events with generation specs" +type: design +status: active +--- + # SFX — Audio Assets World sound effects: footsteps, environmental events, impacts. Event-driven, often positional (AudioStreamPlayer2D). diff --git a/docs/assets/audio/ui.md b/docs/assets/audio/ui.md index 90d71750e..a7e37cb27 100644 --- a/docs/assets/audio/ui.md +++ b/docs/assets/audio/ui.md @@ -1,3 +1,10 @@ +--- +title: "UI Audio Assets" +description: "Interface sound assets for cursor, implant, monologue chimes, and weapon aim with generation specs" +type: design +status: active +--- + # UI — Audio Assets Interface sounds triggered by player interaction, insert systems, and cognitive events. Non-positional (AudioStreamPlayer). Routes to UI Sounds bus. diff --git a/docs/assets/video/README.md b/docs/assets/video/README.md index 865935c8f..8407c1058 100644 --- a/docs/assets/video/README.md +++ b/docs/assets/video/README.md @@ -1,3 +1,10 @@ +--- +title: "Video Asset Pipeline" +description: "Video pipeline index for trailers and cutscenes, deferred to post-v0.1 milestones" +type: design +status: active +--- + # Video Asset Pipeline Status: **Stub** — no video assets planned for v0.1. diff --git a/docs/assets/video/palette.md b/docs/assets/video/palette.md index 21debf081..eef50748c 100644 --- a/docs/assets/video/palette.md +++ b/docs/assets/video/palette.md @@ -1,3 +1,10 @@ +--- +title: "Video Palette" +description: "Motion and editing style guide for video production, to be established post-v0.1" +type: design +status: active +--- + # Video Palette Status: **Stub** — no video production planned for v0.1. diff --git a/docs/assets/visual/README.md b/docs/assets/visual/README.md index db51ca3c6..1e5d885c0 100644 --- a/docs/assets/visual/README.md +++ b/docs/assets/visual/README.md @@ -1,3 +1,10 @@ +--- +title: "Visual Asset Pipeline" +description: "Visual pipeline index covering sprites, furniture, tilesets, icons, and effects with render pipeline overview" +type: design +status: active +--- + # Visual Asset Pipeline Status: **Stub** — awaiting first visual sprint. diff --git a/docs/assets/visual/palette.md b/docs/assets/visual/palette.md index 2ee7991c0..a33965ab8 100644 --- a/docs/assets/visual/palette.md +++ b/docs/assets/visual/palette.md @@ -1,3 +1,10 @@ +--- +title: "Visual Palette" +description: "Art direction guide covering camera angle, entity colours, environmental neutrality, and functional warmth" +type: design +status: active +--- + # Visual Palette Status: **Stub** — reference art direction workshop output for current guidance. From 3ddbdf614b85fc964697983eb384f9c28cfd913b Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Sat, 14 Mar 2026 00:16:15 +0100 Subject: [PATCH 28/28] chore(meta): update changelog Co-Authored-By: Claude Opus 4.6 --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 38ae42929..cd756a36e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ Format based on [Keep a Changelog](https://keepachangelog.com/). ## [Unreleased] ### Added -- Standardized `description` frontmatter field across all wiki templates and entries for context-aware document loading +- Standardized YAML frontmatter across all ~500 docs/ and wiki/ files — every markdown file now has title, description, type, and status fields for context-aware document loading - Character exemplar template — Kael Davan Tier 1 profile preserved as generator quality target (D-122) - Docs template system — frontmatter templates for architecture, design, briefing, workshop, and test-plan documents