PR triage

Status tag meanings:

Procedure:

Unlabeled PRs

All unlabeled PRs should be processed. The steps below are not mutually exclusive, any number of them may apply.

When there is no assignee, because highfive flaked, figure out the responsible team and randomly choose a reviewer from the team by manually assigning in GitHub.

When no review has happened, if the PR is a work in progress (e.g., test failures, merge conflict) mark S-waiting-on-author. Otherwise, mark S-waiting-on-review. If no human has checked in yet and you don’t recognise the submitter as a regular contributor, leave a comment saying something like “Thanks for the PR! We’ll periodically check in on it to make sure that @reviewer or someone else from the team reviews it soon.”

At this point, all PRs must have a tag applied.

S-waiting-on-author PRs

PRs with greater than 3 days of inactivity need to be processed. These can be found by looking at the “updated X days ago” on GitHub’s PR list.

First, ensure that the status tag matches the current state of the PR. Change the tag if necessary, and apply the procedure for the new tag.

Then, if the author hasn’t responded for more than 7 days to a request for changes or a status update, ping the author on GitHub asking for an update. If they’ve given advance warning that they won’t be able to address comments for a period of time, allow for that.

If the author’s been unresponsive for more than 14 days, close the PR due to inactivity and ask the author to reopen when they have a chance to make the necessary changes. Make sure to thank the author for the changes. Also tag the PR with S-inactive-closed.

TIP: if an author is on holiday and you know they won’t have a chance to come to a PR for a while, you can ‘bump’ the PR by removing and readding the tag (note that removing/readding requires clicking off the tag selection dropdown between the two actions).

If the PR is blocked on another PR, add a comment clearly identifying the blocking PR (something like “This PR appears to be blocked on #12345”) and change the state to S-blocked.

S-waiting-on-review PRs

PRs with greater than 3 days of inactivity need to be processed. These can be found by looking at the “updated X days ago” on GitHub’s PR list.

First, ensure that the status tag matches the current state of the PR. Change the tag if necessary, and apply the procedure for the new tag.

If there are no comments from the reviewer:

If the review is incomplete:

If the PR is blocked on another PR, add a comment clearly identifying the blocking PR (something like “This PR appears to be blocked on #12345”) and change the state to S-blocked.

S-waiting-on-team PRs

PRs active within the last 4 days or inactive for greater than 2 weeks need to be processed. These can be found by looking at the “updated X days ago” on GitHub’s PR list.

First, ensure that the status tag matches the current state of the PR. Change the tag if necessary, and apply the procedure for the new tag now. Verify that there is a T- tag for all PRs that remain in this category.

If the PR has been inactive for greater than 2 weeks, ping the team lead on IRC and on GitHub, noting that you’ve pinged on IRC.

If there has been recent activity, the team might have taken some action meaning the state has changed but the label has not yet been updated. Therefore, we also check the most recent ones.

S-waiting-on-bors PRs

All PRs should be processed. First, ensure that the status tag matches the current state of the PR. Change the tag if necessary, and apply the procedure for the new tag now.

S-waiting-on-crater PRs

All PRs should be processed.

If the PR has been active in the last three days, make sure it’s present on the crater spreadsheet. Fill in the link to the PR and set status as “Pending”.

If crater has been run and results include failures, change the tag to S-waiting-on-review for the reviewer to be responsible for deciding what should be done with the information provided by the failures.

If crater has been run and the results do not include failures, change the tag to S-waiting-on-review for the reviewer to take one last look and approve.

If crater has not been run and it has been more than 3 days since a crater run was requested, ping the last three distinct listed people on the spreadsheet in the infra irc channel and request a crater run.

If crater has been started (the person starting should leave a comment) and it has been more than 5 days since an update, ping the person starting the run on IRC and GitHub.

S-blocked PRs

PRs inactive for greater than 7 days need to be processed. These can be found by looking at the “updated X days ago” on GitHub’s PR list.

Find the blocking issue from the triage comment and see if it has been resolved.

If it has been resolved, move it back to S-waiting-on-author or S-waiting-on-review as appropriate. Add a comment notifying the author or reviewer that the PR is now unblocked.

If it has not been resolved, remove and re-add the S-blocked tag. This resets the update time so the PR won’t be reviewed for another week.

S-inactive-closed PRs

These never need to be looked at. PRs which have been closed due inactivity. This is a terminal state for the time being, primarily oriented towards easing future work.

Issue triage

Issue triage is mostly much simpler. After finishing PR triage, go to the list of untagged issues and add tags as you see fit. The following categories should, ideally, be assigned to each issue: