Reconcile sprint planning after Knowledge Flow workshop: - Server briefing: add #545-#551 workshop tickets, correct dependency chain, reference D-079–D-083, remove stale "blocked by workshop" - Joint briefing: mark workshop complete, add completion proofs #9 (contradiction) and #10 (NPC-to-NPC transfer), update teams table - Copy briefing: add #552 contradiction monologue ticket with full Mellanie authoring spec per D-083 and Paula Round 2 output Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
95 lines
5.3 KiB
Markdown
95 lines
5.3 KiB
Markdown
# Sprint 17: Tell — Copy Tasks
|
|
|
|
**Goal:** NPCs volunteer information unprompted and express personality through delivery; the player can read time and orientation at a glance from the insert HUD; POI infrastructure lands on the server.
|
|
|
|
**Branch:** `copy`
|
|
**Agents:** Mellanie (author), Paula (narrative), Gestalt (systems)
|
|
|
|
## Carry-over from Sprint 16
|
|
|
|
None. Sprint 16 copy ticket (#542, line ID migration) closed.
|
|
|
|
## Tickets
|
|
|
|
| # | Title | Blocked by |
|
|
|---|-------|------------|
|
|
| #330 | Diegetic tutorial monologue lines — per character | — (blockers #299, #300 done) |
|
|
| #552 | Author contradiction monologue lines — Sera/Kael FRIEND arc | — (can author against D-083 spec) |
|
|
|
|
Use `db/connectors/ticket show <id>` for full details.
|
|
|
|
## Key Decisions
|
|
|
|
- `decisions/content.md` — D-035 (tag taxonomy, monologue prerequisites), D-028 (dialogue architecture)
|
|
- `decisions/perception.md` — D-019 (camera and perception), D-011 (fog of perception), D-083 (contradiction detection pipeline)
|
|
|
|
## Notes
|
|
|
|
### #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 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.")
|
|
- Fog of perception ("Can't see past that corner. Might be worth checking.")
|
|
- Sound model ("Voices down the hall. Can't make out the words from here.")
|
|
- NPC interaction ("Could ask around. People talk if you give them reason to.")
|
|
- Insert/HUD usage ("Check the overlay. Should show the time and nearby contacts.")
|
|
|
|
Lines fire on first-time events (first move, first fog encounter, first sound heard, first NPC proximity, first insert open). Use `trigger: first_time_event` with appropriate event tags.
|
|
|
|
**Voice consistency:** Smuggler lines should be observational, street-smart, practical. Detective lines should be analytical, procedure-oriented, careful. Both stay in-character — tutorials are disguised as natural inner thoughts, not fourth-wall-breaking instructions.
|
|
|
|
**Prerequisite format:** Per D-035:
|
|
```yaml
|
|
- id: pc-smuggler_m_s_tut_001
|
|
text: "Voices. Down the corridor. Can't tell how many."
|
|
trigger: first_sound_heard
|
|
priority: tutorial
|
|
cooldown: -1
|
|
```
|
|
|
|
Use `_tut_` in IDs to distinguish tutorial lines from narrative monologue.
|
|
|
|
**Note on PC monologue ID collision (Q-028):** The review of PR #59 flagged that PC monologue IDs collide across location files. Use the `_tut_` discriminator for tutorial lines. Q-028 will resolve the broader scheme.
|
|
|
|
### #552 — Author contradiction monologue lines — Sera/Kael FRIEND arc
|
|
|
|
**What exists:** The monologue system in `server/src/simulation/monologue.rs` handles anomaly/recognition lines. Sprint double-take monologue already fires on `KnowledgeState::Contradicted`. The server team is implementing the contradiction detection pipeline (#547, #550) that will SET this state.
|
|
|
|
**What to deliver:** Source-named contradiction monologue lines for both characters. These fire when the player discovers a location contradiction — an NPC told them one thing, but they observe something different.
|
|
|
|
**Canonical example (THE FRIEND arc, D-034):** Sera tells the detective "Kael was at the dock during second shift." The detective later observes Kael in corridor B-7 at that time. Contradiction detected. Monologue fires:
|
|
|
|
> "Sera said Kael was at the dock. I just saw him in B-7. One of those isn't true."
|
|
|
|
**Tone principle:** Cognitive dissonance, not accusation. The PC is processing conflicting information, not making judgments. The monologue should feel like genuine internal processing — uncertainty, recalibration, filing away the inconsistency.
|
|
|
|
**Authoring spec:** See Paula's Round 2 workshop output at `docs/workshops/knowledge-flow-npc-boundaries/paula-round2.md` for the full Mellanie spec, including:
|
|
- Phase 2 (Sera/Kael location contradiction) lines
|
|
- Phase 3 (deeper contradictions) lines
|
|
- Trigger specifications
|
|
- The cognitive-dissonance-not-accusation principle
|
|
|
|
**Both character variants needed:**
|
|
- **Detective:** Analytical, procedure-oriented. Notes the discrepancy formally, mentally files it.
|
|
- **Smuggler:** Street-smart, instinctive. Gut reaction to being lied to, reads it as a social signal.
|
|
|
|
**Integration:** The server team (#550) will wire these lines into the monologue system. The `ContradictionDetected` event payload includes `source_display_name` and `subject_display_name` — lines can reference the source NPC by name.
|
|
|
|
**Can start immediately** — author against the D-083 spec without waiting for server implementation.
|
|
|
|
## Dependency Chain
|
|
|
|
```
|
|
#330 (Tutorial monologue) → standalone, no deps
|
|
#552 (Contradiction monologue) → standalone (author against spec), feeds #550 (server)
|
|
```
|
|
|
|
## PR Workflow
|
|
|
|
When ready to submit, create a PR with `tea` CLI:
|
|
```bash
|
|
tea pr create --repo jpmschweitzer/settled-reach --login schweitz --title "feat(content): sprint 17 description" --description "body" --base main --head copy
|
|
```
|