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>
72 lines
3.6 KiB
Markdown
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
|
|
```
|