{"record":{"id":"79ec466defe2b94a","repo":"tinyhumansai/openhuman","slug":"read-workflow-run-log-run-run-id-not-found","errorCode":null,"errorMessage":"read_workflow_run_log: run `{run_id}` not found","messagePattern":"read_workflow_run_log: run `(.+?)` not found","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src/openhuman/skills/tools.rs","lineNumber":521,"sourceCode":"            .unwrap_or(0);\n        let max_bytes = args\n            .get(\"max_bytes\")\n            .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 {","sourceCodeStart":503,"sourceCodeEnd":539,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/skills/tools.rs#L503-L539","documentation":"Raised by the read_workflow_run_log skill tool when scan_runs over the workspace finds no run matching the given run_id that also belongs to the active profile and passes the skill allowlist (profile-local or allowed). It means the run log either never existed, was created under a different profile, or belongs to a skill not permitted in this session.","triggerScenarios":"Thrown at src/openhuman/skills/tools.rs:521 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify the run_id is copied exactly from the workflow run output (e.g. run_workflow / await_workflow results)","Confirm the run belongs to the currently active profile; runs from other profiles are filtered out","Check that the skill that produced the run is allowed by the skill allowlist or is profile-local","List runs (workflow run listing) to confirm the run exists and note its profile_id"],"exampleFix":null,"handlingStrategy":"validation","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"}