Repository navigation
Add the scheduled ReviewSLA job: comments, reminders, digest, dashboard - #44
Merged
Merged
Conversation
staflsystemsci
Bot
requested review from
a team,
fcheein,
gretl-silva-stafl,
mament0,
mns4595,
mzhu48,
nehalkpatel and
thebhef
and removed request for
a team
October 1, 2026 23:59
This was referenced Oct 1, 2026
Member
Author
|
Review SLA Nobody owes a review on this PR right now. Due times are in business hours, 10:00 to 17:00 Pacific: 4 h for a PR under 250 added lines, 7 h otherwise, and 4 h for a re-review. Mid-stack, an assignee owes a response on the lowest PR they haven't approved. Dashboard |
nehalkpatel
reviewed
Oct 2, 2026
thebhef
approved these changes
Oct 2, 2026
fcheein
approved these changes
Oct 2, 2026
Member
Author
Merge activity
|
Step 2 of Proposal 2's rollout. Every 30 minutes during business hours the job rebuilds each assignee's clock from the open PRs' timelines (first response with the stack rule, and re-review after a push and re-request), then, by REVIEW_SLA_MODE: - shadow: a Review SLA comment on each PR, the Confluence dashboard (saved only when it changes, as a minor edit) and the 10:00 Slack digest - remind: also a Slack DM when a review is due, recorded in the comment's hidden marker so it's sent once, and reassignment across the stack of an assignee the PTO calendar has out before their review is due The least-loaded pick moves from AssignReviewers to ReviewConfig/pick.js so reassignment picks the way assignment does, and pto.js gains readOutDates for each person's out dates. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Commit dates need the app's Contents permission in private repos, and a rebase rewrites them. The PR's head commit against the commit each review was left on needs only Pull requests read, and can't be fooled by a rebase. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This repo's run logs are public, and the job's would show who is out of office and activity in the private repos it reads. The scheduled workflow moves to a private repo; the README has it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ermission GraphQL's PullRequestReview.commit is refused in private repos without the app's Contents permission. REST's commit_id isn't, so it's read for the PRs where a re-review could be running: a re-request after that person's review. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…c PRs An assignee who is out was replaced on every PR in the stack, including ones they'd already approved, so their replacement owed reviews that were done. Now only the PRs they haven't approved change hands. The reassignment notice said the person was out of office, which on a public repo's PR anyone can read. There it now says only that they aren't available. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
willson556
force-pushed
the
review-sla-remind
branch
from
October 2, 2026 22:59
a5d6ccb to
ab408ac
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Step 2 of Proposal 2's rollout (rollout plan): the ReviewSLA action. Merging it changes nothing by itself.
The scheduled workflow that runs it lives in a private repo, not this one, because this repo's run logs are public and the job's would show who is out of office and activity in the private repos. The README has the workflow. It's skipped until that repo's
REVIEW_SLA_MODEvariable is set, and setting it back tooffis the rollback.Every 30 minutes during business hours (10:00 to 17:00 Pacific, business days), it reads the open PRs in the five pilot repos and this one. From their timelines it rebuilds each assignee's clock (
ReviewSLA/owed.js):gt submitstart nothing.What each mode does:
shadowremindenforceremindDetails:
AssignReviewerstoReviewConfig/pick.js, so both pick the same way.Setup: the org secrets and variables in the README are all set, including
CONFLUENCE_URLandCONFLUENCE_USER. Still to do: the private repo with the workflow and itsREVIEW_SLA_MODEvariable.Testing:
node --test AssignReviewers/ ReviewConfig/ ReviewSLA/: 81 cases, 26 of them new.off, outside business hours, shadow vs remind, one DM per clock across runs, reassignment across a two-PR stack, someone out only after their due time, the digest cron in daylight and standard time, the dashboard saving only on change, an unreadable repo, a failed comment write sending no DM, a missing Slack ID, andenforce.shadowrun in Actions from a throwaway branch (since deleted) read the open PRs, wrote the Review SLA comments on AssignReviewers: skip people who are out, from the Rippling PTO calendar #41 and Add ReviewSLA step 1: first-response clocks and report mode #43, and saved the Confluence dashboard. Before the commit-ID change, the private repos failed with "Resource not accessible by integration". Slack hasn't been called for real yet.🤖 Generated with Claude Code