Skip to content

Read Copilot's Excluded-Files Refusal as Its Own Kind and Align Merge Gate Item 2 - #3775

Merged
ptr727 merged 4 commits into
developfrom
feature/burn-3758
Nov 1, 2026
Merged

ptr727 merged 4 commits into
developfrom
feature/burn-3758

Conversation

@ptr727

@ptr727 ptr727 commented Nov 1, 2026 •

Copy link
Copy Markdown
Owner

Summary

Local pass findings

  • introduced, scripts/pr_review_rounds.py polled_past: the excluded branch did not require that no Copilot round covers the head. Fixed in 6a0b134, with a test that fails without it.

Deferred, filed

Not fixed here

#3758 stays open. run_wait already requests nothing on a pull request into a non-default branch, attested or not (test_a_feature_pull_request_with_no_round_is_never_requested). On the recent feature pull requests sampled, the Copilot request lands about two seconds after the pull request is created, before any wait runs, and the develop ruleset carries no Copilot rule. So the request comes from the platform when the pull request is created rather than from pr_review.py. The evidence is on the issue.

Closes on promotion: #3571, #2180, #3732, #3713, #3726

🤖 Generated with Claude Code

ptr727 and others added 3 commits November 1, 2026 10:56
… Gate Item 2 With the Local Cover

Read Copilot's "wasn't able to review any files" refusal as an
`excluded` refusal kind. It no longer blocks the local cover, so the
attested local pass covers such a head into a non-default branch, and
`wait` names its own remedy where no local pass can.

State in pr-review-conduct Merge Gate item 2 that a later-head
attested local pass clears an earlier-head quota or error refusal on a
pull request into a non-default branch, as the code already reads it.

Add the `open review findings:` and `review findings remain:` labels
to the Copilot reader, and state the lineless-file table allowance in
item 2, the canonical copilot-instructions, and PR Review Etiquette.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The body-less liveness read takes a head refusal for a finished round,
so the hold for an excluded-files refusal is decided on the full read
after it. The tests now give `wait` a body-less liveness read first.

Scope the remaining-refusal sentence in pr-review-conduct to where no
local pass stands in, and drop an unscoped claim about a moved head.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Read the full payload when the body-less liveness read calls the head
done, and let `polled_past` decide whether an excluded-files refusal
holds the head for a local pass or waits on a pending request. A held
head then gets the same check poll as any other, and a pending request
reads as pending rather than as the refusal.

Name the file-count refusal as the one splitting clears in
pr-review-conduct's remaining-refusal sentence.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings November 1, 2026 19:19
@ptr727

ptr727 commented Nov 1, 2026

Copy link
Copy Markdown
Owner Author

A recorded local strict-review pass covers head beede88b7cfd27fac48754682fcf522503ad84df, the content this pull request carries at that commit against develop, and it recorded 1 finding.

@coderabbitai

coderabbitai Bot commented Nov 1, 2026 •

Copy link
Copy Markdown

Important

  • Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

Run configuration
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

An excluded-files refusal landing after a real round on the same head
left that round's coverage unread. Both branches of `polled_past` now
require that no Copilot round covers the head.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ptr727

ptr727 commented Nov 1, 2026

Copy link
Copy Markdown
Owner Author

A recorded local strict-review pass covers head 6a0b134b0f5a2713eb7556c816a52c1699e4c970, the content this pull request carries at that commit against develop, and it recorded 0 findings.

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.

🟡 Changes recommended

A moderate active finding remains in scripts/pr_review_rounds.py that can cause an unattested feature PR to rely on an excluded-files refusal and exit incorrectly instead of using the real head review.

1 open issue
What changed in this PR

This pull request adds explicit handling for Copilot reviews refused because all files are excluded, aligns review-gate guidance with existing behavior, and expands Copilot finding-label recognition.

Changes:

  • Adds the excluded refusal kind, dedicated wait statuses, local-pass handling, and regression tests.
  • Documents earlier-head refusal coverage and lineless-file allowances across governance and review instructions.
  • Adds Copilot finding-label spellings and validates reviewer refusal vocabulary.
  • An unresolved edge case remains in polled_past: an excluded refusal after a genuine review of the current head can incorrectly force an unattested feature pull request to await a local pass.

This pull request requires changes.

