Skip to content

ReviewSLA: list owed reviews with Graphite links on the dashboard and in the digest - #47

Merged
willson556 merged 2 commits into
mainfrom
review-sla-lists
Oct 8, 2026
Merged

willson556 merged 2 commits into
mainfrom
review-sla-lists

Conversation

@willson556

@willson556 willson556 commented Oct 7, 2026 •

Copy link
Copy Markdown
Member

The Review SLA dashboard showed only how many reviews each person owed, and the 10:00 digest listed only the overdue ones. To find what you owe, you had to go looking. This lists the reviews themselves, linked to Graphite, where the team reviews stacks.

  • Dashboard:
    • The status column still shows a checkmark, or the number overdue.
    • Next to it, every review the person owes: the PR (linked to Graphite), whether it's a first response or a re-review, and when it's due. Titles are left out so a busy row stays short; the link leads to the PR.
    • Overdue reviews are in bold, with when they went overdue.
    • The separate count and overdue columns are gone.
  • Digest: two sections, Overdue and Due today, each listing the reviews by person with Graphite links. Then a one-line count of reviews owed but due after today, and the dashboard link. When nothing is overdue or due today, it says so.
  • Reminder DMs link to Graphite too.

Graphite links are built from the PR's GitHub URL: github.com/<owner>/<repo>/pull/<n> becomes app.graphite.com/github/pr/<owner>/<repo>/<n>.

The dashboard will now change whenever a review starts or stops being owed, not only when one goes overdue, so it saves a new version more often. Each save is still a minor edit, and only when the content changes.

Testing:

  • node --test AssignReviewers/ ReviewConfig/ ReviewSLA/: 91 cases. Three are new and check the exact output: the digest with overdue reviews, the digest with reviews due today plus one due later, and a dashboard row with one overdue and one upcoming review. The reminder DM test now expects a Graphite link.

🤖 Generated with Claude Code

… in the digest

The dashboard showed only a count of reviews owed, and the digest only the
overdue ones and a count of those due today. Now:

- The dashboard lists every review each person owes, linked to the PR in
  Graphite, with when it's due; overdue ones are in bold, and the status
  column still shows a checkmark or the number overdue.
- The digest lists the overdue reviews and the ones due today, by person,
  each linked to Graphite, then a count of the rest.
- Reminder DMs link to Graphite too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Copy link
Copy Markdown
Member Author

This stack of pull requests is managed by Graphite. Learn more about stacking.

@willson556
willson556 marked this pull request as ready for review October 8, 2026 00:00
@staflsystemsci
staflsystemsci Bot requested review from a team, fcheein, gretl-silva-stafl, mament0, mns4595, mzhu48, nehalkpatel and thebhef and removed request for a team October 8, 2026 00:00
@staflsystemsci

staflsystemsci Bot commented Oct 8, 2026

Copy link
Copy Markdown

Review SLA

Assignee Owes Due
mzhu48 First response Thu Oct 8, 14:00 PT
thebhef First response Thu Oct 8, 14:00 PT

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

Comment thread ReviewSLA/confluence.js Outdated
const status = overdue === 0 ? '✅' : `${overdue} overdue`;
const item = (c) => {
const when = c.overdue ? `<strong>overdue since ${html(formatTime(c.due))}</strong>` : `due ${html(formatTime(c.due))}`;
return `<li><a href="${html(graphiteUrl(c.pr))}">${html(`${c.pr.repo}#${c.pr.number}`)}</a> ${html(c.pr.title)}: ${KIND[c.kind].toLowerCase()}, ${when}</li>`;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: for legibility, maybe we don't need to include the title (which the user can click through to get), just so it takes more overdue PRs to make the text inside the table cell push the height off the bottom of the screen?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense -- dropped the title from the dashboard list. Kept it in the Slack digest since those lines just wrap.

Titles made a busy person's row tall enough to push the table off the
screen; the Graphite link leads to the PR, title and all. The digest keeps
titles, since Slack lines wrap without growing a table.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

mzhu48 commented Oct 8, 2026

Copy link
Copy Markdown

A screenshot of the proposed dashboard changes could be useful, but not necessary if it's hard to get. 👍

@willson556
willson556 merged commit 33245f7 into main Oct 8, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants