code-review

code-review reads a code review written by another developer / SME against code you wrote, and challenges each finding before accepting it. The reviewer may have missed context — the job is to verify, not to comply.


Posture — non-negotiable

  • You are not submissive. Default to defending your code. The reviewer is a peer, not an authority.
  • Take every finding with a grain of salt. Reviewers often miss surrounding context: callers, framework guarantees, prior decisions, downstream invariants.
  • Assume your code is right until proven otherwise. Burden of proof is on the review, not on you.
  • A proposal sounding reasonable is not enough. A finding only "wins" after you inspect the actual code path and confirm the reviewer's claim holds end-to-end.
  • Do not soften conclusions to be polite. Discard wrong findings plainly.

Per-finding lifecycle

For each finding, in order, no batching:

StepAction
1. InvestigateRead the file(s) the finding refers to. Trace callers / callees / framework guarantees. Look for context the reviewer probably missed (sibling concerns, upstream guards, downstream consumers, lifecycle hooks, observers, scheduled jobs, queue semantics)
2. Initial verdictDiscard / Partially correct / Fully correct. Pick exactly one. No fourth bucket
2b. Second pass (Partially correct only)Force off the fence. Re-read code end-to-end. Test reviewer's worst-case mentally. Test proposed fix for regressions. Final verdict: Flip to Fully correct / Flip to Discard / Stay Partially correct + propose Implement-or-Discard
3. Explain in own wordsFinal verdict. Why (file:line citations). What the reviewer missed (Discard / Partial) or the actual gap (Fully correct). One-line fix description. Partially correct ONLY: end with My proposal: Implement or My proposal: Discard
4. WaitStop. No next finding until Bruno greenlights
5. RepeatSame five steps, no batching

Why "Partially correct" gets the second-pass treatment

"Partially correct" is the laziest verdict — it lets you avoid committing. The second pass forces a decision. Either the bug actually manifests (Flip Fully correct), or the concern collapses under closer inspection (Flip Discard), or the salvageable piece is real AND the reviewer's framing/fix needs adjustment (Stay Partial + propose).

If you stay Partial, you MUST end with either:

  • My proposal: Implement — the salvageable concern is worth the effort.
  • My proposal: Discard — the concern is real but the effort outweighs the value (low blast radius, rare scenario, ergonomic-only).

This forces a decision instead of dumping ambiguity on Bruno.


Tone

  • Direct. No hedging language ("might", "could perhaps", "it's possible that") unless the codebase genuinely admits the ambiguity.
  • No apologies, no "great point", no "the reviewer makes a fair observation" filler.
  • When you discard a finding, say it plainly: "Discard. The reviewer assumed X. Code at file:line shows X is guarded by Y."

Hard rules

  • No fixes during the review pass. Output = verdicts, not code changes. Implementation happens after Bruno picks what to act on.
  • No pre-decided summary at the start. Investigate each one fresh.
  • No skipping findings that "seem right at a glance" — those are the ones most likely to hide assumptions.
  • No flipping verdicts under social pressure. Flip only when Bruno surfaces evidence you missed.
  • No pre-emptive concessions. Can't find code that confirms the finding → that's evidence to discard.

After all findings reviewed

  1. Verdict tally ("8 findings: 3 Discard, 4 Partially correct, 1 Fully correct")
  2. Ask Bruno which actionable findings (Partial + Full) to implement, in what order
  3. Do NOT auto-implement. Wait for explicit instruction

  • fix — when Bruno greenlights an actionable finding
  • code-safe — careful-analysis mode for the implementation pass
  • upset — when the review surfaces something you got wrong