Files
settled-reach/docs/sprints/sprint-38/client.md
T
jpmschweitzerandClaude Opus 4.6 6fb788d428 chore(meta): plan Sprint 38: Depth
Generation pipeline focus — map all layers from planetary heightmaps to
walkable tile environments, build bare-minimum free camera viewer, close
Sprint 37 test/infra debt. Character and apartment work formally parked
behind the full generation cascade.

13 tickets across 5 teams (planning: 1, server: 4, client: 5, copy: 1, ci: 2).
Added Write(docs/sprints/*) and Bash(mkdir) permissions for sprint planning.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-24 13:16:24 +02:00

72 lines
3.6 KiB
Markdown

# Sprint 38: Depth — Client Tasks
**Goal:** Map the generation pipeline from planetary heightmaps to walkable tile environments, formally park character/apartment work behind the full cascade, and close test/infra debt from Sprint 37.
**Branch:** `sprint-38/client`
**Agents:** Stig (dev), Tyre (arch), Hoshe (QA)
## New Tickets
| # | Title | Priority | Blocked by |
|---|-------|----------|------------|
| #898 | Free camera viewer — WASD pan + scroll zoom, implant/atlas/map access | high | — |
| #882 | Strip archetype-driven client code | medium | — |
| #879 | Revive fog state behavioral tests | medium | — |
| #867 | dialogue_box confrontation_monologue signal bug | medium | — |
| #871 | Pre-existing test failures — umbrella triage | medium | — |
Use `tooling/db/ticket show <id>` for full details.
## Key Decisions
- `decisions/architecture.md` — D-169 (implant UI components), D-170 (HUD visibility)
- Implant component library: `client/ui/implant/` (ImplantPanel, ImplantHeader, etc.)
- HUD layer manager: `client/scripts/autoloads/hud_groups.gd`
## Notes
**#898 — Free camera viewer (bare minimum, throwaway)**
- The rendering system is up in the air — this viewer is iterative/disposable. Do not over-engineer.
- Current camera is locked to `GameState.player_position` (`client/scripts/autoloads/game_state.gd:18`).
- Decouple: add a debug/observer mode where camera position is independent of player entity.
- Controls: WASD/arrow key pan, scroll-to-zoom. That's it.
- The observer needs access to: implants (D-169/D-170 UI system), atlas, and map. Wire up existing `HudGroups` app paths (`implant/map`, `implant/wiki/gttr`, etc.).
- No player entity needed. No server-side observer entity. Just a free camera over whatever tile data exists.
- Key files: `client/main.gd` (camera setup), `client/scripts/autoloads/game_state.gd` (player_position), `client/scripts/autoloads/hud_groups.gd` (implant app switching).
**#882 — Strip archetype client code**
- Follow-up to server #878 (done). `CharacterArchetype` trace is Phase 6 filler.
- Find all client references to archetype enums/types and remove them.
- #878 already removed the server side — client should have no remaining consumers.
**#879 — Revive fog state behavioral tests**
- `test_fog_sprint22.gd` was deleted in Sprint 37 (#870 parse-error cleanup).
- Contained unique behavioral tests: `EXP_EXPLORED` persistence after leaving LOS, grow-only bounds invariant.
- Rewrite against current `FogState` API. Prefer live Gauntlet testing over mocks per testing preferences.
**#867 — dialogue_box confrontation signal bug**
- `signal_fired` remains false after `_on_option_pressed(0)` on a confrontation option.
- `_start_confrontation_beat` likely not firing in headless test mode.
- Check signal wiring in `client/ui/dialogue_box.gd`.
**#871 — Pre-existing test failures umbrella triage**
- 13 suites affected. For each: investigate, determine if it's stale assertion or real regression, then either fix inline or create a child ticket.
- Per feedback rules: broken tests need a fix or a dated ticket, never a shrug.
## Dependency Chain
```
#898 (free camera viewer) → standalone, start immediately
#882 (strip archetype code) → standalone (#878 done)
#879 (fog tests) → standalone
#867 (signal bug) → standalone
#871 (test triage) → standalone, spawns child tickets
```
## PR Workflow
When ready to submit, create a PR with `tea` CLI:
```bash
tea pr create --repo jpmschweitzer/settled-reach --login schweitz --title "feat(client): sprint 38 client" --description "body" --base main --head sprint-38/client
```