From 2b76c2e758af900a0a4ec36ef20df0f4984b7e77 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Tue, 15 Sep 2026 20:00:01 +0200 Subject: [PATCH] Re-pin CultLib to a0813c6 Cut 1 of the Eureka pipeline state campaign. Moves every CultLib dependency from e171eca3 to main a0813c6. - load_envelope was deleted upstream (CultLib 4ed9871). The 12 sites in persona_conversation, persona_social_state and resident_self now call put_envelope. Each site feeds a cache built with CultCache::new() in the same function with no backing store attached, so home_index returns None and put_envelope only inserts into memory, exactly as load_envelope did. validate_envelope is byte-identical across the pins. - add_generic_backing_store now returns Result; the three production sites and five test sites propagate it with ?. No ownership change. Co-Authored-By: Claude Opus 5 --- Cargo.lock | 10 +++++----- Cargo.toml | 4 ++-- epiphany-core/Cargo.toml | 6 +++--- epiphany-core/src/atlas/store.rs | 2 +- epiphany-core/src/persona_conversation.rs | 2 +- epiphany-core/src/persona_feedback_admission.rs | 2 +- epiphany-core/src/persona_social_state.rs | 10 +++++----- epiphany-core/src/resident_readiness.rs | 2 +- epiphany-core/src/resident_self.rs | 12 ++++++------ epiphany-core/src/runtime_spine.rs | 8 ++++---- epiphany-core/src/state_ledger.rs | 2 +- epiphany-model-adapter/Cargo.toml | 2 +- epiphany-openai-runtime/Cargo.toml | 2 +- epiphany-tool-adapter/Cargo.toml | 2 +- epiphany-tool-mcp-runtime/Cargo.toml | 2 +- 15 files changed, 34 insertions(+), 34 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 975f7a2a..a685f386 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -363,8 +363,8 @@ dependencies = [ [[package]] name = "cultcache-rs" -version = "0.1.0" -source = "git+https://github.com/GameCult/CultLib.git?rev=e171eca32329baa928f4a1d810401a8b4c857029#e171eca32329baa928f4a1d810401a8b4c857029" +version = "0.2.0" +source = "git+https://github.com/GameCult/CultLib.git?rev=a0813c6eed24d30bf88073ef615b633c77ebfcd6#a0813c6eed24d30bf88073ef615b633c77ebfcd6" dependencies = [ "anyhow", "chrono", @@ -382,7 +382,7 @@ dependencies = [ [[package]] name = "cultcache-rs-derive" version = "0.1.0" -source = "git+https://github.com/GameCult/CultLib.git?rev=e171eca32329baa928f4a1d810401a8b4c857029#e171eca32329baa928f4a1d810401a8b4c857029" +source = "git+https://github.com/GameCult/CultLib.git?rev=a0813c6eed24d30bf88073ef615b633c77ebfcd6#a0813c6eed24d30bf88073ef615b633c77ebfcd6" dependencies = [ "proc-macro2", "quote", @@ -392,7 +392,7 @@ dependencies = [ [[package]] name = "cultmesh-rs" version = "0.1.0" -source = "git+https://github.com/GameCult/CultLib.git?rev=e171eca32329baa928f4a1d810401a8b4c857029#e171eca32329baa928f4a1d810401a8b4c857029" +source = "git+https://github.com/GameCult/CultLib.git?rev=a0813c6eed24d30bf88073ef615b633c77ebfcd6#a0813c6eed24d30bf88073ef615b633c77ebfcd6" dependencies = [ "anyhow", "cultcache-rs", @@ -403,7 +403,7 @@ dependencies = [ [[package]] name = "cultnet-rs" version = "0.1.0" -source = "git+https://github.com/GameCult/CultLib.git?rev=e171eca32329baa928f4a1d810401a8b4c857029#e171eca32329baa928f4a1d810401a8b4c857029" +source = "git+https://github.com/GameCult/CultLib.git?rev=a0813c6eed24d30bf88073ef615b633c77ebfcd6#a0813c6eed24d30bf88073ef615b633c77ebfcd6" dependencies = [ "aes-gcm", "anyhow", diff --git a/Cargo.toml b/Cargo.toml index dfb47187..df1b6ac2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,8 +20,8 @@ license-file = "LICENSE" anyhow = "1" chrono = "0.4.44" ctrlc = { version = "3.5.1", features = ["termination"] } -cultcache-rs = { git = "https://github.com/GameCult/CultLib.git", rev = "e171eca32329baa928f4a1d810401a8b4c857029", package = "cultcache-rs" } -cultnet-rs = { git = "https://github.com/GameCult/CultLib.git", rev = "e171eca32329baa928f4a1d810401a8b4c857029", package = "cultnet-rs" } +cultcache-rs = { git = "https://github.com/GameCult/CultLib.git", rev = "a0813c6eed24d30bf88073ef615b633c77ebfcd6", package = "cultcache-rs" } +cultnet-rs = { git = "https://github.com/GameCult/CultLib.git", rev = "a0813c6eed24d30bf88073ef615b633c77ebfcd6", package = "cultnet-rs" } epiphany-core = { path = "epiphany-core" } epiphany-model-adapter = { path = "epiphany-model-adapter" } epiphany-openai-runtime = { path = "epiphany-openai-runtime", optional = true } diff --git a/epiphany-core/Cargo.toml b/epiphany-core/Cargo.toml index f081c14e..187b276c 100644 --- a/epiphany-core/Cargo.toml +++ b/epiphany-core/Cargo.toml @@ -14,9 +14,9 @@ path = "src/lib.rs" anyhow = "1" chrono = "0.4.44" ctrlc = { version = "3.5.1", features = ["termination"] } -cultcache-rs = { git = "https://github.com/GameCult/CultLib.git", rev = "e171eca32329baa928f4a1d810401a8b4c857029", package = "cultcache-rs" } -cultmesh-rs = { git = "https://github.com/GameCult/CultLib.git", rev = "e171eca32329baa928f4a1d810401a8b4c857029", package = "cultmesh-rs" } -cultnet-rs = { git = "https://github.com/GameCult/CultLib.git", rev = "e171eca32329baa928f4a1d810401a8b4c857029", package = "cultnet-rs" } +cultcache-rs = { git = "https://github.com/GameCult/CultLib.git", rev = "a0813c6eed24d30bf88073ef615b633c77ebfcd6", package = "cultcache-rs" } +cultmesh-rs = { git = "https://github.com/GameCult/CultLib.git", rev = "a0813c6eed24d30bf88073ef615b633c77ebfcd6", package = "cultmesh-rs" } +cultnet-rs = { git = "https://github.com/GameCult/CultLib.git", rev = "a0813c6eed24d30bf88073ef615b633c77ebfcd6", package = "cultnet-rs" } epiphany-model-adapter = { path = "../epiphany-model-adapter" } epiphany-tool-adapter = { path = "../epiphany-tool-adapter" } fs2 = "0.4" diff --git a/epiphany-core/src/atlas/store.rs b/epiphany-core/src/atlas/store.rs index e82ccf75..3cee306c 100644 --- a/epiphany-core/src/atlas/store.rs +++ b/epiphany-core/src/atlas/store.rs @@ -355,7 +355,7 @@ impl AtlasCultCacheStore { cache.register_entry_type::()?; cache.register_entry_type::()?; cache.register_entry_type::()?; - cache.add_generic_backing_store(SingleFileMessagePackBackingStore::new(&self.path)); + cache.add_generic_backing_store(SingleFileMessagePackBackingStore::new(&self.path))?; cache.pull_all_backing_stores()?; Ok(cache) } diff --git a/epiphany-core/src/persona_conversation.rs b/epiphany-core/src/persona_conversation.rs index 105b2873..d27f9e59 100644 --- a/epiphany-core/src/persona_conversation.rs +++ b/epiphany-core/src/persona_conversation.rs @@ -958,7 +958,7 @@ fn require_store_retirement_receipt( })?; let mut cache = CultCache::new(); cache.register_entry_type::()?; - cache.load_envelope::(envelope.clone())?; + cache.put_envelope::(envelope.clone())?; if cache .get::(&expected.receipt_id)? .as_ref() diff --git a/epiphany-core/src/persona_feedback_admission.rs b/epiphany-core/src/persona_feedback_admission.rs index dd477ed0..8a5ae614 100644 --- a/epiphany-core/src/persona_feedback_admission.rs +++ b/epiphany-core/src/persona_feedback_admission.rs @@ -1042,7 +1042,7 @@ mod tests { let delivery = signed_delivery(&signer, "epiphany")?; let mut source = CultCache::new(); source.register_entry_type::()?; - source.add_generic_backing_store(SingleFileMessagePackBackingStore::new(&source_store)); + source.add_generic_backing_store(SingleFileMessagePackBackingStore::new(&source_store))?; source.put(&delivery.admission_id, &delivery)?; let source_lock = source_store.with_file_name(format!( "{}.lock", diff --git a/epiphany-core/src/persona_social_state.rs b/epiphany-core/src/persona_social_state.rs index 29758733..19ca4e66 100644 --- a/epiphany-core/src/persona_social_state.rs +++ b/epiphany-core/src/persona_social_state.rs @@ -846,19 +846,19 @@ fn is_persona_social_type(document_type: &str) -> bool { fn load_persona_social_envelope(cache: &mut CultCache, envelope: CultCacheEnvelope) -> Result<()> { match envelope.r#type.as_str() { PERSONA_SOCIAL_MENTION_TYPE => { - cache.load_envelope::(envelope)?; + cache.put_envelope::(envelope)?; } PERSONA_SOCIAL_TURN_REQUEST_TYPE => { - cache.load_envelope::(envelope)?; + cache.put_envelope::(envelope)?; } PERSONA_SOCIAL_TURN_TERMINAL_TYPE => { - cache.load_envelope::(envelope)?; + cache.put_envelope::(envelope)?; } PERSONA_SOCIAL_RETENTION_HEAD_TYPE => { - cache.load_envelope::(envelope)?; + cache.put_envelope::(envelope)?; } PERSONA_SOCIAL_RETENTION_PLAN_TYPE => { - cache.load_envelope::(envelope)?; + cache.put_envelope::(envelope)?; } _ => unreachable!("caller filtered Persona social document types"), } diff --git a/epiphany-core/src/resident_readiness.rs b/epiphany-core/src/resident_readiness.rs index 4e48704c..a8a947c9 100644 --- a/epiphany-core/src/resident_readiness.rs +++ b/epiphany-core/src/resident_readiness.rs @@ -788,7 +788,7 @@ mod tests { let store = temp.path().join("mixed.cc"); let mut mixed = CultCache::new(); mixed.register_entry_type::()?; - mixed.add_generic_backing_store(SingleFileMessagePackBackingStore::new(&store)); + mixed.add_generic_backing_store(SingleFileMessagePackBackingStore::new(&store))?; let foreign = ForeignOwnerEntry { value: "must survive readiness CAS".into(), }; diff --git a/epiphany-core/src/resident_self.rs b/epiphany-core/src/resident_self.rs index 85cfe508..66e66df9 100644 --- a/epiphany-core/src/resident_self.rs +++ b/epiphany-core/src/resident_self.rs @@ -797,22 +797,22 @@ fn state_cache(path: &Path) -> Result { } match envelope.r#type.as_str() { ResidentSelfState::TYPE => { - cache.load_envelope::(envelope)?; + cache.put_envelope::(envelope)?; } ResidentSelfPressure::TYPE => { - cache.load_envelope::(envelope)?; + cache.put_envelope::(envelope)?; } ResidentSelfGrant::TYPE => { - cache.load_envelope::(envelope)?; + cache.put_envelope::(envelope)?; } ResidentSelfTerminalReceipt::TYPE => { - cache.load_envelope::(envelope)?; + cache.put_envelope::(envelope)?; } ResidentSelfChildClaim::TYPE => { - cache.load_envelope::(envelope)?; + cache.put_envelope::(envelope)?; } ResidentSelfRetentionHead::TYPE => { - cache.load_envelope::(envelope)?; + cache.put_envelope::(envelope)?; } _ => unreachable!("owned resident Self type was matched above"), }; diff --git a/epiphany-core/src/runtime_spine.rs b/epiphany-core/src/runtime_spine.rs index 5e6804c5..74ca7dda 100644 --- a/epiphany-core/src/runtime_spine.rs +++ b/epiphany-core/src/runtime_spine.rs @@ -644,7 +644,7 @@ pub fn runtime_spine_cache(store_path: impl AsRef) -> Result { let backing_store = runtime_spine_backing_store(store_path)?; validate_runtime_store_epoch(&backing_store.pull_all()?)?; let mut cache = runtime_spine_schema_cache()?; - cache.add_generic_backing_store(backing_store); + cache.add_generic_backing_store(backing_store)?; Ok(cache) } @@ -8655,7 +8655,7 @@ pub(crate) mod tests { let mut historical = CultCache::new(); historical.register_entry_type::()?; historical.register_entry_type::()?; - historical.add_generic_backing_store(runtime_spine_backing_store(&store)?); + historical.add_generic_backing_store(runtime_spine_backing_store(&store)?)?; historical.put( "epiphany.mind.epoch.v1", &crate::EpiphanyMindIdentity { @@ -8691,7 +8691,7 @@ pub(crate) mod tests { let mut archive_v0 = CultCache::new(); archive_v0.register_entry_type::()?; archive_v0.register_entry_type::()?; - archive_v0.add_generic_backing_store(runtime_spine_backing_store(&archive_v0_store)?); + archive_v0.add_generic_backing_store(runtime_spine_backing_store(&archive_v0_store)?)?; archive_v0.put( crate::MIND_SCHEMA_EPOCH, &crate::EpiphanyMindIdentity { @@ -8720,7 +8720,7 @@ pub(crate) mod tests { responses_only.register_entry_type::()?; responses_only.register_entry_type::()?; responses_only - .add_generic_backing_store(runtime_spine_backing_store(&responses_only_store)?); + .add_generic_backing_store(runtime_spine_backing_store(&responses_only_store)?)?; responses_only.put( crate::MIND_SCHEMA_EPOCH, &crate::EpiphanyMindIdentity { diff --git a/epiphany-core/src/state_ledger.rs b/epiphany-core/src/state_ledger.rs index ac9f88a9..7ae104bd 100644 --- a/epiphany-core/src/state_ledger.rs +++ b/epiphany-core/src/state_ledger.rs @@ -133,7 +133,7 @@ pub fn close_state_branch( fn state_ledger_cache(store_path: &Path) -> Result { let mut cache = CultCache::new(); cache.register_entry_type::()?; - cache.add_generic_backing_store(SingleFileMessagePackBackingStore::new(store_path)); + cache.add_generic_backing_store(SingleFileMessagePackBackingStore::new(store_path))?; Ok(cache) } diff --git a/epiphany-model-adapter/Cargo.toml b/epiphany-model-adapter/Cargo.toml index 304cdad2..693650ea 100644 --- a/epiphany-model-adapter/Cargo.toml +++ b/epiphany-model-adapter/Cargo.toml @@ -12,7 +12,7 @@ path = "src/lib.rs" [dependencies] anyhow = "1" codex-connector = { git = "https://github.com/GameCult/CodexConnector", rev = "be1776ab455fd79bd74b393518ab07211dc9c1f0", default-features = false } -cultcache-rs = { git = "https://github.com/GameCult/CultLib.git", rev = "e171eca32329baa928f4a1d810401a8b4c857029", package = "cultcache-rs" } +cultcache-rs = { git = "https://github.com/GameCult/CultLib.git", rev = "a0813c6eed24d30bf88073ef615b633c77ebfcd6", package = "cultcache-rs" } serde = { version = "1", features = ["derive"] } serde_json = "1" sha2 = "0.10" diff --git a/epiphany-openai-runtime/Cargo.toml b/epiphany-openai-runtime/Cargo.toml index 089f23ca..b3aba99c 100644 --- a/epiphany-openai-runtime/Cargo.toml +++ b/epiphany-openai-runtime/Cargo.toml @@ -13,7 +13,7 @@ path = "src/lib.rs" [dependencies] anyhow = "1" chrono = "0.4.44" -cultcache-rs = { git = "https://github.com/GameCult/CultLib.git", rev = "e171eca32329baa928f4a1d810401a8b4c857029", package = "cultcache-rs" } +cultcache-rs = { git = "https://github.com/GameCult/CultLib.git", rev = "a0813c6eed24d30bf88073ef615b633c77ebfcd6", package = "cultcache-rs" } epiphany-core = { path = "../epiphany-core" } epiphany-model-adapter = { path = "../epiphany-model-adapter" } epiphany-tool-adapter = { path = "../epiphany-tool-adapter" } diff --git a/epiphany-tool-adapter/Cargo.toml b/epiphany-tool-adapter/Cargo.toml index e4eb088b..0ebc8dfb 100644 --- a/epiphany-tool-adapter/Cargo.toml +++ b/epiphany-tool-adapter/Cargo.toml @@ -8,6 +8,6 @@ name = "epiphany_tool_adapter" path = "src/lib.rs" [dependencies] -cultcache-rs = { git = "https://github.com/GameCult/CultLib.git", rev = "e171eca32329baa928f4a1d810401a8b4c857029", package = "cultcache-rs" } +cultcache-rs = { git = "https://github.com/GameCult/CultLib.git", rev = "a0813c6eed24d30bf88073ef615b633c77ebfcd6", package = "cultcache-rs" } serde = { version = "1", features = ["derive"] } serde_json = "1" diff --git a/epiphany-tool-mcp-runtime/Cargo.toml b/epiphany-tool-mcp-runtime/Cargo.toml index 788956f0..d50c1c72 100644 --- a/epiphany-tool-mcp-runtime/Cargo.toml +++ b/epiphany-tool-mcp-runtime/Cargo.toml @@ -11,7 +11,7 @@ anyhow = "1" chrono = "0.4.44" epiphany-tool-adapter = { path = "../epiphany-tool-adapter" } epiphany-core = { path = "../epiphany-core" } -cultcache-rs = { git = "https://github.com/GameCult/CultLib.git", rev = "e171eca32329baa928f4a1d810401a8b4c857029", package = "cultcache-rs" } +cultcache-rs = { git = "https://github.com/GameCult/CultLib.git", rev = "a0813c6eed24d30bf88073ef615b633c77ebfcd6", package = "cultcache-rs" } http = "1" reqwest = { version = "0.13.2", default-features = false, features = ["json", "rustls"] } sha2 = "0.10"