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>
7.5 KiB
title, description, type, status, sprint, team
| title | description | type | status | sprint | team |
|---|---|---|---|---|---|
| Sprint 10 — Joint Briefing | Gauntlet expansion, audio architecture wiring, client UX polish carry-overs | sprint | archived | 10 | joint |
Sprint 10: Prove — Joint / Integration
Goal: Expand the Gauntlet test suite with new rooms and cross-room scenarios, wire the audio architecture end-to-end, and complete client UX polish from Sprint 9 carry-overs — proving the full system holds together.
Agents: All implementation agents (Dudley, Stig, Hoshe, Tyre, Justine, Inigo)
Pre-Sprint Decisions
No new decisions are required before Sprint 10 begins. All sprint tickets operate within confirmed decisions. Items to monitor:
| Item | Status | Needed by |
|---|---|---|
| Relationship state in ObserverSnapshot | Confirm with server team that relationship state is carried per entity in the snapshot (Q-019 partial resolution) | #521 (D-033 color shift, client) |
| CI pipeline greenlight | Team Leader must confirm before #510 starts | #510 (Gitea Actions YAML, CI) |
| Server #491 merge timing | Client #501 is blocked on it — server should prioritize #491 in the first half of sprint | #501 (hub teleport UX, client) |
| Server #520 merge timing | Client #521 is blocked on it — server should ship #520 before sprint midpoint | #521 (confrontation color shift, client) |
Cross-Team Dependencies
Server #491 (hub teleport action)
→ Client #501 (hub teleport UX — Home key + fade)
Server #520 (confrontation world response)
→ Client #521 (D-033 color shift on confrontation)
Server #500 (content scaling test)
→ CI #499 (perf baseline — benefits from #500 data)
Server #498 (Gauntlet rooms 4-7)
→ #506 (cross-room transitions, deferred to Sprint 11)
Server #483 (replay loading)
→ Scripted Gauntlet testing (unblocks Sprint 11 automation)
Audio #327 (8 ambient + SFX assets)
→ Client AudioManager (automatic registration via directory scan — no client code change)
→ D-073 zone crossfade stub can be tested with real assets for the first time
Critical path: Server #491 → Client #501 and Server #520 → Client #521. Both server tickets need to merge before sprint midpoint to give client time to complete their dependent work.
Sprint Completion Proof
Sprint 10 is complete when all of the following are observable:
Hub teleport
- Pressing Home key in Gauntlet mode sends
TeleportToHub, player entity moves to hub spawn tile - 0.3s fade-to-black-and-back plays on teleport
- Dialogue/monologue/interaction buffer is cleared on teleport
- Non-Gauntlet maps: action is rejected server-side with log warning; client shows no effect
Room reset UX
reset_platetile type renders with amber color- 'Reset Room' verb appears in interaction menu when player faces reset plate
- On reset: 0.15s amber flash + "Systems recalibrated." monologue line plays
Auto-checklist tracking
- In test-client mode: checklist YAML loads, client evaluates ObserverSnapshot against conditions, verified items tick off automatically in HUD overlay
- Checklist HUD is absent in non-test-client Godot mode
Gauntlet expansion
- Server boots with Gauntlet content and all 7 rooms (existing 3 + new 4) load without panic
- Room constants for all 4 new rooms in
server/src/test_world/constants.rs - Room reset works correctly in new rooms (entity positions and fog reset to tick-0 state)
Content scaling
make test-serverincludes the content scaling test: baseline run passes, extra-NPC comparative run stays within D-026 tick budget
Performance baseline
make perf-baselineruns without error and producestests/perf/baseline.json(or equivalent)- Baseline file committed to repo
Replay loading
tooling/test-client --replay <file.jsonl>loads the file and sends PlayerInput at correct tick timing against a live server
Client UX polish
- Michroma font renders in all Labels/RichTextLabels in HUD and dialogue box
- WASD movement is mouse-relative (forward = toward cursor direction)
- Insert open sends
PauseSimulation, insert close sendsResumeSimulation
Confrontation system
- Confrontation delivery: target NPC shifts to Tier 2 animation, relationship state decrements, monologue spike fires (server)
- Client: entity D-033 tint fades to new relationship color over 0.5-1s on confrontation delivery
Audio
- 8 OGG files present in
audiobranch underclient/audio/ AudioManagerregisters all 8 at startup (log output confirms count)- Ambient loops play without audible seam
- Monologue chimes have no reverb (insert-tech aesthetic per D-074)
CI (if greenlit)
- Gitea Actions YAML committed to
.gitea/workflows/ - Commit tier runs in <2min on push
- PR merge gate wraps
make pre-prin <15min
Test Plan Alignment (D-030)
| D-030 Phase | Coverage | Sprint 10 Status |
|---|---|---|
| Phase 1 (infra) | Done Sprints 1-2 | — |
| Phase 2 (integration) | Done Sprints 3-5 | — |
| Phase 3 (CauseChain, divergent snapshots) | Gauntlet golden suite (#485, Sprint 9) | Expanding with rooms 4-7 |
| Replay / scripted testing | #483 (test client replay loading) | In scope |
| Performance regression baseline | #499 (make perf-baseline) | In scope |
| Content scaling | #500 (baseline + NPC pack comparative) | In scope |
| Pre-PR gate | make pre-pr (Sprint 9, done) |
Stable |
Open Questions to Resolve Early
- Q-019 (partial): Client-side entity StableId / relationship state in snapshot — Client #521 needs relationship state per entity in ObserverSnapshot. Server team should confirm scope before #521 starts. No formal Q-NNN resolution required — just a server team confirmation.
- CI pipeline greenlight (no Q-NNN) — #510 has an explicit "deferred until lead greenlights" note. Team Leader to confirm before CI team starts that ticket.
Sequence Recommendation
Days 1-3 (all teams in parallel):
- Server: start #491 immediately (no blockers). Priority — unblocks client #501.
- Server: start #483 (no blockers).
replay.rsstub exists intooling/test-client/src/. - Server: start #498 (no blockers). 4 new Gauntlet rooms; follow existing room pattern.
- Server: start #514 (small, standalone).
- Server: start #519 (standalone, #427 done).
- Client: start #502 (no blockers, #490 done).
- Client: start #503 (no blockers, #497 done).
- Client: start #517 (standalone).
- Client: start #526 (standalone).
- Client: start #518 (standalone).
- CI: start #499 (no blockers, #487 done).
- CI: start #515 (standalone, #464 done).
- Audio: start #327.
Days 4-6:
- Server: start #520 (no blockers). Priority — unblocks client #521.
- Server: start #500 (no blockers, #489 done).
- Client: #501 unblocks once server #491 merges.
Days 7-10:
- Client: #521 unblocks once server #520 merges.
- CI: #510 starts only after lead greenlight (may be later in sprint or deferred).
- All teams: verification against Sprint Completion Proof criteria.
PR Workflow
Each team submits their own PR from their branch. Integration is via merge to main. No joint branch — all tickets are single-team. The joint.md tracks integration readiness but does not produce a separate branch.
# Verify sprint assignment before PR
db/connectors/sprint status --team <team>
# Standard PR (all flags required — see CLAUDE.md)
tea pr create --repo jpmschweitzer/settled-reach --login schweitz \
--title "feat(<scope>): sprint 10 prove — <team summary>" \
--description "body" --base main --head <branch>