On this page
Is the handoff ready?
Use these checks before access expands or the first ticket begins.
Ticket link
Ready: The pull request names the ticket, expected behavior, and affected surface.
Needs work: The description says only that a fix or cleanup was requested.
Diff boundary
Ready: Changed files match the named module, route, or job.
Needs work: Unrelated formatting, dependency, or infrastructure edits appear in the same diff.
Test delta
Ready: New or updated checks cover the behavior that changed.
Needs work: The only evidence is a green pipeline that did not exercise the changed path.
Merge authority
Ready: The client reviewer approves the exact commit and records any follow-up.
Needs work: A bot, a shared account, or the author alone closes the change.
Map the diff to the ticket
Begin with a file-level inventory rather than the pull request title. The reviewer should see which routes, components, jobs, migrations, configuration files, and tests moved, then compare that list with the work the ticket authorized. A title can summarize a change in five words; the file list shows whether the branch also touched authentication, billing, data retention, or deployment settings that nobody discussed. Ask the author to mark every changed file as required by the ticket, required by a test, or unrelated. That three-way split is more useful than a line count because a small edit to a permission map can carry more risk than a large rename in one component. If the author cannot explain why a file is in the diff, stop the review and resolve the boundary before discussing implementation quality. The ticket should name the user-visible behavior and the system boundary. A pull request that changes both an API response and the client rendering of that response needs evidence for both sides, even when the same developer wrote them. Reviewers who inspect only the final screen can miss a contract change that breaks another consumer.
Test the boundary, not only the happy path
A green pipeline is useful only when it exercised the changed behavior. Ask which test failed before the fix, which test now passes, and which neighboring behavior could regress. For a form validation change, the evidence should include invalid values, server-side rejection, keyboard behavior, and the error message a user sees. A screenshot of the successful submission is not enough.
The reviewer should also inspect what the tests do not cover. Browser-specific behavior, time-zone transitions, large payloads, permission failures, and retry exhaustion often sit outside a fast unit suite. If those conditions matter to the ticket, record a manual check or a follow-up test rather than implying that the entire path is proven. Keep the evidence attached to the commit under review. A test run from an earlier commit, a local screenshot without a branch name, or a chat message that says everything works cannot support the merge decision. The reviewer needs a reproducible link between the code, the environment, and the observed result.
Decide between split and accept
When the extra change is small, safe, and directly enables the ticket, accepting it may be reasonable. The decision still needs a sentence in the review that names the addition and the reason it belongs here. That sentence protects the next reviewer from discovering an undocumented dependency between two apparently unrelated edits. When the addition changes a public contract, a data model, a security control, or a release process, split it. A follow-up branch gives the team a smaller review surface, a separate rollout decision, and a cleaner rollback point. Splitting is not bureaucracy when the alternative is an approval that technically covers work nobody examined. Set a practical threshold in advance: any new dependency, migration, infrastructure resource, or permission change requires a separate approval path. The team can then review ordinary fixes quickly without pretending that every line has equal risk. The rule should be written in the repository guide so an outsourced contributor can apply it before opening the pull request.
Close with a merge record
The merge record should identify the reviewed commit, the approver, the checks that passed, and the follow-up items that remain. If the branch changes after approval, the approval should not automatically carry forward. Protected branches and required reviews help, but they do not replace a human check that the reviewed commit is the commit being merged. After merge, verify the deployed artifact or release note points to the same change. A commit hash in the repository and a version in the release system are different pieces of evidence; the team should be able to connect them. If the deployment system builds from a tag or a different branch, record that path explicitly. Finally, compare the completed work with the ticket's acceptance notes. A merged pull request is not a closed outcome if the behavior was never observed in the intended environment. Close the loop with one line about what was verified, what was deferred, and who owns the next check.
Copy-ready brief
Put the operating agreement in writing.
Read the file inventory and confirm that every changed area belongs to the ticket.
Link the failing check, the passing check, the reviewed commit, and any manual observation.
Dependency, migration, infrastructure, permission, and public-contract changes need a separate owner decision.
Record the approved commit and verify that the deployed artifact came from it.
Frequently asked questions
Should a reviewer reject every unrelated edit?
No. A small enabling edit can stay when the review names it and the owner accepts the added risk. Contract, data, permission, and infrastructure changes should normally move to a separate branch.
What if the author cannot explain a changed file?
Pause the merge. An unexplained file is an unresolved scope question, not a documentation nicety, because the reviewer cannot assess the change or its rollback.
Does a green pipeline replace manual review?
No. The pipeline proves only the checks it ran. The reviewer still needs to confirm that the changed behavior and its important edge cases were exercised.
Sources
- GitHub Docs: About pull request reviews
Review workflow and approval concepts used to frame the merge record.
- NIST Secure Software Development Framework
Risk-based development and review practices referenced for change control.
- SLSA specification
Provenance concepts used when connecting a reviewed commit to a built artifact.
- OpenSSF Scorecard
Repository hygiene checks that inform branch and review controls.
