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.9 KiB
title, description, type, status, sprint, team
| title | description | type | status | sprint | team |
|---|---|---|---|---|---|
| Sprint 23 — Joint Briefing | Tile format coordination, debug command wire format, protocol version bump | sprint | archived | 23 | joint |
Sprint 23: Terrain — Joint / Integration
Goal: Build the walkable Sova world under the authored content, complete the storyteller engagement layer, and add the debug console — clearing the path to v0.1 integration in Sprint 24.
Agents: All implementation agents (Dudley, Tyre, Hoshe, Stig, Araminta)
Pre-Sprint Actions
These must happen at sprint start, before implementation tickets begin:
| Action | Owner | Blocks |
|---|---|---|
| Confirm tile format (character codes, row encoding, multi-z approach) | Dudley + Araminta sync (day 1–2) | #582, #583 — Araminta cannot start until format is published in types.rs |
| Confirm DebugCommandKind wire format (exact JSON/msgpack structure) | Dudley + Stig sync (day 1–2) | #581 — client dispatch serialization depends on this |
| Confirm PROTOCOL_VERSION bump: 17 → 18 | Dudley + Stig | #580 server + #581 client must land together |
Cross-Team Dependencies
| Dependency | Direction | Notes |
|---|---|---|
| Tile format spec | Server (#577) → Visual (#582, #583) | Dudley publishes format in types.rs; Araminta starts authoring same day |
| DebugCommandKind wire format | Server (#580) → Client (#581) | Stig cannot finalize protocol.gd encoding until Dudley publishes the enum |
| PROTOCOL_VERSION 17→18 | Server (#580) ↔ Client (#581) | Both must land in the same merge window; version mismatch crashes the connection |
| LOS wall margin | Server (#584) → Client (#585) | Client rendering change depends on server sending boundary tiles |
Housekeeping Done This Sprint
The following stale tickets were closed during sprint planning:
| # | Reason |
|---|---|
| #184 | Logistics hub template YAML was already complete in templates/logistics-hub.yaml |
| #339 | Protocol version handshake already implemented in Sprint 19 via #555/#556 |
| #143 | Superseded by richer #576 (tile-type layer with full spec) |
| #144 | Superseded by #577 (location loader is the v0.1 equivalent) |
| #145 | Superseded by richer #578 (chunk streaming with v0.1 full-preload mode) |
| #154 | Functional cluster spatial specs live in D-025 and D-093 — already done |
| #155 | Hand-crafted authoring is now #582/#583 with correct format and blocker |
| #157 | Gate corridor is covered by #583 (Last Shift + maintenance + gate) |
Sprint Completion Proof
The sprint is done when all of the following are observable:
-
Walkable world boots. Start the server in production mode (no gauntlet feature). It loads tile data from all four Sova locations (The Terminal, The Last Shift, maintenance corridors, gate corridor). No panic. WalkabilityMap populated from YAML — walls block movement, floors allow it.
-
Storyteller activates from player behavior. Run a test: spawn at The Terminal, observe Kael for 3000 ticks. EngagementRecord increments. After CONTAMINATION_DELAY_TICKS, activation_pass() fires and emits TriangleActivated for the hub-power or worried-partner triangle.
-
Debug console works end-to-end. Boot production game. Tilde key opens console. Type
status— returns contamination state and current tick. Typecontaminate— skips to contamination. Typetriangles— lists all TriangleState entities with their IDs and classifications. -
Debug console in settings. Open Settings menu. Debug Console toggle is visible. Disable it. Tilde key no longer opens console.
-
Speaker colors are identity-bound. Open a conversation with Kael, then end it. Open another conversation with Voss. Kael's color is consistent; Voss has a different color; neither color is position-based.
-
LOS boundary walls render. Walk up to a wall at the edge of vision. The wall tile is visible and distinct from fog rather than bleeding into the fog overlay.
-
CI green.
make cipasses on all branches. No regressions.
Test Plan Alignment (D-030)
Sprint 23 is Phase 2 integration territory (D-030 Phase 2: integration tests + information boundary tests):
- #576: Unit tests — TileKind round-trip in WalkabilityMap. Phase 1 (data structure).
- #577: Integration test — production boot loads tile data, WalkabilityMap is populated correctly. Phase 2.
- #578: Unit test — chunk load/unload at player boundary. Phase 1.
- #570–#572–#579: Integration test — 3000-tick simulation asserts EngagementRecord increments + TriangleActivated fires. Phase 2.
- #580/#581: Manual acceptance — debug console smoke test (status, contaminate, triangles). Phase 2.
- #584/#585: Visual regression test — add golden test for LOS boundary wall rendering. Phase 2.
Open Questions
| ID | Question | Blocks | Action |
|---|---|---|---|
| Q-052 | Storyteller hint delivery channels | #579 downstream consumers | Read for context but does not block Sprint 23. #579 emits TriangleActivated; consumers wired in Sprint 24. |
PR Merge Order
To avoid conflicts on shared files (bridge/types.rs, protocol.gd, PROTOCOL_VERSION):
- Server PRs (#576, #570, #571, #572) — no client/visual dependencies; merge first.
- Server PR (#577 tile format) — merge and notify Araminta immediately so visual authoring starts.
- Server PRs (#578, #579, #584) — merge in any order after their respective blockers.
- Server PR #580 (debug server) + Client PR #581 (debug client) — must land together. Coordinate merge timing. Both bump PROTOCOL_VERSION to 18.
- Visual PRs (#582, #583) — merge after server #577 is in main.
- Client PRs (#573, #574) — no dependencies; merge anytime.
- Client PR #585 (LOS wall margin) — merge after server #584 is in main.
Critical: #580 and #581 share the PROTOCOL_VERSION bump. Do not merge one without the other.