Skip to content

ci(pr-automation): make overlap detection advisory - #1957

Merged
Benoît Cortier (CBenoit) merged 5 commits into
masterfrom
cbenoit-advisory-overlap-successor
Sep 11, 2026
Merged

Benoît Cortier (CBenoit) merged 5 commits into
masterfrom
cbenoit-advisory-overlap-successor

Conversation

@CBenoit

@CBenoit Benoît Cortier (CBenoit) commented Sep 11, 2026 •

Copy link
Copy Markdown
Member

Metadata-level overlap is not a reason to cancel code review.
The classifier reports possible shared scope through overlap, using bounded candidate titles and truncated bodies without inferring history or priority.
triage/overlap and a neutral advisory comment inform maintainers while normal review proceeds under the CI, author, rate, evidence, legitimacy, and review-count gates.

Co-authored-by: Copilot App 223556219+Copilot@users.noreply.github.com

The classifier's duplicate signal is an approximate similarity judgement
over recent pull request titles and bodies, but it owned the `duplicate`
label, forced `maintainer-required`, and made the pull request
review-ineligible. A single uncertain guess could therefore cancel code
review, hiding real defects from the humans who still had to decide how
the related proposals should proceed.

The signal now only labels `triage/overlap` and leaves a comment saying
so. Review eligibility no longer reads it, so overlap-flagged pull
requests continue through the gate, the delayed retry, and publication
under every unchanged rule: CI, author eligibility, rate and evidence
limits, legitimacy, and the two-review limit. The advisory comment
states the possible overlap and its rationale without asserting
redundancy, priority, or suspended review.

`duplicate` is retired. Automation neither applies nor reads it, and it
is no longer declared, so eligibility ignores any copy an earlier run
left behind. The bootstrap workflow never deletes labels, so removing
the label from the repository itself remains a manual maintainer step.

The classifier prompt and its `duplicate` output field are unchanged
apart from wording that keeps the rationale descriptive.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot AI balanced review requested due to automatic review settings September 11, 2026 05:08
@github-actions github-actions Bot added risk/low Self-contained change with no cross-crate behavioral effect scope/tooling Build, CI, release, or developer tooling size/M Size: up to 449 counted lines and 10 files; exceeds S in either measure labels Sep 11, 2026

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

Failed classification can leave the legacy duplicate comment in place, and documentation wording needs clarification.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

Updates PR automation so detected overlap is advisory rather than review-blocking, while preserving existing review gates and classifier schema.

Changes:

  • Replaces blocking duplicate handling with triage/overlap.
  • Adds advisory comments and updates routing, labels, documentation, prompts, and tests.
  • Retires legacy duplicate label usage while preserving internal compatibility.
File summaries
File Description
.github/workflows/pr-automation.intent.md Updates overlap policy.
.github/pr-automation/write-state.js Renders advisory overlap comments.
.github/pr-automation/routing.js Removes overlap-based blocking.
.github/pr-automation/review-skip-summary.js Removes duplicate skip messaging.
.github/pr-automation/resolve-state.js Applies overlap state and marker cleanup.
.github/pr-automation/prompts/classifier.md Clarifies overlap classification.
.github/pr-automation/labels.json Adds triage/overlap and retires legacy usage.
.github/pr-automation/automation.test.js Tests advisory behavior and migration.
.github/PR_AUTOMATION.md Documents the revised policy.
Review details
  • Files reviewed: 9/9 changed files
  • Comments generated: 4
  • Review effort level: Lite

Comment thread .github/pr-automation/resolve-state.js Outdated
Comment thread .github/PR_AUTOMATION.md Outdated
Comment thread .github/pr-automation/routing.js Outdated
Comment thread .github/workflows/pr-automation.intent.md Outdated

@github-actions github-actions Bot 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.

