From 010c4158f9ece4eb15659cd447c70f0226d7e79a Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Thu, 12 Feb 2026 19:07:24 +0100 Subject: [PATCH] docs(copy): address PR #15 review feedback Miri (critical): - Fix 3 stale "Hael" references in decisions/content.md (D-034, D-036) Paula (suggestions): - Flag dual-fire 15-30s delay as tuning target in smuggler moral arc - Clarify MIRROR NPCs can be wrong (lied to) without being dishonest - Add implementation note for Path C deferred follow-up fork - Note detective-NPC dialogue rotation variants for post-v0.1 - Clarify detective vs smuggler moral_weight criteria in entity attributes Co-Authored-By: Claude Opus 4.6 --- decisions/content.md | 6 +++--- docs/design/npc-patterns/the-mirror.md | 1 + docs/design/pc-as-npc-spec.md | 2 ++ docs/design/smuggler-moral-arc.md | 2 ++ docs/wiki/knowledge/entity-attributes.md | 2 ++ docs/wiki/triangles/triangle-1-hub-power.md | 4 +++- 6 files changed, 13 insertions(+), 4 deletions(-) diff --git a/decisions/content.md b/decisions/content.md index ae29c4f11..92b19f4d3 100644 --- a/decisions/content.md +++ b/decisions/content.md @@ -52,8 +52,8 @@ How narrative, NPCs, and world content are created: content tiers, NPC generatio - **Date:** 2026-02-11 - **Decision:** Each playable character has one "FRIEND" NPC — a production-level complex character that exercises every content and systems pipeline at full depth. THE FRIEND is the emotional centerpiece of v0.1 and carries D-027 success criterion #3 ("player names an NPC they felt conflicted about"). THE FRIEND follows a reusable pattern: 3+ relationship phases (warmth → trust → doubt → conflict), observable contradiction discoverable through observation not dialogue, sympathetic motivation, no clean resolution, dual-lens resonance, triangle integration, tell progression, and dialogue shift pre/post discovery. - **Assignments:** - - **Smuggler's FRIEND: Kael Davan** — dock worker, ring member, smuggler's closest colleague. Contradiction: meeting with unknown contact in restricted corridor (trying to exit the ring to protect partner Hael). Exercises: full 10-axis model, multi-phase dialogue, tell system, named monologue, dual-lens notes. - - **Detective's FRIEND: Sera Venn** — Commission field tech, bar regular, detective's social anchor. Contradiction: avoids Torek Lintar (sitting on unreported evidence about Kael's manifest discrepancies, protecting friend Hael). Exercises: institutional access + personal loyalty conflict, avoidance pattern as tell, trust-contamination arc. + - **Smuggler's FRIEND: Kael Davan** — dock worker, ring member, smuggler's closest colleague. Contradiction: meeting with unknown contact in restricted corridor (trying to exit the ring to protect partner Naia). Exercises: full 10-axis model, multi-phase dialogue, tell system, named monologue, dual-lens notes. + - **Detective's FRIEND: Sera Venn** — Commission field tech, bar regular, detective's social anchor. Contradiction: avoids Torek Lintar (sitting on unreported evidence about Kael's manifest discrepancies, protecting friend Naia). Exercises: institutional access + personal loyalty conflict, avoidance pattern as tell, trust-contamination arc. - **Content requirements per FRIEND NPC:** ~70-100 authored lines (25-35 dialogue, 15-20 trust-gated, 5-8 unprompted, 10-15 monologue per character, 5-8 tell observation, 3-5 contradiction discovery). No generation expansion — all hand-authored. - **Cross-reference:** NPC triangle model ([D-024](#d-024-npc-generation-model--10-axes--combat-component)), relationship web ([D-029](#d-029-population-entanglement-ratio--305020)), vertical slice criteria ([D-027](scope.md#d-027-vertical-slice--smuggler--detective-two-character-proof)) - **Raised by:** Ozzie (emotional concept, Round 1), Paula (structural design and both FRIEND profiles, Round 2), project lead (confirmed, directive #4). Sera Venn confirmed by project lead over Mellanie's alternative proposal (Lera Sessik). @@ -87,7 +87,7 @@ How narrative, NPCs, and world content are created: content tiers, NPC generatio - **Date:** 2026-02-11 - **Decision:** The v0.1 vertical slice is set in Sova Transit District, a freight logistics hub on Station Sova in the Krenn System. This is the first concrete, named star system in The Settled Reach. The Krenn System is a mid-Reach G3V system, ~180 years settled, population ~2.4 million, working-class pragmatic culture. Station Sova is a logistics hub (~12,000 population). Sova Transit District is a 40-year-old prefab-modular-retrofitted freight district with three social sites: The Terminal (logistics hub), The Last Shift (bar), and maintenance corridors/smuggling spaces. - **Setting details (canonical):** - - NPC naming: Krenn System conventions — compact, consonant-heavy, first-name-primary in social contexts (Kael, Voss, Lera, Torek, Drin, Maret, Hael, Sera, Nils, Kosse, Naia, Pael, Tev, Ren) + - NPC naming: Krenn System conventions — compact, consonant-heavy, first-name-primary in social contexts (Kael, Voss, Lera, Torek, Drin, Maret, Naia, Sera, Nils, Kosse, Pael, Tev, Ren) - Bar naming: "The Last Shift" (official), "Lera's" (informal, used by regulars) - Atmosphere: "quotidian-with-undertow" — comfortable enough to be complacent, tight enough that extra income is tempting - Sensory: span gate hum, industrial lubricant, recycled air, cargo machinery diff --git a/docs/design/npc-patterns/the-mirror.md b/docs/design/npc-patterns/the-mirror.md index 58aa55a14..fb49d64c6 100644 --- a/docs/design/npc-patterns/the-mirror.md +++ b/docs/design/npc-patterns/the-mirror.md @@ -26,6 +26,7 @@ THE MIRROR is the honest-character NPC pattern. No contradiction arc, no deep se | Absent System | Why Missing | Content Signal | |--------------|-------------|----------------| | **No tells** | Tells imply deception or concealment. MIRROR has nothing to conceal from the player (though they may be uninformed about events around them). The absence of tells IS the tell — when the player has learned to read behavioral flags on every other NPC, encountering someone without them is the anomaly. | The player's monologue might note: "No hesitation. No evasion. Either she's telling the truth or she's the best liar I've ever met." The absence becomes noticeable. | +| **No dishonesty ≠ no misinformation** | MIRROR NPCs can be *wrong* without being *deceptive*. A MIRROR who has been lied to will repeat that lie in good faith -- they are transparent about what they believe, not omniscient about what is true. Naia reporting "Kael said he's picking up extra shifts" is honest transmission of a lie she was told. | The player recognizes the MIRROR is being used as an unwitting conduit. This makes the liar's deception feel worse, not the MIRROR's honesty feel cheaper. | | **No secrets** (or only mundane surface-level ones) | The `secret_held` field is empty or contains only ordinary privacy (e.g., "worried about partner's late nights" — visible to anyone observant). No trust gates that reveal hidden criminal knowledge or conspiracies. | If a MIRROR has a "secret," it's one they'd share with a sympathetic stranger at a bar. There's no revelation moment where the player discovers the MIRROR was hiding something all along. | | **No contradiction arc** | No phases, no discovery moment, no color shift from green to amber. The relationship with MIRROR is stable across the session. | The trust level may deepen (public → insider → peer), but there's no betrayal moment. The MIRROR you meet at minute 5 is the same MIRROR at minute 25. | | **No trust-gated dialogue that changes the picture of who they are** | Trust progression reveals more FEELING, not more SECRETS. Deeper access tiers show emotional vulnerability, not concealed information. | At `public` tier: "I'm worried about Kael." At `peer` tier: "I don't know what to do. I love him, but I can't keep living like this." Same truth, deeper emotion. | diff --git a/docs/design/pc-as-npc-spec.md b/docs/design/pc-as-npc-spec.md index d852f4fa4..3927073d4 100644 --- a/docs/design/pc-as-npc-spec.md +++ b/docs/design/pc-as-npc-spec.md @@ -555,6 +555,8 @@ The smuggler can approach and talk to the detective-NPC. The detective-NPC respo | Dialogue lines (detective-NPC speaks) | 5 | Greeting, purpose question, district question, Sera question, deflection | | **Total** | **29** | Within ~20-30 budget | +> **Post-v0.1 note:** 5 public-tier lines may feel thin on replay when the player already knows the detective's real purpose. Consider adding 2-3 rotation variants per situation in a future content pass -- same tag structure, different phrasing -- so the detective-NPC doesn't repeat identical lines across playthroughs. + --- ## Appendix A: Cross-Reference to Downstream Tickets diff --git a/docs/design/smuggler-moral-arc.md b/docs/design/smuggler-moral-arc.md index b1654b4d2..a0d9e505d 100644 --- a/docs/design/smuggler-moral-arc.md +++ b/docs/design/smuggler-moral-arc.md @@ -253,6 +253,8 @@ When the smuggler discovers Kael's unauthorized contact (the FRIEND contradictio 1. FRIEND line: *"Kael? In the corridor? Who the hell is that with him?"* (immediate) 2. Moral-arc line: *"He's trying to get out. And I'm the reason he needs to."* (15-30 second delay) +**Tuning target:** The 15-30 second delay is a content-side estimate. If both lines fire too close together, they feel like one event rather than a realization arriving after the shock. If too far apart, the emotional connection breaks. Playtesting should calibrate the exact delay -- flag for QA during integration. + The second line only fires if the smuggler is in Phase 2 (Doubt) or later. If still in Phase 1 (Comfort), only the FRIEND line fires -- the smuggler has not yet developed the moral lens to process the observation as self-implication. --- diff --git a/docs/wiki/knowledge/entity-attributes.md b/docs/wiki/knowledge/entity-attributes.md index 58bb19d3a..f90b26bd7 100644 --- a/docs/wiki/knowledge/entity-attributes.md +++ b/docs/wiki/knowledge/entity-attributes.md @@ -263,6 +263,8 @@ These four keys capture the observer's subjective assessment of the target throu **Usage**: Shapes the observer's moral arc and internal conflict. Monologue tone shifts when the observer assigns moral weight — guilt, justification, and rationalization are driven by this key. The Comfort-Doubt-Reckoning-Compromise arc references `moral_weight` to determine which phase the observer occupies relative to specific NPCs. +**Archetype note**: Both smuggler and detective use `moral_weight` with the same enum values but different criteria. The smuggler assesses complicity in the ring's operations ("how dirty are their hands?") — see [Smuggler Moral Arc](../../design/smuggler-moral-arc.md). The detective assesses culpability in the crime ("how responsible are they for the harm?"). Same scale, different lens. A smuggler might mark Drin as `"compromised"` (dragged in, not choosing) while the detective marks Drin as `"complicit"` (he knew and did nothing). The detective's moral arc spec is unwritten in v0.1 but follows the same key. + --- ### Archetype Interpretation Note diff --git a/docs/wiki/triangles/triangle-1-hub-power.md b/docs/wiki/triangles/triangle-1-hub-power.md index ccfd3ac38..e21fc0cfb 100644 --- a/docs/wiki/triangles/triangle-1-hub-power.md +++ b/docs/wiki/triangles/triangle-1-hub-power.md @@ -217,7 +217,9 @@ The investigation reads **organizational confusion**. Mixed signals — some dis | Smuggler `operational_trust` (from Nils) | **Drops** — Nils loses confidence in the smuggler | | Voss `behavior_flags` | `"cautious"` (mild stress, manageable) | | Kael `behavior_flags` | `"uncertain,distracted"` | -| Second decision point | **Creates a follow-up fork** later in timeline | +| Second decision point | **Creates a follow-up fork** later in timeline (see implementation note below) | + +> **Implementation note:** Path C's deferred second decision point (when Nils revisits after the one-cycle trial) requires a follow-up fork that is **not specified in this document**. Options: (1) scope the follow-up fork as a separate ticket for v0.1, (2) let the trial period expire unresolved within the v0.1 timeline, treating the unresolved tension as authored ambiguity. The self-containment rule (Section 6) applies -- this deferred fork must not gate other triangles. #### Smuggler Monologue