tinyhumansai/openhuman · error · anyhow::Error

read_workflow_run_log: {e}

Error message

read_workflow_run_log: {e}

What it means

Generic wrapper propagated from the run-log read path in read_workflow_run_log: after a run was matched, actually reading its log file (or building the offset/max_bytes bounded result) failed. The underlying {e} carries the filesystem error; this sentinel only tags it with the tool name.

Source

Thrown at src/openhuman/skills/tools.rs:524

            .and_then(serde_json::Value::as_u64)
            .map(|v| v as usize)
            .unwrap_or(65536);
        let profile_local = profile_local_skill_ids(self.profile_skills_root.as_deref());
        let run = scan_runs(&self.workspace_dir, None, usize::MAX)
            .into_iter()
            .find(|run| {
                run.run_id == run_id
                    && run.profile_id.as_deref() == self.active_profile_id.as_deref()
                    && skill_allowed_including_profile(
                        &self.skill_allowlist,
                        &profile_local,
                        &run.workflow_id,
                    )
            })
            .ok_or_else(|| anyhow::anyhow!("read_workflow_run_log: run `{run_id}` not found"))?;
        let path = PathBuf::from(run.log_path);
        let slice = read_run_log_slice(&path, offset, max_bytes)
            .map_err(|e| anyhow::anyhow!("read_workflow_run_log: {e}"))?;
        Ok(ToolResult::success(serde_json::to_string(&slice)?))
    }

    fn is_concurrency_safe(&self, _args: &serde_json::Value) -> bool {
        true
    }
}

/// Scaffold a new user skill. **Writes to disk** — default-OFF.
pub struct WorkflowCreateTool {
    workspace_dir: PathBuf,
}

impl WorkflowCreateTool {
    pub fn new(config: Arc<Config>) -> Self {
        Self {
            workspace_dir: config.workspace_dir.clone(),
        }

View on GitHub (pinned to 7491200858)

Solutions

  1. Inspect the embedded error {e} for the real cause (most often the log file was deleted or permissions changed after the run record was written)
  2. Confirm the workspace_dir still contains the run directory and its log file
  3. Retry once in case of a transient filesystem error
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at src/openhuman/skills/tools.rs:524 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/24b6df65ca7bcbe0. Report an issue: GitHub.