# Round 2 — SI (Project Manager) ## Finalized Ticket List for v0.1 Content Scoping Incorporates: all 7 Round 1 responses, Qatux tracking doc, lead decisions (D-NPC, D-FORMAT, D-INTERACT, D-PAUSE). --- ## 1. Lead Decisions — Impact on Tickets | Decision | Ticket Impact | |----------|---------------| | **D-NPC:** Gestalt's mechanical mapping wins for v0.1 | NEW-1 simplified: "apply Gestalt's mapping" (not resolve disagreements). Paula's emotional layer becomes v0.2 annotation. | | **D-FORMAT:** YAML for content, RON converter available | Confirms C-series as YAML. Adds NEW-8: RON converter tool. | | **D-INTERACT:** Single action for v0.1, multi-verb architecture underneath | NEW-7 reframed. Adds NEW-9 (server: InteractionOptions) + NEW-10 (client: extensible prompt). | | **D-PAUSE:** Spacebar always pauses, overlays = 50% sim speed | Adds NEW-11 (server: tick rate scaling) + NEW-12 (client: pause state machine). | --- ## 2. Round 1 Consensus — Impact on Tickets | Consensus Item | Ticket Impact | |----------------|---------------| | **A-01:** Drin promoted to Tier 2 | NEW-2 changes from "evaluation" to "execute promotion" — expand profile. | | **A-02:** NOBODY deferred to v0.2 | No v0.1 ticket. Hidden data ships in NPC YAML files (handled by C-series). | | **A-05:** ~200 monologue lines | Sizes NEW-4 at ~200 lines (~100 per character). | | **A-06:** ~695 total authored items | Overall content scope validation. No new ticket, but informs sprint capacity. | | **A-07:** 3 active + 2 passive triangles | Confirms A11 scope (Triangle 1 only needs fixing). T3/T5 need less work. | | **A-11:** THE FRIEND is critical path | Confirms #261 → #297/#298 chain is the highest-priority dependency. | | **A-12:** Client receives text from server | No client-side content loading tickets needed. Simplifies client scope. | | **A-14:** PC-as-NPC confirmed for v0.1 | Validates B3, B5, NEW-6. | | **A-15:** News ticker confirmed for v0.1 | #306 confirmed. Scope: ~20 headlines. | | **A-17:** Self-contained triangle forks | Reduces C8 complexity (no cross-triangle cascade logic). | | **Tyre: Line previewer CLI** | Adds NEW-13. | | **Paula: 7 additional wiki gaps** | Gaps 1-5 already covered by existing tickets. Gap 6 (location smuggler detail) → folded into content conversion. Gap 7 (Harek triangle membership) → folded into NEW-1 mapping. | --- ## 3. Existing Ticket Updates (Revised) | ID | Title | Action | Sprint Target | |----|-------|--------|---------------| | #368 | Knowledge vocabulary for v0.1 content | **Close** — wiki at `wiki/` is the delivered output | Sprint 2 (done) | | #369 | Wiki Review Workshop Outputs (epic) | **Repurpose** as parent epic for all v0.1 content scoping tickets. Update description. | — | | #301 | Wiki taxonomy and structure | **Assign to copy.** Downscope: Sova district structure only for v0.1. Full 500+ world taxonomy is generator-era. | Sprint 3 | | #319 | Krenn System wiki entry | **Merge with A3.** Expanded: wiki page + seed.yaml reference implementation. Assign to copy. | Sprint 4 | | #261 | Dual Lens Authoring Guide | **CRITICAL PATH ROOT.** Assign to copy. Owner: Paula. Blocks 9 downstream tickets. | Sprint 3 (P0) | | #310 | Character voice speech patterns | **Subsume into B4** (smuggler voice card + moral arc). B4 is the larger ticket. Close #310 when B4 lands. | Sprint 3 (via B4) | | #306 | News ticker / Meridian feed content | **Confirm scope:** ~20 dual-lens headlines. Assign to copy. | Sprint 4 | | #326 | YAML content loader | **Assign to server.** Blocked by C1 + C2. | Sprint 4 | | #86 | Core NPC components | **Already Sprint 3 server.** Dudley's ECS component list from Round 1 informs this. | Sprint 3 | | #88 | Daily routine system | **Already Sprint 3 server.** Needs NPC routine YAML from content conversion. | Sprint 3 | --- ## 4. Finalized New Ticket Proposals ### Group A: Wiki Content Fixes (copy team) | ID | Title | Type | Priority | Sprint | Blocked By | Description | |----|-------|------|----------|--------|------------|-------------| | A1 | Apply canonical full names to all NPC wiki pages | task | medium | 3 | — | Apply Miri's 12 full names to NPC wiki pages. Update Core Identity blocks, environmental text references. | | A2 | Rename Hael → Naia Tamm across all wiki files | task | medium | 3 | — | Find-and-replace across ~8 wiki files. Triangle 4 becomes Naia-Kael-Sera. | | A6 | Add smuggler-perspective FactId progression text | task | high | 4 | B4 | Add smuggler-path text for all FactIds where smuggler starts at KnowsDetails or has different knowledge path. | | A7 | Add smuggler-specific entity attributes to entity-attributes.md | task | high | 3 | — | Scope depends on Round 2 resolution of D-03 (Gestalt's 4 new + 2 repurposed vs Paula's 8 new). Add to wiki/knowledge/entity-attributes.md. | | A8 | Standardize location shortcodes in monologue-guide.md | task | medium | 3 | — | Fix hub_m_ → terminal_m_ inconsistency. Add shortcode reference table. | | A10 | Stub NPC profile for Nils Davan | task | medium | 3 | — | Off-stage profile: Core Identity, relationship to Kael, role in ring, known attributes. | | A11 | Fix Triangle 1 (Hub Power) — Volume Escalation decision | story | high | 3 | A10 | Add smuggler decision fork: side with Nils (louder signal), side with Voss (tension), or split route (exposure). Self-contained — no cross-triangle cascade per A-17. | | A12 | Create environmental text examples file | task | medium | 4 | A3/#319 | Bar menu, safety notice, news ticker cycle, corridor graffiti. Krenn-voiced. Needed for wow moment #1 (Arrival). | ### Group B: Style Guides & Specs (copy team) | ID | Title | Type | Priority | Sprint | Blocked By | Description | |----|-------|------|----------|--------|------------|-------------| | B1 | NPC Authoring Style Guide | story | critical | 5 | A3, A4, A7, B2, B4 | Combined document: tier templates, authoring rules, regional culture, content pipeline. Reframed as generator specification — this IS the NPC generator input format. Most complex ticket; many blockers. | | B2 | THE MIRROR pattern spec | story | high | 3 | — | Define honest-character NPC pattern. No contradiction arc, no secret. Tier 1 emotional depth. Naia Tamm is first instance. Output becomes generator template. | | B3 | PC-as-NPC unified spec | story | high | 3 | A7 | Unified spec: starting knowledge graph, starting relationship map, reverse knowledge (bidirectional), orientation monologue, agency boundaries, authored relationship stubs, tell inversion. 9-step conversion checklist. | | B4 | Smuggler voice card + moral arc spec | story | high | 3 | A7 | Two deliverables: (1) Smuggler voice card — paired examples with detective showing dual-lens register differences. (2) Smuggler moral arc — 4 phases (Comfort→Doubt→Reckoning→Compromise), smuggler-specific FactIds, monologue triggers. Subsumes #310 scope. | | B5 | NPC-format briefs for both PCs — Concept A v0.1 | story | high | 4 | B3 | NPC-mode behavior scripts (5-7 routine entries each), reverse dual-lens notes, observation monologue (3-5 lines per character). ~20-30 authored items total. | ### Group C: Content Directory & Schema (split teams) | ID | Title | Type | Priority | Sprint | Team | Blocked By | Description | |----|-------|------|----------|--------|------|------------|-------------| | C1 | Content directory structure design doc | story | high | 3 | copy | — | Document converged structure: `_meta/` + `_schema/` (infrastructure), `global/` + `districts/` (content). Canonical_id format. Mod overlay mechanics. District as atomic pack unit. Informs all content implementation. | | C2 | Create content/ directory skeleton | task | high | 3 | server | C1 | Create directory tree with empty YAML stubs. `_meta/`, `_schema/`, `global/` (factions, technology, contraband, knowledge, enums, regions), `districts/sova-transit/` (district.yaml, npcs/, locations/, templates/, triangles/, lines/). | | C3 | Content schema definitions (YAML Schema files) | story | high | 3 | server | C1 | Create `_schema/` with validation schemas: npc.schema.yaml (tier-conditional), location, faction, template, fact, dialogue, monologue, district, pool. | | C4 | Create global/enums/ YAML files from D-035 | task | medium | 4 | server | C2 | Populate enums: situations (13), topics (9), moods (8), triggers (9), access-tiers (5), activities (new). | | C5 | Create global/knowledge/entity-attributes.yaml | task | medium | 4 | server | C2 | Machine-readable entity attribute definitions. 14 detective + smuggler keys (count depends on D-03 resolution). | | C6 | Create pools.yaml for v0.1 seed-time selection | task | medium | 4 | server | C2 | Sova single-candidate pools: friend_smuggler, friend_detective, bar_regulars, compromised_inspector, primary_contraband. Architecture supports N candidates. | | C7 | Create template YAML files with role slot definitions | task | medium | 4 | server | C2 | 3 social sites: logistics-hub.yaml, bar.yaml, smuggling-ring.yaml. Role slots with count ranges, required flags, pool references, triangle constraints. | | C8 | Create triangle YAML files for 5 v0.1 triangles | task | medium | 4 | server | C2 | 5 triangles. Self-contained forks (no cross-triangle cascade per A-17). Includes updated T1 with Volume Escalation. | | C9 | Implement make validate-content CLI | story | high | 4 | server | C3 | Structural + tier-conditional validation. Reads _schema/, validates all YAML. v0.2: cross-reference validation. | | C10 | Pre-commit FactId typo check | task | medium | 4 | ci | — | Grep-based pre-commit check validating FactId references against canonical facts.yaml. | ### Group D: Design Specs | ID | Title | Type | Priority | Sprint | Team | Blocked By | Description | |----|-------|------|----------|--------|------|------------|-------------| | D2 | Seed configuration schema design | story | medium | 4 | server | — | Schema for what the randomizer produces at game-start: FRIEND selections, social site population, compromised NPC, contraband type. v0.1 has single-candidate pools but architecture must support N. | | D4 | News ticker headline pool | task | medium | 4 | copy | — | ~20 dual-lens headlines for Meridian feed at Lera's. Freight data, politics, local infrastructure, sports, Commission advisories. Each works as dual-lens monologue trigger. | ### Group NEW: Tickets from Round 1 + Round 2 | ID | Title | Type | Priority | Sprint | Team | Blocked By | Description | |----|-------|------|----------|--------|------|------------|-------------| | NEW-1 | Apply Gestalt's NPC pattern/motivation mapping | task | high | 3 | copy | — | Apply the canonical v0.1 mapping (Gestalt's Round 2 finalized table) to wiki and content files. 17 NPCs × (pattern + motivation). Includes Harek's structural role per Paula Gap 7. | | NEW-2 | Drin Tier 2 profile expansion | task | medium | 3 | copy | NEW-1 | Drin confirmed Tier 2 (A-01). Expand wiki profile to full Tier 2 depth: all 10 profile axes, smuggler lens section, triangle membership formalized. | | NEW-3 | Wiki → YAML content conversion (Sova NPCs) | story | high | 4 | copy | C1, C2, C3 | Convert 17 NPC wiki profiles to engine-readable YAML. Includes routine YAML layer (Paula Gap 3), triangle fork decision points (Gap 4), location smuggler detail (Gap 6). Tyre estimates 2-3 days. | | NEW-4 | Monologue content pool — minimum viable (~200 lines) | story | high | 4 | copy | #261, B4 | ~100 lines per character. Categories: arrival observations, NPC routine commentary, environmental flavor, contradiction hints, idle reflections, tutorial/orientation. Follows Mellanie's authoring order (FRIEND packs first, then fill). | | NEW-5 | v0.1 wow moment content checklist | task | high | 3 | copy | — | Map D-039's 6 wow moments to specific content deliverables + implementation tickets. Track completion. Acceptance: every moment has identified content + code backing it. | | NEW-6 | PC-as-NPC content authoring | story | high | 5 | copy | B3, B5 | Author the actual lines: 5-7 routine entries per character, 3-5 observation monologue lines, reverse dual-lens notes. ~25 authored items (Mellanie's budget). | | NEW-7 | v0.1 interaction verb spec | task | medium | 3 | copy | — | Document the 7 interaction types (A-04: Move, Look, Monologue, Examine Object, Examine NPC, Talk, Overhear). Define triggers, UI needs, server events per type. v0.1 surfaces single context-sensitive action; architecture supports N verbs. | ### Group NEW-R2: Tickets from Lead's Round 2 Decisions | ID | Title | Type | Priority | Sprint | Team | Blocked By | Description | |----|-------|------|----------|--------|------|------------|-------------| | NEW-8 | YAML → RON converter tool | task | medium | 4 | server | C1 | Build-time converter: reads content YAML, emits RON. Lives in `tooling/`. Runs as make target (`make content-ron`). Not on critical path — engine consumes YAML in v0.1; RON is future-proofing. | | NEW-9 | Multi-verb interaction architecture — server InteractionOptions | story | high | 3 | server | — | Server models N available actions per entity via `InteractionOptions` component. v0.1 client picks first/best; v0.2 client shows menu. Must not be throwaway. Includes ObserverSnapshot v3 extension for interaction data. | | NEW-10 | Multi-verb interaction architecture — client extensible prompt | story | high | 3 | client | NEW-9 | Client-side interaction prompt designed for extensibility. v0.1: single context-sensitive E prompt. Architecture supports v0.2 multi-verb menu. Prompt system reads InteractionOptions from server state. | | NEW-11 | Pause system — server tick rate scaling | story | medium | 3 | server | — | Tick rate supports 3 states: full speed (normal play), 50% speed (UI overlay open), 0% (spacebar pause). Server receives pause/speed commands from client. | | NEW-12 | Pause system — client state machine | story | medium | 3 | client | NEW-11 | Client pause state machine: Normal → Overlay (50% speed, triggered by knowledge panel / dialogue) → Paused (spacebar from any state). Spacebar always overrides to full pause. | | NEW-13 | Line previewer CLI | task | medium | 4 | server | C3, C9 | CLI tool to preview monologue/dialogue line selection for a given game state. Tyre's recommendation for content tuning. Lives in `tooling/`. Helps content authors test prerequisite logic without running the full game. | --- ## 5. Sprint Plan ### Sprint 3: Know (Copy Team — Content Foundation) **Goal:** Deliver the content specs and wiki fixes that unblock server implementation and content authoring. | Priority | Ticket | Title | Owner Hint | Effort | |----------|--------|-------|------------|--------| | **P0** | **#261** | **Dual Lens Authoring Guide** | **Paula** | **Large** | | **P0** | **C1** | **Content directory structure design** | **Tyre/Gestalt** | **Medium** | | P0 | A1 | Apply canonical full names | Paula | Small | | P0 | A2 | Hael → Naia Tamm rename | Paula | Small | | P0 | A7 | Smuggler entity attributes | Paula | Small | | P1 | B2 | MIRROR pattern spec | Gestalt/Gore | Medium | | P1 | B4 | Smuggler voice + moral arc (subsumes #310) | Gore/Mellanie | Medium | | P1 | NEW-1 | Apply Gestalt's NPC pattern mapping | Gestalt | Small | | P1 | NEW-5 | Wow moment content checklist | SI | Small | | P1 | A10 | Nils Davan stub | Paula | Small | | P1 | A11 | Triangle 1 fix | Gestalt/Paula | Medium | | P2 | B3 | PC-as-NPC spec | Gestalt/Paula | Medium | | P2 | A8 | Shortcode fix | Mellanie | Small | | P2 | NEW-2 | Drin Tier 2 profile expansion | Paula | Small | | P2 | NEW-7 | Interaction verb spec | Gestalt | Small | **Sprint 3 copy total: 15 tickets (2 P0, 6 P1, 5 P2, 2 small enough to parallelize)** ### Sprint 3: Know (Server Team — Content-Adjacent, Proposed Additions) | Priority | Ticket | Title | Effort | |----------|--------|-------|--------| | P1 | C2 | Create content/ directory skeleton | Small | | P1 | C3 | Content schema definitions | Medium | | P1 | NEW-9 | Multi-verb interaction architecture — InteractionOptions | Medium | | P2 | NEW-11 | Pause system — tick rate scaling | Small | ### Sprint 3: Know (Client Team — Proposed Additions) | Priority | Ticket | Title | Effort | |----------|--------|-------|--------| | P1 | NEW-10 | Multi-verb interaction — extensible prompt | Medium | | P2 | NEW-12 | Pause system — client state machine | Small | ### Sprint 4 (Content Conversion + Authoring Begins) | Ticket | Title | Team | Blocked By | |--------|-------|------|------------| | NEW-3 | Wiki → YAML conversion (17 NPCs) | copy | C1, C2, C3 | | C4 | Enum YAMLs from D-035 | server | C2 | | C5 | Entity-attributes YAML | server | C2 | | C6 | Pools YAML | server | C2 | | C7 | Social site template YAMLs | server | C2 | | C8 | Triangle YAMLs | server | C2 | | C9 | validate-content CLI | server | C3 | | C10 | Pre-commit FactId check | ci | — | | A6 | Smuggler FactId progression text | copy | B4 | | A12 | Environmental text examples | copy | A3/#319 | | B5 | PC NPC-format briefs | copy | B3 | | D4 | News ticker headlines (~20) | copy | — | | #306 | News ticker content (align with D4) | copy | — | | D2 | Seed configuration schema | server | — | | NEW-8 | YAML → RON converter | server | C1 | | NEW-13 | Line previewer CLI | server | C3, C9 | | #326 | YAML content loader | server | C1, C2 | | A3/#319 | Krenn brief + seed.yaml reference | copy | — | ### Sprint 5+ (Content at Scale) | Ticket | Title | Team | Blocked By | |--------|-------|------|------------| | NEW-4 | Monologue content pool (~200 lines) | copy | #261, B4 | | NEW-6 | PC-as-NPC content authoring (~25 items) | copy | B3, B5 | | B1 | NPC Authoring Style Guide (generator spec) | copy | A3, A4, A7, B2, B4 | | A4 | Regional style guide / seed.yaml template | copy | — | | A9 | Thematic Question field (Tier 1 profiles) | copy | B2 | | #297 | THE FRIEND: Kael content pack | copy | #261 | | #298 | THE FRIEND: Sera content pack | copy | #261 | | #190 | Workplace content pack | copy | #261 | | #191 | Bar content pack | copy | #261 | | #192 | Smuggling ring content pack | copy | #261 | --- ## 6. Revised Dependency Chain ``` SPRINT 3 — Two Parallel Critical Chains ======================================== Chain 1: Content Authoring Pipeline ------------------------------------ #261 (Dual Lens Guide) [P0, CRITICAL PATH ROOT] ├── blocks B4 (Smuggler voice + moral arc) [Sprint 3] │ ├── blocks A6 (Smuggler FactId text) [Sprint 4] │ └── blocks NEW-4 (Monologue pool) [Sprint 5] ├── blocks #297 (FRIEND: Kael) [Sprint 5] ├── blocks #298 (FRIEND: Sera) [Sprint 5] ├── blocks #299 (Opening hook: smuggler) [Sprint 5] ├── blocks #300 (Opening hook: detective) [Sprint 5] └── blocks #190, #191, #192 (Content packs) [Sprint 5] A7 (Smuggler attributes) [P0, Sprint 3] ├── blocks B4 (Smuggler voice) [Sprint 3] └── blocks B3 (PC-as-NPC spec) [Sprint 3] └── blocks B5 (PC briefs) [Sprint 4] └── blocks NEW-6 (PC-as-NPC authoring) [Sprint 5] Chain 2: Content Architecture Pipeline --------------------------------------- C1 (Content dir design) [P0, Sprint 3] ├── blocks C2 (skeleton) [Sprint 3, server] │ ├── blocks C4 (enums) [Sprint 4] │ ├── blocks C5 (entity attrs) [Sprint 4] │ ├── blocks C6 (pools) [Sprint 4] │ ├── blocks C7 (templates) [Sprint 4] │ ├── blocks C8 (triangles) [Sprint 4] │ ├── blocks NEW-3 (wiki→YAML) [Sprint 4] │ └── blocks #326 (YAML loader) [Sprint 4] ├── blocks C3 (schemas) [Sprint 3, server] │ ├── blocks C9 (validator) [Sprint 4] │ ├── blocks NEW-3 (wiki→YAML) [Sprint 4] │ └── blocks NEW-13 (line previewer) [Sprint 4] └── blocks NEW-8 (RON converter) [Sprint 4] Independent Chains (Sprint 3) ------------------------------ B2 (MIRROR spec) → A9 (Thematic Question) [Sprint 4] A10 (Nils stub) → A11 (Triangle 1 fix) [Sprint 3] NEW-9 (InteractionOptions, server) → NEW-10 (Extensible prompt, client) [Sprint 3] NEW-11 (Tick rate scaling, server) → NEW-12 (Pause state machine, client) [Sprint 3] ``` --- ## 7. Ticket Count Summary | Category | Count | Teams | |----------|-------|-------| | Wiki fixes (A-series) | 8 | copy | | Style guides & specs (B-series) | 5 | copy | | Content directory & schema (C-series) | 10 | copy (1), server (8), ci (1) | | Design specs (D-series) | 2 | server (1), copy (1) | | Round 1 new tickets (NEW 1-7) | 7 | copy | | Round 2 new tickets (NEW 8-13) | 6 | server (4), client (2) | | **Total new tickets** | **38** | copy (21), server (13), client (2), ci (1), + 1 epic update | | Existing ticket updates | 10 | — | **Delta from Round 1:** +6 tickets (NEW-8 through NEW-13 from lead decisions), +2 server Sprint 3 additions (NEW-9, NEW-11), +2 client Sprint 3 additions (NEW-10, NEW-12). Removed: D3 (killed), A5 (deferred), D1 (deferred). Merged: A3 into #319, #310 into B4. --- ## 8. Risks & Recommendations **Risk 1: #261 is still the critical path root.** Every content authoring ticket flows through it. If it slips even one sprint, the entire content pipeline delays. Recommend: assign Paula immediately, time-box to 5 working days, accept "good enough" over "perfect." **Risk 2: Sprint 3 copy team has 15 tickets.** That's a lot. But 7 are small tasks (A1, A2, A7, A8, A10, NEW-1, NEW-2) that can be parallelized. The real load is #261, C1, B2, B4, and A11. Recommend: Paula owns #261 + wiki fixes (A1, A2, A7, A10, NEW-2). Gestalt owns C1, NEW-1, B2, A11, NEW-7. Mellanie owns A8, B4. SI owns NEW-5. **Risk 3: Server team Sprint 3 is already heavy** (10 existing tickets). Adding C2, C3, NEW-9, NEW-11 is +4. Recommend: C2 and C3 are blocked by C1 anyway — they can start mid-sprint when C1 lands. NEW-9 and NEW-11 are independent and can begin immediately. **Risk 4: Content conversion (NEW-3) is a Sprint 4 bottleneck.** Tyre estimates 2-3 full days for 17 NPC conversions. This blocks the server from testing with real data. Recommend: start with the 3 Tier 1 NPCs (Kael, Sera, Naia) as soon as C2 lands, don't wait for all 17. --- *Proposals only — no tickets created. Awaiting lead approval.* *Compiled by SI. Source: Round 1 tracking doc (Qatux), all 7 Round 1 responses, lead Round 2 decisions.*