{"record":{"id":"24b6df65ca7bcbe0","repo":"tinyhumansai/openhuman","slug":"read-workflow-run-log-e","errorCode":null,"errorMessage":"read_workflow_run_log: {e}","messagePattern":"read_workflow_run_log: (.+?)","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src/openhuman/skills/tools.rs","lineNumber":524,"sourceCode":"            .and_then(serde_json::Value::as_u64)\n            .map(|v| v as usize)\n            .unwrap_or(65536);\n        let profile_local = profile_local_skill_ids(self.profile_skills_root.as_deref());\n        let run = scan_runs(&self.workspace_dir, None, usize::MAX)\n            .into_iter()\n            .find(|run| {\n                run.run_id == run_id\n                    && run.profile_id.as_deref() == self.active_profile_id.as_deref()\n                    && skill_allowed_including_profile(\n                        &self.skill_allowlist,\n                        &profile_local,\n                        &run.workflow_id,\n                    )\n            })\n            .ok_or_else(|| anyhow::anyhow!(\"read_workflow_run_log: run `{run_id}` not found\"))?;\n        let path = PathBuf::from(run.log_path);\n        let slice = read_run_log_slice(&path, offset, max_bytes)\n            .map_err(|e| anyhow::anyhow!(\"read_workflow_run_log: {e}\"))?;\n        Ok(ToolResult::success(serde_json::to_string(&slice)?))\n    }\n\n    fn is_concurrency_safe(&self, _args: &serde_json::Value) -> bool {\n        true\n    }\n}\n\n/// Scaffold a new user skill. **Writes to disk** — default-OFF.\npub struct WorkflowCreateTool {\n    workspace_dir: PathBuf,\n}\n\nimpl WorkflowCreateTool {\n    pub fn new(config: Arc<Config>) -> Self {\n        Self {\n            workspace_dir: config.workspace_dir.clone(),\n        }","sourceCodeStart":506,"sourceCodeEnd":542,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/skills/tools.rs#L506-L542","documentation":"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.","triggerScenarios":"Thrown at src/openhuman/skills/tools.rs:524 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["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)","Confirm the workspace_dir still contains the run directory and its log file","Retry once in case of a transient filesystem error"],"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-14T00:17:10.932Z"}