{"record":{"id":"675269c3ed3f09b2","repo":"tinyhumansai/openhuman","slug":"invalid-arguments-for-memory-tree-cover-window-e","errorCode":null,"errorMessage":"invalid arguments for memory_tree_cover_window: {e}","messagePattern":"invalid arguments for memory_tree_cover_window: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/memory/query/cover_window.rs","lineNumber":63,"sourceCode":"                \"source_kind\": {\n                    \"type\": \"string\",\n                    \"enum\": [\"chat\", \"email\", \"document\"],\n                    \"description\": \"Source kind filter when no exact id is known.\"\n                },\n                \"limit\": {\n                    \"type\": \"integer\",\n                    \"minimum\": 0,\n                    \"description\": \"Max hits to return (default 200).\"\n                }\n            },\n            \"required\": [\"since_ms\", \"until_ms\"]\n        })\n    }\n\n    async fn execute(&self, args: serde_json::Value) -> anyhow::Result<ToolResult> {\n        log::debug!(\"[tool][memory_tree] cover_window invoked\");\n        let req: CoverWindowRequest = serde_json::from_value(args)\n            .map_err(|e| anyhow::anyhow!(\"invalid arguments for memory_tree_cover_window: {e}\"))?;\n        // Correlation fields only — source_id can carry PII, so log its presence,\n        // not its value.\n        log::debug!(\n            \"[tool][memory_tree] cover_window parsed since_ms={} until_ms={} has_source_id={} has_source_kind={} has_limit={}\",\n            req.since_ms,\n            req.until_ms,\n            req.source_id.is_some(),\n            req.source_kind.is_some(),\n            req.limit.is_some()\n        );\n        // Validate arguments before touching config/disk — `SourceKind::parse`\n        // is pure, so a bad `source_kind` must fail with the parse error\n        // regardless of workspace state.\n        let source_kind = match req.source_kind.as_deref() {\n            Some(s) => {\n                log::trace!(\"[tool][memory_tree] cover_window parse_source_kind\");\n                Some(\n                    SourceKind::parse(s)","sourceCodeStart":45,"sourceCodeEnd":81,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/memory/query/cover_window.rs#L45-L81","documentation":"serde_json::from_value failed while deserializing the memory_tree_cover_window args into the typed request (bad since_ms/until_ms types, unknown fields, or a malformed object). Fires before any config or disk access, per the validate-early policy.","triggerScenarios":"Thrown at src/openhuman/memory/query/cover_window.rs:63 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check since_ms and until_ms are integers (milliseconds since epoch)","Ensure node_id/source_kind strings match the schema enum where applicable","Remove unknown or misspelled fields from the arguments"],"exampleFix":null,"handlingStrategy":"validation","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"}