Rubric
Contents — domains, guide and mocks

Multi-instance and multi-pass review

CCAR-F 4.614 min read · checked 21 September 2026

Task statementDesign multi-instance and multi-pass review architectures

Self-review versus an independent reviewer

Same session reviews itself

  • Carries the reasoning that produced the answer
  • Tends to confirm its own earlier decisions
  • Shares any misreading of the input
  • One context, filled with the whole task

Separate reviewer instance

  • Fresh context: output + criteria only
  • No stake in the original choices
  • Can be prompted to try to refute
  • Can use a different model or prompt
The reviewer on the right sees the output and the criteria — not the reasoning that produced it — so it judges the result on its own terms.

Why a separate instance

A model reviewing its own output in the same conversation is not really a second opinion. Its context contains the reasoning, assumptions and interpretations that produced the answer, so it tends to reread the answer through them. Claude Code’s best-practices guide makes the point directly: a fresh context improves code review because Claude will not be biased toward code it just wrote. Its recommended writer/reviewer pattern uses two sessions — one implements, the other reviews — and its adversarial review step runs the reviewer as a subagent that sees only the diff and the criteria you give it.

That does not make self-checking useless. Asking a model to verify its answer against explicit criteria before finishing still catches slips, and the best newer models do much of this on their own. But self-checks share the generator’s blind spots. When the cost of a missed error is high, add an independent instance. Anthropic’s evaluation guide applies the same logic to grading: it is generally best practice to use a different model to evaluate than the one that generated the output.

TechniqueWhat it catchesWhat it misses
Self-check in the same turnSlips against stated criteriaErrors that come from the model’s own misreading
Separate reviewer instanceGaps the author rationalised awayProblems outside the criteria it was given
Multiple independent runs, comparedInconsistent or unstable answersErrors every run makes the same way
Per-item passes + integration passLocal detail and cross-item interactionsIssues outside each pass’s criteria; costs more calls

Splitting the work: multi-pass review

The second problem is attention. Put thirty changed files into one prompt and ask for a review, and the model spreads its attention thin — the guide calls this attention dilution (see 1.6). A multi-pass design gives each pass one job. Local passes look at one unit at a time — a file, a contract section, a patient record — with full attention. An integration pass then looks across units for problems no single unit shows: a changed function signature that a caller was not updated for, a clause that contradicts a definition elsewhere. A verification pass checks each candidate finding before anyone sees it.

A multi-pass review of a large pull request

Orchestrator
File reviewers
Integration pass
Verifier
Step 1: Orchestrator to File reviewers: One file each, in parallel
Step 2: File reviewers to Orchestrator: Local findings per file
Step 3: Orchestrator to Integration pass: Findings + interfaces + diff summary
Step 4: Integration pass to Orchestrator: Cross-file findings
Step 5: Orchestrator to Verifier: Each finding + its code
Step 6: Verifier to Orchestrator: Confirmed or refuted, with evidence
Local passes run in parallel and see one file each. The integration pass sees their findings plus the interfaces. The verifier sees one finding at a time and tries to disprove it.

This is essentially how Claude Code’s managed Code Review describes itself. Multiple agents analyse the diff and surrounding code in parallel, each looking for a different class of issue; a verification step then checks candidates against actual code behaviour to filter out false positives; results are deduplicated, ranked by severity and posted. The design trades time and money for precision — the docs say reviews complete in about 20 minutes on average and cost roughly $15–25 each, scaling with the size of the change.

Finding and filtering as separate stages

  1. Specialised finderslogic, security, regressions — in parallel
  2. Verify candidatesfresh instance tries to refute each one
  3. Dedupe and rankmerge overlaps; order by severity
  4. Reportonly verified findings, with evidence
Finders are tuned for recall, the verifier for precision. Mixing both jobs in one prompt tends to lose real findings.

Separating the stages is also what Anthropic’s Opus 5 prompting guidance recommends from the other direction: a review prompt that says “only report high-severity issues” or “be conservative” may be followed literally and report less, so ask the finder to report everything and filter in a separate pass. The finder’s job is recall; the verifier’s job is precision (4.1 covers writing the criteria each one applies).

A three-stage review, each call a fresh instancepython
import asyncio
from anthropic import AsyncAnthropic
client = AsyncAnthropic()

async def ask(system: str, content: str) -> str:
    r = await client.messages.create(model=MODEL, max_tokens=4096,
        system=system, messages=[{"role": "user", "content": content}])
    return r.content[0].text

async def review(files: dict[str, str], interfaces: str) -> list[str]:
    # 1. Local passes: one fresh instance per file, run in parallel
    local = await asyncio.gather(*[
        ask(FILE_REVIEW_PROMPT, f"<file path='{p}'>{src}</file>")
        for p, src in files.items()])

    # 2. Integration pass: sees findings and interfaces, not every line
    cross = await ask(INTEGRATION_PROMPT,
        f"<interfaces>{interfaces}</interfaces><findings>{local}</findings>")

    # 3. Verification: a separate instance tries to refute each candidate
    candidates = parse_findings(local, cross)
    verdicts = await asyncio.gather(*[
        ask(VERIFY_PROMPT, f"<finding>{c.text}</finding><code>{c.snippet}</code>")
        for c in candidates])
    return [c.text for c, v in zip(candidates, verdicts) if v.startswith("CONFIRMED")]

Multi-instance agreement

