Skip to content

Copilot Refuses a Pull Request Carrying Only Default-Excluded Files, and No Rule Covers It #2180

Closed

Description

@ptr727

A pull request whose only changed file is in Copilot's default review exclusions, a uv.lock for example, gets a Copilot review that reads "Copilot wasn't able to review any files in this pull request". pr_review.py status reports it as refusal=YES and exits wait with REVIEW_IS_A_REFUSAL. The only remedy it names is splitting the pull request, which applies to a file-count refusal and not to this one. Re-requesting repeats the refusal on the same head, so no Copilot round can ever cover such a pull request.

Neither pr-review-conduct's Merge Gate nor GOVERNANCE.md "PR Review Etiquette" says what closes the gate here. A drive stops and has to ask the maintainer ad hoc. In ptr727/HomeAutomation-Config#629, a forward sync of a Dependabot security bump to CloudInit/uv.lock, the maintainer approved merging on CI plus the local-strict-review pass.

Reproduce

Open a pull request that changes only a uv.lock (or any other default-excluded file), let Copilot review it, and run pr_review.py status <N> --repo <owner>/<repo>.

What would close it

  • pr_review.py recognizes the excluded-files refusal separately from the file-count one, and names its own remedy.
  • The Merge Gate states what stands in for the Copilot round on such a pull request, or says that it always escalates to the maintainer.

Activity

  1. ptr727 commented on Nov 1, 2026

    @ptr727
    OwnerAuthor

    Decision triage split the undecided item out of this issue into #3740, which carries the decision label. Everything else here stays as ordinary work an agent can do without the maintainer.

  2. ptr727 commented on Nov 1, 2026

    @ptr727
    OwnerAuthor

    Maintainer answer to the split decision #3740 (decision triage, 2026-11-01): Option 1: read Copilot's excluded-files refusal as its own refusal kind that does not block local_cover, so the attested local strict pass covers such a PR into a non-default branch. A PR into the default branch still goes to the maintainer.

  3. ptr727 commented on Nov 1, 2026

    @ptr727
    OwnerAuthor

    Released (2026-11-01): worktree and branch removed, so this claim holds no files. Its fix merged to develop in PR #3775. The issue closes when that is promoted.

    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.json
    • tests/test_pr_review.py, tests/test_pr_review_copilot.py
    • .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
  4. ptr727 commented on Nov 1, 2026

    @ptr727
    OwnerAuthor

    Released (2026-11-01): worktree and branch removed, so this claim holds no files. Its fix merged to develop in PR #3782.

    Backlog burndown claim (round 1, promotion fix 2). Branch: feature/burn-3778-fix2. This fixes the #3778 round-2 finding on polled_past: under --request, wait does not read past an excluded-files refusal while a review request is pending. That gap came in with the #2180 fix in #3775.

    Predicted file set:

    • scripts/pr_review.py, scripts/pr_review_rounds.py
    • tests/test_pr_review.py
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions