Address PR #145 review. Convert prosperity from f32 to integer basis points (matching the existing prosperity_bps, D-010 integer-only), removing both float-determinism bugs by construction: - New server/src/bps.rs: log10_floor (integer order-of-magnitude) + bps_to_f32 edge helper, with boundary tests. - city_context_reader: prosperity_baseline_bps (u32, 0-10000). role base + pop bonus (400*log10_floor, cap 1200) + symmetric noise via integer modulo (fixes the always-negative bug) + clamp [1000,9500]. No floats. - CityGenerationContext.prosperity_baseline -> prosperity_baseline_bps; updated the two test context builders. Not serialized — no wire break. - district_mix population_tier now uses log10_floor (same determinism bug class as the comment claimed to avoid). - Tests in bps + assert positive noise is achievable (the case the old test hid). cargo check/clippy --all-targets -D warnings clean; 1291 lib tests pass; fmt clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
24 lines
612 B
Rust
24 lines
612 B
Rust
// The Settled Reach - Simulation Server
|
|
// Rust/bevy_ecs simulation server for D-010 client-server architecture
|
|
|
|
pub mod atlas;
|
|
pub mod bookmark;
|
|
pub mod bps;
|
|
|
|
pub mod bridge;
|
|
pub mod cause_chain;
|
|
pub mod knowledge;
|
|
pub mod npc;
|
|
pub mod perception;
|
|
pub mod seed;
|
|
pub mod settings;
|
|
pub mod simulation;
|
|
pub mod storyteller;
|
|
pub mod tick_phases;
|
|
pub mod voice;
|
|
pub mod workers;
|
|
// test_world::reset is always compiled (used by simulation::input).
|
|
// Room definitions, constants, and setup_gauntlet are gated behind
|
|
// the "gauntlet" feature (default-on) to allow stripping from release builds.
|
|
pub mod test_world;
|