You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Stop pr_review.py Requesting Copilot on Feature Pull Requests into Develop #3758
scripts/pr_review.py still requests a Copilot review on every feature pull request into develop, while the rule text says the hosted review runs once per change, at the promotion.
The rule:.agents/skills/pr-review-conduct/SKILL.md:42-45 and .agents/skills/drive-pr/SKILL.md:111-112 say Copilot's hosted review runs "once per change, at the promotion". A pull request into a non-default branch is covered by an attested local strict pass instead (#3403). The develop ruleset no longer carries a copilot_code_review rule.
The code:run_wait in scripts/pr_review.py (around lines 1637-1651) auto-requests Copilot on any pull request unless an attested local pass is already held when the wait starts. A drive that waits before recording its local pass therefore requests a Copilot round anyway.
Evidence: each of the last ten hub pull requests merged into develop (#3707 through #3737) carries a Copilot review, with the request coming from the agent's account. The weekly scripts/backlog_metrics.py count of Copilot review runs is unchanged from the #3391 baseline (418 for the week to 2026-11-01, against a target of about half).
Done when:run_wait does not request Copilot on a pull request into a non-default branch, whether or not a local pass is held yet. A test covers the case where the local pass is recorded after the wait begins. One week of backlog_metrics.py output shows Copilot review runs falling toward the promotion-only rate.
Filed from the decision triage on #3391, which closed with this gap split out as a bug.
Released (2026-11-01): worktree and branch removed, so this claim holds no files. PR #3775 merged without fixing this issue. The repeated Copilot request comes from outside pr_review.py (see the evidence comment above), so this issue needs the maintainer.
.agents/skills/pr-review-conduct/SKILL.md and its generated trees (.github/skills/pr-review-conduct/, .claude-plugin/fleet-skills/skills/pr-review-conduct/, .claude-plugin/fleet-skills/.source-digests/pr-review-conduct)
drive-pr generated trees (included section), GOVERNANCE.md "PR Review Etiquette", .github/copilot-instructions.md
Finding from the burndown worker on feature/burn-3758: the request does not come from pr_review.py, so no change to run_wait closes this.
run_wait already requests nothing on a pull request into a non-default branch, attested or not. It requests only under --request, a partial round on record, or a truncated review history. test_a_feature_pull_request_with_no_round_is_never_requested pins the no-attestation case.
So the request comes from GitHub when the pull request is created. The likely source is the account-level Copilot setting that automatically requests a review on every pull request the account opens. That setting is not visible through the API, and changing it is the maintainer's call. Turning it off would leave promotions covered by the main ruleset's own Copilot rule. This issue stays open for that decision rather than closing on a code change.
A Copilot review request lands on every feature pull request into develop one to two seconds after creation, before any pr_review.py command runs. Should the maintainer turn off the GitHub-side setting that sends it, or should this issue close with the code as it is?
Options, recommended first:
(Recommended) Turn off the account-level automatic Copilot review, then close Stop pr_review.py Requesting Copilot on Feature Pull Requests into Develop #3758 once a feature PR shows no Copilot request.run_wait on main already requests nothing on a PR into a non-default branch, and the develop ruleset has no copilot_code_review rule. The main ruleset's rule (review_on_push: false) still gives one review per promotion, which is the "once per change, at the promotion" rule. The setting cannot be read through the API, so the check is that the next feature PR shows no review_requested event. It also stops auto-review on PRs this account opens outside the fleet. No code work in flight.
Keep the setting and have tooling remove Copilot's pending request right after each PR is created. Adds a write to every PR, races a review that may already have started, and fights the platform rather than fixing the source.
Evidence:#3758 (comment) (seven PRs, request 1-2s after createdAt); #3792, #3793, #3796, #3798, #3799 each show a Copilot review_requested event 1-2s after creation, base develop; develop ruleset has no copilot_code_review rule, main ruleset carries it with review_on_push: false; scripts/pr_review.py:1551 (run_wait) and tests/test_pr_review.py:4939 on main; #3403 (96d1396); #3775; #3391 (comment). The account-level source is inferred from timing and actor, since the API cannot show that setting.
Blocks: none. Option 1 is a settings change only the maintainer can make.
Maintainer answer (2026-11-02, via decision triage): the maintainer turns off the account-level automatic Copilot review.
No code change. With that setting off, a feature PR into develop gets no Copilot request unless pr_review.py runs with --request, and a promotion PR into main gets one review from the main ruleset at open, with pr_review.py wait requesting the follow-up rounds on new heads. Remaining work: confirm the next feature PR into develop shows no Copilot review_requested event, then close this issue.
Maintainer answer (2026-11-02, given in the backlog-burndown session, recorded by the orchestrator):
copilot on auto review is still in use by otehr agents using the existing workflow, if i turn it off now that work will break, copilot's auto review being disabled should be scheduled along with possibly the auto review disabled for coderabbit and quodo at the same time so that the nbehavior to require explicit bot reivews is consistent and can be gated across the fleet and otehr running agents.
What this means for the work:
Do not turn off the account-level Copilot automatic review on its own. Other agents still depend on the existing workflow.
Schedule the cutover instead: one moment at which automatic review is turned off and explicit bot review requests become the required behaviour. A gate makes that behaviour consistent across the fleet and across running agents.
Turning off automatic review for CodeRabbit and Qodo at the same time is possibly part of the same cutover. That part is not decided yet.
So this issue is not waiting on a single setting toggle. It needs a coordinated cutover plan, and the settings change comes last. The next backlog-burndown planner decides which in-repo preparation can be worked now and files the open CodeRabbit/Qodo question as a decision.
Maintainer answer, follow-up (2026-11-02, given in the backlog-burndown session, recorded by the orchestrator). This settles the part the previous comment left open:
the auto review for bots should be consistent, be that for copilot or quodo or coderabbit, i am using the free for open source versions of coderabbit and quodo so there is no cost factor, while i do pay for copilot, the bot review workflow should be consistent, so scratch that "possibly" and make that "consistncy required"
What this settles:
Consistency is required, not optional. Copilot, CodeRabbit and Qodo follow the same review workflow.
One scheduled cutover turns off automatic review for all three. From then on, explicit review requests are the required behaviour, gated the same way across the fleet and across running agents.
Cost is not a reason to treat them differently. CodeRabbit and Qodo are on their free open-source plans, and the maintainer pays for Copilot, but the workflow is the same for all three.
There is no open CodeRabbit/Qodo question left to file as a decision.
Held back by the backlog-burndown away run (2026-11-02, round 3), re-judged against the maintainer's answers above.
Held as reaching past the tree: turning off automatic review for Copilot, CodeRabbit, or Qodo, and any change to current review behaviour before the cutover.
Maintainer answer on #3826 (decision triage via the windows handoff #3853, 2026-11-03): Option 1: land behaviour-neutral preparation behind one hub-hosted switch and release it, then flip everything in one maintainer-chosen window when no session is mid-drive. The preparation can be dispatched as its own group. The settings changes and the switch flip stay with the maintainer, and this issue stays held until the cutover.
Activity
ptr727 commentedon Nov 1, 2026
Released (2026-11-01): worktree and branch removed, so this claim holds no files. PR #3775 merged without fixing this issue. The repeated Copilot request comes from outside
pr_review.py(see the evidence comment above), so this issue needs the maintainer.Backlog burndown claim (round 1, group G1). Branch:
feature/burn-3758. Issues: #3758, #3571, #2180, #3732, #3713, #3726.Predicted file set:
scripts/pr_review.py,scripts/pr_review_rounds.py,scripts/pr_review_copilot.py,scripts/reviewers/copilot.jsontests/test_pr_review.py,tests/test_pr_review_copilot.py.agents/skills/pr-review-conduct/SKILL.mdand its generated trees (.github/skills/pr-review-conduct/,.claude-plugin/fleet-skills/skills/pr-review-conduct/,.claude-plugin/fleet-skills/.source-digests/pr-review-conduct)drive-prgenerated trees (included section),GOVERNANCE.md"PR Review Etiquette",.github/copilot-instructions.mdptr727 commentedon Nov 1, 2026
Finding from the burndown worker on
feature/burn-3758: the request does not come frompr_review.py, so no change torun_waitcloses this.run_waitalready requests nothing on a pull request into a non-default branch, attested or not. It requests only under--request, a partial round on record, or a truncated review history.test_a_feature_pull_request_with_no_round_is_never_requestedpins the no-attestation case.develop(Place a Copilot Outstanding Findings List and Read a Table Leaving Out Only Lineless Files as Covering #3702, Merge a Gate-Met Feature Pull Request Through pr_review.py and Own the Kit's autoMode Entries #3704, Read a Push's Remote and Branch in the Repository Git Uses in the Write Guard #3709, Keep a Bare Push's Branch Unresolved Behind an Unrecognized env Option in the Write Guard #3731, Add an Away Mode to backlog-burndown and Retire unattended-handoff #3735, Read a Closed Read-Back as Unmerged in pr_review.py merge #3737, Improve decision-triage From Its First Full Run #3760), thereview_requestedevent for Copilot lands one to two seconds after the pull request'screatedAt. That is before any driver could runwait, and it lands once per pull request.developruleset carries nocopilot_code_reviewrule. Themainruleset does.pr_review.pycommand on it.So the request comes from GitHub when the pull request is created. The likely source is the account-level Copilot setting that automatically requests a review on every pull request the account opens. That setting is not visible through the API, and changing it is the maintainer's call. Turning it off would leave promotions covered by the
mainruleset's own Copilot rule. This issue stays open for that decision rather than closing on a code change.Read Copilot's Excluded-Files Refusal as Its Own Kind and Align Merge…
ptr727 commentedon Nov 2, 2026
Decision triage: researched question
A Copilot review request lands on every feature pull request into
developone to two seconds after creation, before anypr_review.pycommand runs. Should the maintainer turn off the GitHub-side setting that sends it, or should this issue close with the code as it is?Options, recommended first:
run_waiton main already requests nothing on a PR into a non-default branch, and thedevelopruleset has nocopilot_code_reviewrule. Themainruleset's rule (review_on_push: false) still gives one review per promotion, which is the "once per change, at the promotion" rule. The setting cannot be read through the API, so the check is that the next feature PR shows noreview_requestedevent. It also stops auto-review on PRs this account opens outside the fleet. No code work in flight.pr-review-conductanddrive-prtext saying "once per change, at the promotion" stays false in practice.Evidence: #3758 (comment) (seven PRs, request 1-2s after
createdAt); #3792, #3793, #3796, #3798, #3799 each show a Copilotreview_requestedevent 1-2s after creation, basedevelop;developruleset has nocopilot_code_reviewrule,mainruleset carries it withreview_on_push: false;scripts/pr_review.py:1551(run_wait) andtests/test_pr_review.py:4939on main; #3403 (96d1396); #3775; #3391 (comment). The account-level source is inferred from timing and actor, since the API cannot show that setting.Blocks: none. Option 1 is a settings change only the maintainer can make.
ptr727 commentedon Nov 2, 2026
Maintainer answer (2026-11-02, via decision triage): the maintainer turns off the account-level automatic Copilot review.
No code change. With that setting off, a feature PR into
developgets no Copilot request unlesspr_review.pyruns with--request, and a promotion PR intomaingets one review from themainruleset at open, withpr_review.py waitrequesting the follow-up rounds on new heads. Remaining work: confirm the next feature PR intodevelopshows no Copilotreview_requestedevent, then close this issue.ptr727 commentedon Nov 2, 2026
Maintainer answer (2026-11-02, given in the backlog-burndown session, recorded by the orchestrator):
What this means for the work:
So this issue is not waiting on a single setting toggle. It needs a coordinated cutover plan, and the settings change comes last. The next backlog-burndown planner decides which in-repo preparation can be worked now and files the open CodeRabbit/Qodo question as a
decision.ptr727 commentedon Nov 2, 2026
Maintainer answer, follow-up (2026-11-02, given in the backlog-burndown session, recorded by the orchestrator). This settles the part the previous comment left open:
What this settles:
There is no open CodeRabbit/Qodo question left to file as a
decision.ptr727 commentedon Nov 2, 2026
Held back by the backlog-burndown away run (2026-11-02, round 3), re-judged against the maintainer's answers above.
scripts/pr_review.pyand a switch keyed gate, depends for its interface on how Decide: How the Coordinated Cutover to Explicit Bot-Review Requests Is Triggered, Scheduled, and Gated #3826 is answered. So it waits for that answer rather than landing an interface the decision could change.ptr727 commentedon Nov 3, 2026
Maintainer answer on #3826 (decision triage via the windows handoff #3853, 2026-11-03): Option 1: land behaviour-neutral preparation behind one hub-hosted switch and release it, then flip everything in one maintainer-chosen window when no session is mid-drive. The preparation can be dispatched as its own group. The settings changes and the switch flip stay with the maintainer, and this issue stays held until the cutover.