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>
5.7 KiB
title, description, type, status, sprint, team
| title | description | type | status | sprint | team |
|---|---|---|---|---|---|
| Sprint 20 — Joint Briefing | Triangle configuration, social site schema, client refactor coordination | sprint | archived | 20 | joint |
Sprint 20: Shape — Joint Coordination
Goal: The social site template system gains its foundational schema; triangles become generatable and observable as escalating tensions; the client gains save/load UI and code quality improvements.
Pre-Sprint Decisions
No blocking pre-sprint decisions are required. All selected tickets have their upstream decisions confirmed.
| Decision | Status | Impact |
|---|---|---|
| D-087 (v0.1 triangle configuration) | Confirmed | Server #106/#107/#250 must produce T1-T5 triangle types |
| D-089 (self-contained forks, no cascade) | Confirmed | No cross-triangle state in TriangleDef or TriangleState |
| D-025 (social site as atomic template unit) | Confirmed | Server #163/#164/#165 schema shapes |
| D-020 (Godot = pure renderer) | Confirmed | Client refactors #557-#560 are motivated by this |
One open question to monitor:
- Q-028 (line ID collision) — resolved by D-084 (dual-namespace scheme), but the
RoleCounterimplementation is referenced in D-084 as a requirement forserver/src/content/npc_slug.rs. Ticket #163 (role definition schema) should create theserver/data/templates/directory structure; confirm with server team whether the slug counter module belongs in this sprint or the next.
Sprint Completion Proof
The sprint is done when all of the following are observable:
-
Template schema compiles and round-trips:
cargo test -p server -- templatepasses. A YAML file atserver/data/templates/sample_role.yamldeserializes cleanly into aRoleSchemastruct and re-serializes with identical content. -
Triangle generation produces valid state:
cargo test -p server -- trianglepasses. A 4-NPC test world with 2TriangleDefentries produces 2TriangleStatecomponents with valid role assignments and tension values within the configured range. -
Triangle escalation fires events: A unit test simulates 60 ticks on a triangle configured to escalate at tick 50, asserts
TriangleCrisisEventwas emitted at the correct tick. -
Single-ownership model serializes: A world with 2 templates and a cross-reference survives a save/load round-trip:
TemplateOwnershipcomponents andTemplateReferenceMapentries are identical before and after. -
Refactors don't regress tests:
make ci-clientpasses with #557-#560 merged.game_state.apply_snapshot()contains no conditional accumulation logic.dialogue_box.gdhas zero direct references toGameStateorAudioManager.main.gdis under 350 lines. -
District layout design decided: #153 produces a confirmed D-record specifying: complete district topology (how terminal, bar, smuggling corridors, and gate connect), tile dimensions per zone, access topology, and sightline constraints. Unblocks #155 (hand-crafted location authoring) and #188 (triangle instantiation).
Test Plan Alignment (D-030)
Sprint 20 is Phase 3+ territory (D-030 sub-decision #8: Phase 3 = sprint 5+: CauseChain verification + divergent snapshots). The new template/triangle system introduces the first simulation structures that will eventually require CauseChain verification.
| Ticket | Test scope | Priority |
|---|---|---|
| #163 | Unit: YAML round-trip, constraint validation | High |
| #164 | Unit: spec validation, tile count range | High |
| #165 | Unit: ownership component, reference map | High |
| #106 | Unit: triangle YAML round-trip, conflict validation | High |
| #107 | Unit: constraint satisfaction, minimum 2 triangles | High |
| #250 | Unit: escalation timing, crisis event emission, resolve command | High |
| #557-#560 | Regression: existing test suite must remain green | Medium |
| #153 | Design discussion: district layout confirmed as D-record | High |
The triangle system's TriangleCrisisEvent is the first event candidate for CauseChain integration. Do not wire CauseChain this sprint — but structure the event type so it can carry a CauseChain field in a future sprint without breaking callsites.
Cross-Team Integration Points
| Server ticket | Client dependency | Notes |
|---|---|---|
#165 (TemplateOwnership serialization) |
None this sprint | Adds fields to SaveStateV1 — no client protocol change needed until template data is rendered |
#250 (TriangleCrisisEvent in ObserverSnapshot) |
None this sprint | Event added to snapshot schema as stub — client rendering of triangle state is Sprint 21+ |
| Planning ticket | Downstream impact | Notes |
|---|---|---|
| #153 (district layout design) | Unblocks #155, #188 | Layout decisions feed into Sprint 21 hand-crafted location authoring and triangle instantiation |
No live cross-team protocol dependencies this sprint. Server and client work in parallel.
Deferred to Sprint 21
The following tickets are natural Sprint 21 candidates once this sprint's foundation lands:
- #166 (Template-to-instance mapping) — instantiate templates into the world; requires #163+#164+#165
- #161 (Template instantiation engine) — full NPC spawn from template; requires #163+#164+#165+#166
- #159 (Tier 2 template definition format) — YAML schema for the full template document; blocked by #163
- #108 (Cross-template triangle generation) — requires #106+#107
- #109 (Triangle validation) — quality checks on generated triangles; requires #107
- #155 (Hand-crafted location authoring) — requires #153 (station district layout design), which is being resolved this sprint on the planning branch