Verified the PR converts duplicate detection into advisory overlap handling: routing, the review skip summary, and reviewPolicyEligible no longer read `duplicate`; classification applies `triage/overlap` with a non-blocking comment and removes the legacy blocking marker; labels. retires `duplicate`; docs, intent, classifier prompt, and tests are updated consistently. The implementation matches the stated intent, including the stale `maintainer-required` removal, review dispatch, retry-gate, and publication paths being advisory-only. One valid low-severity test-only finding remains: the reworked overlap-state test helper gained an unused `labels` parameter. The change is correct; only that cleanup is published.

Comment thread .github/pr-automation/automation.test.js Outdated
@github-actions github-actions Bot added the ai-reviewed/1 One automated review completed label Sep 11, 2026
Use overlap for the classifier signal, candidate evidence, and workflow
plumbing so the schema describes possible shared scope rather than a
redundancy verdict. Keep prose focused on current behavior and rationale.

Remove duplicate-marked blocking comments on failed classification too,
without owning the duplicate label or changing review eligibility.
Cover schema agreement, bounded metadata flow, and failure cleanup.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@github-actions github-actions Bot added size/L Size: up to 899 counted lines and 20 files; exceeds M in either measure and removed size/M Size: up to 449 counted lines and 10 files; exceeds S in either measure labels Sep 11, 2026
Leave duplicate-marked comments untouched so advisory overlap does not
carry migration-only code or tests. Keep the documentation focused on
active behavior.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep comments, documentation, and policy fixtures focused on advisory
overlap without references to the removed duplicate label.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep the activation policy focused on advisory behavior rather than
classifier schema naming.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@CBenoit
Benoît Cortier (CBenoit) merged commit 070c56c into master Sep 11, 2026
41 checks passed
@CBenoit
Benoît Cortier (CBenoit) deleted the cbenoit-advisory-overlap-successor branch September 11, 2026 15:23
Anton Mostovoy (antonmos) added a commit to antonmos/IronRDP that referenced this pull request Sep 20, 2026
…ting-session-default

* upstream/master: (22 commits)
  ci(agents): sync shared review skills (Devolutions#1973)
  [DEVOPS-4678] chore(ci): drop the Artifactory cache refresh step (Devolutions#1972)
  feat(activex): present EGFX dirty regions (Devolutions#1874)
  fix(pdu): add missing error info codes (Devolutions#1966)
  ci(pr-automation): hand off after a clean review (Devolutions#1959)
  ci(pr-automation): link resolved PR in run summary (Devolutions#1960)
  ci(pr-automation): show automation mode in the run name (Devolutions#1958)
  ci(pr-automation): make overlap detection advisory (Devolutions#1957)
  feat(server): add ConnectionPolicy to reject a second connection (Devolutions#1913)
  feat(rdpeai): add RdpeaiServer orchestration for AUDIO_INPUT (Devolutions#1945)
  ci(pr-automation): clarify review repair failures (Devolutions#1956)
  ci(pr-automation): clarify workflow name and run title (Devolutions#1950)
  ci(pr-automation): delay maintainer handoff (Devolutions#1937)
  ci(pr-automation): reserve turns a repair can spend (Devolutions#1939)
  fix(egfx): do not track frames a suspended client cannot acknowledge (Devolutions#1912)
  feat(rdpeudp): MS-RDPEUDP version 1/2 reliable data transfer (Devolutions#1919)
  fix(viewer): map native physical keycodes (Devolutions#1929)
  ci(pr-automation): classify after final review (Devolutions#1936)
  fix(egfx): decode AVC420 with full-range BT.709 (Devolutions#1923)
  test(core): add real-world progressive RemoteFX difference fixtures from Haven (Devolutions#1848)
  ...

# Conflicts:
#	crates/ironrdp-server/src/builder.rs
#	crates/ironrdp-server/src/server.rs

This branch was previously deployed

1 inactive deployment
llm-providers — b119458a Deployed Sep 11, 2026 by CBenoit via Classify pull request #176
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai-reviewed/1 One automated review completed risk/low Self-contained change with no cross-crate behavioral effect scope/tooling Build, CI, release, or developer tooling size/L Size: up to 899 counted lines and 20 files; exceeds M in either measure

Development

Successfully merging this pull request may close these issues.

2 participants