General branch review
git diff --stat origin/main...HEAD # scope first
git diff origin/main...HEAD
Read the changed files in full — a hunk is rarely enough to judge correctness. Look for:
- Bugs — logic errors,
DropWithContextvalues not released on every exit path (the fix isdefer_drop!/DropGuard, not moredrop_withcalls), borrow/aliasing mistakes, unhandled error paths. - CPython divergence — different results, exception types or messages, missing
attributes. Check anything you're unsure of with
python-playground. - Sandbox escapes — sandboxed code reaching the host filesystem, environment, network or subprocesses.
- Resource-limit escapes — allocations not charged to the tracker (an unbounded or
amplifying
Stringbuild withoutStringBuilder), unbounded loops, recursion without a depth guard. - Performance — regressions the branch introduces, and improvements you spot.
- Verbose comments — docstrings and comments should be concise as per
CLAUDE.md. - Cleanups — duplication, misplaced logic, functions grown too complex.
./limitations/— a new divergence with no entry is a finding.- Docs parity — a user-visible change reflected in only one of
README.md,docs/,limitations/and the crate READMEs is a finding.CLAUDE.md"Documentation surfaces that must stay in sync" has the obligation table. For a full pass, delegate to thedocs-parity-reviewersubagent.
Report
Concise, most severe first. Per finding: file:line, what's wrong, the concrete failure
it causes. Don't pad with what the branch got right.
Report only, unless the user asks for fixes.