tinyhumansai/openhuman · error · MemoryError
the module host policy was never published, so module '{MODU
Error message
the module host policy was never published, so module '{MODULE_ID}' cannot be loaded; call modules::memory::set_modules_policy during boot What it means
The memory module driver attempted to obtain a bus proxy before the host published its module-host policy, meaning `modules::memory::set_modules_policy` was never called during boot. This is an initialization-order bug in the embedding host: the driver is being reached (e.g. a memory RPC arrived) without the boot sequence having installed the policy that governs module admission. The message names the missing call explicitly because the fix belongs in the host's boot code, not at this call site.
Source
Thrown at src/openhuman/modules/memory.rs:228
.await
.map_err(|error| from_bus(&error))
})
.await
.cloned()
}
/// Ensure the module is serving, and hand back a proxy for its object.
///
/// `operation` identifies the forwarded call (e.g. `"store"`, `"recall"`)
/// for the diagnostic below. Never `namespace`, `key`, `content`, or any
/// record value — those are user memory content, not correlation fields.
async fn proxy(&self, operation: &str) -> Result<tinybus::Proxy, MemoryError> {
log::debug!(
"[modules:memory] driver_id={} operation={operation} resolving module proxy",
self.driver_id,
);
let config = self.config.as_ref().or_else(|| policy()).ok_or_else(|| {
MemoryError::Other(anyhow::anyhow!(
"the module host policy was never published, so module '{MODULE_ID}' \
cannot be loaded; call modules::memory::set_modules_policy during boot"
))
})?;
let runtime = host::runtime().await.map_err(|error| {
MemoryError::Other(anyhow::anyhow!("the module bus is not running: {error}"))
})?;
super::memory_host::install(runtime.connection(), Arc::clone(config))
.await
.map_err(|error| {
MemoryError::Other(anyhow::anyhow!(
"the memory module host callbacks are unavailable: {error}"
))
})?;
// TinyMemory resolves its embedding provider while the native library
// is admitted. Host callbacks must therefore exist before loading,
// including in tests and explicit-path overrides where no boot policy
// was available when the shared module runtime first started.View on GitHub (pinned to 7491200858)
Solutions
- Ensure the boot path calls `modules::memory::set_modules_policy` before any memory RPC can be served
- Check that early-boot code did not swallow an error that skips the policy publication step
- For embedders using `CoreBuilder`, confirm the module host setup step is not skipped by a slim `DomainSet`/`ServiceSet` preset
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at src/openhuman/modules/memory.rs:228 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17).
Data as JSON: /api/errors/7e8825442c02a327.
Report an issue: GitHub.