Repository navigation
ci(pr-automation): make overlap detection advisory - #1957
Conversation
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>
There was a problem hiding this comment.
🟡 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
duplicatehandling withtriage/overlap. - Adds advisory comments and updates routing, labels, documentation, prompts, and tests.
- Retires legacy
duplicatelabel 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
There was a problem hiding this comment.
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.
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>
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>
…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
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/overlapand 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