diff --git a/.claude/agents/dudley.md b/.claude/agents/dudley.md index 368917560..1af6c0993 100644 --- a/.claude/agents/dudley.md +++ b/.claude/agents/dudley.md @@ -20,7 +20,7 @@ Named after Dudley Bose - the astronomer who observed the Dyson barrier disappea - Entity component systems for characters, items, locations - Information boundary system (D-010 principle 2) - Deterministic simulation with input events (D-010 principle 4) -- NPC AI and scheduling +- Economics simulation integration - Save/load system - Work with Oscar on networking preparation - Ensure simulation state is authoritative and consistent diff --git a/.claude/agents/miri.md b/.claude/agents/miri.md index 01fc5a5c6..ccab6aa70 100644 --- a/.claude/agents/miri.md +++ b/.claude/agents/miri.md @@ -24,7 +24,6 @@ Core worldbuilding domains: - **Infrastructure:** Wormhole networks, interstellar transit, communication systems, how civilization holds together across distances - **Technology:** Neural implants/inserts, rejuvenation, memory backup, bionic enhancement, ascending tiers of posthuman capability - **Society:** Factions, political structures, power dynamics, how societies organize when death is optional and travel is instant -- **Species & entities:** Alien civilizations, artificial intelligences, post-human entities, and how they interact with baseline humanity - **History & culture:** How the setting got to where it is, what tensions are baked in, what conspiracies simmer beneath the surface - **Locations:** Cities, stations, worlds — each with character, purpose, and secrets @@ -36,8 +35,9 @@ Core worldbuilding domains: - Flag when designs contradict established setting elements (with severity: cosmetic, notable, fundamental) - Suggest setting-faithful alternatives when possible - Identify opportunities where worldbuilding details could enrich gameplay -- Ensure the setting serves the core mechanics: asymmetric information, perception-based gameplay, and emergent social dynamics +- Ensure the setting serves the current development phase — ground worldbuilding in what is being built NOW, not in future systems that don't exist yet - Build faction identities, technology tiers, location profiles, and historical timelines +- **Cascade discipline:** Do not propose or elaborate on setting details that serve systems below the current phase (e.g., NPC ambient behavior, room-level cultural detail, overheard conversation content). If a design question touches a system that doesn't exist yet, flag it as out of scope and move on. ## Project context diff --git a/.claude/agents/paula.md b/.claude/agents/paula.md index a4dcceca8..78c1fa7b2 100644 --- a/.claude/agents/paula.md +++ b/.claude/agents/paula.md @@ -1,6 +1,6 @@ --- name: paula -description: Narrative and Political Depth specialist for the Settled Reach game project. Use when designing conversation systems, faction mechanics, character relationships, political intrigue, consequences of player actions, or narrative structure. Focused on the human drama and ensuring choices have meaningful weight. +description: Narrative and Political Depth specialist for the Settled Reach game project. Use when designing faction mechanics, character relationships, political intrigue, consequences of player actions, or narrative structure. Focused on the human drama and ensuring choices have meaningful weight. tools: Read, Glob, Grep, WebSearch model: sonnet memory: project @@ -18,19 +18,17 @@ Named after Paula Myo - the investigator who never gives up, who follows the thr ## Your role on the team -- Design conversation and dialogue systems - Define faction mechanics and how factions interact, grow, and die - Ensure character relationships have mechanical depth (not just +/- opinion bars) - Advocate for consequences - player actions should ripple through the social fabric - Design the political landscape of the Settled Reach as a playable space - Push for narrative moments that emerge from systems, not just scripted events - Champion emergent narrative through systemic consequences -- Ensure the internal monologue system reflects character psychology ## What you care about - Faction politics: cultures, power blocs, and their rivalries -- Information asymmetry: trust, betrayal, the slow unraveling of what NPCs know vs show +- Information asymmetry: trust, betrayal, what factions know vs show - Factions within factions: institutional loyalties, competing agendas, emergent alliances - Character relationships that evolve through generated interactions - Moments where political and personal stakes collide diff --git a/CLAUDE.md b/CLAUDE.md index 14727560d..e2edfb52c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -40,6 +40,23 @@ Development follows a strict cascade. Each phase has a concrete deliverable. **D **v0.2 target is dropped.** No scoping negotiations. Build the base systems fully. +## Work Modes + +### Sprint mode (default) +Agents work autonomously on sprint branches. Team lead coordinates via tasks and messages. Human reviews PRs from main. Standard `/sprint-start` → `/pr-push` → `/pr-review` lifecycle. + +### Pair session +Human and Claude work together interactively on a single task. No background agents, no autonomous work. Used for load-bearing architecture changes where the human needs to make judgment calls as the work progresses — not approve a finished result. + +**Rules:** +- No `Agent` spawns, no `run_in_background`. One thread of work. +- Propose one change at a time. Wait for human reaction before continuing. +- Explain what you're about to do and why before doing it. +- After each change, verify together (compile, test, inspect) before moving to the next. +- The human is a participant, not a reviewer. Ask questions, surface tradeoffs, flag risks in real-time. + +**When to use:** Ticket description says "pair session", or the work touches foundational systems where a wrong call is expensive to undo (tick cycle architecture, protocol design, data model migrations, build pipeline rewrites). + ## Agent Instructions ### Team boundaries diff --git a/decisions/content.md b/decisions/content.md index 24ac96c7f..a60c55b87 100644 --- a/decisions/content.md +++ b/decisions/content.md @@ -575,16 +575,8 @@ How narrative, NPCs, and world content are created: content tiers, NPC generatio --- -### Content Pattern Note: Generator-compatible overheard conversation format (ticket #664) -- **Date:** 2026-03-17 -- **Status:** Content pattern noted — pending formal D-record (check with Qatux before claiming ID) -- **Pattern:** `content/npc-conversations/overheard.ron` introduces a new content type: a pool of NPC-to-NPC overheard conversations parameterized by `role_pair` and `zone_types` (matching zone-type template role IDs from D-142). No named NPC references. Culture-neutral text that accepts culture modifier at assembly time. Replaces `overheard.yaml.deprecated` (v0.1 hand-authored pool with named NPCs, superseded by D-122). -- **Format fields:** `id`, `zone_types[]`, `role_pair(a, b)`, `register` (Work|Social|Gossip), `relationship_context` (Colleague|Acquaintance|Friend|Superior|Subordinate), `topic`, `lines[(speaker:A|B, text)]`, `knowledge_payload (Option)` -- **Occlusion authoring rules:** D-078 rules apply unchanged — front-load key info, short declarative sentences, no pronoun-first openers, each turn self-contained. -- **Runtime resolution:** Generator selects conversations where two nearby NPCs match `role_pair` and `zone_types`. Knowledge payload is exposed to player inference layer (partial occlusion reduces but cannot eliminate inference value of a fully-heard payload). -- **Schema location:** `server/src/npc/overheard.rs :: OverheardPool` — TBD pending #663 struct changes. -- **Raised by:** Paula (Sprint 27, ticket #664) -- **Decision needed:** Whether to formalize this as D-NNN or treat as sub-pattern of D-142. Recommend D-record since it introduces the `knowledge_payload` field as a new ambient information delivery mechanism distinct from existing dialogue architecture (D-028). +### ~~Content Pattern Note: Generator-compatible overheard conversation format (ticket #664)~~ SCRAPPED (R-012) +- **Superseded:** 2026-04-10. NPC ambient interaction model scrapped. See [R-012](rejected.md#r-012-overheard-npc-conversation-system-d-078--scrapped). --- diff --git a/decisions/perception.md b/decisions/perception.md index ea810b364..1ab7bea96 100644 --- a/decisions/perception.md +++ b/decisions/perception.md @@ -381,9 +381,10 @@ How the player observes and interacts with the world: camera, fog, line-of-sight - **Raised by:** Tyre (architecture review, #523) - **Dissent:** None -### D-078: Overheard NPC conversation — passive dialogue panel with occlusion filter +### D-078: ~~Overheard NPC conversation — passive dialogue panel with occlusion filter~~ SCRAPPED (R-012) - **Date:** 2026-02-19 -- **Decision:** NPC-to-NPC conversations overheard by the player are displayed in the **dialogue panel in passive mode** (read-only, no response options). An **occlusion filter** degrades displayed text based on distance, ambient noise, and player effort (ListeningFocus stance). Monologue remains a separate channel — it reacts to overheard content via the `witness_interaction` trigger but does not carry conversation text itself. +- **Superseded:** 2026-04-10. The entire NPC ambient interaction model is scrapped and will be rebuilt from scratch after a walkable environment exists (Phase 5+). See [R-012](rejected.md#r-012-overheard-npc-conversation-system-d-078--scrapped). +- **Original decision:** NPC-to-NPC conversations overheard by the player are displayed in the **dialogue panel in passive mode** (read-only, no response options). An **occlusion filter** degrades displayed text based on distance, ambient noise, and player effort (ListeningFocus stance). Monologue remains a separate channel — it reacts to overheard content via the `witness_interaction` trigger but does not carry conversation text itself. - **Passive panel behavior:** - Same D-061 dialogue box, but read-only — no response options rendered. - Shows speaker name and intended target (e.g. "Kael → Mira"). diff --git a/decisions/rejected.md b/decisions/rejected.md index 619714ec0..306bf8921 100644 --- a/decisions/rejected.md +++ b/decisions/rejected.md @@ -50,6 +50,11 @@ Alternatives considered and rejected, with rationale preserved for future refere - **Reason:** Three currencies create structural economic bloc tension as an emergent property of initialization, requiring no event generation. The Tractus/Mark divide maps directly to the canonical Assembly vs. Compact political divide. Deferring to a later phase would require retrofitting political geography into a running simulation. Complexity cost low; design value high. - **Cross-reference:** [D-171 (economics.md)](economics.md#d-171-three-currency-system) +### R-012: Overheard NPC conversation system (D-078) — scrapped +- **Rejected:** 2026-04-10 +- **Reason:** The entire NPC ambient interaction model (overheard conversations, room grammar, zone-type NPC population, behavior engine for physical spaces) is scrapped. These systems were designed speculatively before a walkable environment exists. The NPC interaction model will be designed and built from scratch after Phase 5 (world generation at tile level) is complete. All content authored against these systems (overheard.ron, zone-type conversation pools) is orphaned. Related content pattern note in content.md and D-078 in perception.md are superseded. +- **Cross-reference:** D-078 (perception.md), content pattern note (content.md #664) + --- -*11 rejected alternatives. Last updated: 2026-04-05* +*12 rejected alternatives. Last updated: 2026-04-10*