Files
settled-reach/tooling/econ-sim/src/lib.rs
T
jpmschweitzerandClaude Sonnet 4.6 5f4139bc9e feat(simulation): implement economics integration sprint — #810 #821 #822 #823
Implements the full D-180/D-181 economics pipeline:

**#810 — Event input port (D-180)**
- Add EconEvent struct with Target/Effect/Duration/Visibility variants
- Implement EventPort as typed input queue for external disruptions
- Apply events in simulation step; D-179 Test 3 now uses real shock injection

**#821 — Integrate econ-sim into server tick loop**
- Extract econ-sim as library crate (lib.rs + sim.rs, Cargo.toml [lib] section)
- Add Simulation stateful runner; step() advances one economy tick
- Add EconSimResource, EconStateResource (7 D-181 signals), tick_economy_simulation
- Economy loads once at startup; graceful no-op when systems.db absent
- Server advances economy 1 tick per 10 game ticks (D-031)

**#822 — Expose economy state over IPC bridge**
- Protocol version 20 → 21
- Add EconomySnapshot, EconNodeSnapshot wire types
- Add EconStateQuery PlayerAction variant; response in economy_snapshot field
- Add EconQueryBuffer resource + serve_econ_state_query system

**#823 — Economics debug commands**
- Add InjectEconEvent, SetEconParam, GetEconState to DebugCommandKind
- Add EconDebugEffect, EconParamKind enums
- SetEconParam mutates α/β at runtime (α/β promoted to pub const + Simulation fields)
- ALPHA and BETA constants threaded through step_inner/trade_step signatures

All 1147 unit tests pass; zero warnings.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 13:13:52 +02:00

31 lines
901 B
Rust

//! econ_sim — Settled Reach economics simulation library.
//!
//! Exposes the Layer 1+2+3 tâtonnement simulation as a reusable library crate.
//! The standalone `econ-sim` binary uses the same modules independently.
//!
//! ## Entry points
//!
//! - [`Simulation`] — stateful per-tick runner for server integration (#821).
//! Initialize once, call `step()` each economy tick.
//!
//! - [`model::run_with_events`] — batch runner (runs N ticks, returns TickRecords).
//! Used by the standalone binary and stability checks.
//!
//! ## Key decisions
//!
//! - D-178: Economic model architecture (Leontief + tâtonnement + agents)
//! - D-180: Event input port (`EconEvent`, `EventPort`)
//! - D-181: 7-signal vocabulary per active node
pub mod agents;
pub mod currency;
pub mod db;
pub mod events;
pub mod model;
pub mod prng;
pub mod seed;
pub mod trade;
mod sim;
pub use sim::Simulation;