tinyhumansai/openhuman · error

todo_replace: invalid cards: {e}

Error message

todo_replace: invalid cards: {e}

What it means

todo_replace could not deserialize the 'cards' array into TaskBoardCard objects: at least one element is missing a required field (e.g. id, content, status) or has a wrong-typed field. The serde error {e} names the offending card and field.

Source

Thrown at src/openhuman/threads/todos/tools.rs:472

                    "items": { "type": "object" }
                }
            },
            "required": ["cards"]
        })
    }

    fn permission_level(&self) -> PermissionLevel {
        PermissionLevel::Write
    }

    async fn execute(&self, args: serde_json::Value) -> anyhow::Result<ToolResult> {
        log::debug!("[tool][todos] replace invoked");
        let cards_val = args
            .get("cards")
            .cloned()
            .ok_or_else(|| anyhow::anyhow!("missing required array argument `cards`"))?;
        let cards = serde_json::from_value(cards_val)
            .map_err(|e| anyhow::anyhow!("todo_replace: invalid cards: {e}"))?;
        let location = board_location(&self.config, &args);
        let snapshot = ops::replace(&location, cards)
            .await
            .map_err(|e| anyhow::anyhow!("todo_replace: {e}"))?;
        snapshot_to_result(snapshot)
    }
}

/// Empty the board. **Destructive** — default-OFF.
pub struct TodoClearTool {
    config: Arc<Config>,
}

impl TodoClearTool {
    pub fn new(config: Arc<Config>) -> Self {
        Self { config }
    }
}

View on GitHub (pinned to 7491200858)

Solutions

  1. Check {e} for the exact card index and field at fault
  2. Ensure every card object carries the required fields with correct types
  3. Fetch the current board first and modify it rather than hand-writing cards from scratch
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at src/openhuman/threads/todos/tools.rs:472 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/6fc8c37ea672658e. Report an issue: GitHub.