New top-level seed module that owns every deterministic-RNG primitive: - splitmix64 — the one canonical mixer (was duplicated as a private fn in simulation/rng.rs; EntityRng now imports the shared one, no behavior change) - AtlasRng — moved here from atlas/rng.rs (it is a generation-RNG primitive, not atlas-specific); atlas now depends on seed, not the reverse - SeedDomain — append-only domain tags (Body/Layer1Topography/Layer3Settlement/ Layer4Quarter/Block/Npc) for collision-proof per-domain seed separation - SeedChain — root(world_seed) → derive(domain, id) → atlas_rng()/seed(), per the D-224 formula splitmix64(self ^ splitmix64(domain)) ^ splitmix64(id) Structural move only — SeedChain is not yet threaded through the cascade callers (skeleton_gen still uses ad-hoc wrapping_add pre-mixing); that is the next step. Unit tests cover the splitmix64 known-vector, avalanche, determinism, domain/id separation, and chain composition. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
22 lines
598 B
Rust
22 lines
598 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 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;
|