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>
93 lines
4.6 KiB
Markdown
93 lines
4.6 KiB
Markdown
---
|
|
title: "Sprint 22 — Joint Briefing"
|
|
description: "Fog regression fix coordination, triangle pressure threshold, entanglement config sync"
|
|
type: sprint
|
|
status: archived
|
|
sprint: 22
|
|
team: "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:
|
|
|
|
1. **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.
|
|
|
|
2. **Production world boots.** Start the server without the `gauntlet` feature (or with a `--production` flag). The server logs show 17+ NPC entities spawned from `content/campaigns/main/`. No panic. No assertion failures.
|
|
|
|
3. **Triangles exist.** After production boot, a debug query (or test) confirms 5 `TriangleState` entities: 3 flagged as active forks, 2 as passive tensions. All have valid NPC role assignments.
|
|
|
|
4. **Contamination fires.** A test running 1801+ ticks asserts `ContaminationActive` is set and at least one `TriangleState::pressure > 0`.
|
|
|
|
5. **Seed determinism holds.** Two server boots with the same `world_seed` produce identical `EntanglementConfig` values. Different seeds produce different values.
|
|
|
|
6. **CI green.** `make ci` passes 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`):
|
|
|
|
1. Server PRs (#565, #567, #509, #512) — merge first, no client/visual conflicts.
|
|
2. Server PR (#176 → #188 → #254 chain) — merge when chain is complete.
|
|
3. Client PR (#569 fog fix) — merge after server PRs are in.
|
|
4. Client PR (#175 + #178 seed config) — can merge alongside #569.
|
|
5. Visual PR (#563 fog tuning) — merge last, after client #569 is in main.
|
|
6. CI PR (#568 symlink removal) — merge anytime, no conflicts.
|