tinyhumansai/openhuman · error
todo_update_status: {e}
Error message
todo_update_status: {e} What it means
Generic wrapper from todo_update_status: the status change failed after id and status parsed. The underlying {e} is either a parse_status rejection (unknown status string) or a board update failure from ops.
Source
Thrown at src/openhuman/threads/todos/tools.rs:314
"status": { "type": "string", "description": "New status (required)." }
},
"required": ["id", "status"]
})
}
fn permission_level(&self) -> PermissionLevel {
PermissionLevel::Write
}
async fn execute(&self, args: serde_json::Value) -> anyhow::Result<ToolResult> {
log::debug!("[tool][todos] update_status invoked");
let id = read_required_str(&args, "id")?;
let status_raw = read_required_str(&args, "status")?;
let status = ops::parse_status(&status_raw).map_err(|e| anyhow::anyhow!(e))?;
let location = board_location(&self.config, &args);
let snapshot = ops::update_status(&location, &id, status)
.await
.map_err(|e| anyhow::anyhow!("todo_update_status: {e}"))?;
snapshot_to_result(snapshot)
}
}
/// Approve or reject a gated plan card.
pub struct TodoDecidePlanTool {
config: Arc<Config>,
}
impl TodoDecidePlanTool {
pub fn new(config: Arc<Config>) -> Self {
Self { config }
}
}
#[async_trait]
impl Tool for TodoDecidePlanTool {
fn name(&self) -> &str {View on GitHub (pinned to 7491200858)
Solutions
- Use one of the accepted status values (e.g. todo/in_progress/done), matching the board's status vocabulary
- Confirm the card id exists via todo_list
- Read {e} to distinguish a status-parse error from a persistence error
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at src/openhuman/threads/todos/tools.rs:314 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17).
Data as JSON: /api/errors/2f3b4cfb4209a125.
Report an issue: GitHub.