docs: make CodeRabbit review best-effort instead of merge-blocking - #2189
Conversation
… reviews A CodeRabbit review is no longer a hard merge requirement. Agents must still request one (the coderabbit-review label, or the trusted workflow dispatch when the label run does not fire) and wait about 15 minutes. A review that arrives blocks merge until its feedback is resolved. If nothing arrives (silence, a "Review skipped" status, a rate limit, or a failed request workflow), agents record the observed outcome in the PR and merge on the remaining gates. The old wording told agents to add needs-human-review whenever CodeRabbit was silent. That label fails check-specialist-review-evidence, and CodeRabbit has not reviewed an agent-authored PR since #2115 (2026-09-21), so finished PRs stalled waiting for per-PR waivers. Updated every surface that stated the gate: rule 25 (restructured so the local-reviewer and CodeRabbit rules each own their sections), rule 14's state-file tracker, /do Phase 7, the Codex do skill and its prompt, the PR template's CodeRabbit evidence section, and the AGENTS.md guardrail. Also formats rule 14, rule 25 and AGENTS.md (format debt 2118 -> 2115). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Address doc-sync-validator findings on the CodeRabbit best-effort rule:
- /do Phase 7 now carries the "let a started review finish" clause that
rule 25 and the PR template already had.
- Cap that extension at about 45 minutes in total, after which the
review counts as not arriving, so a stuck review cannot block forever.
- Reword rule 25's checklist item ("the ~15-minute wait completed").
- Add "do not re-trigger in a loop" to the AGENTS.md row and the Codex
do skill summary.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important Review skippedBot user detected. To trigger a single review, invoke the ⚙️ Run configurationConfiguration used: Repository: raphaeltm/simple-agent-manager/.coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
|
@coderabbitai review |



