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

116 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.