Repository navigation
ci: hand off approved review feedback to authors - #13162
Conversation
Use current-head human approval summaries to endorse pre-existing submitted inline feedback without interpreting their wording. Keep submitted reviewer participation separate from approval eligibility and preserve conservative last-push, CODEOWNER and queue gates. Signed-off-by: Dariusz Porowski <3431813+DariuszPorowski@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Scanned FilesNone |
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Unprotected targets can misclassify a formal changes-requested review as waiting for the reviewer.
Review effort: Balanced
Findings: 1
What changed in this PR
Updates PR handoff labeling to recognize submitted human reviews and approval-endorsed inline feedback.
Changes:
- Adds submitted-review evidence and bot-feedback endorsement logic.
- Refines reviewer/author handoff labels.
- Documents the new lifecycle rules.
| File | Description |
|---|---|
.github/scripts/pr-status-labels.mjs |
Implements review-evidence reconciliation. |
.github/labels.yml |
Updates lifecycle label descriptions. |
docs/contributing/contributing-pull-requests/README.md |
Documents handoff behavior. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #13162 +/- ##
=======================================
Coverage 59.63% 59.63%
=======================================
Files 768 768
Lines 44975 44975
=======================================
Hits 26823 26823
Misses 18152 18152 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Track latest human change requests independently of required approval on the target branch. Keep the author next until an explicit later pending review request, without treating a push or comment-only review as clearing changes. Signed-off-by: Dariusz Porowski <3431813+DariuszPorowski@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Radius functional test overviewClick here to see the test run details
Test Status⌛ Building Radius and pushing container images for functional tests... |

Summary
pr:waiting-for-authorwhen a non-author human's latest current-head approval has a nonempty summary and existing unresolved submitted inline feedback, including bot feedback that predates that approval.pr:waiting-for-reviewinstead of incorrectly requesting a new reviewer.Reason for change
A submitted review clears its pending request, so zero pending requests does not establish that a PR has never had a reviewer. An approving human can also ask the author to address existing inline feedback through the submitted review summary. Ignoring both forms of evidence leaves approved-with-feedback PRs incorrectly labeled
pr:needs-reviewer.The deterministic rule checks summary emptiness, not wording. It endorses only submitted feedback whose comment creation and associated review submission were at or before the approval; pending, dismissed, stale, author, and bot approvals do not qualify. General issue discussion is not classified automatically. Required approval, CODEOWNER, last-push approval, and required-check safeguards remain separate and use the actual target branch, including stacked targets.
#12770 and #12783 are lifecycle examples, not feature changes implemented by this PR.
N/A: no issue is closed by this maintenance follow-up.
How to test
The following targeted checks were run locally and passed. JavaScript execution used Node.js 24.9.0; missing runtime/spellcheck tooling was restored outside the repository and removed afterward.
node --check .\.github\scripts\pr-status-labels.mjspnpm exec prettier --config .\.github\linters\.prettierrc.yml --check .\.github\scripts\pr-status-labels.mjs .\.github\labels.ymlpnpm exec markdownlint-cli2 .\docs\contributing\contributing-pull-requests\README.md --config .\.github\linters\.markdownlint-cli2.yamlpnpm exec markdown-table-formatter .\docs\contributing\contributing-pull-requests\README.md --checkpnpm exec cspell lint --config .\.github\linters\.cspell.yml --no-progress .\docs\contributing\contributing-pull-requests\README.md .\.github\labels.ymlgit diff --cached --check(before committing)A one-off harness outside the repository imported the actual reconciler and passed 84 cases. Coverage included baseline reproduction for both real PR shapes, unendorsed bots, positive approvals without threads, submitted/pending/dismissed/stale/author/bot reviewer filtering, later bot comments and submissions, superseding reviews, nested review/thread/comment pagination, resolved and outdated threads, null decisions with existing human reviews, genuinely missing reviewers, last-push/CODEOWNER/approval-count/check gates, stacked target rules, manual holds, draft/closed behavior, unrelated/release/stale labels, fork/scheduled signals, and API/cursor errors. The temporary harness was removed; no test suite or test workflow was added to the repository.
Read-only live runs at 2026-09-30 16:31 UTC used the actual reconciler with real REST/GraphQL reads and mocked label/queue mutation routes. Both PRs were open and non-draft, had current-head human approvals, null aggregate review decisions, zero pending requests, and unresolved inline feedback. Their live labels remained
pr:standardandpr:needs-reviewer; zero remote mutations occurred.mainpr:standard,pr:waiting-for-authordp/idempotent-tag-reconciliationpr:standard,pr:waiting-for-authorThe main target still required one CODEOWNER approval and last-push approval; the stacked target had no active pull-request or required-status-check rules. Neither run proposed approval, queue readiness, or dequeueing.
Full Go builds/tests were not run because no Go code changed. No workflow YAML changed, so actionlint was not needed.
File change summary
.github/scripts/pr-status-labels.mjs.github/labels.ymldocs/contributing/contributing-pull-requests/README.md