Adds directive to focus on client-server integration tests landing from Sprint 5, push for proper test harnesses, a dedicated test map for routing/edge cases, and edge case coverage over happy-path volume. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
4.3 KiB
Hoshe - Project Briefing
Last updated: 2026-02-11
Current Project State
The Settled Reach: top-down immersive sim, single-character perspective, asymmetric information core mechanic, Rimworld-style storyteller. 40 confirmed decisions, 17 discussion rounds + 1 workshop complete. Engine selected (D-020). Vertical slice defined (D-027). v0.1 Content Gap Analysis Workshop complete.
Decisions Relevant to Your Role
Read decisions/architecture.md (D-010, D-020, D-030) and decisions/perception.md (D-011, D-017, D-018). Key decisions:
- D-010: Information boundaries — testable? Can we verify information never leaks?
- D-020: MessagePack serialization — correct round-trip? No data loss at protocol boundary?
- D-027: Vertical slice success criteria (30-min runway, divergent playthroughs, emergent discovery)
- D-030: Testability architecture (hybrid Rust tests, gdUnit4, three-layer IPC, CauseChain)
Open Questions Assigned to You
None assigned.
Current Priorities
ATTENTION — Integration tests are landing and coverage matters. The client branch just merged into main with a real client-server integration test (#411) — spawns a live server, connects via TCP, validates the full movement and interact pipeline end-to-end. The product is tested when it is tested. Pay close attention to these integration tests: verify they run, verify they pass, verify they cover what they claim. When new integration tests land, that is the ground truth for product quality — not plans, not stubs.
Comprehensive test coverage is the priority. Push for:
- Proper test harnesses — reusable fixtures that spin up server+client pairs, manage lifecycle, and tear down cleanly. Tests should be easy to write so people actually write them.
- A dedicated client-server test map — a minimal, purpose-built map designed to exercise routing, pathfinding edge cases, interaction boundaries, visibility transitions, and protocol correctness. This map should NOT depend on content generators or YAML loading — it exists purely to test the mechanical contract between client and server.
- Edge case coverage over happy-path volume — test what happens at boundaries: malformed packets, disconnects mid-tick, entities at map edges, interactions at max range, simultaneous inputs, tick desync scenarios.
- Don't get hung up on content generators — content loading has its own test surface. Integration tests should isolate the transport and simulation loop from content variability.
ACTIVATED. Vertical slice test plan preparation:
- Write test plans for D-024 (NPC generation — verify 10 axes present, triangles formed)
- Write test plans for D-025 (template instantiation — verify single-ownership, reference links carry metadata)
- Write test plans for D-026 (simulation tiers — verify eviction timing, tier transition correctness)
- Write test plans for D-027 success criteria (30-min runway, divergent playthroughs, emergent discovery)
- Write test plans for D-028 (dialogue system — verify tag filtering, trait modifiers, layer activation)
- Write test plans for D-035 (converged tag taxonomy — verify 4-layer filter pipeline: access → situation → trust → mood+topic)
- Write test plans for D-033 (entity color — verify color derivation from relationship state, transition timing)
- Write test plans for D-034 (THE FRIEND — verify ECS component integrity, contradiction event detection)
All test plans due BEFORE implementation begins.
Development Workflow
See docs/DEVOPS.md for full procedures. Your key targets:
make test— run all tests (server + client)make test-server— Rust unit + integration testsmake test-client— gdUnit4 tests (headless runner pending)make lint— run all lintersmake ci— full CI pipeline locally (lint → build → test)- Server tests:
server/(inline#[cfg(test)]+tests/directory per D-030) - Client tests:
client/(gdUnit4 per D-030) - Cross-boundary tests:
tests/(IPC fixtures, serialization round-trips) - Test caches:
.cache/(gitignored, cleared bymake clean)
Key Documents
- decisions/ - domain-split decision files (see decisions/README.md for index)
- docs/DEVOPS.md - build, test, lint, CI procedures
- docs/discussions/ - archived rounds
- TEAM.md - team roster