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>
113 lines
6.3 KiB
Markdown
113 lines
6.3 KiB
Markdown
---
|
|
title: "Sprint 10 — Server Briefing"
|
|
description: "Gauntlet room expansion, hub teleport action, replay loading, content scaling test"
|
|
type: sprint
|
|
status: archived
|
|
sprint: 10
|
|
team: "server"
|
|
---
|
|
|
|
# Sprint 10: Prove — Server Tasks
|
|
|
|
**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.
|
|
|
|
**Branch:** `server`
|
|
**Agents:** Dudley (simulation), Tyre (arch review), Hoshe (QA)
|
|
|
|
---
|
|
|
|
## Carry-over from Sprint 9
|
|
|
|
| # | Title | Status | Notes |
|
|
|---|-------|--------|-------|
|
|
| #491 | Hub teleport action (PlayerAction::TeleportToHub) | backlog | Targeted for Sprint 9, slipped due to #487 dependency completing late. Unblocked as of sprint close. |
|
|
| #483 | Test client replay loading + tick-scheduled sending | backlog | Critical for scripted Gauntlet testing. Targeted Sprint 9, slipped. Unblocked (#480 done). |
|
|
| #500 | Content scaling test (baseline + extra NPC comparative) | backlog | Targeted Sprint 9, deferred. Unblocked (#489 done). |
|
|
|
|
---
|
|
|
|
## New Tickets
|
|
|
|
| # | Title | Blocked by |
|
|
|---|-------|------------|
|
|
| #491 | Hub teleport action (PlayerAction::TeleportToHub) | #487 (done) |
|
|
| #483 | Test client replay loading + tick-scheduled sending | #480 (done) |
|
|
| #498 | Gauntlet rooms 4-7 (Interaction Gallery, Fog Theater, Crowd Plaza, Dialogue Room) | #487 (done) |
|
|
| #500 | Content scaling test (baseline + extra NPC comparative) | #489 (done) |
|
|
| #514 | blocked_entities debug field on ObserverSnapshot | — |
|
|
| #519 | Walk-away NPC reaction — server-side Phase 2 (animation shift, routine change) | #427 (done) |
|
|
| #520 | Confrontation world response — server-side trigger | — |
|
|
|
|
Use `db/connectors/ticket show <id>` for full details.
|
|
|
|
---
|
|
|
|
## Key Decisions
|
|
|
|
- `decisions/architecture.md` — D-010 (deterministic simulation), D-026 (100ms tick budget), D-041 (knowledge graph data model)
|
|
- `decisions/perception.md` — D-059 (fog/shader five layers), D-060 (cognitive delay), D-063 (confrontation world response), D-064 (walk-away three phases)
|
|
- `decisions/scope.md` — D-038 (audio in v0.1 scope)
|
|
|
|
---
|
|
|
|
## Notes
|
|
|
|
**#491 — Hub teleport action**
|
|
- Existing: `server/src/test_world/rooms/hub.rs` for the hub spawn location. `PlayerAction` enum lives in `server/src/bridge/`.
|
|
- Deliver: `PlayerAction::TeleportToHub` variant. On receipt: move player entity to hub spawn tile, clear dialogue/monologue/interaction buffer. Does NOT affect room state, inventory, game time, or knowledge graph. Reject the action with a log warning on non-Gauntlet maps.
|
|
- Integration: Client #501 depends on this — ship it first half of sprint.
|
|
|
|
**#483 — Test client replay loading**
|
|
- Existing: `tooling/test-client/src/` has `main.rs`, `golden.rs`, `replay.rs` (stub). The `replay.rs` module exists but the loading logic was deferred.
|
|
- Deliver: Load a JSONL replay file (one JSON array per tick), send `PlayerInput` at correct tick timing. Target: `tooling/test-client/src/replay.rs`.
|
|
- Integration: Enables scripted Gauntlet testing end-to-end — unblocks the cross-room test scenarios in later sprints.
|
|
|
|
**#498 — Gauntlet rooms 4-7**
|
|
- Existing: `server/src/test_world/rooms/` has `hub.rs`, `inventory_warehouse.rs`, `occlusion_corridor.rs`, `pause_chamber.rs`. The `mod.rs` wires them together.
|
|
- Deliver: Four new rooms — Interaction Gallery (24x20, 5 entities, D-057), Fog Theater (44x32, 4 entities, D-059), Crowd Plaza (32x32, 15 entities), Dialogue Room (28x20, 4 entities, D-041). Follow the pattern of existing room modules. Each room must have constants in `server/src/test_world/constants.rs`.
|
|
- Integration: Unblocks #506 (cross-room transition tests) in a future sprint.
|
|
|
|
**#500 — Content scaling test**
|
|
- Existing: The baseline test infrastructure is in place post-#489. Content packs are in `server/src/content/`.
|
|
- Deliver: A test that runs the baseline NPC pack then the same scenario with additional NPCs, asserts tick timing stays within D-026 budget and behavior is unchanged for original NPCs.
|
|
- Integration: Feeds into CI perf baseline (#499) which CI team handles.
|
|
|
|
**#514 — blocked_entities debug field**
|
|
- Existing: `ObserverSnapshot` in `server/src/bridge/`. LOS computation is in `server/src/perception/`.
|
|
- Deliver: Add `blocked_entities: Vec<StableId>` (or `Option<Vec<StableId>>`) to `ObserverSnapshot`. Feasibility confirmed at ~300 tile lookups/tick (R2-OQ-05). Debug-only field; `#[serde(default)]` so client gracefully ignores on older snapshots.
|
|
- Integration: Improves test client debug output. Standalone, no cross-team dependency.
|
|
|
|
**#519 — Walk-away NPC reaction Phase 2**
|
|
- Existing: Phase 1 (client fade, #437) and Phase 3 (KG recording, #427) are done. Phase 2 is the missing server-side piece.
|
|
- Deliver: On `PlayerAction::WalkAway` (or dialogue exit event), server triggers: (1) target NPC shifts animation tier to Tier 2 (D-047), (2) NPC routine deviation is recorded in their state machine. D-064 Phase 2 scope.
|
|
- Integration: Standalone server-side work. No client changes required.
|
|
|
|
**#520 — Confrontation world response**
|
|
- Existing: Confrontation delivery is wired through dialogue system. D-063 specifies the world response.
|
|
- Deliver: On confrontation delivery: (1) target NPC shifts to Tier 2 animation (D-047 animated tier), (2) NPC relationship state decremented (affects D-033 color which client #521 renders), (3) monologue spike event emitted. Three separate effects, all server-authoritative.
|
|
- Integration: Client #521 blocked by this — complete #520 first half of sprint.
|
|
|
|
---
|
|
|
|
## Dependency Chain
|
|
|
|
```
|
|
#483 (replay loading) — standalone, parallel
|
|
#491 (hub teleport server) → #501 (hub teleport client UX, cross-team)
|
|
#498 (Gauntlet rooms 4-7) → #506 (cross-room transitions, future sprint)
|
|
#500 (content scaling) → #499 (perf baseline, CI team)
|
|
#514 (blocked_entities) — standalone, parallel
|
|
#519 (walk-away phase 2) — standalone, parallel
|
|
#520 (confrontation world response) → #521 (D-033 color shift, client team)
|
|
```
|
|
|
|
---
|
|
|
|
## PR Workflow
|
|
|
|
When ready to submit, create a PR with `tea` CLI. All flags are required to avoid TTY prompts (see CLAUDE.md "Gitea access" section):
|
|
|
|
```bash
|
|
tea pr create --repo jpmschweitzer/settled-reach --login schweitz --title "feat(simulation): sprint 10 prove — server" --description "body" --base main --head server
|
|
```
|