Files
settled-reach/docs/sprints/sprint-22/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

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:

  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.