Files
settled-reach/docs/sprints/sprint-38/server.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.3 KiB

Sprint 38: Depth — Server 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/server Agents: Dudley (dev), Tyre (arch), Hoshe (QA)

New Tickets

# Title Priority Blocked by
#899 District skeleton generator — Phase 1 implementation high #897
#885 Multiple baseline tests panic with Bevy Resource-does-not-exist medium
#892 Expand check-systems-db-stamp to cover naming helpers medium
#886 Generator polish: suffix monotony auto-fix + cultural-history prompting low

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

Key Decisions

  • decisions/architecture.md — D-110 (signed z-levels), D-108 (MobileChunk)
  • Generator data model: server/src/simulation/generator.rs defines the full type hierarchy

Notes

#885 — Bevy baseline panics (fix first)

  • 6 tests fail on clean main with Resource<X> does not exist panics. Confirmed not a sprint regression — present at commit f0465e40.
  • @hoshe assigned. This is the first ticket to close — other server work should not land on a broken test baseline.
  • Likely missing .init_resource::<T>() or .insert_resource(T::default()) calls in test setup.

#892 — Stamp expansion for naming helpers

  • tooling/check-systems-db-stamp only tracks generate_atlas.py source. The naming pipeline (gemma_naming.py, naming_core.py) is not covered — changes to naming helpers won't trigger stale-stamp detection.
  • Add these files to the GENERATOR_SOURCES dict in tooling/check-systems-db-stamp.
  • Mirror the change in the /pr-push skill's source-file watch list.

#886 — Generator polish (suffix monotony + cultural-history)

  • Follow-up to Sprint 37 #853. Two partial items remain:
    • §3 suffix monotony: gemma_naming.py detects clustering but doesn't auto-fix. Add retry logic.
    • §6 cultural-history prompting: explicit history context in the few-shot prompt for richer names.

#899 — District skeleton generator Phase 1 (BLOCKED by #897)

  • DO NOT start until the planning ticket #897 closes and the generation cascade D-records exist.
  • The data model in server/src/simulation/generator.rs is complete: DistrictSkeleton, BlockSkeleton, BlockPlacement, FloorZone, ZonePalette, etc. All generation logic is stubs.
  • Phase 1 scope: given a city entry from markers.json + planet_class + economy node, produce a filled DistrictSkeleton with real block assignments, setting types, zone palettes.
  • No chunk-level tile generation yet — skeleton structure only.
  • Key integration: chunk_streaming.rs consumes chunk data. The skeleton feeds into chunk fill (Phase 2, future sprint).

Dependency Chain

#885 (Bevy panics) → standalone, fix first
#892 (stamp expansion) → standalone
#886 (generator polish) → standalone
#899 (district skeleton) → blocked by #897 (planning)

PR Workflow

When ready to submit, create a PR with tea CLI:

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