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>
177 lines
7.5 KiB
Markdown
177 lines
7.5 KiB
Markdown
---
|
|
title: "Sprint 10 — Joint Briefing"
|
|
description: "Gauntlet expansion, audio architecture wiring, client UX polish carry-overs"
|
|
type: sprint
|
|
status: archived
|
|
sprint: 10
|
|
team: "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_plate` tile 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-server` includes the content scaling test: baseline run passes, extra-NPC comparative run stays within D-026 tick budget
|
|
|
|
**Performance baseline**
|
|
- `make perf-baseline` runs without error and produces `tests/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 sends `ResumeSimulation`
|
|
|
|
**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 `audio` branch under `client/audio/`
|
|
- `AudioManager` registers 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-pr` in <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.rs` stub exists in `tooling/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.
|
|
|
|
```bash
|
|
# 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>
|
|
```
|