Reviewers and checks
Reviewers
Section titled “Reviewers”- A reviewer is a person or a bot that submitted a review, that GitHub asks for a review, CodeRabbit if it commented, or PR-Agent if it posted its review comment. The tool knows no list of bots, so a new reviewer needs no change. A bot that only comments, such as Linear or a preview deployment, is not a reviewer.
- The author of the pull request is not a reviewer: their reviews are replies in the threads.
- A review whose line comments all answer an earlier comment is a reply in a thread, not a review. A review with an empty body and its own line comments is a review: Greptile puts all its findings on the lines.
- A review that says
quota,rate limit,limit reached,unable to revieworusage limitin its first paragraph is a refusal, not a review. A real review can quote the quota of another reviewer further down, so the rest of the body does not count. - A reviewer reviews now if it has a running check with its name (
claude-reviewforsakuga-claude-review[bot]), or if its last review or comment shows a progress below its total (2/3 files) on its first line. A progress further down is a quote, a list or an example.
PR-Agent
Section titled “PR-Agent”PR-Agent submits no GitHub review: its review is one
comment (“PR Reviewer Guide”), which it edits at each new review. The login of that comment is the
reviewer, so each install works under its own name (sakuga-review[bot] at Sakuga).
- The mark comes from the “Merge recommendation” line:
Safe to mergegives✔,Changes requiredgives✎, and all the rest, or no such line, gives●. It is the opinion of a model, not a GitHub verdict: it gives noapproved, noready to mergeand nochanges requestedstate to the pull request. - An edited comment names the commit that it covers (“Review updated until commit …”). If that
commit is not the head commit, the review is stale (
◌). - A comment with no edit covers the head commit, unless the head commit has checks with
pr-agentin their name and none of them passed: then the review is stale. - A running check with
pr-agentin its name on the head commit means that PR-Agent reviews now (⟳). - The line suggestions of
/improvecount as reviews, but do not change the mark.
Approval and checks
Section titled “Approval and checks”- The approval follows the rule of GitHub: the last review of each reviewer that approves, requests changes or is dismissed stands, on any commit. One request for changes wins over all the approvals. A later comment review, such as a reply, does not replace a verdict.
ready to mergeneeds an approval, no request for changes, no failing or running check, and a merge state that GitHub accepts (clean,unstableorhas_hooks).- A check counts as a quota check, and not as a failure, if its description names a quota (CodeRabbit: “Review rate limited”), or if it fails and belongs to a reviewer that refused for quota. A red check of a refused reviewer tells nothing about the code.
- A check of a cancelled run does not fail if a newer run of the same workflow, on the same commit,
has the same check, and that check passed or still runs. A push and a change of base can start a
workflow twice, and a concurrency rule cancels one run. The details show
⊘ e2e · cancelled by a newer run. - A GitHub Actions workflow whose last run on the head commit has not ended counts as one running
check, with the name of the workflow, if no check of that run runs. A queued run has no check yet,
and a run between two jobs can have only finished checks: without this rule, the pull request
could show
ready to mergebefore its CI starts. Only the last run of each workflow counts. A queued run replaces the checks of an older cancelled run of the same workflow. The check suites of the other apps do not count: many of them stay queued for ever. - Each failing check shows its cause in the details:
✖ Migrations · fails on main tooif the same check fails on the last commit of the base branch, else✖ Migrations · fails here only. A check that fails on the base branch too still counts as failing: the pull request cannot merge green.