{"record":{"id":"4049ca0517eb217f","repo":"tinyhumansai/openhuman","slug":"memory-vector-search-load-config-failed-e","errorCode":null,"errorMessage":"memory_vector_search: load config failed: {e}","messagePattern":"memory_vector_search: load config failed: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/memory/tools/search/vector_search.rs","lineNumber":123,"sourceCode":"            ));\n        }\n\n        let limit = parsed.limit.clamp(1, 50);\n        let min_score = parsed.min_score.unwrap_or(0.3);\n\n        log::debug!(\n            \"[tool][memory_vector_search] query_len={} source_kind={:?} window={:?} min_score={} limit={} diverse={}\",\n            parsed.query.len(),\n            parsed.source_kind,\n            parsed.time_window_days,\n            min_score,\n            limit,\n            parsed.diverse,\n        );\n\n        let config = config_rpc::load_config_with_timeout()\n            .await\n            .map_err(|e| anyhow::anyhow!(\"memory_vector_search: load config failed: {e}\"))?;\n\n        // Chunks are read through the bound driver, not by opening the store\n        // in this process. Before the module port this called\n        // `list_chunks(&config, …)` directly, which resolved the workspace path\n        // and opened the same SQLite database the loaded module already had\n        // open — two engine instances over one file, with the module not\n        // authoritative. See `docs/specs/2026-08-13-memory-module-port.md` §2.1.\n        let guard = active_memory_guard()\n            .await\n            .map_err(|e| anyhow::anyhow!(\"memory_vector_search: {e}\"))?;\n        let chunk_reader = guard.as_chunks().ok_or_else(|| {\n            anyhow::anyhow!(\"memory_vector_search: memory driver does not support the chunk family\")\n        })?;\n\n        let embedder = provider_from_config(&config)\n            .map_err(|e| anyhow::anyhow!(\"memory_vector_search: embedding provider failed: {e}\"))?;\n\n        let query_vec = embedder","sourceCodeStart":105,"sourceCodeEnd":141,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/memory/tools/search/vector_search.rs#L105-L141","documentation":"The vector search tool could not load the core TOML config via `config_rpc::load_config_with_timeout()` before querying memory. Every search needs config to resolve the workspace and memory settings, so a config load timeout or parse failure aborts the tool here. `{e}` carries the underlying config error (timeout, unreadable file, or invalid TOML).","triggerScenarios":"Thrown at src/openhuman/memory/tools/search/vector_search.rs:123 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Retry — the loader is timeout-bounded and transient contention can cause this","Check that the workspace config.toml exists and parses","Look at `{e}` to distinguish timeout from parse failure","Verify the workspace/config paths the harness or shell passed at startup"],"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"}