From fdad0958b3e6c722138a2a8e43c9042ab9aff79b Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Wed, 25 Feb 2026 12:45:59 +0100 Subject: [PATCH] docs(workshops): add outcomes files for 5 completed workshops Closes content-gap-analysis, KG-information-boundaries, v01-content-scoping, v01-gap-analysis, and wiki-review workshops with formal outcomes recording decisions produced, tickets created, and open questions carried forward. Co-Authored-By: Claude Opus 4.6 --- .../workshop-outcomes.md | 82 +++++++++++++ .../workshop-outcomes.md | 90 ++++++++++++++ .../v01-content-scoping/workshop-outcomes.md | 116 ++++++++++++++++++ .../v01-gap-analysis/workshop-outcomes.md | 97 +++++++++++++++ .../wiki-review/workshop-outcomes.md | 116 ++++++++++++++++++ 5 files changed, 501 insertions(+) create mode 100644 docs/workshops/content-gap-analysis_v0_1/workshop-outcomes.md create mode 100644 docs/workshops/knowledge-graph-information-boundaries/workshop-outcomes.md create mode 100644 docs/workshops/v01-content-scoping/workshop-outcomes.md create mode 100644 docs/workshops/v01-gap-analysis/workshop-outcomes.md create mode 100644 docs/workshops/wiki-review/workshop-outcomes.md diff --git a/docs/workshops/content-gap-analysis_v0_1/workshop-outcomes.md b/docs/workshops/content-gap-analysis_v0_1/workshop-outcomes.md new file mode 100644 index 000000000..b4bdedded --- /dev/null +++ b/docs/workshops/content-gap-analysis_v0_1/workshop-outcomes.md @@ -0,0 +1,82 @@ +# Workshop Outcomes: v0.1 Content Gap Analysis + +**Workshop:** v0.1 Content Gap Analysis +**Date:** 2026-02-11 +**Rounds:** 2 (Analysis + Synthesis) +**Participants:** Mellanie, Paula, Araminta, Miri, Gestalt, Ozzie +**Facilitator:** Jeroen +**Documenter:** Qatux +**Status:** DONE — all decisions actioned, tickets created +**Full notes:** `docs/workshops/content-gap-analysis_v0_1/SUMMARY.md` + +--- + +## What the Workshop Accomplished + +Six agents independently analyzed 9 content layers across the vertical slice (D-027), then synthesized across all outputs. The project lead issued 9 directive decisions between rounds. Remarkable cross-agent convergence: the Dual Lens Guide, monologue as primary carrier, and the tag taxonomy were independently identified by multiple agents without coordination. THE FRIEND concept evolved from Ozzie's emotional instinct to Paula's structural design to Mellanie's authoring plan in a single workshop. + +--- + +## Decisions Produced + +| ID | Decision | Domain | Source | +|----|----------|--------|--------| +| D-032 | Separate monologue pools per character | content.md | Lead directive #1 | +| D-033 | Entity color = relationship to player | perception.md | Araminta R1 + lead directive #2 | +| D-034 | THE FRIEND production-level NPC pattern | content.md | Ozzie concept + lead directive #4 + Paula design | +| D-035 | Converged tag taxonomy for line pools (6+3 tags) | content.md | Gestalt + Mellanie convergence | +| D-036 | Sova Transit District / Krenn System as v0.1 setting | content.md | Miri R1 + lead directive #6 | +| D-037 | Contraband specification | content.md | Miri R1/R2 | +| D-038 | Audio in v0.1 scope via Stable Audio Open (8 files) | scope.md | Lead directives #3 + #9 | +| D-039 | v0.1 wow moment scope — all 6 moments | scope.md | Ozzie R1/R2 + lead directive #8 | +| D-040 | Wiki taxonomy structure | process.md | Miri R2 + lead directive #5 | + +All 9 decisions confirmed by project lead between rounds as non-negotiable directives. + +--- + +## Open Questions Identified + +| ID | Question | Owner | Status | +|----|----------|-------|--------| +| Q-012 | How does the generation expansion pass work? LLM, template-based, or rule-based? | Gestalt, Mellanie | Raised this workshop | +| Q-013 | How does the line previewer handle THE FRIEND's temporal progression? | Gestalt, Dudley | Raised this workshop | +| Q-014 | Audio timing with monologue — when does the chime fire relative to text? | Gestalt, Ozzie | Raised this workshop | +| Q-015 | Does 4x generation expansion apply to THE FRIEND's custom lines? | Mellanie, Gestalt | Raised this workshop | +| Q-016 | Knowledge hierarchy for monologue prerequisites | Gestalt, Paula | Raised this workshop | +| Q-017 | Triangle pressure threshold — what events trigger escalation? | Gestalt, Paula | Raised this workshop | + +--- + +## Tickets Created + +48 total tickets (42 new + 6 updates). See `docs/workshops/content-gap-analysis_v0_1/TICKETS.md` for full list. + +**Critical (9 new):** #297 Kael Davan full profile, #298 Sera Venn full profile, #299 Opening hook (smuggler), #300 Opening hook (detective), #301 Wiki taxonomy, #302 Sova Texture Appendix, #303 v0.1 Visual Grammar, #304 Entity Color System Spec, #305 Dialogue selection pipeline. + +**High (23 new):** Content and narrative (#306, #307, #310, #328), visual and spatial layouts (#311-318), worldbuilding (#319-322), systems and implementation (#308, #309, #323-327). + +**Medium (10 new):** Mirror moments, tutorial content, environmental standards, tell derivation (#329-338). + +**Updated (6):** #261 promoted to critical with expanded scope; #189, #168, #124, #90, #193 updated. + +--- + +## Key Flags + +- Detective's FRIEND confirmed as Sera Venn (Paula, not Mellanie's Lera proposal). Lera Sessik remains the bar owner. +- NPC triangle count: Paula reconciled from 7 to 5 triangles in Round 2. Five-triangle model is canonical. +- Tag taxonomy convergence was independent: Mellanie and Gestalt proposed nearly identical structures without coordination. +- Dual Lens Guide (#261) is the single highest-risk dependency — everything downstream blocks on it. + +--- + +## Critical Path Produced + +Dual Lens Guide (#261) → Voice Kits → THE FRIEND Content Packs → Validation → Content at Scale. + +Three parallel tracks: narrative (Paula), setting (Miri), systems (Gestalt + Araminta) — converging at content pack production. + +--- + +*Compiled by Qatux. Source: `docs/workshops/content-gap-analysis_v0_1/SUMMARY.md`, `TICKETS.md`. Decisions in `decisions/content.md` (D-032 through D-040 excl. D-033 in perception.md, D-038/D-039 in scope.md, D-040 in process.md).* diff --git a/docs/workshops/knowledge-graph-information-boundaries/workshop-outcomes.md b/docs/workshops/knowledge-graph-information-boundaries/workshop-outcomes.md new file mode 100644 index 000000000..f59af5bac --- /dev/null +++ b/docs/workshops/knowledge-graph-information-boundaries/workshop-outcomes.md @@ -0,0 +1,90 @@ +# Workshop Outcomes: Knowledge Graph & Information Boundaries + +**Workshop:** Knowledge Graph & Information Boundaries +**Date:** 2026-02-11 +**Rounds:** 2 (Design + Synthesis) +**Participants:** Tyre, Gestalt, Paula, Dudley, Si +**Facilitator:** Jeroen +**Documenter:** Qatux +**Status:** DONE — fully actioned, decisions filed, tickets created +**Full notes:** `docs/workshops/knowledge-graph-information-boundaries/round2-synthesis.md`, `sprint2-impact.md` + +--- + +## What the Workshop Accomplished + +Replaced the `InformationInventory { known_facts: Vec }` placeholder with a fully specified knowledge graph data model. Five agents analyzing from different angles converged independently on all fundamentals: per-entity ECS component, stable entity IDs, per-entry provenance tracking. The synthesis resolved the only substantive debate (centralized resource vs. per-entity component) unanimously in favour of per-entity. The resulting D-041 spec is the foundation for asymmetric information as a playable mechanic — and became load-bearing for D-010, D-011, D-017, D-028, D-033, and Q-016. + +--- + +## Major Decision Produced + +### D-041: Knowledge Graph Data Model + +The core design decision of this workshop. Full specification in `decisions/perception.md`. + +Key architectural choices: +- `KnowledgeGraph` as a Bevy ECS `Component` on each entity (not a centralized resource) +- `StableEntityId` (`u64`-based) for cross-reference stability; runtime `EntityRegistry` for bidirectional mapping +- `BTreeMap` + `BTreeMap` per entity +- Four confidence levels: `Direct` > `KnowsDetails` > `KnowsOf` > `Suspects` +- Three knowledge states: `Active`, `Stale`, `Contradicted` +- `KnowledgeSource` tracked per-entry (not per-graph): `DirectObservation`, `ToldBy`, `Background`, `Heard` +- Event-driven updates via `KnowledgeEventQueue`; decay pass once per game-minute +- Sprint 2 scope: data structures + direct observation + basic decay only + +### Additional Decisions Implied (formalized later) + +The workshop produced the architectural foundation that fed into: +- D-012: Information boundaries (per-character knowledge isolation) +- Formal resolution of Q-016: Knowledge hierarchy (`Suspects` < `KnowsOf` < `KnowsDetails` < `Direct`) + +--- + +## Open Questions Identified + +| ID | Question | Sprint Impact | Resolved By | +|----|----------|---------------|-------------| +| Q-024 | Gossip propagation timing (immediate vs queued) | Sprint 3+ | D-080 (knowledge-flow-npc-boundaries workshop) | +| Q-025 | Knowledge graph cap and eviction policy | Sprint 3+ | D-080 (closed: no cap needed at projected v0.1 scale) | +| Q-026 | Contradiction detection algorithm | Sprint 3+ (THE FRIEND arc) | D-083 (knowledge-flow-npc-boundaries workshop) | + +None blocked Sprint 2. + +--- + +## Tickets Created + +8 new tickets added to Sprint 2, all under epic #351. Sprint 2 expanded from 14 to 22 tickets (+6.5 developer-days). + +| # | Title | Priority | Estimate | +|---|-------|----------|----------| +| #361 | KnowledgeGraph component + types (D-041) | critical | 1 day | +| #362 | StableEntityId + EntityRegistry resource | critical | 1 day | +| #363 | KnowledgeEventQueue + processing system | high | 0.5 day | +| #364 | Direct observation knowledge flow | critical | 0.5 day | +| #365 | Basic knowledge decay system | high | 0.5 day | +| #366 | Observer snapshot knowledge integration | critical | 1 day | +| #367 | Knowledge graph unit test suite | high | 1 day | +| #368 | Knowledge vocabulary for v0.1 content | high | 0.5 day | + +**Existing tickets affected:** +- #89 (Information inventory) — cancelled, subsumed by #361 +- #269 (CauseChain component) — marked done (already implemented) +- #138-142 (Information boundary epics) — reparented under #351; #139, #141, #142 deferred to Sprint 3; #140 cancelled (merged into #366) + +**Critical path impact:** #361, #362, #363, #364 added serially to Sprint 2 critical path (10 tickets serial, up from 6). + +--- + +## Sprint 2 Completion Criteria (Added by Workshop) + +Two new acceptance criteria added to Sprint 2's definition of done: +- Entity color reflects relationship state from knowledge graph (#361, #366) +- Remembered (not visible) entities appear as ghosts at last-known position (#361, #366) + +**Knowledge graph proof:** Observe an NPC, walk away, return. NPC appears as ghost at last-known position while not in LOS. Color shifts by relationship state. + +--- + +*Compiled by Qatux. Source: `docs/workshops/knowledge-graph-information-boundaries/round2-synthesis.md`, `sprint2-impact.md`. Primary decision in `decisions/perception.md` (D-041).* diff --git a/docs/workshops/v01-content-scoping/workshop-outcomes.md b/docs/workshops/v01-content-scoping/workshop-outcomes.md new file mode 100644 index 000000000..196460f28 --- /dev/null +++ b/docs/workshops/v01-content-scoping/workshop-outcomes.md @@ -0,0 +1,116 @@ +# Workshop Outcomes: v0.1 Content Scoping + +**Workshop:** v0.1 Content Scoping +**Date:** 2026-02-12 +**Rounds:** 2 + closing round (lead resolutions) +**Participants:** Gestalt, Paula, Tyre, Mellanie, Stig, Dudley, Si, Qatux +**Facilitator:** Jeroen +**Documenter:** Qatux +**Status:** CLOSED — all recoverable decisions filed, tickets created +**Full notes:** `docs/workshops/v01-content-scoping/SUMMARY.md`, `si-ticket-changes.md` + +--- + +## What the Workshop Accomplished + +Applied the Wiki Review's long-term generator strategy to the immediate v0.1 hand-authored proof. Produced 20 decisions (D-042 through D-061), 38 new tickets, canonical NPC mapping for 17 characters, the 16-key EntityKnowledge specification, full content directory architecture, and a Sprint 3-5 roadmap. Tyre and Dudley independently produced structurally identical ObserverSnapshot v3 definitions without coordination — confirmed the architecture was sound. Lead issued 4 decisions resolving the major Round 1 disagreements between rounds, then resolved 3 remaining questions in a closing round. + +**Note on decision IDs:** Several IDs assigned at this workshop collided with later numbering. Genuinely new decisions identified in retrospect were filed as D-087 (content directory structure), D-089 (NPC canonical mapping method), D-091 (EntityKnowledge 16-key canonical set), Q-031 through Q-034. + +--- + +## Decisions Produced + +### From Round 1 Consensus (7) + +| ID | Decision | Domain | +|----|----------|--------| +| D-042 | Drin promoted from Tier 3 to Tier 2 | content.md | +| D-043 | THE NOBODY mechanic deferred to v0.2; hidden data ships in v0.1 content | scope.md | +| D-044 | v0.1 interaction model: 7 verbs (Move, Look, Monologue, Examine Object, Examine NPC, Talk, Overhear) | scope.md | +| D-045 | v0.1 scope IN: news ticker, PC-as-NPC, time progression, relationship state transitions | scope.md | +| D-046 | v0.1 scope OUT: inventory, stealth, combat, save/load, lattice modification | scope.md | +| D-047 | v0.1 triangles: 3 active forks (T1, T2, T4), 2 passive tensions (T3, T5) | content.md | +| D-048 | Client receives all text from server via state updates; client does not load content files | architecture.md | + +### From Round 2 + Closing (13) + +| ID | Decision | Domain | +|----|----------|--------| +| D-049 | YAML is the content file format for v0.1; RON is optional build-time optimization | architecture.md | +| D-050 | Gestalt's NPC pattern/motivation mapping canonical for v0.1; Paula's emotional layer becomes v0.2 annotations | content.md | +| D-051 | v0.1 ships single context-sensitive verb; multi-verb architecture modeled underneath | architecture.md | +| D-052 | 3-state pause: Normal (100%), Overlay (50%), Paused (0%); server-authoritative | architecture.md | +| D-053 | Self-contained triangle forks for v0.1; no cross-triangle cascade (v0.2) | content.md | +| D-054 | ObserverSnapshot v3: adds sim_speed, nearby_interactions, active_dialogue, monologue, overheard, knowledge_updates, examine_result, ticker_headlines | architecture.md | +| D-055 | 16 EntityKnowledge keys; 4 new role-perspective keys; trust_read merged into trust_level; secret_held → leverage_held | architecture.md | +| D-056 | PC voice registers: smuggler (feeling-first, fragments, physical); detective (analysis-first, complete sentences, institutional) | content.md | +| D-057 | Content directory: content/ with _schema/, global/, districts/ top-level split; JSON Schema validation at build time | process.md | +| D-058 | THE FRIEND content pack template: Kael Davan, 91 lines across 5 arc phases | content.md | +| D-059 | Monologue display: 160 char max, 2-line max, 4-6s display, 2s cooldown, queue depth 1, 9-level priority | architecture.md | +| D-060 | actions[] renamed to verbs[] across all surfaces | architecture.md | +| D-061 | No ticket merges across domain teams | process.md | + +### Retrospective Filings (ID collisions resolved) + +| ID | Decision | Domain | +|----|----------|--------| +| D-087 | Content directory structure (content/ split) | process.md | +| D-089 | Canonical NPC pattern/motivation mapping method | content.md | +| D-091 | EntityKnowledge 16-key canonical specification | architecture.md | + +--- + +## Open Questions Carried Forward + +| ID | Question | Status | +|----|----------|--------| +| Q-031 | NPC surnames for Drin, Sess, Tav awaiting Miri validation | Informational | +| Q-032 | Interaction struct naming: AvailableActions (Tyre) vs EntityInteractions (Dudley) | Resolved at implementation | +| Q-033 | 695 authored items: validated as scope input but not independently verified | Informational | +| Q-034 | Dialogue max-width: pixel value for 20% height / max-width constraint | Pending lead call | + +None blocked Sprint 3. + +--- + +## Tickets Created + +38 new tickets + 10 existing ticket updates. See `si-ticket-changes.md` for full list. + +**Teams:** copy (21), server (13), client (2), ci (1). + +**Critical path:** #261 (Dual Lens Authoring Guide) is the single biggest blocker — directly blocks 9 downstream tickets across the content pipeline. Five-day time-box recommended. + +| Series | Count | Domain | +|--------|-------|--------| +| A (Wiki content fixes) | 8 | copy | +| B (Style guides + specs) | 5 | copy | +| C (Content directory + schemas) | 10 | copy/server/ci | +| D (Design specs) | 2 | server/copy | +| NEW 1-7 (Workshop rounds) | 7 | copy | +| NEW 8-14 (Lead decisions, excl. killed NEW-12) | 6 | server/client | + +**Killed:** NEW-12 (client pause state machine — pause is server-authoritative, client sends IPC command only). + +**Sprint allocation:** Sprint 3 — foundations and specs. Sprint 4 — content conversion and authoring begins. Sprint 5+ — content at scale. + +--- + +## NPC Canonical Mapping (17 NPCs) + +The Gestalt-Paula synthesis produced the v0.1 canonical pattern/motivation mapping for all 17 Sova NPCs. This is the authoritative reference for content authoring. + +| Name | Tier | Pattern | Motivation | +|------|------|---------|-----------| +| Kael Davan | T1 | FRIEND | OPERATOR | +| Sera Venn | T1 | FRIEND | WITNESS | +| Naia Tamm | T1* | MIRROR | CIVILIAN | +| Voss, Lera, Torek, Devra, Maret, Resha, Drin, Renn, Pell, Harek | T2 | (varied) | (varied) | +| Sess, Olin, Sabel, Tav | T3 | (varied) | (varied) | + +Off-stage: Nils Davan — GHOST + HANDLER. + +--- + +*Compiled by Qatux. Source: `docs/workshops/v01-content-scoping/SUMMARY.md`, `si-ticket-changes.md`. Decisions in relevant `decisions/` domain files (D-042 through D-061, D-087, D-089, D-091). Open questions in `decisions/questions.md` (Q-031 through Q-034).* diff --git a/docs/workshops/v01-gap-analysis/workshop-outcomes.md b/docs/workshops/v01-gap-analysis/workshop-outcomes.md new file mode 100644 index 000000000..2f4bda737 --- /dev/null +++ b/docs/workshops/v01-gap-analysis/workshop-outcomes.md @@ -0,0 +1,97 @@ +# Workshop Outcomes: v0.1 Gap Analysis + +**Workshop:** v0.1 Gap Analysis +**Date:** 2026-02-11 +**Rounds:** 2 (Gap identification + Synthesis) +**Participants:** Gestalt, Tyre, Ozzie, Paula, Nigel, Gore, Hoshe +**Facilitator:** Jeroen +**Documenter:** Qatux +**Status:** DONE — fully actioned, decisions confirmed, tickets created +**Full notes:** `docs/workshops/v01-gap-analysis/si-ticket-changes.md` + +--- + +## What the Workshop Accomplished + +Stress-tested the full v0.1 plan (232 tickets, 7 initiatives) against three tracks: strength of concept proof, fun and wow factor, and completeness. Found significant gaps: missing infrastructure (collision, pathfinding, time system), a missing experience layer (observation pipeline, interaction verbs), and systemically underpriced tickets across social, dialogue, and replayability systems. The workshop ended with 273 tickets (+41) and a clear Sprint 1-5 dependency chain. + +Key outcome: the workshop revealed that tile collision, A* pathfinding, the observation event generator, and the interaction dispatcher were absent from the ticket catalog despite being architectural blockers for almost everything else. These were added at critical priority. + +--- + +## Decisions Confirmed + +The workshop confirmed 6 decisions. These fed directly into later formal D-records: + +| Decision | Formal Record | Notes | +|----------|---------------|-------| +| Deterministic replay is an architectural requirement, not just test infrastructure | D-010 (reinforced) | Promoted #201 to critical | +| Time system: 10 tps, 4 day phases, diegetic clock | D-031 | Resolved Q-009; ticket #25 renamed and promoted | +| Godot test framework = gdUnit4 | process.md | Tyre reversed GUT recommendation after Hoshe's analysis | +| IPC testing = three-layer architecture (fixture, protocol mock, real integration) | architecture.md | Hoshe + Tyre | +| CauseChain is a production component, not test pollution | architecture.md | #269 created | +| Dual Lens Authoring Guide must precede content authoring | D-038 extended | All agents converged | + +These decisions fed into the scope and architecture domain files. The three-tier content system (D-023), vertical slice (D-027), and population ratios (D-029) were validated against the gap analysis findings and confirmed as sound. + +--- + +## Ticket Changes + +**Before:** 232 tickets | **After:** 273 tickets (+41) + +| Change Type | Count | +|-------------|-------| +| Priority promotions (existing) | 15 | +| New epics | 3 | +| New stories | 38 | +| Dependency records added | 21 | +| Renamed + promoted | 1 (#25) | + +### Priority Promotions (15 tickets) + +**Medium → High (11):** #103 (relationship dynamics), #105 (tolerance threshold triggers), #171 (trust-gated gossip), #172 (unprompted disclosure), #173 (trait modifier system), #175 (entanglement ratio), #176 (NPC pool generation), #121 (character voice variation), #126 (medium-range visual indicators), #162 (storyteller module activation), #178 (seed-based variation). + +**High → Critical (3):** #201 (deterministic replay), #182 (divergent starting knowledge), #183 (divergent relationships). + +### New Epics (3) + +| ID | Title | Priority | +|----|-------|----------| +| #233 | Movement & Collision | critical | +| #234 | Observation & Interaction | critical | +| #235 | Game State Management | high | + +### Critical New Stories + +| ID | Title | Priority | +|----|-------|----------| +| #236 | Tile collision system | critical | +| #239 | Observation event generator | critical | +| #240 | Player interaction system and dispatcher | critical | +| #237 | Tile-based A* pathfinding | high | +| #238 | NPC path following and movement | high | +| #253 | Monologue content architecture | high | +| #261 | Dual Lens Authoring Guide | high | +| (+ 31 more stories) | | high/medium/low | + +### Critical Path Produced + +``` +Sprint 1: #236 (collision) → #237 (pathfinding) → #238 (NPC movement) + #25 (game clock) → #88 (daily routines) +Sprint 2: #239 (observation generator) + #240 (interaction dispatcher) +Sprint 3: Observation verbs, NPC conversation, monologue, triangle escalation +Sprint 4: Content pipeline (#261 dual lens guide blocks all content packs) +Sprint 5: Validation and playtest protocol +``` + +--- + +## Open Questions + +None formally raised as Q-records by this workshop — the gap analysis was primarily a ticket and priority exercise. Questions about content authoring (Q-012 through Q-017) were raised in the companion content-gap-analysis workshop the same day. + +--- + +*Compiled by Qatux. Source: `docs/workshops/v01-gap-analysis/si-ticket-changes.md`. Decisions confirmed fed into `decisions/scope.md` (D-023, D-027, D-029) and `decisions/architecture.md` (D-010, D-031).* diff --git a/docs/workshops/wiki-review/workshop-outcomes.md b/docs/workshops/wiki-review/workshop-outcomes.md new file mode 100644 index 000000000..702389a80 --- /dev/null +++ b/docs/workshops/wiki-review/workshop-outcomes.md @@ -0,0 +1,116 @@ +# Workshop Outcomes: Wiki Review & Content Standards + +**Workshop:** Wiki Review & Content Standards +**Date:** 2026-02-12 +**Rounds:** 4 + lead interview between R3 and R4 +**Participants:** Paula, Mellanie, Miri, Gestalt, Gore, Nigel, Ozzie, Tyre, Qatux, Si +**Facilitator:** Jeroen +**Documenter:** Qatux +**Status:** CLOSED — all recoverable decisions filed, tickets created +**Full notes:** `docs/workshops/wiki-review/SUMMARY.md`, `si-ticket-changes.md` + +--- + +## What the Workshop Accomplished + +Began as a v0.1 wiki review (45 files, ticket #368) and was redirected between rounds 2 and 3 by a major strategic reframe: the lead declared the target as 300 populated worlds before DLC. This transformed the workshop from a content authoring strategy into a generator specification strategy. All Round 4 responses independently arrived at the same conclusion: the workshop had been designing generator specifications all along. The district skeleton, NPC composition matrix, Sacred/Profane framework, and pool architecture were already generator-shaped. + +**The strategic reframe:** Old model: writers produce districts, tooling accelerates writers. New model: engineers produce generators, writers produce generator inputs, tooling IS the product. + +**Note on decision IDs:** Several IDs proposed at this workshop collided with later numbering. Genuinely new decisions identified in retrospect were filed as D-088 (300-world generator model), D-090 (three-tier world authoring), D-092 (Sacred/Profane/Middle Kingdom framework), Q-030, Q-035 through Q-039. + +--- + +## Decisions Produced + +### Long-Term Strategy Decisions (Confirmed by Lead) + +| ID | Decision | Domain | +|----|----------|--------| +| D-088 | 300 worlds before DLC — generator model required | scope.md | +| D-090 | Three-tier world authoring: Landmark (10-15 hand-authored), Regional (30-50 template), Generated (230-260 procedural) | scope.md | +| D-092 | Sacred/Profane/Middle Kingdom randomization framework | architecture.md | + +### Supporting Decisions (Rounds 1-2, v0.1 Specific) + +| ID | Decision | Domain | +|----|----------|--------| +| Q-030 | Cultural ingredients menu: 6 ingredient categories, Heritage OPTIONAL, derivation function produces cultural parameters | pending formalization | +| — | Hael renamed to Naia Tamm (resolves Kael/Hael sonic collision) | content.md | +| — | Three-system NPC architecture: Thematic Patterns + Functional Motivations + Composition rules | content.md | +| — | Cultural brief = generation seed (seed.yaml + brief.md dual artifact) | process.md | +| — | 8 PC archetypes at v1.0; archetypes are FLUID positions, not classes | scope.md | +| — | THE NOBODY: dynamic tier promotion (NOBODY → NOTICED → RECOGNIZED → KNOWN → INVESTED) | scope.md | + +The specific v0.1 decisions (Naia rename, NPC architecture, THE NOBODY, THE MIRROR) were carried forward and filed in the subsequent v0.1 Content Scoping workshop where IDs were formally assigned. + +--- + +## Open Questions Raised + +| ID | Question | Status | +|----|----------|--------| +| Q-030 | Cultural ingredients menu: full formalization of 6 categories, null-heritage behavior, derivation function specification | Pending | +| Q-035 | Naming algorithm: phonetic rules vs word lists — which approach for 300-world cultural naming | Pending | +| Q-036 | Gate topology design: connectivity requirements, hub placement, small-world properties | Pending | +| Q-037 | Storyteller cultural literacy: how storyteller adapts pacing to cultural trust-building rates | Pending | +| Q-038 | NPC pattern composition rules: forbidden/preferred combination formalization | Pending | +| Q-039 | Modding toolkit: content pack manifest, ADD/REPLACE/MERGE overlay operations | Pending | + +--- + +## Tickets Created + +29 new tickets (1 epic, 9 stories, 19 tasks) + 4 existing ticket updates. See `si-ticket-changes.md` for full list. + +**Teams:** copy (21), server (7), ci (1). + +### Existing Ticket Updates (4) + +| ID | Action | +|----|--------| +| #301 | Update description with concrete taxonomy rules from workshop | +| #319 | Update — Miri's Krenn brief supersedes original scope | +| #368 | Mark done — wiki at wiki/ is the delivered output | +| #261 | No change — confirmed still blocking, assign to copy when ready | + +### New Epic + +**Wiki Review Workshop Outputs** — parent epic for all workshop-produced tickets. Priority: high. Team: copy. + +### Selected New Tickets + +| Series | Count | Examples | +|--------|-------|---------| +| A (Wiki content updates) | 12 | A1 canonical names, A2 Hael→Naia rename, A3 Krenn brief, A7 smuggler attributes, A11 Triangle 1 fix | +| B (Style guides + specs) | 5 | B1 NPC Authoring Style Guide, B2 MIRROR spec, B3 PC-as-NPC spec, B4 Smuggler voice card | +| C (Content directory + schemas) | 10 | C1 design doc, C2 directory skeleton, C3 schemas, C9 validate-content CLI | +| D (Design specs) | 4 | D1 cultural_gate design, D2 seed config schema, D3 secondary contraband, D4 news ticker | + +--- + +## Deferred to Future Workshops + +The wiki-review triggered scoping of several follow-on workshops: + +- **Control & Interaction Scheme** — brief written during this workshop; held separately (`docs/workshops/control-interaction/`) +- Perception system gravity variation for world transitions +- Full NPC pattern composition rules (forbidden/preferred lists) +- Gate topology design +- Storyteller cultural literacy +- LLM-assisted content pipeline design +- Modding toolkit specification +- Inter-world political generation + +--- + +## Key Quotes Preserved + +- Nigel: "Two players, same world, same seed, different experience because they noticed different people." +- Gore: "Learning to see is the endgame." +- Gestalt: "Hotline Miami movement + Disco Elysium interaction." +- Gore: "The theme is the field, not any specific phrasing of it. The field is: what does it cost to be human inside something bigger than yourself?" + +--- + +*Compiled by Qatux. Source: `docs/workshops/wiki-review/SUMMARY.md`, `si-ticket-changes.md`. Decisions in `decisions/scope.md` (D-088, D-090) and `decisions/architecture.md` (D-092). Open questions in `decisions/questions.md` (Q-030, Q-035 through Q-039).*