Files
settled-reach/docs/sprints/sprint-17/copy.md
T
jpmschweitzerandClaude Opus 4.6 0f1b951691 docs(docs): update Sprint 17 briefings with workshop results
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>
2026-02-24 02:12:00 +01:00

5.3 KiB

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:

- 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:

tea pr create --repo jpmschweitzer/settled-reach --login schweitz --title "feat(content): sprint 17 description" --description "body" --base main --head copy