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
This is the defined-moments half of #2261, per the maintainer's answers recorded on that issue. A Copilot round is requested when a pull request opens and on the head of a pull request into the default branch, a promotion among them, rather than on every push. On a pull request into any other branch, a fix push after the first round is covered by the recorded local strict-review pass the push already owes. The PR publishes that pass so the review gate can read it.
Ruleset.repo-config/develop.json and main.json set review_on_push and review_draft_pull_requests to false and keep review on open. Applying the change to live repositories is a separate config run, which needs its own go-ahead. Narrowing the account-level setting is a UI step for the maintainer.
pr_review.py attest. It publishes the local pass as a comment carrying <!-- fleet-local-review: head=<sha> findings=<n> -->, after confirming four things:
the checkout is at the pushed head
the checkout holds no other change
its merge base is the pull request's own
local_review.py check passes against the base
The comment carries the findings count the pass recorded. Per the maintainer's answer, the count is shown and not gated, since local findings are advisory. local_review.py status now reports the per-reviewer findings map that this reads.
status. An attested head on a pull request into a non-default branch, after Copilot's first round, reads as review_on_head=local and coverage=local. That holds only for an owner, member, or collaborator comment whose marker stands as a line of its own outside a fence, and only where the whole review history is in view and no round on record states or appears to state partial coverage.
wait. On such a head wait requests nothing. An attested head ends as covered, and one with no attestation exits 49 (AWAITING_LOCAL_PASS). --request asks for a round anyway. A promotion, a first round, a partial on record, and a history past the window are all requested as before.
A post-merge finding on Stop Requesting Copilot Into a Reached Rate Limit #2277, fixed here. A newer quota or error refusal now outranks older genuine coverage of the same head, in the digest's refusal= field and in wait's verdict, since it is the newest word on the pull request.
CodeRabbit. A drive prompts it at most once per pull request, on the head it judges final, and never after a rate-limit notice.
Docs. The rule is stated in GOVERNANCE.md "PR Review Etiquette", pr-review-conduct (loop step 3, step 8, Merge Gate item 2, and the reviewer bullets), the Copilot runbook, scripts/README.md, repo-config/README.md, docs/pr-reviewer-reference.md, and the one-liners in README.md, RESYNC.md, and AUDIT.md.
Verification
tests.test_pr_review and tests.test_local_review pass (658 tests). Each new behavior was shown to fail with it reverted or mutated, including the stale-refusal, partial, old-answer, and marker-shape cases.
A live GraphQL read confirmed that baseRepository.defaultBranchRef and IssueComment.authorAssociation exist.
Two local strict-review passes ran. Round 1 raised 16 findings: 15 are fixed, and Develop #5 went to the maintainer, who chose to show the count without gating on it. Round 2 raised 3 low findings, all fixed.
An attested head is covered whatever a stale refusal or an old plain answer says, a partial
on record or a truncated history requests a round instead of holding, the marker counts only
as a line of its own outside a fence, and attest checks the merge base and an unconfigured
clean tree. The docs name a pull request into the default branch rather than a promotion
alone, and drop the per-push wording left beside the new rule.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Per the maintainer's answer, attest reads the covering passes' recorded findings from
local_review.py status and carries the total in its marker, which status prints beside the
local-pass reading and nothing gates on. Unread merge-base cases report apart, the remote
ref is named in full, and the header states the new refusal and the requested cases.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Answering "Reject --request outside wait" (scripts/pr_review.py:4355), which the reviewer resolved on the fix push: fixed in 26831ab. --request now errors on any command but wait, the same validation --checkout has, with a test.
❌ Patch coverage is 89.07563% with 13 lines in your changes missing coverage. Please review. ⚠️ Please upload report for BASE (develop@5a814c1). Learn more about missing BASE report.
[P2] Document the fourth attestation check. This docstring says the attestation is gated by three checks, but the function also validates that the checkout's merge base matches the pull request's merge base before running local_review.py check. The count and the documented conditions are therefore incomplete. Describe all four checks so the public command documentation matches the refusal behavior.
Answering the previously missed finding "Document all four attestation checks" (scripts/pr_review.py:3788): fixed in 60a624f. The attest docstring now names all four checks, the merge base among them, and says the first two are read again once the check returns.
Answering "Mask inline code spans before parsing the marker" (scripts/pr_review.py:3953), which the reviewer resolved on the fix push: fixed in 793f50f. The marker is now parsed after CODE_SPAN.sub, so a multi-line span no longer leaves a quoted marker on a line of its own, and a test case fails with the mask removed.
…eview (#2284)
## Summary
Promotes develop to main with the pull requests below. Each was already
reviewed and merged into develop.
- [#2271](#2271): Correct
the false no-vocabulary claims about environment secrets.
- [#2276](#2276): A full
Copilot file table on an earlier round carries forward to a later head
when the pull request changes the same set of files at both commits, the
same bound a coverage statement uses.
- [#2275](#2275):
`install-tools.sh` no longer exits 1 silently when the tools named leave
out the last managed tool, and its report notes show a home path as `~`.
- [#2277](#2277): A
Copilot round that says only "encountered an error" is read as a
possible quota hit. `pr_review.py` reads the reviewer's own Actions run
log, which states the rate limit and the time it resets, and `wait` no
longer requests a review into either case.
- [#2278](#2278): A
Copilot round is requested when a pull request opens and on the head of
a pull request into the default branch, rather than on every push.
Covering a fix push into develop:
- A recorded local strict-review pass covers the push, published with
`pr_review.py attest` and read by `status` as `review_on_head=local`.
- The Copilot rule in `repo-config/develop.json` and `main.json` now
reviews on open only, not on push or for drafts.
Applying that ruleset change to the live fleet repositories is a
separate config run after this merges, and it needs the maintainer's
go-ahead. Until it runs, GitHub still reviews every push, including
pushes to this pull request.
Closes#2256Closes#2260Closes#2261Closes#2268Closes#2272
🤖 Generated with [Claude Code](https://claude.com/claude-code)
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
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.
Summary
This is the defined-moments half of #2261, per the maintainer's answers recorded on that issue. A Copilot round is requested when a pull request opens and on the head of a pull request into the default branch, a promotion among them, rather than on every push. On a pull request into any other branch, a fix push after the first round is covered by the recorded local strict-review pass the push already owes. The PR publishes that pass so the review gate can read it.
Ruleset.
repo-config/develop.jsonandmain.jsonsetreview_on_pushandreview_draft_pull_requeststo false and keep review on open. Applying the change to live repositories is a separate config run, which needs its own go-ahead. Narrowing the account-level setting is a UI step for the maintainer.pr_review.py attest. It publishes the local pass as a comment carrying<!-- fleet-local-review: head=<sha> findings=<n> -->, after confirming four things:local_review.py checkpasses against the baseThe comment carries the findings count the pass recorded. Per the maintainer's answer, the count is shown and not gated, since local findings are advisory.
local_review.py statusnow reports the per-reviewerfindingsmap that this reads.status. An attested head on a pull request into a non-default branch, after Copilot's first round, reads asreview_on_head=localandcoverage=local. That holds only for an owner, member, or collaborator comment whose marker stands as a line of its own outside a fence, and only where the whole review history is in view and no round on record states or appears to state partial coverage.wait. On such a headwaitrequests nothing. An attested head ends as covered, and one with no attestation exits49(AWAITING_LOCAL_PASS).--requestasks for a round anyway. A promotion, a first round, a partial on record, and a history past the window are all requested as before.A post-merge finding on Stop Requesting Copilot Into a Reached Rate Limit #2277, fixed here. A newer quota or error refusal now outranks older genuine coverage of the same head, in the digest's
refusal=field and inwait's verdict, since it is the newest word on the pull request.CodeRabbit. A drive prompts it at most once per pull request, on the head it judges final, and never after a rate-limit notice.
Docs. The rule is stated in
GOVERNANCE.md"PR Review Etiquette",pr-review-conduct(loop step 3, step 8, Merge Gate item 2, and the reviewer bullets), the Copilot runbook,scripts/README.md,repo-config/README.md,docs/pr-reviewer-reference.md, and the one-liners inREADME.md,RESYNC.md, andAUDIT.md.Verification
tests.test_pr_reviewandtests.test_local_reviewpass (658 tests). Each new behavior was shown to fail with it reverted or mutated, including the stale-refusal, partial, old-answer, and marker-shape cases.baseRepository.defaultBranchRefandIssueComment.authorAssociationexist.Closes #2261
🤖 Generated with Claude Code