File Description
tests/​test_pr_review.py Tests excluded-file refusals, local coverage, polling, and stale refusals.
tests/​test_pr_review_copilot.py Tests refusal vocabulary and additional finding-list labels.
scripts/​reviewers/​copilot.json Adds the excluded refusal kind and Copilot finding-label spellings.
scripts/​pr_review.py Updates wait behavior, statuses, and excluded-refusal handling.
scripts/​pr_review_rounds.py Adds excluded-refusal detection, polling behavior, and local coverage rules.
scripts/​pr_review_copilot.py Adds excluded to the refusal vocabulary.
GOVERNANCE.md Documents lineless-file table coverage.
.github/​skills/​pr-review-conduct/​SKILL.md Aligns merge-gate guidance with refusal and coverage behavior.
.github/​copilot-instructions.md Documents lineless-file allowances and excluded-refusal handling.
.claude-plugin/​fleet-skills/​skills/​pr-review-conduct/​SKILL.md Updates the generated review-conduct skill distribution.
.claude-plugin/​fleet-skills/​.source-digests/​pr-review-conduct Updates the generated skill source digest.
.agents/​skills/​pr-review-conduct/​SKILL.md Updates the authored review-conduct skill source.

Review effort: Lite

Comment thread scripts/pr_review_rounds.py Resolved
@codecov

codecov Bot commented Nov 1, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 82.34%. Comparing base (71194c9) to head (6a0b134).
⚠️ Report is 2 commits behind head on develop.

Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #3775      +/-   ##
===========================================
+ Coverage    82.31%   82.34%   +0.02%     
===========================================
  Files           28       28              
  Lines         9438     9454      +16     
===========================================
+ Hits          7769     7785      +16     
  Misses        1669     1669              
Flag Coverage Δ
python-3.13 82.34% <100.00%> (+0.02%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@ptr727
ptr727 merged commit c24836e into develop Nov 1, 2026
13 checks passed
@ptr727
ptr727 deleted the feature/burn-3758 branch November 1, 2026 19:54
ptr727 added a commit that referenced this pull request Nov 1, 2026
…xcluded-Files Refusal, and Fix backlog-burndown and Prose Gate Gaps (#3778)

Promotes the changes merged into `develop` since promotion #3762 to
`main`, the first round of a backlog burndown.

- [#3764](#3764) reads a
bare push whose branch the write guard cannot read as writing every
protected default (`main`, `master`, `develop`), as `--all` is. That
covers a run-time `cd`, `git -C` or `env -C`, an exported `GIT_DIR`, and
a command that can switch the branch before the push. It also drops the
unused `_bare_push_branch` parameters. Naming the branch in the refspec
is the remedy, per the maintainer's decisions on #3729 and #3730.
- [#3765](#3765) has the
prose gate's diff mode report what a move adds by checking a moved file
at its old path and its new path, replacing the hand-kept
`path_readings` table. It also reads a script whole when an edited
shebang changes its lexer.
- [#3776](#3776) fixes
`backlog-burndown`'s ranking, claim, liveness and cleanup gaps:
  - An attended run holds an unapproved agent-safety issue.
- Claim comments name their branch in backticks and are released by an
edit.
  - A silent worker counts as finished only with a merged pull request.
  - The orchestrator removes a standalone clone after its merge.
  - An abandoned worker discards its own uncommitted edits.
- [#3775](#3775) reads
Copilot's excluded-files refusal as its own `excluded` kind, which an
attested local pass covers on a pull request into a non-default branch.
It aligns Merge Gate item 2 with the code on an earlier-head refusal,
adds two Copilot label spellings, and states the lineless-file allowance
where the prose describes table coverage.
- [#3779](#3779) deletes
an abandoned group's pushed branch with a checked remote delete before
its claim is released, and says the claim lookup's `<branch>` is
replaced before it runs. It answers this promotion's first review round.
- [#3781](#3781) has a
release open the claim comment with `**Released (<date>):**`, and has
the claim lookup skip a comment that opens with it. It answers this
promotion's second review round.
- [#3782](#3782) has
`pr_review.py wait` poll a pending review request past an excluded-files
refusal under `--request` as well. It answers this promotion's second
review round.

Fixes #3729
Fixes #3730
Fixes #3723
Fixes #3711
Fixes #3714
Fixes #3761
Fixes #1275
Fixes #1274
Fixes #1306
Fixes #1301
Fixes #3733
Fixes #3571
Fixes #2180
Fixes #3732
Fixes #3713
Fixes #3726

🤖 Generated with [Claude Code](https://claude.com/claude-code)
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