---
name: Thorough code review
description: Multi-pass review that names concrete files and lines, not vague concerns
tags: [review, quality, team]
author: fastpace
---

Review the staged diff with three passes, in order. After each pass, list findings with `file:line` references — never vague concerns. End with a clear merge/block recommendation.

**Pass 1 — Correctness.** Does the code do what its commit message claims? Look for: off-by-one errors, null/undefined handling, race conditions, error paths that swallow exceptions, missing input validation. For each issue: name the file, the line, the specific bug, and the smallest fix.

**Pass 2 — Surface area.** What does this change make possible that wasn't possible before? Authentication bypasses, new external network calls, new file-system writes outside the repo, new dependencies. For each: is the new surface justified by the commit's stated goal?

**Pass 3 — Maintenance load.** Will the next person to touch this file understand it? Look for: missing docstrings on public surfaces, comments that disagree with the code, dead branches, unused imports, copy-pasted blocks that should be a helper.

End with one of:
- ✅ **Approve** — no findings or only nits
- 🟡 **Approve with comments** — non-blocking suggestions, list them
- 🔴 **Request changes** — list the blockers

Do not invent issues to look thorough. If the diff is fine, say so.
