✨ feat(dashboard): expose the per-PR review perspective cap in the Review Gate dialog - #7550
Merged
Merged
Conversation
…view Gate dialog review.max_perspectives_per_pr shipped with no way to set it from the dashboard: the Review Gate section renders require_approval, fan_out, max_parallel_reviews, reviewer_agents, all_authors, acknowledge_no_findings, fixer_agent and human_decision_label, and the PUT handler accepts exactly those keys. The cap was reachable only by hand-editing YAML, which on a hosted spoke means editing a file the dashboard overlay then rewrites. That made the lever effectively unavailable on the deployment that needs it most. Parallel review slots are a fixed budget spent in PR order, so without a cap the first PR in a deep queue absorbs every slot for its own perspectives — adding reviewers buys more opinions on one PR instead of coverage across many, and that one PR collects every comment at once now that reviewers publish. Adds the field to the PUT body with the same >= 0 validation max_parallel_reviews uses, and a number input to the Review Gate section. 0 or empty is unchanged: no cap, fan every perspective out at once. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: Andrew Anderson <andy@clubanderson.com>
Contributor
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
Contributor
|
Thank you for your contribution! Your PR has been merged. We'd love to hear how your experience was: share feedback |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
review.max_perspectives_per_prshipped in #7528 with no way to set it from the dashboard. The Review Gate section rendersrequire_approval,fan_out,max_parallel_reviews,reviewer_agents,all_authors,acknowledge_no_findings,fixer_agentandhuman_decision_label— andhandleReviewConfigPutaccepts exactly those keys. The cap was reachable only by hand-editing YAML, which on a hosted spoke means editing a file the dashboard overlay then rewrites.So the lever is effectively unavailable on the deployment that needs it most.
Why it matters
Parallel review slots are a fixed budget spent in PR order. Without a cap, the first PR in a deep queue absorbs every slot for its own perspectives — adding reviewers buys more opinions on one PR instead of coverage across many. And now that reviewers publish, that one PR collects every comment at once.
Observed on a bluefin spoke before the cap was reachable: a single PR had accumulated 6 reviews while most of a 480-PR queue had none.
Change
max_perspectives_per_pradded to the PUT body, with the same>= 0validationmax_parallel_reviewsalready uses.0or empty is unchanged: no cap, fan every perspective out at once. No existing hive changes shape.Tests
TestReviewConfigPut_MaxPerspectivesPerPRcovers reject-negative (and that the rejected write does not mutate config), apply, absent-key-leaves-untouched, and explicit-0-clears-the-cap.go build ./...cleango test ./pkg/dashboard/ -run 'TestReviewConfig|Static|Index|Shuffle'pass.github/scripts/check-inline-js.jspasses onstatic/index.html(syntax +no-undef)gofmtclean