Independent lens review → anonymized cross-verification (discourse) → deterministic verdict. One execution pattern, ported across domains as a family of Rust CLIs.
Each tool has multiple expert personas review content independently, cross-check each other's judgments anonymously (no author identity, to avoid authority bias), and then compute the score and pass/fail outcome with local deterministic logic — not the LLM. The LLM is only trusted for judgment calls; scoring and the final verdict are always code.
flowchart LR
In["Input\n(diff / content / brief)"] --> Sel["Lens Selection\nLLM picks 1–3 personas"]
Sel --> P1["Persona A\nindependent review"]
Sel --> P2["Persona B\nindependent review"]
Sel --> P3["Persona N\nindependent review"]
P1 --> Anon["Anonymize\n(strip reviewer identity)"]
P2 --> Anon
P3 --> Anon
Anon --> Dis["Discourse\nAGREE · CHALLENGE · CONNECT · SURFACE"]
Dis --> Res["Resolution\nCONFIRMED / REJECTED / MERGED / UNCERTAIN"]
Res --> Det["Deterministic Scoring\nlocal code, no LLM"]
Det --> Out["Verdict + Report"]
Out -.->|"--prior next round"| Sel
| Repo | Domain | Notes |
|---|---|---|
| codereview-loop | PR diff code review | The original Rust CLI — where this pattern started. Not yet published; source is currently private/local only. |
| codedesign-loop | Pre-code design/architecture review | private |
| marketing-loop | Marketing content review (ad copy, landing pages, email) | private |
| bizplan-loop | Business plan generation (N drafts → rubric scoring → regenerate) | private, a variant without discourse |
| Code-Review-Loop | Reproducible benchmark for the related full-review Claude Code skill |
public, but not the Rust CLI above — a separate benchmark/runner repo (Node-based harness, no discourse pipeline source) |
- Rust CLI, defaulting to the Claude Code CLI (
claude -p --output-format json) as a subprocess backend — no separate API key required. An OpenRouter backend is also supported. - Deterministic logic and LLM judgment are split at the code level. Scoring, policy checks, and verdicts are computed locally and deterministically; the LLM only handles judgment-dependent steps like lens selection, review, discourse, and requirement verification.
- Anonymized cross-verification: reviewer identity is stripped before discourse, so agreement/disagreement is forced to run on claims and evidence rather than persona authority.
- Re-running with
--priortracks FIXED / STILL_OPEN / UNKNOWN against the previous round (except bizplan-loop, which is generate-and-score rather than review-based).
The Rust CLI sources (codereview-loop, codedesign-loop, marketing-loop, bizplan-loop) are private; Code-Review-Loop is the only public repo today, and it's a benchmark harness, not implementation source.