fix(simulation): address #843 review — seeding, atomics, API consistency
Review fixes from Hoshe + Tyre: - EntityRng seeding: splitmix64(seed) ^ splitmix64(id) instead of splitmix64(seed + id) — eliminates collision class where adjacent seeds produce identical streams - AtomicBool ordering: Relaxed → SeqCst for shutdown flag (correct on weakly-ordered architectures) - Worker Drop: join handles instead of detaching threads - Normalize stub API: remove ChunkGenWorker convenience wrappers, use .pool consistently across all 3 workers - trigger_monologue: downgrade &mut to shared refs (no-op anchor was blocking parallel systems) - Remove dead SimRng inserts from migrated monologue tests - Document determinism gap on poll_worker_results - Document bevy_tasks/rayon dep rationale in Cargo.toml Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -588,11 +588,12 @@ fn has_hear_sound_event(
|
||||
pub fn trigger_monologue(
|
||||
_time: Res<SimulationTime>,
|
||||
_query: Query<
|
||||
(&TilePosition, &mut MonologueState, &mut MonologueBuffer),
|
||||
(&TilePosition, &MonologueState, &MonologueBuffer),
|
||||
With<PlayerCharacter>,
|
||||
>,
|
||||
) {
|
||||
// Intentional no-op — kept as schedule ordering anchor. See doc comment.
|
||||
// Uses shared refs (not &mut) to avoid blocking parallel systems.
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -790,7 +791,7 @@ mod tests {
|
||||
fn setup_anomaly_world() -> World {
|
||||
let mut world = World::new();
|
||||
world.init_resource::<SimulationTime>();
|
||||
world.insert_resource(SimRng::new(42));
|
||||
// SimRng no longer needed — migrated systems use EntityRng
|
||||
world
|
||||
}
|
||||
|
||||
@@ -991,7 +992,7 @@ mod tests {
|
||||
fn setup_recognition_world() -> World {
|
||||
let mut world = World::new();
|
||||
world.init_resource::<SimulationTime>();
|
||||
world.insert_resource(SimRng::new(42));
|
||||
// SimRng no longer needed — migrated systems use EntityRng
|
||||
world
|
||||
}
|
||||
|
||||
@@ -1353,7 +1354,7 @@ mod tests {
|
||||
fn setup_event_world() -> World {
|
||||
let mut world = World::new();
|
||||
world.init_resource::<SimulationTime>();
|
||||
world.insert_resource(SimRng::new(42));
|
||||
// SimRng no longer needed — migrated systems use EntityRng
|
||||
world.init_resource::<ObservationEventQueue>();
|
||||
world.init_resource::<SoundEventQueue>();
|
||||
world.init_resource::<PostConversationQueue>();
|
||||
@@ -1923,7 +1924,7 @@ mod tests {
|
||||
fn setup_contradiction_world() -> bevy_ecs::world::World {
|
||||
let mut world = bevy_ecs::world::World::new();
|
||||
world.init_resource::<SimulationTime>();
|
||||
world.insert_resource(SimRng::new(42));
|
||||
// SimRng no longer needed — migrated systems use EntityRng
|
||||
world.insert_resource(ContradictionDetectedQueue::default());
|
||||
world.init_resource::<EntityRegistry>();
|
||||
world
|
||||
|
||||
Reference in New Issue
Block a user