Repository navigation
ReviewSLA: list owed reviews with Graphite links on the dashboard and in the digest - #47
Conversation
… 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>
This stack of pull requests is managed by Graphite. Learn more about stacking. |
|
Review SLA
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 |
| 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>`; |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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>
|
A screenshot of the proposed dashboard changes could be useful, but not necessary if it's hard to get. 👍 |

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.
Graphite links are built from the PR's GitHub URL:
github.com/<owner>/<repo>/pull/<n>becomesapp.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