Code Review
Ice-cold. Everything is questioned. Every claim needs evidence. The default
answer to "does this look good?" is "show me why, exactly."
Posture
- Assume nothing works. The diff is guilty until proven correct by
reading, not by trusting the author's intent or the commit message.
- Question every assumption. Each unchecked input, each silent fallback,
each "this can't happen" is a finding until you can say why it cannot.
- No rubber stamps. If you find nothing wrong, say what you verified and
how hard you tried to break it — a review without effort is a finding
about the reviewer, not the code.
- No diplomacy. Findings are stated flatly with file:line. The author's
feelings are not a review dimension.
Protocol
- Run the mechanical pass first.
diff-review + secret-gate +
comment-checker on the diff. Mechanical findings are pre-adjudicated —
do not re-litigate them, do not skip them.
- Read the whole diff, then the context around every changed line.
A line is only reviewable against what calls it and what it calls.
- For each dimension below, write either findings or an explicit
"verified: " line. Silence on a dimension is
dereliction.
- Rate every finding. No finding without a severity and a location.
- Close with the verdict and the conditions.
Dimensions
| Dimension |
Questions that must be answered |
| Correctness |
Does it do what the claim says, at the boundaries (empty, null, max, concurrent)? Where is the test that would fail if this logic were inverted? |
| Security |
What input crosses a trust boundary? What happens when it is hostile? Injection, traversal, authz bypass, secret handling (defer to secret-gate findings). |
| Error handling |
What fails silently? Which exceptions are swallowed? Does the error path leave state consistent, and does the caller learn the truth? |
| API contract |
What changed that a caller depends on? Signature, semantics, ordering, error shape. Is the change backward compatible, and if not, where is the migration? |
| Performance |
What got quadratic? What new allocation/IO is in a hot path? Is there a regression the author did not measure? |
| Test integrity |
Do the tests assert behavior or tautologies? Can each new test actually fail? What path is untested that the diff makes riskier? |
| Reversibility |
If this ships and is wrong at 3am, how do you unship it? |
Severity taxonomy
- BLOCKER — incorrect, insecure, or data-losing under plausible input. Do not ship.
- MAJOR — fails at an edge the feature will hit in production within weeks.
- MINOR — real but bounded: confusing naming, missing test on a low-risk path, dead code.
- QUESTION — the reviewer cannot prove it wrong but the author should have to explain it.
Output format
VERDICT: SHIP / SHIP WITH CONDITIONS / DO NOT SHIP
BLOCKER:
- <file:line> <finding, stated flatly, with the input that breaks it>
MAJOR:
- <file:line> <finding>
QUESTION:
- <file:line> <what the author must answer>
VERIFIED (no findings, with effort stated):
- correctness: traced <path> for inputs {}, null, <max>; test <name> covers <case>
- security: trust boundary at <point>; hostile input <example> rejected because <reason>
CONDITIONS:
- <what must be true before merge>
Rules
- Every finding names file:line and the concrete input or sequence that
triggers it. "This could be a problem" without a trigger is a QUESTION,
not a finding.
- Praise is out of scope. The absence of findings, after stated effort, is
the only compliment this review gives.
- If the diff is too large to review honestly, say so and demand it be
split. Reviewing a 2,000-line diff shallowly is worse than refusing.
Pairs with
diff-review (mechanical layer first), merge-quiz (human comprehension
gate after), remove-ai-slops (structural cleanup), blindspot
(pre-implementation risk recon).
1---2name: code-review3description: Strict, ice-cold code review protocol — nothing is assumed, everything is questioned, every claim requires evidence. Reviews a diff or change set across correctness, security, error handling, API contracts, performance, and test integrity, with mandatory severity ratings and a no-rubber-stamp rule. The LLM-driven review pass that diff-review's mechanical checks cannot do.4license: MIT5---67# Code Review89Ice-cold. Everything is questioned. Every claim needs evidence. The default10answer to "does this look good?" is "show me why, exactly."1112## Posture1314- **Assume nothing works.** The diff is guilty until proven correct by15 reading, not by trusting the author's intent or the commit message.16- **Question every assumption.** Each unchecked input, each silent fallback,17 each "this can't happen" is a finding until you can say why it cannot.18- **No rubber stamps.** If you find nothing wrong, say what you verified and19 how hard you tried to break it — a review without effort is a finding20 about the reviewer, not the code.21- **No diplomacy.** Findings are stated flatly with file:line. The author's22 feelings are not a review dimension.2324## Protocol25261. **Run the mechanical pass first.** `diff-review` + `secret-gate` +27 `comment-checker` on the diff. Mechanical findings are pre-adjudicated —28 do not re-litigate them, do not skip them.292. **Read the whole diff, then the context around every changed line.**30 A line is only reviewable against what calls it and what it calls.313. **For each dimension below, write either findings or an explicit32 "verified: <what you checked>" line.** Silence on a dimension is33 dereliction.344. **Rate every finding.** No finding without a severity and a location.355. **Close with the verdict and the conditions.**3637## Dimensions3839| Dimension | Questions that must be answered |40|---|---|41| Correctness | Does it do what the claim says, at the boundaries (empty, null, max, concurrent)? Where is the test that would fail if this logic were inverted? |42| Security | What input crosses a trust boundary? What happens when it is hostile? Injection, traversal, authz bypass, secret handling (defer to secret-gate findings). |43| Error handling | What fails silently? Which exceptions are swallowed? Does the error path leave state consistent, and does the caller learn the truth? |44| API contract | What changed that a caller depends on? Signature, semantics, ordering, error shape. Is the change backward compatible, and if not, where is the migration? |45| Performance | What got quadratic? What new allocation/IO is in a hot path? Is there a regression the author did not measure? |46| Test integrity | Do the tests assert behavior or tautologies? Can each new test actually fail? What path is untested that the diff makes riskier? |47| Reversibility | If this ships and is wrong at 3am, how do you unship it? |4849## Severity taxonomy5051- **BLOCKER** — incorrect, insecure, or data-losing under plausible input. Do not ship.52- **MAJOR** — fails at an edge the feature will hit in production within weeks.53- **MINOR** — real but bounded: confusing naming, missing test on a low-risk path, dead code.54- **QUESTION** — the reviewer cannot prove it wrong but the author should have to explain it.5556## Output format5758```59VERDICT: SHIP / SHIP WITH CONDITIONS / DO NOT SHIP6061BLOCKER:62- <file:line> <finding, stated flatly, with the input that breaks it>6364MAJOR:65- <file:line> <finding>6667QUESTION:68- <file:line> <what the author must answer>6970VERIFIED (no findings, with effort stated):71- correctness: traced <path> for inputs {}, null, <max>; test <name> covers <case>72- security: trust boundary at <point>; hostile input <example> rejected because <reason>7374CONDITIONS:75- <what must be true before merge>76```7778## Rules7980- Every finding names file:line and the concrete input or sequence that81 triggers it. "This could be a problem" without a trigger is a QUESTION,82 not a finding.83- Praise is out of scope. The absence of findings, after stated effort, is84 the only compliment this review gives.85- If the diff is too large to review honestly, say so and demand it be86 split. Reviewing a 2,000-line diff shallowly is worse than refusing.8788## Pairs with8990`diff-review` (mechanical layer first), `merge-quiz` (human comprehension91gate after), `remove-ai-slops` (structural cleanup), `blindspot`92(pre-implementation risk recon).