Files
settled-reach/docs/sprints/sprint-2/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.1 KiB

title, description, type, status, sprint, team
title description type status sprint team
Sprint 2 — Joint Briefing Shadowcasting algorithm selection, ObserverSnapshot v2 schema, knowledge graph integration sprint archived 2 joint

Sprint 2: See — Joint Tasks

Goal: Fog of perception working through the bridge — server computes LOS visibility, client renders fog.

Branches: server + client (merge to main for integration)

Design Tasks

# Title Owner Blocks
#359 Resolve Q-018: shadowcasting algorithm selection server (Tyre, Dudley) #110
#360 Resolve Q-019: entity ID stability joint (Tyre, Dudley) #130 (partially resolved by #362)
#358 Design ObserverSnapshot v2 schema joint (Tyre) #112, #113, #25

Knowledge Graph Integration Tickets (from Workshop #351, D-041)

# Title Priority Est. Blocks
#366 Observer snapshot knowledge integration critical 1d #356
#368 Knowledge vocabulary for v0.1 content high 0.5d #309

#366 integrates KnowledgeGraph queries into ObserverSnapshot: entity color from relationship state + remembered entities as ghosts. Assign to Oscar to avoid blocking Dudley on server critical path.

#368 provides the content authoring vocabulary from D-041 Appendix A, unblocking Mellanie on #309.

Integration Tickets

# Title Blocked by
#356 Fog data through bridge #112, #113, #366
#357 Sprint 2 proof: fog of perception #356, #116, #25

Use db/connectors/ticket show <id> for full details.

Key Decisions

  • decisions/architecture.md — D-020 (IPC protocol, ObserverSnapshot), D-010 (information boundaries), D-041 (Knowledge Graph Data Model)
  • decisions/perception.md — D-011 (fog non-negotiable), D-015 (vision cone)
  • docs/workshops/knowledge-graph-information-boundaries/round2-synthesis.md — canonical reference for D-041

Sprint Completion Proof

"Walk into a room and see the fog" — the sprint is done when:

  1. Player character moves on screen (Sprint 1 baseline, maintained)
  2. Camera follows the player character (no panning)
  3. Tiles render from snapshot data (floor + walls visible)
  4. Entities appear/disappear based on line-of-sight
  5. Fog covers areas outside the vision cone
  6. Walking behind a wall hides what's on the other side
  7. Walking around a corner reveals what's there
  8. Entity color reflects relationship state from knowledge graph (#361, #366)
  9. Remembered (not visible) entities appear as ghosts with faded color (#361, #366)

Knowledge graph proof: Observe an NPC, walk away, return. The NPC appears as a ghost at last-known position while not in LOS. Color shifts based on relationship state (green = known, amber = flagged).

This is the first moment the game feels like an immersive sim — you can't see behind walls, and that constraint IS the game.

Notes

  • #81 (done): End-to-end connection test completed in Sprint 1. IPC bridge is operational.
  • #358 (ObserverSnapshot v2): The current ObserverSnapshot (server/src/bridge/types.rs) only has tick + entities: Vec<VisibleEntity>. Sprint 2 needs: tile visibility data, facing direction, time-of-day. Design the expanded schema before both teams start, so the contract is clear.
  • #356 (Fog data through bridge): Server #112 produces visibility-filtered snapshots. Client #113 consumes them. The bridge already handles MessagePack serialization — new fields just need to be added to both sides.
  • Test plan per D-030 Phase 1: Sprint 2 aligns with D-030's "Phase 1 (sprint 1-2): test infra + collision/pathfinding/time." Collision tests exist (movement.rs). Shadowcasting (#110) needs unit tests for known LOS scenarios (corridor, corner peek, wall block). Vision cone (#111) needs sector boundary tests.

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):

tea pr create --repo jpmschweitzer/settled-reach --login schweitz --title "feat(scope): description" --description "body" --base main --head <branch>