Another multi-instance pattern runs the same task several times independently and compares the results. Anthropic’s hallucination guidance calls this best-of-N verification: run the same prompt more than once and look for inconsistencies. Where independent runs agree, confidence is higher; where they disagree, you have found exactly the cases a human should see. It is a good fit for classification and extraction on high-stakes fields, and a poor fit for long creative outputs, where runs differ legitimately.

Which review architecture fits?

What is the main risk?
  • Author blind to its own errors
    Independent reviewerfresh instance, criteria only
  • Too much input for one pass
    Per-item + integrationlocal passes, then cross-cutting
  • Too many false positives
    Verification passtry to refute each finding
  • Unstable judgements
    N runs, comparedisagreement goes to a human

Traps the wrong answers are built from

Tempting but wrongDo this instead
Asking the generating session to review its own output as the only checkUse a separate instance that sees the output and criteria, not the reasoning.
Reviewing a large change set in one passRun per-file local passes, then a cross-file integration pass.
Combining “find everything” and “only report what matters” in one promptLet finders maximise recall; filter in a separate verification pass.
Giving the reviewer no criteriaState what counts as a gap and require evidence, or it will find something anyway.
Treating agreement between runs as proofUse agreement to prioritise; route disagreements to people.

You should now be able to

  • Explain why a fresh-context reviewer catches errors that same-session self-review misses.
  • Design a multi-pass review with local passes, an integration pass and a verification pass.
  • Separate recall-oriented finding from precision-oriented verification.
  • Use independent multi-instance runs to surface unstable judgements for human review.
  • Weigh the latency and cost of each additional pass against the risk it addresses.

Practice questions

Original questions written for this lesson, in the exam’s style. Answer first, then open the reasoning — every option is explained, including why the wrong ones are tempting.

  1. Question 1

    An engineering team’s code-generation agent writes a module, then in the same conversation is asked “Review the code you just wrote for bugs.” It almost always reports no significant issues, yet human reviewers keep finding logic errors.

    What change is most likely to improve the review?

    1. ATell the agent to review “extremely carefully” before answering.
    2. BGive the review to a separate instance that sees only the code and criteria.
    3. CRaise max_tokens so the self-review can be more detailed.
    4. DAsk the agent to rate its confidence in the code from 1 to 10.
    Show answer and reasoning
    1. AIncorrect. The same context still carries the reasoning behind the code, so the review inherits its blind spots.
    2. BCorrect. A fresh context is not biased toward the code it just wrote and evaluates the result on its own terms.
    3. CIncorrect. Length does not create independence; the reviewer is still the author.
    4. DIncorrect. Self-reported confidence comes from the same reasoning that produced the errors.
  2. Question 2

    A single-pass review of a 35-file pull request returns a handful of style comments and misses that a shared function’s return type changed while three callers were not updated.

    Which architecture best addresses this?

    1. AUse a model with a larger context window for the single pass.
    2. BReview each file independently and merge the comments.
    3. CRun the same single-pass review three times and combine the results.
    4. DPer-file passes, then an integration pass over interfaces and call sites.
    Show answer and reasoning
    1. AIncorrect. Fitting more in does not stop attention being spread across every file.
    2. BIncorrect. Each file looks fine alone; without an integration pass the cross-file break is still missed.
    3. CIncorrect. Each run has the same attention problem, so all three are likely to miss it the same way.
    4. DCorrect. Local passes give each file full attention; the integration pass is designed to catch cross-file breaks like this one.
  3. Question 3

    A legal-tech company’s contract reviewer produces too many false positives, but lawyers insist it must not miss genuinely risky clauses.

    Which two design changes fit these goals? (Select 2.)

    1. AKeep the finding pass broad, then add a verification pass that tries to refute each finding.
    2. BTell the finder to report only issues it is certain about.
    3. CGive the verifier explicit criteria for what counts as a risky clause and require quoted evidence.
    4. DHave the finder re-read its own findings in the same conversation.
    5. EMerge finding and verification into one longer prompt to save calls.
    Show answer and reasoning
    1. ACorrect. Recall stays with the finder; the verifier removes false positives with evidence.
    2. BIncorrect. That quietly lowers recall — the thing the lawyers cannot accept.
    3. CCorrect. Criteria and evidence let the verifier filter consistently instead of inventing its own threshold.
    4. DIncorrect. Same-context self-review tends to confirm its earlier judgements.
    5. EIncorrect. One prompt juggling recall and precision tends to trade one away.
  4. Question 4

    Three independent instances extract the dosage of a high-risk drug from the same record. Two say 5 mg, one says 50 mg. What should the pipeline do?

    1. AAccept 5 mg, because two of the three instances agree.
    2. BSend it to a human reviewer with all three readings.
    3. CRerun until all three instances agree.
    4. DDiscard the record because extraction is unreliable.
    Show answer and reasoning
    1. AIncorrect. On a high-risk field, a split vote is a warning sign, not a decision rule.
    2. BCorrect. Disagreement between independent runs is exactly the signal that a person should check the source.
    3. CIncorrect. Repeating until agreement can converge on the wrong value and hides the ambiguity.
    4. DIncorrect. The disagreement is useful information; dropping the record loses a patient’s data.

Sources

Drafted with AI assistance and checked against the sources above; expert review is in progress. Spotted an error? Tell us and it gets fixed, dated and listed on how this is written.