{"record":{"id":"f4a79eac617d2e92","repo":"tinyhumansai/openhuman","slug":"people-list-e","errorCode":null,"errorMessage":"people_list: {e}","messagePattern":"people_list: (.+?)","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src/openhuman/memory/tools/people.rs","lineNumber":110,"sourceCode":"        json!({\n            \"type\": \"object\",\n            \"properties\": {\n                \"limit\": { \"type\": \"integer\", \"minimum\": 1, \"description\": \"Max contacts (default 100, cap 500).\" }\n            }\n        })\n    }\n\n    async fn execute(&self, args: serde_json::Value) -> anyhow::Result<ToolResult> {\n        log::debug!(\"[tool][people] list invoked\");\n        let limit = args\n            .get(\"limit\")\n            .and_then(serde_json::Value::as_u64)\n            .map(|v| v as usize)\n            .unwrap_or(100);\n        let guard = people_guard().await?;\n        let outcome = rpc::handle_list(guard.as_people().expect(\"checked\"), limit)\n            .await\n            .map_err(|e| anyhow::anyhow!(\"people_list: {e}\"))?;\n        Ok(ToolResult::success(serde_json::to_string(&outcome.value)?))\n    }\n\n    fn is_concurrency_safe(&self, _args: &serde_json::Value) -> bool {\n        true\n    }\n}\n\n/// Resolve a handle to a person id.\npub struct PeopleResolveTool;\n\n#[async_trait]\nimpl Tool for PeopleResolveTool {\n    fn name(&self) -> &str {\n        \"people_resolve\"\n    }\n\n    fn description(&self) -> &str {","sourceCodeStart":92,"sourceCodeEnd":128,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/memory/tools/people.rs#L92-L128","documentation":"The people_list RPC handler (after guard acquisition and limit parsing) returned an error. The chained {e} comes from the driver's list_people call; the tool name prefix identifies the failing surface.","triggerScenarios":"Thrown at src/openhuman/memory/tools/people.rs:110 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Read the chained driver error for the real cause","Retry transient store/module failures","Check the people store health in the memory domain"],"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"}