{"record":{"id":"41e013584d8dcd31","repo":"zeroclaw-labs/zeroclaw","slug":"checkpoint-revise-decisions-use-the-revision-persi","errorCode":null,"errorMessage":"checkpoint revise decisions use the revision persistence path","messagePattern":"checkpoint revise decisions use the revision persistence path","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/zeroclaw-runtime/src/sop/engine.rs","lineNumber":3123,"sourceCode":"        let prior_run = self\n            .active_runs\n            .get(run_id)\n            .cloned()\n            .ok_or_else(|| anyhow::Error::msg(format!(\"Active run not found: {run_id}\")))?;\n        if prior_run.status != SopRunStatus::PausedCheckpoint {\n            bail!(\n                \"Run {run_id} is not paused at a checkpoint (status: {})\",\n                prior_run.status\n            );\n        }\n        if self.is_park_persist_pending(run_id) {\n            bail!(\n                \"Run {run_id} cannot resolve: its parked checkpoint snapshot is not yet durably persisted (retrying)\"\n            );\n        }\n\n        if matches!(decision, super::approval::ApprovalDecision::Revise { .. }) {\n            bail!(\"checkpoint revise decisions use the revision persistence path\")\n        }\n        if matches!(decision, super::approval::ApprovalDecision::Amend { .. }) {\n            self.can_amend_checkpoint(run_id)?;\n        }\n\n        let (_, sop) = self.resolve_active_run_sop(run_id)?;\n        let current_step = self.resolve_sop_step(&sop, prior_run.current_step)?;\n        let mut piped = step_input_value(&prior_run, current_step.number);\n        if let super::approval::ApprovalDecision::Amend { text } = &decision {\n            let field = self.checkpoint_edit_field(run_id)?;\n            let Some(object) = piped.as_object_mut() else {\n                bail!(\n                    \"Run {run_id} checkpoint input is not a JSON object; cannot amend field '{field}'\"\n                );\n            };\n            object.insert(field, serde_json::Value::String(text.clone()));\n        }\n        let (status, recorded_output, routed_output, started_at, completed_at) = match &decision {","sourceCodeStart":3105,"sourceCodeEnd":3141,"githubUrl":"https://github.com/zeroclaw-labs/zeroclaw/blob/88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc/crates/zeroclaw-runtime/src/sop/engine.rs#L3105-L3141","documentation":"Error \"checkpoint revise decisions use the revision persistence path\" thrown in zeroclaw-labs/zeroclaw.","triggerScenarios":"Thrown at crates/zeroclaw-runtime/src/sop/engine.rs:3123 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use the revision persistence path for checkpoint revise decisions."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc","analyzedAt":"2026-08-23T01:07:41.857Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}