Summary
/doPhase 7 told agents to addneeds-human-reviewand not merge whenever CodeRabbit did not respond. That label failscheck-specialist-review-evidence. CodeRabbit has not reviewed an agent-authored PR since fix(snapshot): restore exact saved Git state #2115 (2026-09-21): it reportsReview skipped: bot user not eligible for review(GraphQL survey: zero CodeRabbit reviews on agent PRs Add Cloudflare cost audit quality script #2116–docs(blog): publish SAM daily engineering journal #2188). The result was that finished PRs waited on per-PR human waivers. fix(vm-agent): bind prompt-cancel grace watchdog to the cancelled attempt #2180 and Whole-session resource timeline for the Resources drawer #2185 are parked that way right now.coderabbit-reviewlabel, or the trustedworkflow_dispatchwhen the label run does not fire) and wait about 15 minutes.Review skipped, rate limit, failed workflow), the agent records what it observed and merges on the remaining gates.needs-human-review,request_human_input, or waiting for a waiver.needs-human-reviewreason and that CodeRabbit does not go in the Specialist table./doPhase 7 and the Phase 0 todo item.doskill and itsopenai.yamlprompt.73ed7a68rewritten to the new rule.7da78e9f(now folded into73ed7a68), plus118e4832and05aa1079, the waivers for Draft: Implement ProjectData terminal archive-sharding bridge #1984 and Fix cleanup for providerless destroying nodes #2157, both already merged.Validation
pnpm lint: N/A, no TypeScript or JavaScript changedpnpm typecheck: N/A, no TypeScript changedpnpm test: N/A, no runtime code or tests changedpnpm format:checkratchet passed (2115/2225).prettier --checkis clean on every changed Markdown file. The pre-existing quote-style warning onopenai.yamlis unchanged and outside the ratchet.pnpm quality:agent-context-budget: rule 25 is +2.9 KB, about +700 tokens in the Claude root surface.Staging Verification (REQUIRED for all code changes — merge-blocking)
N/A: docs-only. The diff touches agent-instruction Markdown, the PR template, and one Codex skill prompt string; there are zero runtime code changes.
Staging Verification Evidence
N/A: docs-only. No application code changed, so there is nothing to deploy or exercise on staging.
UI Compliance Checklist (Required for UI changes)
N/A: no UI changes.
UI Screenshot Evidence
N/A: no UI changes.
End-to-End Verification (Required for multi-component changes)
N/A: docs-only process change.
Data Flow Trace
N/A: no runtime data flow changes. The only machinery involved was checked against the text:
scripts/quality/check-specialist-review-evidence.tsfails on theneeds-human-reviewlabel and onPENDING/FAILEDrows..github/workflows/coderabbit-bot-review.ymlfires on the label only for non-draft bot PRs;workflow_dispatchworks for any open PR.Untested Gaps
N/A: no code paths changed.
Post-Mortem (Required for bug fix PRs)
What broke
Finished agent PRs stalled for hours or days with every other gate green. They waited on a CodeRabbit review that never came, then on per-PR human waivers. Examples: #2133, #2157, #2170–#2174, #2180, #2185.
Root cause
Rule 25 and
/doPhase 7 treated "CodeRabbit did not respond" as "cannot verify" and escalated vianeeds-human-review. From 2026-09-21, CodeRabbit skips every bot-authored PR, so the escalation fired on every agent PR.Class of bug
An over-firing guard keyed on a proxy: "a CodeRabbit review exists" stood in for the actual condition, "there is unresolved CodeRabbit feedback". See
.claude/rules/74-proxy-signals-must-match-the-condition.md. When no review exists, there is also no unresolved feedback.Why it wasn't caught
The external service changed its behavior silently, and each stall was resolved by a one-off waiver, which masked the systemic cause.
Process fix included in this PR
.claude/rules/25-review-merge-gate.md,.claude/rules/14-do-workflow-persistence.md,.claude/commands/do.md,.agents/skills/do/SKILL.md,.agents/skills/do/agents/openai.yaml,.github/pull_request_template.md,AGENTS.md. SAM policy73ed7a68carries the same rule.Post-mortem file
This PR description, plus the "Why CodeRabbit Is Best-Effort" section of
.claude/rules/25-review-merge-gate.md.Specialist Review Evidence (Required for agent-authored PRs)
needs-human-reviewlabel added and merge deferred to human (N/A: all completed).coderabbit.yaml, evidence-check failure modes) and found no old-rule text left in the repo. Two MEDIUM and three LOW findings; fixed in fdb96cb: added the in-progress-review clause to/do, capped it at about 45 min, reworded rule 25's checklist, and added "do not re-trigger" to AGENTS.md and the Codex skill. The draft-PR edge case is left as is because step 1 already routes drafts to the workflow dispatch.CodeRabbit Review Evidence (Required for agent-authored PRs)
CodeRabbit Notes
Outcome: CodeRabbit did not review, so this step is complete under the new rule 25, step 4. No
needs-human-reviewlabel and no waiver.coderabbit-reviewlabel, after CI was green and doc-sync-validator had finished. Label run 36619711658 succeeded at 19:30:21Z and posted@coderabbitai reviewunder the human-scoped PAT.CodeRabbitstatus issuccess: "Review skipped: bot user not eligible for review" (19:30:26Z). Its summary comment re-rendered at 19:30:25Z as "Review skipped: Bot user detected" and shows Plan: Advanced, so this is the bot-author exclusion, not a quota limit. It is the same outcome every agent PR has had since fix(snapshot): restore exact saved Git state #2115.Exceptions (If any)
Agent Preflight (Required)
Classification
External References
N/A: no external API was integrated or changed. CodeRabbit's behavior was established from repository evidence:
.coderabbit.yaml:auto_review.enabled: false, labelcoderabbit-review..github/workflows/coderabbit-bot-review.yml.mainbranch ruleset: the only required check is "Durable Object Workers", with no required reviews.Codebase Impact Analysis
Agent-instruction surfaces only:
.claude/rules/25-review-merge-gate.md.claude/rules/14-do-workflow-persistence.md.claude/commands/do.md.agents/skills/do/SKILL.mdand.agents/skills/do/agents/openai.yaml.github/pull_request_template.mdAGENTS.mdThe CI evidence parsers do not read the CodeRabbit section, so they are unaffected:
scripts/quality/check-specialist-review-evidence.tsparses only the Specialist table and labels, andscripts/quality/check-preflight-evidence.tsreads only this preflight block. The CodeRabbit workflow and config are unchanged.Documentation & Specs
Updated in this PR:
.claude/rules/25-review-merge-gate.md: new "Request CodeRabbit and Wait — a Review Is Not Required" rule and rationale..claude/rules/14-do-workflow-persistence.md: Phase 7 tracker..claude/commands/do.md: Phase 7 steps 4–6 and the Phase 0 todo..agents/skills/do/SKILL.mdandagents/openai.yaml..github/pull_request_template.md: CodeRabbit evidence section, plus a Specialist-table note.AGENTS.md: CodeRabbit guardrail row.No public docs under
apps/www/describe the gate; the only mention is a historical blog post, left as is. No spec docs apply.Constitution & Risk Check
Principle XI does not apply: no code, URLs, timeouts or limits changed. The 15-minute wait is agent guidance, not a runtime value.
Risks and mitigations:
🤖 Generated with Claude Code