refactor(data): rename Krenn to Van Maanen's Star
System S-057 assigned to real star GJ 35 (Van Maanen's Star, DG white dwarf at 13.9 ly). Renamed across all content, server code, docs, decisions, wiki lore, and config files. 224 files updated. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -85,9 +85,9 @@ Use `db/connectors/ticket show <id>` for full details.
|
||||
|
||||
## Key Decisions
|
||||
|
||||
- `decisions/content.md` — D-023 (YAML content format), D-024 (three-tier content pipeline), D-025 (dialogue access tier model), D-028 (internal monologue pools per character), D-029 (THE FRIEND production NPC pattern), D-034 (D-029 confirmed), D-035 (knowledge state vocabulary), D-050 (Velen / Krenn system), D-062 (dialogue system architecture), D-063 (confrontation — same box different weight), D-064 (opening experience design)
|
||||
- `decisions/content.md` — D-023 (YAML content format), D-024 (three-tier content pipeline), D-025 (dialogue access tier model), D-028 (internal monologue pools per character), D-029 (THE FRIEND production NPC pattern), D-034 (D-029 confirmed), D-035 (knowledge state vocabulary), D-050 (Velen / Van Maanen's Star), D-062 (dialogue system architecture), D-063 (confrontation — same box different weight), D-064 (opening experience design)
|
||||
- `decisions/perception.md` — D-016 (internal monologue system), D-032 (separate monologue pools per character)
|
||||
- `decisions/scope.md` — D-027 (vertical slice), D-036 (Sova Transit District / Krenn as v0.1 setting), D-037 (contraband spec — unlicensed lattice components), D-039 (v0.1 wow moments — all 6)
|
||||
- `decisions/scope.md` — D-027 (vertical slice), D-036 (Sova Transit District / Van Maanen's Star as v0.1 setting), D-037 (contraband spec — unlicensed lattice components), D-039 (v0.1 wow moments — all 6)
|
||||
- `decisions/architecture.md` — D-041 (knowledge graph — provides vocabulary foundation via Appendix A)
|
||||
|
||||
## Open Questions to Resolve Early
|
||||
@@ -141,9 +141,9 @@ Wave 4 (final):
|
||||
|
||||
**#189 — Cultural generation guide — Miri**
|
||||
- Blocking dependency for all three content packs (#190, #191, #192).
|
||||
- Sova Transit District / Krenn System is the FIRST concrete instance — Miri's output IS the v0.1 cultural voice.
|
||||
- Sova Transit District / Van Maanen's Star is the FIRST concrete instance — Miri's output IS the v0.1 cultural voice.
|
||||
- Covers: naming conventions, economic vocabulary (what do workers call credits, shifts, cargo), social norms, relationship dynamics in a Commission-regulated transit hub.
|
||||
- D-036 confirms Sova Transit District as setting. D-050 establishes Velen/Krenn context.
|
||||
- D-036 confirms Sova Transit District as setting. D-050 establishes Velen/Van Maanen's Star context.
|
||||
|
||||
**#302 — Sova Texture Appendix**
|
||||
- 1-page appendix to the Sova setting brief. Fast to write, high leverage — unlocks #190, #191, #192, #306.
|
||||
|
||||
@@ -24,7 +24,7 @@ Use `db/connectors/ticket show <id>` for full details.
|
||||
|
||||
## Key Decisions
|
||||
|
||||
- `decisions/content.md` — D-028 (dialogue architecture — four relational layers; #168 implements Layer 1-2 tag structure), D-032 (separate monologue pools per character — hard partition, no shared lines), D-034 (THE FRIEND — Kael Davan / Sera Venn, all monologue content must be coherent with their arcs), D-035 (converged tag taxonomy — 6 structural + 3 selection + 3 monologue-specific tags), D-036 (Sova Transit District setting — Krenn naming conventions, "functional warmth" tone), D-037 (contraband — unlicensed lattice components, moral ambiguity), D-062 (invisible locked dialogue options — new trust tier content appears silently), D-063 (confrontation mechanics — internal voice, italic first-person options), D-064 (walk-away consequences — KG records incompleteness)
|
||||
- `decisions/content.md` — D-028 (dialogue architecture — four relational layers; #168 implements Layer 1-2 tag structure), D-032 (separate monologue pools per character — hard partition, no shared lines), D-034 (THE FRIEND — Kael Davan / Sera Venn, all monologue content must be coherent with their arcs), D-035 (converged tag taxonomy — 6 structural + 3 selection + 3 monologue-specific tags), D-036 (Sova Transit District setting — Van Maanen's Star naming conventions, "functional warmth" tone), D-037 (contraband — unlicensed lattice components, moral ambiguity), D-062 (invisible locked dialogue options — new trust tier content appears silently), D-063 (confrontation mechanics — internal voice, italic first-person options), D-064 (walk-away consequences — KG records incompleteness)
|
||||
- `decisions/perception.md` — D-016 (internal monologue — four functions: perception bridge, atmosphere, diegetic tutorial, unreliable narrator), D-018 (three-range sound model — NPC-to-NPC conversations are Voice events the player overhears)
|
||||
- D-078 (overheard NPC conversation — lines must survive partial occlusion; front-load key information, short declarative sentences, avoid pronoun-first openers)
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ Use `db/connectors/ticket show <id>` for full details.
|
||||
1. **Dialogue** (NPC speech + player response options): bottom panel, max 20% height, max ~100 chars per line (D-061). Speaker name styled. Response options styled differently from speech.
|
||||
2. **Internal monologue** (player character): left-side or bottom-left, italic, smaller font, character colour from #315 spec (done Sprint 13).
|
||||
3. **Observation / overheard** (what the player perceives about NPCs or overhears): distinct treatment from monologue — diegetic information output, not character voice. Consider: greyed label, different font weight, positioned differently.
|
||||
4. **Environmental text** (signage, terminals, news tickers in-world): diegetic — appears in the world layer, not the HUD layer. Two-language treatment per D-036 (Concordat Standard + Krenn vernacular). Character limits per format (signage shorter, terminal longer, news ticker scrolling).
|
||||
4. **Environmental text** (signage, terminals, news tickers in-world): diegetic — appears in the world layer, not the HUD layer. Two-language treatment per D-036 (Concordat Standard + Van Maanen's Star vernacular). Character limits per format (signage shorter, terminal longer, news ticker scrolling).
|
||||
- Each pipeline needs: position on screen, font size/weight, colour scheme, max width/height, fade/truncation behaviour. D-049 z-layer assignments for each.
|
||||
- Reference: `docs/design/monologue-display-spec.md` (#315, done) for monologue pipeline specifics — this spec extends and cross-references it.
|
||||
|
||||
@@ -67,10 +67,10 @@ Use `db/connectors/ticket show <id>` for full details.
|
||||
- Cross-reference `docs/design/entity-color-system.md` (#304, this sprint) once it is drafted.
|
||||
|
||||
- **#334 — Environmental text visual standards:** How signage, terminals, and news tickers render in-world. Output: `docs/design/environmental-text-standards.md`. Per ticket:
|
||||
- **Signage:** Short (1-3 words typical), both Concordat Standard and Krenn vernacular. Character limits. Font size relative to tile size (D-066: 1m visual tiles, 2x retina factor). Position: floating above the tile, or rendered on the tile surface.
|
||||
- **Signage:** Short (1-3 words typical), both Concordat Standard and Van Maanen's Star vernacular. Character limits. Font size relative to tile size (D-066: 1m visual tiles, 2x retina factor). Position: floating above the tile, or rendered on the tile surface.
|
||||
- **Terminals:** Longer text, readable on interaction (Observe verb). Two-state: ambient (icon/identifier visible from range) and active (text readable when player is adjacent).
|
||||
- **News tickers:** Scrolling text, ambient, not blocking gameplay. Where on screen — in-world (floating above terminal), not HUD overlay.
|
||||
- **Bilingual treatment:** Concordat Standard is the colonial lingua franca (neutral, bureaucratic). Krenn vernacular is the local dialect (warm, compact, consonant-heavy per D-036 naming conventions). Which text in which language per context? Formal signage = Concordat Standard. Informal social text (bar menu, worker notices) = Krenn vernacular. Mixed where both audiences are intended.
|
||||
- **Bilingual treatment:** Concordat Standard is the colonial lingua franca (neutral, bureaucratic). Van Maanen's Star vernacular is the local dialect (warm, compact, consonant-heavy per D-036 naming conventions). Which text in which language per context? Formal signage = Concordat Standard. Informal social text (bar menu, worker notices) = Van Maanen's Star vernacular. Mixed where both audiences are intended.
|
||||
- **Rendering layer:** Per D-049 z-layer stack — environmental text is object-layer (layer 2-3), not HUD layer (layer 6+). Must not occlude entities.
|
||||
|
||||
- **#251 — Tell visual/behavioral expression:** How NPC behavioral tells manifest in the top-down renderer. Output: `docs/design/tell-visual-expression.md`. Per D-024 tell system (5 categories: nervous, angry, friendly, guarded, routine deviation) and server's `TellSystem` component (`server/src/npc/mod.rs`). In v0.1, tell expression is via **monologue text** (server emits monologue on observe_npc trigger when tell is active), not visual animation — this is confirmed. However, Araminta's task is to define:
|
||||
|
||||
@@ -18,14 +18,14 @@ Use `db/connectors/ticket show <id>` for full details.
|
||||
|
||||
## Key Decisions
|
||||
|
||||
- `decisions/content.md` — D-016 (internal monologue functions: perception bridge, atmosphere, diegetic tutorial, unreliable narrator), D-024 (10-axis NPC model; personality traits, tell system), D-028 (dialogue 4-layer architecture: access tiers → relationship history → trust gossip → unprompted disclosure), D-032 (separate monologue pools per character — hard partition), D-034 (THE FRIEND pattern: Kael Davan / Sera Venn), D-035 (converged tag taxonomy — 6 structural + 3 selection tags; 9 mood states post Sprint 14 amendment), D-036 (Sova Transit District setting, Krenn System naming conventions), D-075 (dialogue filtering: KnowledgeConfidence gates TrustTier, not AccessTier)
|
||||
- `decisions/content.md` — D-016 (internal monologue functions: perception bridge, atmosphere, diegetic tutorial, unreliable narrator), D-024 (10-axis NPC model; personality traits, tell system), D-028 (dialogue 4-layer architecture: access tiers → relationship history → trust gossip → unprompted disclosure), D-032 (separate monologue pools per character — hard partition), D-034 (THE FRIEND pattern: Kael Davan / Sera Venn), D-035 (converged tag taxonomy — 6 structural + 3 selection tags; 9 mood states post Sprint 14 amendment), D-036 (Sova Transit District setting, Van Maanen's Star naming conventions), D-075 (dialogue filtering: KnowledgeConfidence gates TrustTier, not AccessTier)
|
||||
- `decisions/perception.md` — D-060 (cognitive delay 0.6s / 0.3s), D-061 (unified dialogue log, bottom screen, max 20% height, max 640px wide), D-062 (invisible locked options — no lock icons), D-063 (confrontation: same box, different weight — italicized first-person voice), D-064 (walk-away: three-phase consequences, KG records incompleteness), D-078 (overheard NPC conversation — passive panel with occlusion filter; monologue reacts via `witness_interaction` trigger)
|
||||
|
||||
## Notes
|
||||
|
||||
- **#299 Opening hook — smuggler first 5 minutes:** All blockers are done: Dual Lens Authoring Guide (#261), character voice speech patterns (#310), knowledge state vocabulary (#309), monologue display visual spec (#315). This is the single most important content deliverable in the game — it blocks all playtest feedback and defines first impressions. Deliver 10-15 tightly sequenced monologue lines structured as a diegetic tutorial arc: (1) station hum as opening sensation, (2) spatial orientation — NPCs already moving, fog boundary visible, (3) first sight of Kael (warm, trusted — D-033 green entity), (4) news ticker glance (optional environmental text moment), (5) first fog-edge sound ping noticed (teaches sound channel). Voice: smuggler is working-class pragmatic, warm but watchful, compact consonant-heavy Krenn naming in references (D-036). Prerequisite tags (`knowledge_state` gates) must be `null` for this sequence — these lines fire on first encounter, before any knowledge graph state exists. Use `trigger: enter_location` for spatial lines, `trigger: observe_npc` for Kael sighting. File structure: `monologue-smuggler.yaml` per D-032. This ticket blocks #330 (diegetic tutorial lines), so prioritize it early.
|
||||
- **#299 Opening hook — smuggler first 5 minutes:** All blockers are done: Dual Lens Authoring Guide (#261), character voice speech patterns (#310), knowledge state vocabulary (#309), monologue display visual spec (#315). This is the single most important content deliverable in the game — it blocks all playtest feedback and defines first impressions. Deliver 10-15 tightly sequenced monologue lines structured as a diegetic tutorial arc: (1) station hum as opening sensation, (2) spatial orientation — NPCs already moving, fog boundary visible, (3) first sight of Kael (warm, trusted — D-033 green entity), (4) news ticker glance (optional environmental text moment), (5) first fog-edge sound ping noticed (teaches sound channel). Voice: smuggler is working-class pragmatic, warm but watchful, compact consonant-heavy Van Maanen's Star naming in references (D-036). Prerequisite tags (`knowledge_state` gates) must be `null` for this sequence — these lines fire on first encounter, before any knowledge graph state exists. Use `trigger: enter_location` for spatial lines, `trigger: observe_npc` for Kael sighting. File structure: `monologue-smuggler.yaml` per D-032. This ticket blocks #330 (diegetic tutorial lines), so prioritize it early.
|
||||
|
||||
- **#300 Opening hook — detective first 5 minutes:** Same blockers done, same urgency. Different emotional register: detective arrives into established rhythm (mid-morning, D-036 Sova atmosphere). The detective is an institutional outsider with analytical lattice — sharper, more detached voice. Tutorial pathway differs: detective's insert HUD is denser (D-048), first NPC contact mediated by institutional insert overlay (Authority access relationship by default). 10-15 lines structured as: (1) institutional orientation — commission kiosk visible, cool-lit corridors (D-046), (2) analytical lattice flagging ambient data (teaches insert channel), (3) first sight of Sera Venn (THE FRIEND, D-034 — currently Unknown/Neutral teal per D-033), (4) cargo manifest anomaly observation (sets detective motivation). Voice: analytical, institutional, controlled. Krenn naming in observations (D-036). File structure: `monologue-detective.yaml` per D-032.
|
||||
- **#300 Opening hook — detective first 5 minutes:** Same blockers done, same urgency. Different emotional register: detective arrives into established rhythm (mid-morning, D-036 Sova atmosphere). The detective is an institutional outsider with analytical lattice — sharper, more detached voice. Tutorial pathway differs: detective's insert HUD is denser (D-048), first NPC contact mediated by institutional insert overlay (Authority access relationship by default). 10-15 lines structured as: (1) institutional orientation — commission kiosk visible, cool-lit corridors (D-046), (2) analytical lattice flagging ambient data (teaches insert channel), (3) first sight of Sera Venn (THE FRIEND, D-034 — currently Unknown/Neutral teal per D-033), (4) cargo manifest anomaly observation (sets detective motivation). Voice: analytical, institutional, controlled. Van Maanen's Star naming in observations (D-036). File structure: `monologue-detective.yaml` per D-032.
|
||||
|
||||
- **#169 Layer 1: Access tier filtering:** D-028 Layer 1 is the foundational gate on the dialogue system. Every dialogue line in the content files must carry an `access` tag (list): values are `public`, `insider`, `authority`, `peer`, `hostile`. This ticket's content deliverable is: (a) audit all existing line pool files under `content/` for correct `access` tagging — flag any lines missing the tag, (b) author the Layer 1 filter logic design spec if one does not exist (how does `RelationshipState` map to `access` tier? see D-075: AccessTier is gated by `RelationshipState` only, not `KnowledgeConfidence`), (c) ensure the existing Kael and Sera line pools (authored in earlier sprints) have correct `access` tags on every line. The dialogue selection pipeline (`server/src/simulation/dialogue.rs`, #305 done) already implements Layer 1 filtering — this ticket is the content-side completion: all lines properly tagged, authoring guide updated for Line Layer 1 rules, Gestalt to confirm tag schema is consistent with D-035 structural tags. Cross-reference: the detective gets Authority access naturally from institutional role; the smuggler gets Insider/Peer access from social network — no archetype tag needed on the pipeline (D-075 emergent design).
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ Use `db/connectors/ticket show 542` for full details.
|
||||
|
||||
### #542 — Migrate line IDs from location-scoped to NPC-scoped namespace
|
||||
|
||||
**What exists:** All dialogue and monologue YAML files under `content/campaigns/main/systems/krenn/stations/sova/districts/transit/`. There are approximately 20 dialogue pool files and a set of monologue pool files. The current line ID scheme uses the location as prefix:
|
||||
**What exists:** All dialogue and monologue YAML files under `content/campaigns/main/systems/van-maanens-star/stations/sova/districts/transit/`. There are approximately 20 dialogue pool files and a set of monologue pool files. The current line ID scheme uses the location as prefix:
|
||||
|
||||
- Old: `the-terminal_d_039` (all NPCs at The Terminal share one ID sequence)
|
||||
- New: `kael-davan_d_001`, `dock-worker_d_001` (each NPC has an independent sequence)
|
||||
|
||||
@@ -27,7 +27,7 @@ Use `db/connectors/ticket show <id>` for full details.
|
||||
|
||||
### #330 — Diegetic tutorial monologue lines — per character
|
||||
|
||||
**What exists:** Monologue pools at `content/campaigns/main/systems/krenn/stations/sova/districts/transit/monologue/detective/` and `.../smuggler/` contain character-specific internal monologue. Opening monologue files exist (`opening.yaml` for both characters). The monologue system in `server/src/simulation/monologue.rs` fires lines based on triggers and prerequisites.
|
||||
**What exists:** Monologue pools at `content/campaigns/main/systems/van-maanens-star/stations/sova/districts/transit/monologue/detective/` and `.../smuggler/` contain character-specific internal monologue. Opening monologue files exist (`opening.yaml` for both characters). The monologue system in `server/src/simulation/monologue.rs` fires lines based on triggers and prerequisites.
|
||||
|
||||
**What to deliver:** 8-10 monologue lines per character (smuggler + detective) that teach core mechanics diegetically:
|
||||
- Movement and exploration ("These corridors all look the same. Mental note: check the signage.")
|
||||
|
||||
@@ -65,7 +65,7 @@ location.corridor_b7_restricted
|
||||
- **Secrets:** `secret_held` (freeform description), `secret_confidence` (Suspects/KnowsOf/KnowsDetails)
|
||||
- **Investigation:** `tell_observed` (description of observable tell), `contradiction_flagged` (yes/no)
|
||||
|
||||
Provide 3-5 example EntityKnowledge entries for v0.1 NPCs (Kael Davan, Sera Venn, Lera Sessik, Torek Lintar, Voss Krenn) showing how these keys populate. Use D-034 FRIEND profiles as reference.
|
||||
Provide 3-5 example EntityKnowledge entries for v0.1 NPCs (Kael Davan, Sera Venn, Lera Sessik, Torek Lintar, Voss Van Maanen's Star) showing how these keys populate. Use D-034 FRIEND profiles as reference.
|
||||
|
||||
### 3. RelationshipState Transition Patterns
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ Station profile: `docs/design/sova-station-profile.md` — defines 6 districts,
|
||||
|
||||
Key decisions already confirmed:
|
||||
- D-025: Social site / functional cluster as atomic template unit
|
||||
- D-036: Sova Transit District / Krenn System as v0.1 setting
|
||||
- D-036: Sova Transit District / Van Maanen's Star as v0.1 setting
|
||||
- D-050: Velen naming and climate
|
||||
|
||||
Open question: Q-036 (district skeleton as generator output) — relevant but not blocking; the v0.1 district is hand-authored.
|
||||
|
||||
@@ -48,13 +48,13 @@ Use `tooling/db/ticket show <id>` for full details on any ticket.
|
||||
|
||||
**#176 — NPC pool generation**
|
||||
- This is the key production startup ticket. The Gauntlet uses hand-crafted `setup_gauntlet()`. The production path needs an equivalent that loads from `content/` and spawns the Sova NPC pool.
|
||||
- The authored content already exists: 23 NPC YAML files at `content/campaigns/main/systems/krenn/stations/sova/districts/transit/npcs/`. The content loader (`server/src/content/loader.rs`) already loads `DistrictContent`. The spawn module (`server/src/content/spawn.rs`) already has `spawn_district_npcs()` and `resolve_cross_references()`.
|
||||
- The authored content already exists: 23 NPC YAML files at `content/campaigns/main/systems/van-maanens-star/stations/sova/districts/transit/npcs/`. The content loader (`server/src/content/loader.rs`) already loads `DistrictContent`. The spawn module (`server/src/content/spawn.rs`) already has `spawn_district_npcs()` and `resolve_cross_references()`.
|
||||
- The gap: there is no production startup path that calls these. The server boots into Gauntlet (`setup_gauntlet`) or does nothing (without the `gauntlet` feature). Add a production startup system that: (1) loads `content/campaigns/main/campaign.yaml`, (2) resolves the Sova district, (3) calls `spawn_district_npcs()` + `resolve_cross_references()`, (4) applies the 30/50/20 entanglement ratio from D-029 to mark NPCs as flat/mundane/intrigue-entangled via a new `EntanglementTag` component.
|
||||
- Entanglement ratio: seed the assignment via `SimRng` (D-010 determinism). The 17 authored Sova NPCs are pre-assigned by content (YAML field `triangle_membership`). The entanglement ratio applies to any procedurally generated padding NPCs.
|
||||
- Acceptance: integration test (non-gauntlet boot) asserts 17+ NPCs spawn with correct `StableId` assignments and at least one `EntanglementTag::Intrigue` entity.
|
||||
|
||||
**#188 — Triangle instantiation from authored content**
|
||||
- Depends on #176. The 5 triangle YAML files exist at `content/campaigns/main/systems/krenn/stations/sova/districts/transit/triangles/` (hub-power, bar-tensions, informant-question, worried-knowledge, worried-partner).
|
||||
- Depends on #176. The 5 triangle YAML files exist at `content/campaigns/main/systems/van-maanens-star/stations/sova/districts/transit/triangles/` (hub-power, bar-tensions, informant-question, worried-knowledge, worried-partner).
|
||||
- The instantiation engine (`server/src/content/instantiation.rs`) already handles `FullTemplateDef` → `TriangleState`. This ticket wires the *authored Sova triangles* (loaded from YAML) into that engine, rather than template-generated triangles.
|
||||
- Per D-087: 3 active forks (T1, T2, T4 = hub-power, bar-tensions, informant-question) and 2 passive tensions (T3, T5 = worried-knowledge, worried-partner). The `TriangleState` component must reflect this classification.
|
||||
- Per D-089: self-contained forks. No cross-triangle cascade. Each `TriangleState` escalates independently.
|
||||
|
||||
@@ -65,8 +65,8 @@ Do not use any other characters until the server documents them.
|
||||
- Supervisor office (window faces main corridor — LOS design requirement)
|
||||
- Restricted storage (smuggling ops — `R` tiles for access restriction)
|
||||
|
||||
**Output:** Complete `content/campaigns/main/systems/krenn/stations/sova/districts/transit/locations/the-terminal.yaml` with:
|
||||
- `canonical_id: krenn.sova.transit.location.the-terminal`
|
||||
**Output:** Complete `content/campaigns/main/systems/van-maanens-star/stations/sova/districts/transit/locations/the-terminal.yaml` with:
|
||||
- `canonical_id: van-maanens-star.sova.transit.location.the-terminal`
|
||||
- `display_name: "The Terminal"`
|
||||
- `tile_bounds: { x_min: 0, y_min: 0, x_max: 43, y_max: 27, z: 1 }` (z=1 per D-093)
|
||||
- `tiles: [...]` — the 44×28 grid
|
||||
@@ -106,7 +106,7 @@ Three YAML files. All blocked on #577 tile format; can author all three in paral
|
||||
- Gate concourse: 40×8 (public — wide open, 8vt corridor width per D-093)
|
||||
- Observation gallery: z=2, 32×10 (Commission-only — `R` tiles; separate tile_bounds entry with z:2)
|
||||
- D-093 cross-z LOS: gallery rail = transparent low wall. Model this as a separate z=2 tile grid with `R` floor tiles (navigable but restricted access). The LOS cross-z behavior is handled by the server; just provide the tile data.
|
||||
- Add `gate-corridor` to `content/campaigns/main/systems/krenn/stations/sova/districts/transit/district.yaml` locations list.
|
||||
- Add `gate-corridor` to `content/campaigns/main/systems/van-maanens-star/stations/sova/districts/transit/district.yaml` locations list.
|
||||
|
||||
**Cross-z note:** Author two sections in the gate-corridor YAML if the format supports multiple `tile_bounds` (one at z=1, one at z=2). If the format only supports a single z-level per Location, author two separate files: `gate-ground.yaml` and `gate-gallery.yaml`. Confirm with Dudley when the format is published.
|
||||
|
||||
|
||||
@@ -47,8 +47,8 @@ None blocking this ticket. The tag schema is fully specified (D-035). The charac
|
||||
**What to deliver:** 3–5 monologue lines per character (smuggler and detective), placed in the correct pool files.
|
||||
|
||||
**File locations:**
|
||||
- Smuggler: `content/campaigns/main/systems/krenn/stations/sova/districts/transit/monologue/smuggler/the-terminal.yaml`
|
||||
- Detective: `content/campaigns/main/systems/krenn/stations/sova/districts/transit/monologue/detective/the-terminal.yaml`
|
||||
- Smuggler: `content/campaigns/main/systems/van-maanens-star/stations/sova/districts/transit/monologue/smuggler/the-terminal.yaml`
|
||||
- Detective: `content/campaigns/main/systems/van-maanens-star/stations/sova/districts/transit/monologue/detective/the-terminal.yaml`
|
||||
|
||||
(Kael and Torek are Terminal NPCs. Sera is also a Terminal presence. These lines fire when the player observes those NPCs post-activation while at The Terminal or maintenance corridors.)
|
||||
|
||||
|
||||
@@ -87,7 +87,7 @@ Use `tooling/db/ticket show <id>` for full details.
|
||||
|
||||
### #591 — News ticker: server-side
|
||||
|
||||
**What exists:** `content/campaigns/main/systems/krenn/stations/sova/districts/transit/ticker/the-last-shift.yaml` — 30 authored headlines (freight, politics, infrastructure, sports, commission, community categories). The YAML is fully authored (Sprint 12, #306). It is NOT loaded at runtime — the content loader (`server/src/content/loader.rs`) does not parse ticker files. `ObserverSnapshotWire` in `server/src/bridge/types.rs` has no ticker field.
|
||||
**What exists:** `content/campaigns/main/systems/van-maanens-star/stations/sova/districts/transit/ticker/the-last-shift.yaml` — 30 authored headlines (freight, politics, infrastructure, sports, commission, community categories). The YAML is fully authored (Sprint 12, #306). It is NOT loaded at runtime — the content loader (`server/src/content/loader.rs`) does not parse ticker files. `ObserverSnapshotWire` in `server/src/bridge/types.rs` has no ticker field.
|
||||
|
||||
**What to deliver:**
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# 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.
|
||||
**Goal:** Prove the generator can extrapolate from minimal input — a rural Van Maanen's Star area AND an industrial Van Maanen's Star zone from zone type and culture profile alone, no per-location spec. Two zone types, one culture, side-by-side comparison.
|
||||
|
||||
**Branch:** `copy`
|
||||
**Agents:** Miri (worldbuilding lead), Mellanie (voice/dialogue review)
|
||||
@@ -10,7 +10,7 @@
|
||||
| # | Title | Blocked by |
|
||||
|---|-------|------------|
|
||||
| #609 | Zone identity spec | #611 (server defines schema first) |
|
||||
| #610 | Krenn culture profile | #611 (server defines schema first) |
|
||||
| #610 | Van Maanen's Star culture profile | #611 (server defines schema first) |
|
||||
|
||||
Use `tooling/db/ticket show <id>` for full details.
|
||||
|
||||
@@ -28,7 +28,7 @@ Server starts first. Tyre (#611) defines `ZoneSpec`, `CultureProfile`, and `NpcB
|
||||
|
||||
Wait for #611 to deliver its example RON before writing the real files. Tyre also ships a **RON validator CLI** (`tooling/validate-content <file.ron>`) that deserializes into the actual Rust structs and prints errors. Use it to lint your files before submitting.
|
||||
|
||||
Coordinate with Tyre at sprint start to agree on file locations (`content/global/zone-identity-spec.ron` and `content/global/culture-krenn.ron` are the expected paths, but Tyre's struct design is authoritative).
|
||||
Coordinate with Tyre at sprint start to agree on file locations (`content/global/zone-identity-spec.ron` and `content/global/culture-van-maanens-star.ron` are the expected paths, but Tyre's struct design is authoritative).
|
||||
|
||||
**#609 — Zone identity spec**
|
||||
|
||||
@@ -38,13 +38,13 @@ Coordinate with Tyre at sprint start to agree on file locations (`content/global
|
||||
- Content scope: what varies between zone types (density, pace, social site mix, NPC role distribution). Not prose worldbuilding — structured parameters that the Rust generator can read.
|
||||
- Do not invent the schema. Read #611's example RON first.
|
||||
|
||||
**#610 — Krenn culture profile**
|
||||
**#610 — Van Maanen's Star culture profile**
|
||||
|
||||
- Output: RON file the generator deserializes at runtime. Schema defined by Tyre's `CultureProfile` struct from #611.
|
||||
- Must provide enough cultural signal that generated NPCs feel Krenn, not generic-space-village.
|
||||
- Must provide enough cultural signal that generated NPCs feel Van Maanen's Star, not generic-space-village.
|
||||
- Sprint scope: **name lists** (not phoneme generation rules — Tyre's generator picks from lists), speech markers, economic values, social norms.
|
||||
- Phoneme-based name generation is explicitly out of scope for this sprint. A curated list of Krenn-sounding names is sufficient.
|
||||
- Existing Krenn atmosphere and naming examples in `decisions/content.md` D-036 (amended post-workshop) are a starting point. Go deeper on concrete values (specific speech markers, actual name examples) not broader on atmospheric description.
|
||||
- Phoneme-based name generation is explicitly out of scope for this sprint. A curated list of Van Maanen's Star-sounding names is sufficient.
|
||||
- Existing Van Maanen's Star atmosphere and naming examples in `decisions/content.md` D-036 (amended post-workshop) are a starting point. Go deeper on concrete values (specific speech markers, actual name examples) not broader on atmospheric description.
|
||||
- Do not invent the schema. Read #611's example RON first.
|
||||
|
||||
## Dependency Chain
|
||||
@@ -62,5 +62,5 @@ Server defines the shape. Copy fills it. Both #609 and #610 can be written in pa
|
||||
When ready to submit, create a PR with `tea` CLI. All flags are required to avoid TTY prompts (see CLAUDE.md "Gitea access" section):
|
||||
|
||||
```bash
|
||||
tea pr create --repo jpmschweitzer/settled-reach --login schweitz --title "feat(copy): zone identity spec and Krenn culture profile" --description "body" --base main --head copy
|
||||
tea pr create --repo jpmschweitzer/settled-reach --login schweitz --title "feat(copy): zone identity spec and Van Maanen's Star culture profile" --description "body" --base main --head copy
|
||||
```
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
**Confidence: 15%.** This sprint is exploratory — we learn whether the approach works, not whether we can ship it. Declare what we learned, not victory.
|
||||
|
||||
**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.
|
||||
**Goal:** Prove the generator can extrapolate from minimal input — a rural Van Maanen's Star area AND an industrial Van Maanen's Star zone from zone type and culture profile alone, no per-location spec. Two zone types, one culture, side-by-side comparison.
|
||||
|
||||
## Pre-Sprint
|
||||
|
||||
@@ -33,7 +33,7 @@ cargo run --bin generator-spike -- --zone rural --seed 43
|
||||
|
||||
Cross-type (rural vs industrial, seed 42):
|
||||
- Different output shape — social site mix, NPC role distribution, density all differ
|
||||
- Both feel Krenn — shared naming conventions and cultural markers
|
||||
- Both feel Van Maanen's Star — shared naming conventions and cultural markers
|
||||
- Zone taxonomy does visible work (outputs distinguishable by zone type alone)
|
||||
|
||||
Intra-type (rural seed 42 vs rural seed 43):
|
||||
@@ -42,12 +42,12 @@ Intra-type (rural seed 42 vs rural seed 43):
|
||||
- Tests coherence within a type and variance across seeds
|
||||
|
||||
Culture (both zone types):
|
||||
- Culture profile does visible work — output feels Krenn, not generic space-village
|
||||
- Culture profile does visible work — output feels Van Maanen's Star, not generic space-village
|
||||
- NPC relationships are **readable** from text — not inferred, read
|
||||
|
||||
**Fail condition:**
|
||||
- Both outputs look the same with different labels (zone taxonomy not doing work)
|
||||
- Neither feels Krenn (culture profile not doing work)
|
||||
- Neither feels Van Maanen's Star (culture profile not doing work)
|
||||
- NPC traits unreadable from text (D-129 legibility gate not met)
|
||||
|
||||
This sprint **discovers** the right spec — it does not implement a known one. If the output is light and not fully deep, that is expected. The proof is in the pudding: run it, read it, judge it.
|
||||
@@ -58,7 +58,7 @@ This sprint **discovers** the right spec — it does not implement a known one.
|
||||
|------|---|-------|
|
||||
| server | #611 | NpcBlueprint struct design |
|
||||
| copy | #609 | Zone identity spec |
|
||||
| copy | #610 | Krenn culture profile |
|
||||
| copy | #610 | Van Maanen's Star culture profile |
|
||||
| server | #612 | Template assembly generator (includes NPC pipeline + stdout output) |
|
||||
|
||||
## Dependency Chain
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# 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.
|
||||
**Goal:** Prove the generator can extrapolate from minimal input — a rural Van Maanen's Star area AND an industrial Van Maanen's Star zone from zone type and culture profile alone, no per-location spec. Two zone types, one culture, side-by-side comparison.
|
||||
|
||||
**Branch:** `server`
|
||||
**Agents:** Dudley (simulation dev), Tyre (architect)
|
||||
@@ -34,7 +34,7 @@ Use `tooling/db/ticket show <id>` for full details.
|
||||
This sprint discovers the right spec — it does not implement a known one. Three phases:
|
||||
|
||||
- **Phase 0 (#611):** Define the Rust structs (`ZoneSpec`, `CultureProfile`, `NpcBlueprint`) and write example RON files. Build the RON validator CLI. Share with copy team immediately — this unblocks #609 and #610.
|
||||
- **Phase 1 (#612, early):** Build the generator binary with hardcoded test data. Do not wait for copy to finish their RON files. Hardcode two zone profiles (rural, industrial stub) and a Krenn culture stub in Rust. Get the generation pipeline and stdout output working end-to-end.
|
||||
- **Phase 1 (#612, early):** Build the generator binary with hardcoded test data. Do not wait for copy to finish their RON files. Hardcode two zone profiles (rural, industrial stub) and a Van Maanen's Star culture stub in Rust. Get the generation pipeline and stdout output working end-to-end.
|
||||
- **Phase 2 (#612, late):** Swap hardcoded stubs for real RON loading from disk. Wire in copy's actual #609 and #610 files. Run the two-zone proof.
|
||||
|
||||
This phasing means the copy team's blocking relationship is on the final integration, not the generator build. Server can move through Phase 0 and Phase 1 in parallel with copy writing #609/#610.
|
||||
@@ -44,12 +44,12 @@ This phasing means the copy team's blocking relationship is on the final integra
|
||||
- Starts immediately. No blockers.
|
||||
- Define three structs in `server/src/npc/blueprint.rs` (new file):
|
||||
- `ZoneSpec` — deserializes from zone-identity-spec.ron
|
||||
- `CultureProfile` — deserializes from culture-krenn.ron
|
||||
- `CultureProfile` — deserializes from culture-van-maanens-star.ron
|
||||
- `NpcBlueprint` — generator output for a single NPC
|
||||
- All three derive `Serialize`, `Deserialize` (serde + `ron`). **Use RON format, not YAML/JSON.** RON is Rust-native, struct-aware, supports enums and comments. The Rust structs ARE the schema — no separate schema file to maintain.
|
||||
- `NpcBlueprint` fields: name (String), role (occupation), traits (Vec of trait enum), observable_behaviors (Vec<String>), cultural_markers (speech register, filler words from culture profile), relationships (Vec of (npc_id, relationship_type, valence)).
|
||||
- Use a spike-specific `SpikeOutput` struct for the binary's top-level output — do NOT couple to `DistrictSkeleton` for the proof. Keep the spike isolated.
|
||||
- Key deliverable: write `content/global/zone-identity-spec.example.ron` and `content/global/culture-krenn.example.ron` showing the schema copy must fill. Share these with Miri before copy starts writing real content.
|
||||
- Key deliverable: write `content/global/zone-identity-spec.example.ron` and `content/global/culture-van-maanens-star.example.ron` showing the schema copy must fill. Share these with Miri before copy starts writing real content.
|
||||
- Add a note in the file header pointing to the tickets (#609, #610) that fill these schemas with real content.
|
||||
- **Build a RON validator CLI** (`tooling/validate-content <file.ron>`) that deserializes into the actual Rust structs and prints errors. This is the copy team's lint tool — they run it to check their files without needing to compile the server. ~20 lines of Rust, ship it as part of #611.
|
||||
|
||||
|
||||
@@ -17,37 +17,37 @@
|
||||
|---|-------|------------|
|
||||
| #647 | Docs: Amend D-123, supersede D-124, file workshop D-records | — |
|
||||
| #645 | Content: Base text elevation pass | — |
|
||||
| #656 | Remove handwritten Krenn dialogue and monologue content | — |
|
||||
| #656 | Remove handwritten Van Maanen's Star dialogue and monologue content | — |
|
||||
| #657 | Remove detective mission system | — |
|
||||
| #653 | Voice pipeline: culture persona authoring for non-Krenn cultures | — |
|
||||
| #653 | Voice pipeline: culture persona authoring for non-Van Maanen's Star cultures | — |
|
||||
|
||||
Use `tooling/db/ticket show <id>` for full details.
|
||||
|
||||
## Key Decisions
|
||||
|
||||
- `decisions/content.md` — D-138 (LLM re-voicing pipeline: culture persona format, negative injectors, double-prompt technique), D-121 (voice is culture-driven, job as modifier), D-123 (generative AI for NPC content — amended by D-138), D-128 (Krenn System = Krenn culture), D-122 (all NPCs generated — no named hand-authored characters), D-117 (zero investigation content in v0.2)
|
||||
- `decisions/content.md` — D-138 (LLM re-voicing pipeline: culture persona format, negative injectors, double-prompt technique), D-121 (voice is culture-driven, job as modifier), D-123 (generative AI for NPC content — amended by D-138), D-128 (Van Maanen's Star = Van Maanen's Star culture), D-122 (all NPCs generated — no named hand-authored characters), D-117 (zero investigation content in v0.2)
|
||||
- `decisions/scope.md` — D-114 (generator-first proof-of-life), D-117 (tycoon bookmark, no detective/smuggler)
|
||||
|
||||
## Notes
|
||||
|
||||
- **#647 Amend D-123, supersede D-124, file workshop D-records:** Documentation debt from the LLM Voice Pipeline Workshop (2026-03-07). D-123 needs amending to cover both baked (build-time, human-reviewed) and pre-voiced (runtime background) modes — Paula's distinction must be captured. D-124 is already superseded by D-138 in the decisions file, but needs the formal amendment record. Also file any remaining D-records from the workshop that haven't been committed to `decisions/content.md` yet. Check `docs/workshops/llm-voice-pipeline/` for outputs not yet formalized. This is a documentation ticket — no code.
|
||||
|
||||
- **#645 Base text elevation pass:** The voice pipeline uses base text as both the LLM seed and the fallback when the pipeline is unavailable or disabled. Base text that is flat or mechanical produces bad seeds AND bad fallbacks. Review NPC observable behaviors in the zone RON content (~50 lines per role). Criteria: vivid enough to seed a good voicing, specific enough to be informative as-is, no corporate-speak ("initiating task completion protocol" → "gets back to sorting the manifests"). Focus on roles present in the generated Krenn rural zone from Sprint 25. Coordinate with server team: do not change `Factual`-type lines (numbers, denials) — those bypass the LLM and must remain precise.
|
||||
- **#645 Base text elevation pass:** The voice pipeline uses base text as both the LLM seed and the fallback when the pipeline is unavailable or disabled. Base text that is flat or mechanical produces bad seeds AND bad fallbacks. Review NPC observable behaviors in the zone RON content (~50 lines per role). Criteria: vivid enough to seed a good voicing, specific enough to be informative as-is, no corporate-speak ("initiating task completion protocol" → "gets back to sorting the manifests"). Focus on roles present in the generated Van Maanen's Star rural zone from Sprint 25. Coordinate with server team: do not change `Factual`-type lines (numbers, denials) — those bypass the LLM and must remain precise.
|
||||
|
||||
- **#634 Decomposed behavior content:** This is the copy-side counterpart to #633 (server composable behavior engine). Do not start until the server team has agreed on the behavior primitive format — the content must conform to the data structure. Once the format is known: (1) role action templates — generic stage directions per role, no culture specificity (e.g., `dock_worker.routines.yaml`); (2) culture modifiers — Krenn-specific behavioral inflections per action category; (3) context tags — situational selectors (quiet, busy, under-observation). Deliverable is authored content files, not a design spec. Check `decisions/content.md` D-138 for the Q-057 resolution framing.
|
||||
- **#634 Decomposed behavior content:** This is the copy-side counterpart to #633 (server composable behavior engine). Do not start until the server team has agreed on the behavior primitive format — the content must conform to the data structure. Once the format is known: (1) role action templates — generic stage directions per role, no culture specificity (e.g., `dock_worker.routines.yaml`); (2) culture modifiers — Van Maanen's Star-specific behavioral inflections per action category; (3) context tags — situational selectors (quiet, busy, under-observation). Deliverable is authored content files, not a design spec. Check `decisions/content.md` D-138 for the Q-057 resolution framing.
|
||||
|
||||
- **#656 Remove handwritten Krenn dialogue and monologue content:** Delete v0.1 hand-authored content from `content/campaigns/main/systems/krenn/`. Full scope: all NPC YAML profiles in `stations/sova/districts/transit/` (shift-supervisor, courier, new-hire, scheduler, kael-davan, maintenance-tech, dock-worker, etc.), all files under `dialogue/`, all files under `monologue/detective/` and `monologue/smuggler/`, `insert/detective.yaml` and `insert/smuggler.yaml`, `items/smuggler-inventory.yaml`. Also remove compiled versions in `content-ron/campaigns/` if they exist. **Do not delete:** `content/global/culture-krenn.ron`, `culture-krenn.example.ron` — these are live generator inputs. Also preserve `content/campaigns/main/systems/krenn/stations/sova/districts/transit/pools.yaml` if it contains zone metadata rather than authored dialogue (check first). After deletion, verify `cargo check` and content validator pass.
|
||||
- **#656 Remove handwritten Van Maanen's Star dialogue and monologue content:** Delete v0.1 hand-authored content from `content/campaigns/main/systems/van-maanens-star/`. Full scope: all NPC YAML profiles in `stations/sova/districts/transit/` (shift-supervisor, courier, new-hire, scheduler, kael-davan, maintenance-tech, dock-worker, etc.), all files under `dialogue/`, all files under `monologue/detective/` and `monologue/smuggler/`, `insert/detective.yaml` and `insert/smuggler.yaml`, `items/smuggler-inventory.yaml`. Also remove compiled versions in `content-ron/campaigns/` if they exist. **Do not delete:** `content/global/culture-van-maanens-star.ron`, `culture-van-maanens-star.example.ron` — these are live generator inputs. Also preserve `content/campaigns/main/systems/van-maanens-star/stations/sova/districts/transit/pools.yaml` if it contains zone metadata rather than authored dialogue (check first). After deletion, verify `cargo check` and content validator pass.
|
||||
|
||||
- **#657 Remove detective mission system:** Delete: `content/global/knowledge/investigation.yaml`, `content/global/factions/lattice-commission.yaml`, `docs/design/character-build-detective.md`, `docs/design/detective-chain-of-command.md`, `docs/design/archetype-evidence-presentation.md`, `docs/design/divergent-starting-knowledge.md`, detective sections of `docs/design/insert-hud-wireframe-v01.md` (edit, don't delete the file). Also remove workshop outputs: `docs/workshops/v01-content-scoping/` and `docs/workshops/content-gap-analysis_v0_1/` directories. Check `content/campaigns/main/systems/krenn/stations/sova/districts/transit/` for `pc-detective.yaml` and `pc-smuggler.yaml` NPC files — delete both. Review `client/tests/test_insert_off_behavior.gd` for detective references — flag to client team if it needs updating, do not edit client files directly. Note: `content/global/factions/` will still contain valid non-detective factions (concord-assembly, guardians-of-autonomy, syndics, the-ring, the-unbound, veil-institute) — only remove lattice-commission.yaml.
|
||||
- **#657 Remove detective mission system:** Delete: `content/global/knowledge/investigation.yaml`, `content/global/factions/lattice-commission.yaml`, `docs/design/character-build-detective.md`, `docs/design/detective-chain-of-command.md`, `docs/design/archetype-evidence-presentation.md`, `docs/design/divergent-starting-knowledge.md`, detective sections of `docs/design/insert-hud-wireframe-v01.md` (edit, don't delete the file). Also remove workshop outputs: `docs/workshops/v01-content-scoping/` and `docs/workshops/content-gap-analysis_v0_1/` directories. Check `content/campaigns/main/systems/van-maanens-star/stations/sova/districts/transit/` for `pc-detective.yaml` and `pc-smuggler.yaml` NPC files — delete both. Review `client/tests/test_insert_off_behavior.gd` for detective references — flag to client team if it needs updating, do not edit client files directly. Note: `content/global/factions/` will still contain valid non-detective factions (concord-assembly, guardians-of-autonomy, syndics, the-ring, the-unbound, veil-institute) — only remove lattice-commission.yaml.
|
||||
|
||||
- **#653 Culture persona authoring for non-Krenn cultures:** The voice pipeline is designed for multi-culture expansion. Each culture needs: `voice_persona` (prose description of the cultural voice register), `voice_examples` (3-5 example lines showing the voice in action), `occasional_injections` (recurring phrases or idioms), and explicit NOT-lists (what this culture never sounds like — the negative injectors that Spike 2 showed are critical). Krenn culture is already authored and tested. This ticket authors at least 2 additional cultures from the Settled Reach lore. Coordinate with Miri (worldbuilding) for canonical culture details — check `docs/briefings/miri.md` for her existing knowledge base. Output format must match the Krenn culture RON structure in `content/global/culture-krenn.ron`.
|
||||
- **#653 Culture persona authoring for non-Van Maanen's Star cultures:** The voice pipeline is designed for multi-culture expansion. Each culture needs: `voice_persona` (prose description of the cultural voice register), `voice_examples` (3-5 example lines showing the voice in action), `occasional_injections` (recurring phrases or idioms), and explicit NOT-lists (what this culture never sounds like — the negative injectors that Spike 2 showed are critical). Van Maanen's Star culture is already authored and tested. This ticket authors at least 2 additional cultures from the Settled Reach lore. Coordinate with Miri (worldbuilding) for canonical culture details — check `docs/briefings/miri.md` for her existing knowledge base. Output format must match the Van Maanen's Star culture RON structure in `content/global/culture-van-maanens-star.ron`.
|
||||
|
||||
## Dependency Chain
|
||||
|
||||
```
|
||||
#647 (file D-records) — standalone, start immediately
|
||||
#645 (base text elevation) — standalone, parallel
|
||||
#656 (remove Krenn hand-authored content) — standalone, parallel
|
||||
#656 (remove Van Maanen's Star hand-authored content) — standalone, parallel
|
||||
#657 (remove detective system) — standalone, parallel
|
||||
#653 (culture persona authoring) — standalone, parallel
|
||||
#634 (decomposed behavior content) — blocked on server #633 format agreement
|
||||
|
||||
@@ -18,11 +18,11 @@ Server team (#633) should document the behavior primitive data structure (as a R
|
||||
|
||||
The sprint is done when all of the following are observable:
|
||||
|
||||
1. **Voice pipeline live end-to-end:** Start the game with a generated Krenn NPC visible. Observable behaviors and dialogue lines for that NPC are voiced (culture-inflected, not raw base text). A `Factual`-type line (containing a number or denial) shows as base text, not LLM output.
|
||||
1. **Voice pipeline live end-to-end:** Start the game with a generated Van Maanen's Star NPC visible. Observable behaviors and dialogue lines for that NPC are voiced (culture-inflected, not raw base text). A `Factual`-type line (containing a number or denial) shows as base text, not LLM output.
|
||||
|
||||
2. **Client toggle functional:** Settings panel contains an AI-Enhanced Dialogue toggle. Disabling it causes the server to serve base text. Hardware detection runs at startup; if the system cannot run the model, the toggle is greyed out with an explanation.
|
||||
|
||||
3. **v0.1 content deleted:** `server/src/content/` does not exist. `content/campaigns/main/systems/krenn/stations/sova/districts/transit/dialogue/` and `monologue/` are gone. `content/global/knowledge/investigation.yaml` and `content/global/factions/lattice-commission.yaml` are gone. `cargo check` passes with no references to deleted modules.
|
||||
3. **v0.1 content deleted:** `server/src/content/` does not exist. `content/campaigns/main/systems/van-maanens-star/stations/sova/districts/transit/dialogue/` and `monologue/` are gone. `content/global/knowledge/investigation.yaml` and `content/global/factions/lattice-commission.yaml` are gone. `cargo check` passes with no references to deleted modules.
|
||||
|
||||
4. **D-records filed:** `decisions/content.md` reflects the amended D-123 and the LLM voice pipeline workshop outputs. D-138 Spike 2 findings are formally in the record.
|
||||
|
||||
@@ -49,7 +49,7 @@ Server #650 (ContentType::Factual)
|
||||
Server #633 (composable behavior engine) — format agreement
|
||||
→ Copy #634 (decomposed behavior content)
|
||||
|
||||
Copy #656 (remove Krenn hand-authored) — may require client test update
|
||||
Copy #656 (remove Van Maanen's Star hand-authored) — may require client test update
|
||||
→ flag to Client if test_insert_off_behavior.gd needs edits
|
||||
|
||||
Client #646 (toggle) — depends on server #652 being wired
|
||||
@@ -67,10 +67,10 @@ Client #646 (toggle) — depends on server #652 being wired
|
||||
| server | #651 | Friendly/RoutineDeviation tells — iterate |
|
||||
| copy | #647 | Docs: Amend D-123, supersede D-124, file workshop D-records |
|
||||
| copy | #645 | Content: Base text elevation pass |
|
||||
| copy | #656 | Remove handwritten Krenn dialogue and monologue |
|
||||
| copy | #656 | Remove handwritten Van Maanen's Star dialogue and monologue |
|
||||
| copy | #657 | Remove detective mission system |
|
||||
| copy | #634 | Author decomposed behavior content (carry-over) |
|
||||
| copy | #653 | Culture persona authoring for non-Krenn cultures |
|
||||
| copy | #653 | Culture persona authoring for non-Van Maanen's Star cultures |
|
||||
| client | #646 | UX: AI-Enhanced Dialogue toggle + hardware detection |
|
||||
| planning | #658 | Update agent profiles and briefings for v0.2 |
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ Use `tooling/db/ticket show <id>` for full details.
|
||||
|
||||
## Notes
|
||||
|
||||
- **#658 Update agent profiles and briefings for v0.2:** Audit and update `.claude/agents/` (20 files) and `docs/briefings/` (18 files). Many still reference v0.1 detective/smuggler gameplay, hand-authored content pipeline, and pre-workshop assumptions. Specific removals: all references to Kael Davan, Sera Venn, smuggler/detective archetypes as playable characters, the v0.1 triangle configuration, the complicity framing (superseded by consequence per D-132). Specific additions: generator-first approach (D-114), all NPCs generated (D-122), voice pipeline (D-138), tycoon bookmark (D-117), Krenn culture as implicit starting context (D-128). Work through each agent briefing systematically — do not bulk-replace. Each agent has a different scope and different stale assumptions. After updating, cross-check: does any briefing still imply a playable detective or smuggler? Does any profile still describe the hand-authored content pipeline as the primary content creation method? Note: #648 (superseded by this ticket) was cancelled — its scope is included here.
|
||||
- **#658 Update agent profiles and briefings for v0.2:** Audit and update `.claude/agents/` (20 files) and `docs/briefings/` (18 files). Many still reference v0.1 detective/smuggler gameplay, hand-authored content pipeline, and pre-workshop assumptions. Specific removals: all references to Kael Davan, Sera Venn, smuggler/detective archetypes as playable characters, the v0.1 triangle configuration, the complicity framing (superseded by consequence per D-132). Specific additions: generator-first approach (D-114), all NPCs generated (D-122), voice pipeline (D-138), tycoon bookmark (D-117), Van Maanen's Star culture as implicit starting context (D-128). Work through each agent briefing systematically — do not bulk-replace. Each agent has a different scope and different stale assumptions. After updating, cross-check: does any briefing still imply a playable detective or smuggler? Does any profile still describe the hand-authored content pipeline as the primary content creation method? Note: #648 (superseded by this ticket) was cancelled — its scope is included here.
|
||||
|
||||
## Dependency Chain
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ Use `db/connectors/ticket show <id>` for full details.
|
||||
|
||||
Document the converged content directory structure from workshop outputs. This is a **blocker for all server content implementation work**. Required elements:
|
||||
- Canonical layout: `_meta/`, `_schema/` (infrastructure, underscore prefix), `global/` (factions, technology, contraband, knowledge, enums, regions), `districts/sova-transit/` (district.yaml, npcs/, locations/, templates/, triangles/, lines/)
|
||||
- `canonical_id` format: `{system}.{station}.{district}.{type}.{slug}` (e.g., `krenn.sova.transit.npc.kael-davan`)
|
||||
- `canonical_id` format: `{system}.{station}.{district}.{type}.{slug}` (e.g., `van-maanens-star.sova.transit.npc.kael-davan`)
|
||||
- Mod-compatible directory conventions (no overlay implementation needed for v0.1, just structure)
|
||||
- District as atomic pack unit
|
||||
|
||||
@@ -76,7 +76,7 @@ Unified spec for treating player characters as NPCs when not controlled. Require
|
||||
**#382 (Smuggler voice + moral arc):**
|
||||
|
||||
Two deliverables:
|
||||
1. **Voice card:** Paired examples with detective showing dual-lens register differences. Thinks in people vs data, first names vs surnames, fragments vs complete sentences, Krenn substrate vocabulary.
|
||||
1. **Voice card:** Paired examples with detective showing dual-lens register differences. Thinks in people vs data, first names vs surnames, fragments vs complete sentences, Van Maanen's Star substrate vocabulary.
|
||||
2. **Moral arc:** 4 phases (Comfort, Doubt, Reckoning, Compromise), smuggler-specific FactIds, monologue triggers.
|
||||
|
||||
Subsumes #310 (Character voice speech patterns).
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
| #398 | Wiki → YAML content conversion (Sova NPCs) | high | — |
|
||||
| #399 | Monologue content pool — minimum viable (~200 lines) | high | — |
|
||||
| #301 | Wiki taxonomy and structure — full future-ready schema | medium | — |
|
||||
| #319 | Krenn System wiki entry — first star system | medium | #301 |
|
||||
| #319 | Van Maanen's Star wiki entry — first star system | medium | #301 |
|
||||
| #378 | Create environmental text examples file | medium | #319 |
|
||||
| #395 | News ticker headline pool | medium | — |
|
||||
|
||||
@@ -56,10 +56,10 @@ When you play the smuggler, the detective exists as an NPC in the world (and vic
|
||||
|
||||
**Wiki → YAML conversion (#398):**
|
||||
|
||||
The 17 Sova NPCs currently exist as wiki markdown profiles. This ticket converts them to engine-readable YAML in `content/campaigns/main/systems/krenn/stations/sova/districts/transit/npcs/`.
|
||||
The 17 Sova NPCs currently exist as wiki markdown profiles. This ticket converts them to engine-readable YAML in `content/campaigns/main/systems/van-maanens-star/stations/sova/districts/transit/npcs/`.
|
||||
|
||||
- **What exists:**
|
||||
- Content directory structure: `content/campaigns/main/systems/krenn/stations/sova/districts/transit/` (created in Sprint 3)
|
||||
- Content directory structure: `content/campaigns/main/systems/van-maanens-star/stations/sova/districts/transit/` (created in Sprint 3)
|
||||
- YAML schema: `content/_schema/npc.schema.yaml` (Sprint 3)
|
||||
- Wiki profiles: `wiki/npcs/*.md` (17 NPCs with 10-axis breakdowns, relationship webs, routine sketches)
|
||||
- Validation tooling: `make validate-content` (Sprint 3, #392)
|
||||
@@ -72,7 +72,7 @@ The 17 Sova NPCs currently exist as wiki markdown profiles. This ticket converts
|
||||
Minimum viable monologue content: ~100 lines per character (smuggler + detective), ~200 total.
|
||||
|
||||
- **What exists:**
|
||||
- Directory structure: `content/campaigns/main/systems/krenn/stations/sova/districts/transit/monologue/detective/` and `.../smuggler/` (Sprint 3)
|
||||
- Directory structure: `content/campaigns/main/systems/van-maanens-star/stations/sova/districts/transit/monologue/detective/` and `.../smuggler/` (Sprint 3)
|
||||
- Schema: `content/_schema/monologue.schema.yaml` (Sprint 3, includes all D-035 tags)
|
||||
- Authoring guide: #261 (Dual Lens Authoring Guide, done in Sprint 3)
|
||||
- Voice cards: smuggler voice card (#382, done)
|
||||
@@ -83,9 +83,9 @@ Minimum viable monologue content: ~100 lines per character (smuggler + detective
|
||||
|
||||
**Environmental text examples (#378):**
|
||||
|
||||
Create `wiki/authoring/environmental-text-examples.md` with 4 text types: bar menu, safety notice, news ticker cycle, corridor graffiti. Krenn System-voiced (working-class pragmatic, freight-logistics culture) with cultural notes + monologue pairings (smuggler + detective perspectives).
|
||||
Create `wiki/authoring/environmental-text-examples.md` with 4 text types: bar menu, safety notice, news ticker cycle, corridor graffiti. Van Maanen's Star-voiced (working-class pragmatic, freight-logistics culture) with cultural notes + monologue pairings (smuggler + detective perspectives).
|
||||
|
||||
- **Blocked by:** #319 (Krenn System wiki entry, now in Sprint 4). Complete #301 → #319 first.
|
||||
- **Blocked by:** #319 (Van Maanen's Star wiki entry, now in Sprint 4). Complete #301 → #319 first.
|
||||
- **Purpose:** Reference examples for future content authors. Not consumed by game engine — authoring documentation.
|
||||
|
||||
**News ticker headlines (#395):**
|
||||
@@ -93,7 +93,7 @@ Create `wiki/authoring/environmental-text-examples.md` with 4 text types: bar me
|
||||
~20 dual-lens headlines for the Meridian news feed at The Last Shift bar. Mix: freight/commodity data, Assembly politics, local infrastructure, sports, Commission advisories.
|
||||
|
||||
- **What exists:** The Last Shift location is defined. News ticker as environmental element is sketched in location notes.
|
||||
- **What to deliver:** YAML file at `content/campaigns/main/systems/krenn/stations/sova/districts/transit/locations/the-last-shift-ticker.yaml` with headline pool. Each headline works as dual-lens monologue trigger (detective sees political context, smuggler sees market/operational intel).
|
||||
- **What to deliver:** YAML file at `content/campaigns/main/systems/van-maanens-star/stations/sova/districts/transit/locations/the-last-shift-ticker.yaml` with headline pool. Each headline works as dual-lens monologue trigger (detective sees political context, smuggler sees market/operational intel).
|
||||
- **Integration:** v0.1 may render this as static background text. v0.2 ticker system will cycle headlines. Content is authored dual-lens from day one so the system upgrade is data-driven, not content rewrite.
|
||||
|
||||
## Dependency Chain
|
||||
@@ -105,7 +105,7 @@ Create `wiki/authoring/environmental-text-examples.md` with 4 text types: bar me
|
||||
#399 (Monologue pool) → standalone (first real content load)
|
||||
#395 (News ticker) → standalone
|
||||
#301 (Wiki taxonomy) → standalone
|
||||
#319 (Krenn System entry) → #301
|
||||
#319 (Van Maanen's Star entry) → #301
|
||||
#378 (Environmental examples) → #319
|
||||
```
|
||||
|
||||
|
||||
@@ -62,17 +62,17 @@ All five use existing schema files from `content/_schema/` and validate via `mak
|
||||
- **Purpose:** Knowledge graph attribute vocabulary
|
||||
|
||||
**#389 (Pools):**
|
||||
- **File:** `content/global/pools.yaml` or `content/campaigns/main/systems/krenn/stations/sova/pools.yaml` (decide per workshop design doc #384)
|
||||
- **File:** `content/global/pools.yaml` or `content/campaigns/main/systems/van-maanens-star/stations/sova/pools.yaml` (decide per workshop design doc #384)
|
||||
- **Content:** v0.1 single-candidate pools: friend_smuggler (kael-davan), friend_detective (sera-venn), bar_regulars, compromised_inspector, primary_contraband
|
||||
- **Purpose:** Seed-time selection system. Architecture supports N candidates; v0.1 has 1 each for deterministic testing. v0.2 expands to real pools.
|
||||
|
||||
**#390 (Templates):**
|
||||
- **Files:** `content/campaigns/main/systems/krenn/stations/sova/districts/transit/templates/logistics-hub.yaml`, `bar.yaml`, `smuggling-ring.yaml`
|
||||
- **Files:** `content/campaigns/main/systems/van-maanens-star/stations/sova/districts/transit/templates/logistics-hub.yaml`, `bar.yaml`, `smuggling-ring.yaml`
|
||||
- **Content:** 3 social site templates. Each declares named role slots with count ranges, required flags, pool references, triangle constraints.
|
||||
- **Purpose:** Template instantiation system (D-025 social sites). NPCs fill roles.
|
||||
|
||||
**#391 (Triangles):**
|
||||
- **Files:** `content/campaigns/main/systems/krenn/stations/sova/districts/transit/triangles/hub-power.yaml`, `worried-knowledge.yaml`, `bar-tensions.yaml`, `worried-partner.yaml`, `informant-question.yaml`
|
||||
- **Files:** `content/campaigns/main/systems/van-maanens-star/stations/sova/districts/transit/triangles/hub-power.yaml`, `worried-knowledge.yaml`, `bar-tensions.yaml`, `worried-partner.yaml`, `informant-question.yaml`
|
||||
- **Content:** 5 v0.1 triangles per workshop synthesis. T1 (hub-power, active fork), T2 (worried-knowledge, active fork), T3 (bar-tensions, passive), T4 (worried-partner, active fork), T5 (informant-question, passive).
|
||||
- **Purpose:** Atomic units of social intrigue (D-024). Self-contained fork points for storyteller activation.
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ This sprint's critical path runs through voice patterns:
|
||||
**What exists:**
|
||||
- Tier templates (Paula's Round 2 work)
|
||||
- Authoring rules from Mellanie conventions
|
||||
- Regional culture brief (Miri's Sova/Krenn content)
|
||||
- Regional culture brief (Miri's Sova/Van Maanen's Star content)
|
||||
- Content pipeline structure (#384, done)
|
||||
- Monologue guide (`docs/workshops/content-scoping-v01/monologue-authoring-guide.md`)
|
||||
|
||||
@@ -87,7 +87,7 @@ This sprint's critical path runs through voice patterns:
|
||||
- THE FRIEND pattern spec (D-034)
|
||||
- Kael character concept: dock worker, ring member, smuggler's closest colleague
|
||||
- Contradiction: meeting unknown person in restricted corridor (trying to exit ring to protect partner Naia)
|
||||
- Content directory structure at `content/campaigns/main/systems/krenn/sova/sova-transit/`
|
||||
- Content directory structure at `content/campaigns/main/systems/van-maanens-star/sova/sova-transit/`
|
||||
- YAML schema files in `content/_schema/`
|
||||
|
||||
**What to deliver:**
|
||||
@@ -99,9 +99,9 @@ This sprint's critical path runs through voice patterns:
|
||||
- Dual-lens notes for detective perspective (how detective sees Kael differently)
|
||||
|
||||
**File locations:**
|
||||
- Profile: `content/campaigns/main/systems/krenn/sova/sova-transit/npcs/kael-davan.yaml`
|
||||
- Dialogue: `content/campaigns/main/systems/krenn/sova/sova-transit/dialogue/kael-davan-*.yaml` (split by content type)
|
||||
- Monologue: `content/campaigns/main/systems/krenn/sova/sova-transit/monologue/smuggler/kael-*.yaml`
|
||||
- Profile: `content/campaigns/main/systems/van-maanens-star/sova/sova-transit/npcs/kael-davan.yaml`
|
||||
- Dialogue: `content/campaigns/main/systems/van-maanens-star/sova/sova-transit/dialogue/kael-davan-*.yaml` (split by content type)
|
||||
- Monologue: `content/campaigns/main/systems/van-maanens-star/sova/sova-transit/monologue/smuggler/kael-*.yaml`
|
||||
|
||||
**Integration:** D-039 wow moment #3 (THE FRIEND's contradiction) depends on this content. Success criterion D-027 #3 (player names NPC they felt conflicted about) is tested by Kael.
|
||||
|
||||
@@ -116,7 +116,7 @@ This sprint's critical path runs through voice patterns:
|
||||
- THE FRIEND pattern spec (D-034)
|
||||
- Sera character concept: Commission field tech, bar regular, detective's social anchor
|
||||
- Contradiction: avoids Torek Lintar (protecting friend Naia, sitting on unreported evidence)
|
||||
- Content directory structure at `content/campaigns/main/systems/krenn/sova/sova-transit/`
|
||||
- Content directory structure at `content/campaigns/main/systems/van-maanens-star/sova/sova-transit/`
|
||||
|
||||
**What to deliver:**
|
||||
- ~75-100 hand-authored lines (same breakdown as #297)
|
||||
@@ -126,9 +126,9 @@ This sprint's critical path runs through voice patterns:
|
||||
- Trust-contamination arc (relationship state shift when contradiction discovered)
|
||||
|
||||
**File locations:**
|
||||
- Profile: `content/campaigns/main/systems/krenn/sova/sova-transit/npcs/sera-venn.yaml`
|
||||
- Dialogue: `content/campaigns/main/systems/krenn/sova/sova-transit/dialogue/sera-venn-*.yaml`
|
||||
- Monologue: `content/campaigns/main/systems/krenn/sova/sova-transit/monologue/detective/sera-*.yaml`
|
||||
- Profile: `content/campaigns/main/systems/van-maanens-star/sova/sova-transit/npcs/sera-venn.yaml`
|
||||
- Dialogue: `content/campaigns/main/systems/van-maanens-star/sova/sova-transit/dialogue/sera-venn-*.yaml`
|
||||
- Monologue: `content/campaigns/main/systems/van-maanens-star/sova/sova-transit/monologue/detective/sera-*.yaml`
|
||||
|
||||
**Integration:** D-039 wow moment #3 for detective playthrough. Tests institutional vs personal loyalty conflict pattern.
|
||||
|
||||
@@ -153,8 +153,8 @@ This sprint's critical path runs through voice patterns:
|
||||
- Routine entries showing how PC moves through space when played by engine vs by player
|
||||
|
||||
**File locations:**
|
||||
- Smuggler routine: `content/campaigns/main/systems/krenn/sova/sova-transit/npcs/pc-smuggler.yaml`
|
||||
- Detective routine: `content/campaigns/main/systems/krenn/sova/sova-transit/npcs/pc-detective.yaml`
|
||||
- Smuggler routine: `content/campaigns/main/systems/van-maanens-star/sova/sova-transit/npcs/pc-smuggler.yaml`
|
||||
- Detective routine: `content/campaigns/main/systems/van-maanens-star/sova/sova-transit/npcs/pc-detective.yaml`
|
||||
- Cross-character monologue in respective character pools
|
||||
|
||||
**Integration:** D-039 wow moment #4 (the divergence reveal). Enables second playthrough recognition.
|
||||
|
||||
@@ -103,20 +103,20 @@ At the end of Sprint 5, the following must be observable:
|
||||
- Usable by future content authors
|
||||
|
||||
3. **Kael Davan FRIEND pack complete**
|
||||
- Profile YAML at `content/campaigns/main/systems/krenn/sova/sova-transit/npcs/kael-davan.yaml`
|
||||
- Dialogue files at `content/campaigns/main/systems/krenn/sova/sova-transit/dialogue/kael-davan-*.yaml`
|
||||
- Monologue at `content/campaigns/main/systems/krenn/sova/sova-transit/monologue/smuggler/kael-*.yaml`
|
||||
- Profile YAML at `content/campaigns/main/systems/van-maanens-star/sova/sova-transit/npcs/kael-davan.yaml`
|
||||
- Dialogue files at `content/campaigns/main/systems/van-maanens-star/sova/sova-transit/dialogue/kael-davan-*.yaml`
|
||||
- Monologue at `content/campaigns/main/systems/van-maanens-star/sova/sova-transit/monologue/smuggler/kael-*.yaml`
|
||||
- Total line count: 75-100 hand-authored lines
|
||||
|
||||
4. **Sera Venn FRIEND pack complete**
|
||||
- Profile YAML at `content/campaigns/main/systems/krenn/sova/sova-transit/npcs/sera-venn.yaml`
|
||||
- Dialogue files at `content/campaigns/main/systems/krenn/sova/sova-transit/dialogue/sera-venn-*.yaml`
|
||||
- Monologue at `content/campaigns/main/systems/krenn/sova/sova-transit/monologue/detective/sera-*.yaml`
|
||||
- Profile YAML at `content/campaigns/main/systems/van-maanens-star/sova/sova-transit/npcs/sera-venn.yaml`
|
||||
- Dialogue files at `content/campaigns/main/systems/van-maanens-star/sova/sova-transit/dialogue/sera-venn-*.yaml`
|
||||
- Monologue at `content/campaigns/main/systems/van-maanens-star/sova/sova-transit/monologue/detective/sera-*.yaml`
|
||||
- Total line count: 75-100 hand-authored lines
|
||||
|
||||
5. **PC-as-NPC content complete**
|
||||
- Smuggler routine at `content/campaigns/main/systems/krenn/sova/sova-transit/npcs/pc-smuggler.yaml`
|
||||
- Detective routine at `content/campaigns/main/systems/krenn/sova/sova-transit/npcs/pc-detective.yaml`
|
||||
- Smuggler routine at `content/campaigns/main/systems/van-maanens-star/sova/sova-transit/npcs/pc-smuggler.yaml`
|
||||
- Detective routine at `content/campaigns/main/systems/van-maanens-star/sova/sova-transit/npcs/pc-detective.yaml`
|
||||
- Cross-character observation monologue in respective pools
|
||||
- Total items: ~25 authored pieces
|
||||
|
||||
@@ -144,7 +144,7 @@ At the end of Sprint 5, the following must be observable:
|
||||
make validate-content
|
||||
|
||||
# Line previewer can load FRIEND pack content
|
||||
cargo run --bin line-previewer -- content/campaigns/main/systems/krenn/sova/sova-transit/dialogue/kael-davan-trust.yaml
|
||||
cargo run --bin line-previewer -- content/campaigns/main/systems/van-maanens-star/sova/sova-transit/dialogue/kael-davan-trust.yaml
|
||||
|
||||
# FactId check passes on all content
|
||||
.config/pre-commit/check-fact-ids.sh
|
||||
|
||||
@@ -33,7 +33,7 @@ Use `db/connectors/ticket show <id>` for full details.
|
||||
- **Flavor text:** Optional 1-line contextual note (e.g., "Kael's handwriting on the margins")
|
||||
- **Knowledge link:** Which FactId(s) this item proves or corroborates (e.g., manifest copy proves `CargoDiscrepancySova17`)
|
||||
- **Contraband flag:** Boolean — is this item detectable by security scans? (future #425)
|
||||
- **File location:** `content/campaigns/main/systems/krenn/sova/sova-transit/items/smuggler-inventory.yaml` or similar
|
||||
- **File location:** `content/campaigns/main/systems/van-maanens-star/sova/sova-transit/items/smuggler-inventory.yaml` or similar
|
||||
- **Cross-reference:** Sprint 5 deliverables (#297 Kael FRIEND pack, #298 Sera FRIEND pack) provide context for smuggler's social network and cargo operations. Items should reference established content.
|
||||
- **Integration:** Server #424 implements CarriedBy component + Take/Place verbs. Client #438 renders inventory UI. Copy team defines the content (what the items are, why they matter).
|
||||
|
||||
|
||||
@@ -162,7 +162,7 @@ cd client && godot --headless --quit
|
||||
make validate-content
|
||||
|
||||
# Item YAML loads in server
|
||||
cargo run --bin line-previewer -- content/campaigns/main/systems/krenn/sova/sova-transit/items/smuggler-inventory.yaml
|
||||
cargo run --bin line-previewer -- content/campaigns/main/systems/van-maanens-star/sova/sova-transit/items/smuggler-inventory.yaml
|
||||
```
|
||||
|
||||
## Test Plan Alignment (D-030)
|
||||
|
||||
Reference in New Issue
Block a user