{"record":{"id":"af6d421dd3be1118","repo":"tinyhumansai/openhuman","slug":"todo-list-e","errorCode":null,"errorMessage":"todo_list: {e}","messagePattern":"todo_list: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/threads/todos/tools.rs","lineNumber":137,"sourceCode":"    }\n\n    fn description(&self) -> &str {\n        \"List the todo cards on a thread's task board, with a markdown \\\n         rendering. Use to review outstanding/completed work before adding or \\\n         updating tasks. Each card has an `id`, `content`, `status`, and \\\n         optional objective/plan/notes/blocker fields.\"\n    }\n\n    fn parameters_schema(&self) -> serde_json::Value {\n        json!({ \"type\": \"object\", \"properties\": { \"thread_id\": thread_id_prop() } })\n    }\n\n    async fn execute(&self, args: serde_json::Value) -> anyhow::Result<ToolResult> {\n        log::debug!(\"[tool][todos] list invoked\");\n        let location = board_location(&self.config, &args);\n        let snapshot = ops::list(&location)\n            .await\n            .map_err(|e| anyhow::anyhow!(\"todo_list: {e}\"))?;\n        snapshot_to_result(snapshot)\n    }\n\n    fn is_concurrency_safe(&self, _args: &serde_json::Value) -> bool {\n        true\n    }\n}\n\n/// Add a new card to a thread's todo board.\npub struct TodoAddTool {\n    config: Arc<Config>,\n}\n\nimpl TodoAddTool {\n    pub fn new(config: Arc<Config>) -> Self {\n        Self { config }\n    }\n}","sourceCodeStart":119,"sourceCodeEnd":155,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/threads/todos/tools.rs#L119-L155","documentation":"Generic wrapper from the todo_list tool: reading or rendering the thread's task board (via the todos ops layer) failed after argument parsing. The underlying {e} carries the board-read error — typically a missing/corrupt board file or thread lookup failure.","triggerScenarios":"Thrown at src/openhuman/threads/todos/tools.rs:137 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Read the wrapped {e} for the concrete board-read failure","Confirm the thread_id (if given) refers to an existing thread","Omit thread_id to read the scratch board instead"],"exampleFix":null,"handlingStrategy":"try-catch","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"}