{"record":{"id":"5e06e960dee1a6ab","repo":"nikivdev/code","slug":"review-failed","errorCode":null,"errorMessage":"review failed:\n  {}","messagePattern":"review failed:\n  (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/commit.rs","lineNumber":4114,"sourceCode":"            println!(\"Last review error: {}\", last_error);\n        }\n        ReviewResult {\n            issues_found: false,\n            issues: Vec::new(),\n            summary: Some(format!(\n                \"Review unavailable; commit proceeded in fail-open mode after {} failed attempt(s).\",\n                review_failures.len()\n            )),\n            future_tasks: Vec::new(),\n            timed_out: true,\n            quality: None,\n        }\n    } else {\n        restore_staged_snapshot_in(&repo_root, &staged_snapshot)?;\n        if review_failures.is_empty() {\n            bail!(\"review failed: no review attempts were available\");\n        }\n        bail!(\"review failed:\\n  {}\", review_failures.join(\"\\n  \"));\n    };\n\n    println!(\"────────────────────────────────────────\\n\");\n\n    // Log review result for async tracking\n    let context_chars = session_context.as_ref().map(|c| c.len()).unwrap_or(0);\n    ai::log_review_result(\n        &repo_root,\n        review.issues_found,\n        &review.issues,\n        context_chars,\n        0, // TODO: track actual review time\n    );\n\n    if review.timed_out {\n        if review_failed_open {\n            println!(\"⚠ Review unavailable after fallback attempts, proceeding anyway\");\n        } else {","sourceCodeStart":4096,"sourceCodeEnd":4132,"githubUrl":"https://github.com/nikivdev/code/blob/a747e741ae92c09071d0ae946ab48488adcff1ce/src/commit.rs#L4096-L4132","documentation":"This error aggregates one or more concrete review failure messages collected during the AI review phase of the commit flow. After restoring the staged snapshot, each failure string recorded in review_failures is joined and surfaced in a single bail so the developer sees every reason the review failed. The commit is aborted.","triggerScenarios":"Running the commit flow with review enabled when one or more review attempts recorded failures (e.g. reviewer process errors, invalid responses, quality evaluation failures) into review_failures.","commonSituations":"Reviewer model returns malformed output; review subprocess crashes; network/API errors from the review backend; quality checks inside the reviewer reject the diff.","solutions":["Read the indented failure list in the error message; fix the first concrete cause listed.","Verify the review backend credentials and network access.","Re-run the commit after addressing the reported failures.","If the failures are non-blocking for you, disable review or use the documented override for this commit."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"if let Err(e) = commit_cmd.run() {\n    let msg = e.to_string();\n    if let Some(rest) = msg.strip_prefix(\"review failed:\\n\") {\n        for failure in rest.lines() { eprintln!(\"review issue: {}\", failure.trim()); }\n    }\n}","preventionTips":["Keep codex credentials and version current.","Run reviews on a stable network connection.","Address the first listed failure before re-running; failures are joined per attempt."],"tags":["commit","review","cli"],"backgroundTag":"review-failed","analyzedSha":"a747e741ae92c09071d0ae946ab48488adcff1ce","analyzedAt":"2026-09-01T22:43:55.719Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}