{"record":{"id":"685b662a0ebcd3a0","repo":"zeroclaw-labs/zeroclaw","slug":"checkpoint-edit-and-revise-decisions-must-resolve","errorCode":null,"errorMessage":"checkpoint edit and revise decisions must resolve through the approval broker","messagePattern":"checkpoint edit and revise decisions must resolve through the approval broker","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/zeroclaw-runtime/src/sop/engine.rs","lineNumber":3088,"sourceCode":"    /// Resolve a checkpoint decision (`PausedCheckpoint`). `Approve` resumes the\n    /// success path (records the checkpoint `Completed`, pipes forward down\n    /// `routing.next`); `Deny` takes the failure path (records the checkpoint\n    /// `Failed` and routes through the step's `on_failure`, exactly like a step\n    /// that failed execution). This is the single entry point for both outcomes;\n    /// callers never branch on status. `approve_step` is the `Approve`-only alias.\n    pub fn decide_checkpoint(\n        &mut self,\n        run_id: &str,\n        decision: super::approval::ApprovalDecision,\n    ) -> Result<SopRunAction> {\n        match decision {\n            super::approval::ApprovalDecision::Approve => self.approve_step(run_id),\n            super::approval::ApprovalDecision::Deny { reason } => {\n                self.deny_checkpoint(run_id, reason)\n            }\n            super::approval::ApprovalDecision::Amend { .. }\n            | super::approval::ApprovalDecision::Revise { .. } => {\n                bail!(\n                    \"checkpoint edit and revise decisions must resolve through the approval broker\"\n                )\n            }\n        }\n    }\n\n    /// Apply a broker-authorized checkpoint decision and persist the resulting run\n    /// state together with the approver audit row. The run store is the durable\n    /// source of truth for both surfaces, so a failed combined write leaves the\n    /// checkpoint parked with no false resolution event.\n    fn decide_checkpoint_with_principal(\n        &mut self,\n        run_id: &str,\n        decision: super::approval::ApprovalDecision,\n        principal: super::approval::ApprovalPrincipal,\n    ) -> Result<SopRunAction> {\n        let prior_run = self\n            .active_runs","sourceCodeStart":3070,"sourceCodeEnd":3106,"githubUrl":"https://github.com/zeroclaw-labs/zeroclaw/blob/88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc/crates/zeroclaw-runtime/src/sop/engine.rs#L3070-L3106","documentation":"Error \"checkpoint edit and revise decisions must resolve through the approval broker\" thrown in zeroclaw-labs/zeroclaw.","triggerScenarios":"Thrown at crates/zeroclaw-runtime/src/sop/engine.rs:3088 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Route checkpoint edit/revise decisions through the approval broker instead of direct calls."],"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"}