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

3.6 KiB

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:

tea pr create --repo jpmschweitzer/settled-reach --login schweitz --title "feat(client): sprint 38 client" --description "body" --base main --head sprint-38/client