Files
settled-reach/docs/sprints/sprint-16/joint.md
T
jpmschweitzerandClaude Opus 4.6 bccdcfcdcb docs(docs): add frontmatter to all sprint briefings
Standardized YAML frontmatter on all 115 sprint briefing files across
sprints 1-26 with title, description, type, status, sprint number, and
team fields.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 00:15:45 +01:00

5.8 KiB

title, description, type, status, sprint, team
title description type status sprint team
Sprint 16 — Joint Briefing Dialogue response integration, sprite pipeline coordination, line ID scheme sprint archived 16 joint

Sprint 16: Converse — Joint Coordination

Goal: Dialogue becomes a two-way exchange — players pick options and the server responds; NPC information-giving deepens through trust and trait-shaped delivery; the sprite pipeline gets its correct art-direction angle; and housekeeping fixes land across all three active teams.

Pre-Sprint

No blocking decisions or schema work required before implementation starts. All relevant decisions are confirmed (D-019, D-028, D-035, D-075, D-077). Sprint 16 can begin immediately.

Item Owner Status
D-035 line ID scheme (NPC-scoped) confirmed done
D-075 layered confidence gate on trust confirmed done
D-019 camera angle amendment confirmed done
D-077 zone_id on VisibleTile confirmed, implemented done

Ticket Overview

# Title Team Blocked by
#538 Arch: Move dialogue systems BridgePlugin → NpcPlugin server
#539 Server: implement DialogueResponse verb handler server #538
#171 Layer 3: Trust-gated gossip server
#338 Line variety tracker — prevent repeat dialogue server
#543 Optimize zone_id extraction O(N) → O(1) client
#540 Adjust sprite camera to D-019 angle client #541
#542 Migrate line IDs to NPC-scoped namespace copy
#541 3D sprite render pipeline setup visual

Cross-team Dependencies

#541 (visual) → #540 (client): Araminta must deliver at minimum a test entity sprite and a wall sprite at the -72.5° angle before Stig can validate the import path and z-sorting behavior. Early delivery of test sprites (even before the full pipeline doc is written) unblocks client work. Coordinate via the visualclient handoff — Araminta commits test sprites to client/assets/sprites/ on the visual branch; Stig pulls and verifies fit in entity_renderer.gd.

#538 (server) → #539 (server): Sequential within the server team. #538 refactors registration; #539 adds a new system in the correct location. Dudley should complete and merge #538 before starting #539.

#542 (copy) → server golden tests: After #542 renames all line IDs, the server golden test fixtures in server/tests/ may reference old line IDs (e.g., the-terminal_d_039). Run make pre-pr (which includes the content cross-reference validation and fixture staleness check) after #542 merges. If golden tests fail, the server team updates fixtures with make golden-update.

Sprint Completion Proof

The sprint is complete when all of the following are observable:

  1. DialogueResponse closes the loop: Player opens dialogue with any NPC, selects response option 1 or 2 (non-confrontation), and the NPC delivers a contextually appropriate follow-up line. No silent no-op on option selection. Observable in-game or via the test client replay.

  2. Trust-gated gossip unlocks progressively: A player with KnowsOf confidence on a target NPC receives different (more forthcoming) dialogue lines than a player with Suspects confidence. Observable via the line previewer CLI or a gauntlet test room. The same NPC gives Surface-tier lines on first contact and Real-tier lines after investigation.

  3. No line repeats within 1 game-hour: The player can initiate dialogue with the same NPC 5+ times in quick succession and observe that no dialogue line_id repeats. Observable via the WRONG button capture or server logs.

  4. Zone_id lookup is O(1): game_state.gd apply_snapshot() no longer contains the linear tile scan for zone_id (lines 249-252 removed). current_zone_id populates correctly. Confirmed by code review + existing client tests passing.

  5. Sprite camera angle: At least one entity sprite and one wall sprite are rendered at -72.5° from horizontal and display correctly in the Godot client without z-sorting artifacts. Observable in the rendering scene.

  6. Line ID migration complete: make pre-pr passes with no content validation errors. No YAML file under content/ contains line IDs with the old {location_slug}_ prefix. Observable via CI.

Test Plan Alignment (D-030)

Sprint 16 is in the Sprint 3-4 integration phase per D-030 test priorities.

  • #539 (DialogueResponse handler): New system requires an integration test: player sends DialogueResponse { response_id }, assert DialogueResponseBuffer is populated with a follow-up line. Use existing test harness pattern from dialogue.rs game_loop tests.
  • #171 (Trust-gated gossip): Requires a unit test: initialize player KG with KnowsDetails on target, run process_talk_interaction, assert a Secret-tier line is selected. Mirror with Suspects confidence, assert only Surface-tier lines are selected.
  • #338 (Line variety tracker): Requires a regression test: send Talk 10 times to same NPC within 600 ticks, assert no line_id appears twice.
  • #543 (O(1) zone lookup): Code-change-only; existing client tests cover apply_snapshot() behavior. Add assertion that current_zone_id is non-empty when the player is on a zone-tagged tile.
  • #542 (line ID rename): Covered by make pre-pr content cross-reference validation (CI #464).

PR Merge Order Recommendation

To minimize merge conflicts and test failures:

  1. copy #542 — no code dependencies, merge first to unblock golden test validation
  2. server #538 — plugin refactor, isolated change
  3. server #171 and #338 — parallel, both isolated from #539
  4. server #539 — depends on #538 being merged
  5. visual #541 — can merge any time, gates #540
  6. client #543 — standalone, merge any time
  7. client #540 — merge after #541 lands