Skip to content

feat: onboard pr-auto-review to canary — unmanaged block now empty - #669

Merged
don-petry merged 1 commit into
mainfrom
register-pr-auto-review
Jul 11, 2026
Merged

don-petry merged 1 commit into
mainfrom
register-pr-auto-review

Conversation

@don-petry

Copy link
Copy Markdown
Contributor

Brings pr-auto-review under canary (per the decision it needs staged, contained rollout — a bad @v2 move breaks PR-review dispatch fleet-wide at once).

  • Cut 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.
  • Register as a managed agent + remove from 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

…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>
Copilot AI review requested due to automatic review settings July 11, 2026 21:10
@don-petry
don-petry requested a review from a team as a code owner July 11, 2026 21:10
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@don-petry
don-petry merged commit c56985e into main Jul 11, 2026
@don-petry
don-petry deleted the register-pr-auto-review branch July 11, 2026 21:10
@coderabbitai

coderabbitai Bot commented Jul 11, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@don-petry, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 53 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 8cef9fd3-b42d-42ca-bacc-6aa073b6774e

📥 Commits

Reviewing files that changed from the base of the PR and between 33950ba and 9edd74d.

📒 Files selected for processing (2)
  • standards/canary-rings.json
  • tests/canary_rollout.bats
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch register-pr-auto-review

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@sonarqubecloud

Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread tests/canary_rollout.bats
[ "$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'"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

low

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
  1. In BATS tests, avoid spawning a subshell with bash -c when the command can be invoked directly within the run wrapper.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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-review as a managed canary agent with run_workflow, standard rings, and default #548 gate knobs.
  • Empties the unmanaged block in canary-rings.json (now {}) to reflect that all fleet reusables are managed.
  • Adds a Bats test asserting pr-auto-review is present in .agents and that unmanaged is 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 {}.

Comment thread tests/canary_rollout.bats
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"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants