Files
settled-reach/docs/sprints/sprint-34/joint.md
T
jpmschweitzerandClaude Sonnet 4.6 9d9ea96be1 chore(meta): plan Sprint 34: Pulse
Close Phase 2 — wire econ-sim into game server tick loop, expose price
history and trade flows via implant insert panel, add economics debug
console commands for runtime event injection and parameter mutation.

New tickets: #821 (server tick integration), #822 (IPC bridge v21),
#823 (debug command handler), #824 (economics insert panel),
#825 (debug console econ commands). Existing: #810, #785, #811, #748,
#814, #695. 11 tickets total across server, client, copy, planning.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 16:20:29 +02:00

5.5 KiB
Raw Blame History

Sprint 34: Pulse — Joint Briefing

Goal: Close Phase 2 — wire the economics simulation into the live game, expose price history and trade flows in the implant, and make the economy observable and tweakable at runtime.


Pre-Sprint: Decisions and Schema

No blocking pre-sprint decisions required. All economic architecture decisions (D-178 through D-188) are confirmed. #810 (event port) is the technical gate for the full chain — it must be the first ticket the server team starts.

Item Owner Status
D-178: Economic Model Architecture decisions/economics.md Confirmed
D-179: Stability Acceptance Criteria decisions/economics.md Confirmed
D-180: Event Input Port decisions/economics.md Confirmed
D-181: Signal Vocabulary decisions/economics.md Confirmed
ObserverSnapshot v21 schema Server → client New this sprint (#822)

Sprint Ticket Map

Server (sprint-34/server)

#810 Event port implementation
  → #821 Integrate econ-sim into server tick loop
       → #822 Expose economy state over IPC (ObserverSnapshot v21)
       → #823 Economics debug command handler

Client (sprint-34/client)

#785 Star map: system population + GDP          (standalone)
#822 (server, blocker) → #824 Economics insert panel
#823 (server, blocker) → #825 Debug console econ commands

Copy (sprint-34/copy)

#814 Rail infrastructure corporation gap        (standalone)
#695 Overheard conversations — 24 zone types   (standalone, parallel)

Planning (sprint-34/planning)

#811 Brand layer design                         (early sprint)
#748 Phase 3 breakdown workshop                 (after server tickets in_progress)

Cross-Team Integration Points

ObserverSnapshot v21 (server → client)

  • Server: server/src/bridge/types.rs — add EconomySnapshot struct, bump PROTOCOL_VERSION to 21
  • Client: client/scripts/snapshot_handler.gd — parse economy_snapshot field, route to economics panel
  • Coordination: Server team defines the struct; client team consumes it. Server team ships #822 first; client team builds #824 with placeholder data in the meantime.

Debug command flow (both teams)

  • Server: server/src/bridge/types.rs — add InjectEconEvent, SetEconParam, GetEconState to DebugCommandKind
  • Client: client/ui/debug_console.gd — add econ inject, econ param, econ inspect command parsers
  • Coordination: Server team ships #823 before client team wires #825. Client team can build command parsing and help text independently; just gate the send path on #823 being merged.

Star map GDP (#785)

  • Client-only ticket. Check whether res://data/star_map_data.json already includes population and gdp fields. If not, update tooling/generate-star-map-data.py to include them from server/data/systems.db. This is a self-contained warmup — complete before #824.

Cascade Enforcement

No Phase 4 tickets. This sprint closes Phase 2 and initiates Phase 3 planning via #748 and #811. The following are explicitly out of scope and must not be started, designed, or discussed:

  • Character creation (#618, #619, #694, #606)
  • Tycoon starting states (#615)
  • Bookmark system (#614)
  • NPC personality surface area (#621)
  • Apartment generator (#617, #681)
  • Any ticket under Phase 4 epic #749

Phase 4 cannot start until Phase 3 delivers (Atlas of the Reach). Phase 3 planning workshop (#748) runs this sprint — but Phase 3 implementation tickets do not start until Sprint 35+.


Sprint Completion Proof

The sprint is done when a developer can do all three of the following in the running game:

  1. Open the implant economics panel — select any system, see live price data (price_current and price_trend for at least 6 commodities) updating in real time as the economy runs.
  2. Trigger a supply shock from the debug console — type econ inject <system_id> shock 0.5 200, observe the price_current values shift in the economics panel within a few ticks, then recover toward equilibrium over the next 200 ticks.
  3. Mutate α from the debug console — type econ param alpha 0.01, observe slower price adjustment in the panel; type econ param alpha 0.06, observe faster adjustment.

None of the above require a character. The economics panel and debug console can be exercised from the main game loop without entering the simulation world — they operate via the IPC bridge on whatever player session is active.


Test Plan

Phase alignment: Sprint 34 is Phase 2 delivery infrastructure. Test focus is economic state correctness over IPC, not simulation model correctness (that was Sprint 33 / D-179 stability tests).

Test Tier Owner
ObserverSnapshot v21 roundtrip — serialize/deserialize EconomySnapshot Tier 1 (fixture) Server
EconStateQuery → economy_snapshot present in next snapshot Tier 2 (bridge) Server
econ inject → DebugResponsePayload.success true + price shift observable Tier 2 (bridge) Server
Economics insert panel renders with fixture EconomySnapshot Tier 3 (client live) Client
Debug console parses econ inject without error Tier 3 (client live) Client
Star map popup shows population + GDP fields Tier 3 (client live) Client

Open Questions

None blocking implementation. One design question in-flight:

  • Q: Brand layer architecture (#811 planning) — not blocking Sprint 34 implementation work. Resolved by planning team this sprint; produces Phase 3 tickets for Sprint 35.