{"record":{"id":"b4e7013d32050d5c","repo":"zeroclaw-labs/zeroclaw","slug":"run-run-id-checkpoint-input-is-not-a-json-object-b4e701","errorCode":null,"errorMessage":"Run {run_id} checkpoint input is not a JSON object; there is no field an amend could replace","messagePattern":"Run (.+?) checkpoint input is not a JSON object; there is no field an amend could replace","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/zeroclaw-runtime/src/sop/engine.rs","lineNumber":2810,"sourceCode":"                anyhow::Error::msg(format!(\n                    \"SOP '{}' step {current_step} does not declare an editable field \\\n                     (`- edit:`); an amend cannot apply\",\n                    sop.name\n                ))\n            })\n    }\n\n    /// Pre-flight an `Amend` WITHOUT mutating anything: the step must declare an\n    /// editable field and the checkpoint's piped value must be a JSON object the\n    /// field can replace into.\n    fn can_amend_checkpoint(&self, run_id: &str) -> Result<()> {\n        self.checkpoint_edit_field(run_id)?;\n        let run = self\n            .active_runs\n            .get(run_id)\n            .ok_or_else(|| anyhow::Error::msg(format!(\"Active run not found: {run_id}\")))?;\n        if !step_input_value(run, run.current_step).is_object() {\n            bail!(\n                \"Run {run_id} checkpoint input is not a JSON object; \\\n                 there is no field an amend could replace\"\n            );\n        }\n        Ok(())\n    }\n\n    /// The step a `Revise` would re-run: the last COMPLETED step before the\n    /// checkpoint, but only when it is an `llm.generate` capability (the only\n    /// step kind a re-draft is meaningful for). `None` = this gate is not\n    /// revisable.\n    fn revisable_predecessor(&self, run_id: &str) -> Option<u32> {\n        let run = self.get_run(run_id)?;\n        let pred = run\n            .step_results\n            .iter()\n            .rev()\n            .find(|r| r.status == SopStepStatus::Completed && r.step_number < run.current_step)?","sourceCodeStart":2792,"sourceCodeEnd":2828,"githubUrl":"https://github.com/zeroclaw-labs/zeroclaw/blob/88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc/crates/zeroclaw-runtime/src/sop/engine.rs#L2792-L2828","documentation":"Error \"Run {run_id} checkpoint input is not a JSON object; there is no field an amend could replace\" thrown in zeroclaw-labs/zeroclaw.","triggerScenarios":"Thrown at crates/zeroclaw-runtime/src/sop/engine.rs:2810 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["The checkpoint input must be a JSON object with a field to replace; there is nothing to amend."],"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"}