Add author nudges and clean Copilot review routing#129
Conversation
Pull request dashboard statusStatus last refreshed: 2026-07-22 14:37:42 UTC.
This automated status or its linked feedback items may be incorrect. If something looks wrong, please report it with the result you expected. |
There was a problem hiding this comment.
Pull request overview
Adds durable author reminders and optional clean Copilot review gating while consolidating dashboard side effects into one serialized publisher.
Changes:
- Adds one-time author nudges after one week.
- Adds clean Copilot review routing and re-review requests.
- Consolidates comments, Slack, nudges, and reviews into durable delivery.
Reviewed changes
Copilot reviewed 21 out of 21 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
pull-request-dashboard/README.md |
Documents new behavior and configuration. |
.github/workflows/pull-request-dashboard.yml |
Passes Copilot configuration. |
.github/workflows/pull-request-dashboard-repo.yml |
Consolidates publishing workflow. |
.github/scripts/pull-request-dashboard/author_nudge.py |
Implements author nudges. |
.github/scripts/pull-request-dashboard/copilot_review.py |
Tracks Copilot re-review requests. |
.github/scripts/pull-request-dashboard/dashboard.py |
Adds routing gates and delivery state. |
.github/scripts/pull-request-dashboard/delivery.py |
Serializes dashboard side effects. |
.github/scripts/pull-request-dashboard/github_cli.py |
Adds Copilot review API support. |
.github/scripts/pull-request-dashboard/notify_slack.py |
Supports shared delivery timestamps. |
.github/scripts/pull-request-dashboard/route_presentation.py |
Adds Copilot route presentation. |
.github/scripts/pull-request-dashboard/state.py |
Adds nudge and review ledgers. |
.github/scripts/pull-request-dashboard/test_author_nudge.py |
Tests nudge behavior. |
.github/scripts/pull-request-dashboard/test_copilot_review.py |
Tests review delivery. |
.github/scripts/pull-request-dashboard/test_dashboard.py |
Tests routing and refresh behavior. |
.github/scripts/pull-request-dashboard/test_delivery.py |
Tests consolidated delivery. |
.github/scripts/pull-request-dashboard/test_github_cli.py |
Tests Copilot API integration. |
.github/scripts/pull-request-dashboard/test_notify_slack.py |
Tests Copilot Slack suppression. |
.github/scripts/pull-request-dashboard/test_pr_status_comment.py |
Tests Copilot status rendering. |
.github/scripts/pull-request-dashboard/test_route_presentation.py |
Tests Copilot route labels. |
.github/scripts/pull-request-dashboard/test_state.py |
Tests new state ledgers. |
.github/scripts/pull-request-dashboard/test_top_level_actions.py |
Tests configuration propagation. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…elivery # Conflicts: # .github/workflows/pull-request-dashboard-repo.yml
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 22 out of 22 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (1)
.github/scripts/pull-request-dashboard/author_nudge.py:100
- If the reminder POST fails after this status update succeeds, the pending nudge keeps its pre-update
source_fingerprint. Because that fingerprint includes issue comments and the rendered status always gets a fresh timestamp, the next publisher treats its own status write as a routing-input change and clears the pending nudge instead of retrying it. Exclude dashboard-managed status comments from the fingerprint, or persist a refreshed fingerprint after this write so transient reminder failures remain durable.
publish_pr_status(repo, pr_number, dashboard_state)
…ommand explanations
…malized provenance
…verride freshness
…external overrides
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 28 out of 28 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (1)
.github/scripts/pull-request-dashboard/dashboard_override.py:131
- If the label write succeeds but
ensure_command_replyfails, the label webhook refreshes this same unacknowledged command withlabel_applied == True. This then clearsdashboard_override_requested, andapply_dashboard_overrideturns the command into analready_routedno-op; the retry tells the author their command had no effect even though it applied the label. Preserve the command's pending routed acknowledgement until an authenticated ack marker is observed, while still distinguishing a genuinely pre-existing label.
"dashboard_override_requested": command_pending and not label_applied,
Add author reminders for pull requests that remain in Waiting on authors for a week, and optionally require a clean Copilot review on the current head before routing a pull request back to reviewers or maintainers. Each continuous stay in Waiting on authors receives at most one reminder; leaving resets the clock, so a pull request that later returns can receive another reminder after a new week-long wait. The dashboard also requests follow-up Copilot reviews when needed and avoids duplicating pending requests.
These changes combine #125 and #126 because both need the same durable delivery boundary:
update-dashboardcalculates routing with read-only target-repository access and records pending work on the state branch, while one serialized, repository-widepublish-dashboardjob delivers status comments, author reminders, Copilot re-review requests, Slack notifications, and the dashboard issue. Consolidating them avoids adding more competing state-branch writers, lets surviving publishers drain work left by superseded pending jobs, and leaves the reusable repository workflow with only the update and publish jobs.It also addresses #112, by letting the pull request author or a member of the repository's
approver_teamscomment/dashboard route:reviewersto move a pull request from Waiting on authors to Waiting on reviewers, applying thedashboard:route-overriddenlabel to mark the override. The label is released automatically once routing reaches reviewers, and both the reminder and the live status comment advertise the command.Author-facing comment examples
The author handle is shown in backticks below so this description does not send a real mention notification; the live comments mention the author normally.
Live PR status comment (author-routed, with feedback)
Author reminder (nudge)
Closes #26
Closes #110
Supersedes #125 and #126.