feat: onboard pr-auto-review to canary — unmanaged block now empty - #669
Conversation
…ck now empty Per the decision that pr-auto-review needs staged, blast-radius-contained rollout (a bad @v2 move breaks PR-review dispatch in all consumer repos at once), bring it under canary instead of the frozen-@v2 model. - Cut pr-auto-review/v1.0.0 + next/ring0/ring1/stable at @v2's commit (376a4fc) — a ZERO-behavior-change migration: consumers repin off @v2 onto the namespaced channels running the exact same code. The pending pr-auto-review changes already on main (ahead of v2) will then roll out via canary SOAK (autocut cuts the next candidate; .github ring0 dogfoods it via `./`), rather than a big-bang @v2 move. - Register in canary-rings.json (host=.github, standard organic-traffic rings/gate) and REMOVE from unmanaged{} — which is now empty. Every fleet *-reusable.yml is a managed canary agent. Note: canary currently gates on reliability (run health), not correctness — a known limitation for decision-making agents, tracked as an enhancement (#668); onboarding proceeds on reliability now per that decision. Validated (read-only vs live tags): evaluate → COMPLETE; drift 0. canary_rollout.bats green (+pr-auto-review shape test). Remaining: migrate consumers off @v2 → @pr-auto-review/<ring>. Refs #668. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Warning Review limit reached
Next review available in: 53 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (2)
✨ Finishing Touches🧪 Generate unit tests (beta)
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 |
|
There was a problem hiding this comment.
Code Review
This pull request onboards the pr-auto-review agent to the canary ring model in standards/canary-rings.json, defining its deployment rings and gate transition configurations, which empties the unmanaged block. A corresponding test is added in tests/canary_rollout.bats to verify the onboarding. Feedback on the test suggests invoking jq directly within the run wrapper instead of spawning an unnecessary bash -c subshell, which simplifies quoting and improves efficiency.
| [ "$status" -eq 0 ] | ||
| run jq -e '.agents["pr-auto-review"].run_workflow == "PR Auto-Review — Ready Check"' "$RINGS" | ||
| [ "$status" -eq 0 ] | ||
| run bash -c "jq -r '.agents[\"pr-auto-review\"].rings | sort_by(.order) | map(.channel) | join(\",\")' '$RINGS'" |
There was a problem hiding this comment.
Avoid spawning an unnecessary subshell with bash -c in BATS tests. You can invoke jq directly within the run wrapper, which is cleaner, avoids complex quote escaping, and is more efficient. This aligns with the general practice of avoiding bash -c subshells in BATS tests.
run jq -r '.agents["pr-auto-review"].rings | sort_by(.order) | map(.channel) | join(",")' "$RINGS"
References
- In BATS tests, avoid spawning a subshell with
bash -cwhen the command can be invoked directly within therunwrapper.
There was a problem hiding this comment.
Pull request overview
Onboards the pr-auto-review reusable workflow into the canary-managed agent registry, moving it out of the unmanaged block and standardizing its ring + gate configuration to support staged rollouts.
Changes:
- Registers
pr-auto-reviewas a managed canary agent withrun_workflow, standard rings, and default #548 gate knobs. - Empties the
unmanagedblock incanary-rings.json(now{}) to reflect that all fleet reusables are managed. - Adds a Bats test asserting
pr-auto-reviewis present in.agentsand thatunmanagedis empty.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| tests/canary_rollout.bats | Adds assertions that pr-auto-review is canary-managed and unmanaged is empty. |
| standards/canary-rings.json | Moves pr-auto-review into managed agents with standard rings + gate defaults; sets unmanaged to {}. |
| run bash -c "jq -r '.agents[\"pr-auto-review\"].rings | sort_by(.order) | map(.channel) | join(\",\")' '$RINGS'" | ||
| [ "$output" = "next,ring0,ring1,stable" ] | ||
| # every reusable is now a managed agent — the unmanaged block holds nothing | ||
| run jq -e '(.unmanaged // {}) | length == 0' "$RINGS" |



Brings pr-auto-review under canary (per the decision it needs staged, contained rollout — a bad
@v2move breaks PR-review dispatch fleet-wide at once).pr-auto-review/v1.0.0+ channels at @v2's commit (376a4fc) — zero-behavior-change migration. The pr-auto-review changes already on main (ahead of v2) then roll out via canary soak, not a big-bang @v2 move.unmanaged{}— now empty. Every fleet reusable is canary-managed.Canary gates on reliability, not correctness (known limitation for decision agents → enhancement #668); onboarding on reliability now per that decision.
Validated: evaluate → COMPLETE; drift 0. bats 99/99. Remaining: migrate consumers off @v2 → @pr-auto-review/.
🤖 Generated with Claude Code