{"record":{"id":"89ee5973b24b61c4","repo":"tinyhumansai/openhuman","slug":"memory-hybrid-search-e","errorCode":null,"errorMessage":"memory_hybrid_search: {e}","messagePattern":"memory_hybrid_search: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/memory/tools/search/hybrid_search.rs","lineNumber":137,"sourceCode":"            )\n        })?;\n        let limit = parsed.limit.clamp(1, 50);\n\n        log::debug!(\n            \"[tool][memory_hybrid_search] query_len={} ns={} mode={} limit={}\",\n            parsed.query.len(),\n            parsed.namespace,\n            parsed.mode,\n            limit,\n        );\n\n        // Reads through the bound driver. This used to call\n        // `UnifiedMemory::new(&config.workspace_dir, …)` — constructing a\n        // *whole second engine* over the workspace the loaded module already\n        // owns, the most severe instance of the split brain this port removes.\n        let guard = active_memory_guard()\n            .await\n            .map_err(|e| anyhow::anyhow!(\"memory_hybrid_search: {e}\"))?;\n        let retrieval = guard.as_retrieval().ok_or_else(|| {\n            anyhow::anyhow!(\n                \"memory_hybrid_search: memory driver does not support the retrieval family\"\n            )\n        })?;\n\n        // Self-echo guard (agent-agnostic, mirrors `UnifiedMemory::recall`):\n        // exclude documents auto-saved for the ambient chat thread (set by\n        // the web channel around the turn) so a search issued mid-turn\n        // never retrieves the very request that triggered it. `None`\n        // outside a chat turn — unchanged behavior for cron/CLI/tests.\n        let exclude_session_id =\n            crate::openhuman::agent::tinyagents::thread_context::current_thread_id();\n        if let Some(ref excluded) = exclude_session_id {\n            log::debug!(\n                \"[tool][memory_hybrid_search] applying same-session exclusion exclude_session_id={excluded}\"\n            );\n        }","sourceCodeStart":119,"sourceCodeEnd":155,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/memory/tools/search/hybrid_search.rs#L119-L155","documentation":"Wrapper around active_memory_guard() in hybrid search: the bound driver could not be acquired. The comment notes this path deliberately avoids constructing a second engine over the workspace — reads go through the module-owned driver only.","triggerScenarios":"Thrown at src/openhuman/memory/tools/search/hybrid_search.rs:137 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Retry after driver binding","Check the chained acquisition error","Verify the memory module is loaded and healthy"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}