A checklist for maintainers reviewing a PocketPay Mobile pull request — not for the contributor who opened it. It exists so a reviewer decides merge or changes requested against the same evidence every time, instead of merging on a green checkmark or a convincing description alone.
Contributors have their own pre-PR gates (the Self-Review Checklist and Contributor Self-Assessment). This page is the mirror image: it tells the reviewer what to confirm on the diff itself before approving, and what counts as evidence rather than a claim.
Reviewing a PR is verifying evidence, not trusting a description. A ticked box in the PR body is a claim. Your job is to confirm the claim against the diff, the test output, and the CI run before you approve.
- Before approving or merging any PR, however small it looks.
- Again after a contributor pushes new commits to an already-reviewed PR — a re-review starts from the same bar, not from your earlier approval.
- The PR links a specific issue, and the diff addresses that issue rather than an adjacent or partial version of it.
- The change is complete: every new interactive element is wired up, with no buttons or screens that render but do nothing.
- No unrelated files, renames, dependency bumps, or formatting-only churn are bundled in that would make the change harder to evaluate.
- Any intentional scope limit or deferred work is disclosed in the PR description, not left for the reviewer to discover in the diff.
- The change is a real implementation, not a superficial workaround that hides the problem the issue describes.
- Loading, empty, error, and disabled states affected by the change are handled, not just the happy path (see the UI State Catalogue).
- No leftover TODOs, dead code, commented-out blocks, or placeholder values remain in the diff.
- Naming, copy, and structure are clear enough that the implementation can be followed without asking the author.
- New or changed behaviour has a corresponding automated test, or the PR gives a specific no-test justification you find reasonable.
- Both a happy path and at least one negative or edge case are covered — a single happy-path assertion is not sufficient coverage.
- The tests actually exercise the changed code. A test that passes whether or not the fix is present is not evidence.
- Test output (not just a claim that
npm testpassed) is present in the PR or visible in the CI run. See the Test-First Contribution Guide for what counts as adequate coverage.
- All required checks are green on the latest commit, not on an earlier push that was since changed.
-
npm test,npm run typecheck, andnpm run lintpass on CI. -
npm run api:checkpasses where the change touchessrc/types/pocketpay-sdk.d.tsorsrc/sdk-stub/. - No required check was skipped, muted, or bypassed to reach a mergeable state. Any known-flaky or unrelated failure is explained in the PR rather than left unaddressed (see the CI Troubleshooting Guide).
- Contributor, user, or architecture documentation affected by the change is updated, or the PR states why no update is needed.
- README links, code comments, and examples touched by the change still match the current behaviour.
- If the change adds or moves a doc, script, or user-facing feature, the README references it.
- Every acceptance criterion on the linked issue is checked individually against the diff, not assumed from the PR passing in general.
- Each criterion maps to concrete evidence — a test, a screenshot, or a short explanation — rather than a bare checkmark.
- Any criterion that is not fully met is flagged, with the reason, instead of being silently skipped. A partial implementation is only mergeable if the gap is disclosed and agreed.
- The blast radius of the change is understood — what breaks if it is wrong, and whether it touches security-sensitive areas (keys, storage, signing, auth).
- Screenshots or recordings, where the change touches visible UI or flow, show the actual final result and contain only Testnet or dummy data — no real keys, balances, or personal data.
- Boundary conditions relevant to the change (empty, minimum, maximum, offline, stale state) are covered or explicitly out of scope.
- Follow-up work or residual risk the merge leaves behind is captured in the PR or an issue, not lost.
- Sections 1–7 above are confirmed against the diff, the test output, and the CI run — not against the PR description alone.
- Every claim in the PR body that you relied on has been verified, or asked about, rather than taken on trust.
- You would be comfortable defending the merge if the change later turned out to be incomplete.
If any box above is unchecked, request changes rather than approving.