feat(simulation): location-to-culture resolution system (#679)

CultureResolver with Arc<Mutex<Connection>> over systems.db (SQLITE_OPEN_READ_ONLY).
3-pass lookup: system_id → body_id (COALESCE parent fallback) → station_id.
CultureResolverResource registered in main.rs with graceful warn-on-missing.
BookmarkRegistry.build_catalog() uses resolver for allowed_locations_cultures.
8 unit tests including concurrent safety. SQLite fixture at
server/src/knowledge/fixtures/culture_test.db.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-19 13:14:05 +02:00
co-authored by Claude Sonnet 4.6
parent c19d84f2e3
commit 972703bf0f
4 changed files with 575 additions and 0 deletions
+2
View File
@@ -8,12 +8,14 @@ use bevy_app::prelude::*;
use bevy_ecs::prelude::*;
pub mod content_registry;
pub mod culture;
pub mod events;
pub mod graph;
pub mod registry;
pub mod types;
pub use content_registry::ContentEntityRegistry;
pub use culture::{CultureError, CultureResolver, CultureResolverResource, CultureTag, resolve_culture};
pub use events::{
ContradictionDetectedEvent, ContradictionDetectedQueue, InteractionType, KnowledgeEvent,
KnowledgeEventQueue, KnowledgeEventType, ProcessedEntityGrant, ProcessedFactGrant,