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>
4.6 KiB
title, description, type, status, sprint, team
| title | description | type | status | sprint | team |
|---|---|---|---|---|---|
| Sprint 22 — Joint Briefing | Fog regression fix coordination, triangle pressure threshold, entanglement config sync | sprint | archived | 22 | joint |
Sprint 22: Wire — Joint / Integration
Goal: Fix the fog regression, wire the authored Sova content into a production population and triangle set, and activate the contamination pacing layer that gives the vertical slice its 30-minute shape.
Agents: All implementation agents (Dudley, Tyre, Hoshe, Stig, Araminta, Justine)
Pre-Sprint Actions
These must happen at sprint start, before implementation tickets begin:
| Action | Owner | Blocks |
|---|---|---|
| Resolve Q-017 (triangle pressure threshold) | Gestalt + Paula (planning) | #254 |
Confirm struct name for EntanglementConfig |
Dudley + Stig sync | #175, #176 |
Confirm world_seed field in startup IPC message |
Tyre | #175, #178 |
If Q-017 is not resolved within the first two days of the sprint, implement #254 with a CONTAMINATION_DELAY_TICKS = 1800 timer fallback and a CONFRONTATION_THRESHOLD = 75 constant placeholder. Do not block the sprint on the discussion.
Cross-Team Dependencies
| Dependency | Direction | Notes |
|---|---|---|
EntanglementConfig struct definition |
Server (#176) → Client (#175) | Server defines, client adds seed-carrying protocol field |
world_seed in startup IPC message |
Client (#175) → Server (#176) | Client sends seed; server uses it to seed SimRng and sample EntanglementConfig |
| Fog architecture fixed | Client (#569) → Visual (#563) | Araminta must not touch fog.gdshader until Stig's #569 is in review |
Sprint Completion Proof
The sprint is done when all of the following are observable:
-
Fog renders correctly. Boot the client, walk around the Gauntlet. The forward cone has a smooth gradient edge (no tile-stepping). Tiles left behind the player show underlying art at ~25-30% fog overlay. Never-visited tiles are solid near-black. Araminta's zone temperature tints are visible in previously-explored areas.
-
Production world boots. Start the server without the
gauntletfeature (or with a--productionflag). The server logs show 17+ NPC entities spawned fromcontent/campaigns/main/. No panic. No assertion failures. -
Triangles exist. After production boot, a debug query (or test) confirms 5
TriangleStateentities: 3 flagged as active forks, 2 as passive tensions. All have valid NPC role assignments. -
Contamination fires. A test running 1801+ ticks asserts
ContaminationActiveis set and at least oneTriangleState::pressure > 0. -
Seed determinism holds. Two server boots with the same
world_seedproduce identicalEntanglementConfigvalues. Different seeds produce different values. -
CI green.
make cipasses on all branches. No regressions.
Test Plan Alignment (D-030)
Sprint 22 is in D-030 Phase 2 (sprint 3-4 scope: integration tests + information boundary negative tests). The new tests in this sprint:
- #176: Integration test — production boot spawns 17+ NPCs. (Phase 2 integration test)
- #188: Assertion test — 5 triangle entities with correct classifications post-boot. (Phase 2 integration test)
- #254: Timer test — 1801-tick simulation asserts
ContaminationActive. (Phase 2 integration test) - #509: Fuzzy test — 50-seed map invariant sweep. (Phase 2, borderline Phase 3)
- #178: Determinism test — same seed = same
EntanglementConfig. (Phase 1 determinism, retroactive)
Hoshe owns acceptance test definition for #176, #188, #254. Coordinate with Dudley on world setup for integration tests — reuse the AppBuilder pattern from existing integration tests in server/tests/.
Open Questions
| ID | Question | Blocks | Action |
|---|---|---|---|
| Q-017 | Triangle pressure threshold | #254 | Resolve at sprint start. Fallback: timer + constant if unresolved in 2 days. |
| Q-020 | Multi-entity collision resolution | none this sprint | Tracked, not blocking. |
PR Merge Order
To avoid conflicts on shared files (fog.gdshader, bridge/types.rs):
- Server PRs (#565, #567, #509, #512) — merge first, no client/visual conflicts.
- Server PR (#176 → #188 → #254 chain) — merge when chain is complete.
- Client PR (#569 fog fix) — merge after server PRs are in.
- Client PR (#175 + #178 seed config) — can merge alongside #569.
- Visual PR (#563 fog tuning) — merge last, after client #569 is in main.
- CI PR (#568 symlink removal) — merge anytime, no conflicts.