Commit b5f9079
Add daily PR review queue workflow with actionability detection (dotnet#34818)
<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!
## Description
Adds a daily GitHub Actions workflow that generates a prioritized,
actionable PR review queue as a GitHub issue -- with intelligent
turn-state detection that tells you **whose turn it is** on each PR.
### What it does
- Runs weekdays at 8:00 UTC (or on-demand via `workflow_dispatch`)
- Queries open PRs across `dotnet/maui` and `dotnet/docs-maui`
- Determines actionability for each PR using a layered heuristic:
1. **Bot detection** -- filters out maestro, dependabot,
copilot-reviewer, etc.
2. **Blocked states** -- do-not-merge, stale labels
3. **Project board status** -- reads the MAUI SDK Ongoing board (Ready
To Review, In Progress, Changes Requested, Todo, Approved)
4. **Review decision** -- APPROVED, CHANGES_REQUESTED with
author-response detection
5. **"Who spoke last"** -- compares author activity (issue comments +
inline review-thread replies) against reviewer activity timestamps
- Creates a GitHub issue organized by actionability: FTE-actionable PRs
first, waiting-on-author collapsed, bot PRs collapsed
- Auto-closes previous queue issues to avoid clutter
- Filters out `stale` and `do-not-merge` PRs
### Implementation
Uses a **plain GitHub Action** (not gh-aw) since the task is
deterministic formatting -- no AI reasoning needed:
- ~30s runtime (vs ~2min with LLM)
- Zero LLM cost
- No `COPILOT_GITHUB_TOKEN` dependency -- just built-in `GITHUB_TOKEN`
- Deterministic output every run
- No prompt injection surface
### Changes
- **New**: `.github/workflows/pr-review-queue.yml` -- scheduled workflow
with `schedule`, `workflow_dispatch`, and `pull_request` (validation
only) triggers
- **Modified**: `query-reviewable-prs.ps1` -- adds:
- `-OutputFormat markdown` option with actionability-grouped output
- `Get-ProjectBoardStatuses` -- paginates full project board for all
status columns
- `Get-TurnState` -- 5-layer decision tree for "whose turn is it"
- `Test-IsBot` -- bot account detection
- Comment + review-thread analysis for author activity detection
- `#Requires -Version 7.0` for null-coalescing operator
### Example output
The daily issue shows:
- **Actionability Summary** table (FTE-actionable count, waiting on
author, backlog, bot, blocked)
- **P/0 Priority** PRs with turn state
- **Ready to Merge** (approved PRs)
- **Needs FTE Review** (milestoned first, then by age, with turn-state
detail)
- **Waiting on Author** (collapsed `<details>` section)
- **Bot / Automated** (collapsed)
- **Queue Health** stats
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>1 parent f4fb086 commit b5f9079
File tree
2 files changed
+466
-22
lines changed- .github
- skills/find-reviewable-pr/scripts
- workflows
2 files changed
+466
-22
lines changed
0 commit comments