{"record":{"id":"027141395414c9c2","repo":"tinyhumansai/openhuman","slug":"memory-store-raw-search-memory-driver-does-not-su","errorCode":null,"errorMessage":"memory_store_raw_search: memory driver does not support the retrieval family","messagePattern":"memory_store_raw_search: memory driver does not support the retrieval family","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src/openhuman/memory/tools/raw_store/raw_search.rs","lineNumber":95,"sourceCode":"            parsed.limit\n        );\n        // An empty `kinds` list means \"no filter\", matching the previous\n        // behaviour — it is not forwarded as an empty allowlist, which the\n        // driver would read as \"match no kind at all\".\n        let kinds = parsed\n            .kinds\n            .as_ref()\n            .filter(|kinds| !kinds.is_empty())\n            .map(Vec::as_slice);\n        // Kind validation belongs to the driver now: the vocabulary is open on\n        // the wire. See the note in `memory/query/search_entities.rs`.\n        let guard = active_memory_guard()\n            .await\n            .map_err(|e| anyhow::anyhow!(\"memory_store_raw_search: {e}\"))?;\n        let hits = guard\n            .as_retrieval()\n            .ok_or_else(|| {\n                anyhow::anyhow!(\n                    \"memory_store_raw_search: memory driver does not support the retrieval family\"\n                )\n            })?\n            .search_entities(&parsed.query, kinds, parsed.limit)\n            .await\n            .map_err(|e| anyhow::anyhow!(\"memory_store_raw_search: {e}\"))?;\n        log::debug!(\n            \"[tool][memory_store] raw_search returning hits={}\",\n            hits.len()\n        );\n        let json = serde_json::to_string(&hits)?;\n        Ok(ToolResult::success(json))\n    }\n}\n\n#[cfg(test)]\nmod tests {\n    use super::*;","sourceCodeStart":77,"sourceCodeEnd":113,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/memory/tools/raw_store/raw_search.rs#L77-L113","documentation":"Capability guard in the memory_store_raw_search tool's execute: after guard acquisition, guard.as_retrieval() returned None, meaning the active memory driver does not implement the retrieval family, so an entity/raw search cannot be served. This is a driver-capability boundary, not bad input — use a driver that supports retrieval or a different memory tool.","triggerScenarios":"Thrown at src/openhuman/memory/tools/raw_store/raw_search.rs:95 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use a retrieval-capable driver","Investigate why the bound driver lacks retrieval","Choose a mode the active driver supports"],"exampleFix":null,"handlingStrategy":"type-guard","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-14T05:17:10.506Z"}