{"record":{"id":"04f586102dad6ae8","repo":"nikivdev/code","slug":"review-failed-no-review-attempts-were-available","errorCode":null,"errorMessage":"review failed: no review attempts were available","messagePattern":"review failed: no review attempts were available","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/commit.rs","lineNumber":4112,"sourceCode":"        );\n        if let Some(last_error) = review_failures.last() {\n            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 {","sourceCodeStart":4094,"sourceCodeEnd":4130,"githubUrl":"https://github.com/nikivdev/code/blob/a747e741ae92c09071d0ae946ab48488adcff1ce/src/commit.rs#L4094-L4130","documentation":"This error is raised by the commit command when the AI review pipeline finished (all attempts exhausted, including timeouts) but collected zero recorded failure messages, meaning no review attempt ever produced a result to report. It prevents the commit from proceeding silently with an unknown review state and forces an explicit failure. It is a guard against a code path where the review loop yielded nothing at all.","triggerScenarios":"Running the commit flow (e.g. `f commit`) with review enabled when every review attempt was skipped, cancelled, or timed out before recording a failure string into review_failures (e.g. all attempts hit the timed_out:true branch with quality: None).","commonSituations":"Review backend (LLM/codex) hung and every attempt timed out; review process killed externally; environment where the reviewer binary is unresponsive so no failure text was ever pushed into review_failures.","solutions":["Check that the review backend (codex/LLM process) is installed, on PATH, and responding; run it manually to verify.","Increase the review timeout configuration if reviews are slow in your environment.","Re-run the commit; transient backend stalls are a common cause.","If review is not needed for this commit, disable review or use the documented skip/override path."],"exampleFix":"// before\nf commit --review\n// after (skip review when backend unavailable)\nf commit --no-review","handlingStrategy":"retry","validationCode":"// before committing, check review backend is responsive\n// e.g. ensure `codex` answers a cheap ping within your timeout budget","typeGuard":null,"tryCatchPattern":"match result {\n    Err(e) if e.to_string().contains(\"no review attempts were available\") => {\n        // inspect review backend health, then retry the commit\n    }\n    r => r?,\n}","preventionTips":["Pre-flight check the review backend with a small request before large commits.","Set a realistic review timeout for your environment.","Monitor for codex process hangs during reviews."],"tags":["commit","review","timeout","cli"],"backgroundTag":"review-attempts-exhausted","analyzedSha":"a747e741ae92c09071d0ae946ab48488adcff1ce","analyzedAt":"2026-09-01T22:43:55.719Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}