Skip to content

docs: model-agnostic review rollout ADR (0023, Proposed)#21

Closed
vpciii wants to merge 1 commit into
mainfrom
docs/review-rollout-adr
Closed

docs: model-agnostic review rollout ADR (0023, Proposed)#21
vpciii wants to merge 1 commit into
mainfrom
docs/review-rollout-adr

Conversation

@vpciii

@vpciii vpciii commented Jun 20, 2026

Copy link
Copy Markdown
Owner

Summary

The design for the CI rollout the deferred graduation depends on. Proposed — draft for your sign-off; the implementation (workflow files, cross-repo) follows on acceptance, since it touches live CI.

Built to honor the two constraints the round-5 BLOCK established:

  • Model-agnosticism must be built, not renamed — so this restructures the actual CI reviewer, it doesn't just change docs vocabulary.
  • Supersede ADR 0021 wholesale — no incoherent "partial supersession."

What it decides

  • Two review roles, each a thin per-provider binding over one shared, single-sourced, model-neutral review policy (ADR 0022).
    • Author-model binding — Claude (claude-code-action), today's reviewer generalized.
    • Adversary-model binding — Gemini (run-gemini-cli / agy), a different model, advisory.
  • The binding is the one swappable place — role reversal / a newer Gemini / a third vendor is a one-binding edit. This is what makes the agnosticism real.
  • Supersedes ADR 0021 wholesale (marked Superseded by 0023 on acceptance).
  • Does NOT ratify the practice — that's the later graduation ADR, after this lands and a reversed-role/third-model run tests the agnosticism the trial never exercised.

Migration (rename → breaking caller change, Gemini secret + app, opn-mcp caller update, dogfood) is itemized so the breaking parts are decided, not discovered.

Note

This ADR is itself a prime adversary-review target (round 6) before sign-off — I aimed it squarely at round 5's objections, so it's worth checking whether it actually clears them.

🤖 Generated with Claude Code

Design-only ADR for the CI rollout the deferred graduation depends on.
Honors the two constraints the round-5 BLOCK established: build
model-agnosticism for real (don't just rename docs), and supersede
ADR 0021 wholesale (no incoherent "partial supersession").

Decides: two review roles as thin per-provider bindings (author = Claude
claude-code-action; adversary = Gemini run-gemini-cli) over one
single-sourced, model-neutral review policy (ADR 0022); both advisory;
the binding is the one swappable place (enabling role reversal / third
model). Supersedes ADR 0021. Migration (rename, caller updates, Gemini
secret+app, opn-mcp caller) itemized. Deliberately does NOT ratify the
practice — that's a later graduation ADR, after this lands and the
agnosticism is tested in a direction the trial never ran.

Implementation (workflow files) follows on acceptance.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@claude

claude Bot commented Jun 20, 2026

Copy link
Copy Markdown

Claude finished @vpciii's task in 2m 17s —— View job


Review — ADR 0023 (model-agnostic review rollout)

Checked against the repo's own standards: the artifact-integrity / "checkable references" rule (ADR 0005), the single-source-of-truth rule the ADR itself invokes (ADR 0022), the same-PR honesty rule (ADR 0020), and append-only supersession (ADR 0019). The design is coherent and clears round 5's stated objections — agnosticism is restructured, not renamed (§Decision 4, lines 61–66); supersession is wholesale not partial (lines 68–72, 104–108); and it correctly declines to ratify, deferring the decision-guide row to a later graduation ADR (lines 31–35, 111–114), which matches experiments/adversarial-review/README.md:83–113. Two blocking issues, though — both are exactly the honesty failure modes this ADR cites as its own justification.


🔴 1. Dangling reference: pr19_adversarial_review.md does not exist

The ADR rests its entire Context on a round-5 review doc that isn't in the repo:

  • adr/0023…md:22 — "round-5 review, docs/reviews/pr19_adversarial_review.md"
  • adr/0023…md:153 — "docs/reviews/pr19_adversarial_review.md (the round-5 constraints this ADR honors)"

docs/reviews/ contains only pr18_adversarial_review.md. A repo-wide search for pr19 / #19 / round 5 returns hits in no file but this ADR. The "two hard constraints this ADR must honor" (lines 24–29) and four more references (lines 108, 111, 119, 126) all point at a source that doesn't exist — a broken pointer the artifact-integrity rule (ADR 0005) is meant to catch. Fix this →

🔴 2. Evidence numbers contradict the cited log (ADR 0022 — its own rule)

adr/0023…md:16–19 claims "5 runs, 2 repos, 3 BLOCKs, 0 false positives" including a BLOCK on PR #19. The cited evidence file experiments/adversarial-review/log.md records only:

Worse, the log's running tally (line 20) still reads "This meets the graduation bar… next step is the graduating ADR that ratifies the practice" — i.e. it doesn't yet know about the PR #19 withdrawal that this ADR treats as settled history. The log header calls itself "the aggregate evidence for the graduate-or-kill decision," so this is precisely the doc↔doc drift ADR 0022 forbids — and the ADR even warns against it in its own Consequences (:136–137: "if it is not [single-sourced], this ADR reintroduces the very drift it cites"). The ADR is currently ahead of its single source of evidence. Fix this →

Both reduce to the same root cause: the round-5 artifacts (the pr19 write-up and the log row) haven't landed, but the ADR narrates them as established. By this repo's same-PR honesty rule (ADR 0020 / "keep the artifacts honest"), the supporting evidence should ride along in this PR — otherwise an ADR built explicitly to honor round 5 cites a round 5 the repo can't see.


Minor / non-blocking

  • Supersession mechanics are correct. ADR 0021 is still Accepted (not yet flipped), and the ADR says the Superseded by 0023 mark happens on acceptance (:70). That respects append-only (ADR 0019) — no action needed while this is Proposed, just don't forget the 0021 status flip at merge.
  • README still describes the single-ADR path. experiments/adversarial-review/README.md:91 says the graduating ADR generalizes both roles model-agnostically; this ADR deliberately splits that into rollout-now / graduate-later. The split is sound and the ADR is explicit about it, but the trial README's wording now lags the chosen path — worth a one-line note when round 5 lands.

If issues 1 and 2 are resolved by landing the round-5 log row + review doc in this PR (or trimming the claims to what the log supports), the ADR is in good shape.

  • Read ADR 0023 + related ADRs (0021, 0022, 0019)
  • Read governing artifacts (methodology rules, trial README, log)
  • Verify round-5 / PR docs: graduate cross-model adversarial review (ADR 0023) #19 / pr19 references (none exist outside this ADR)
  • Check evidence numbers against log.md (4 runs/2 BLOCKs vs. claimed 5/3)
  • Check supersession mechanics (correct)
  • Post review

@vpciii

vpciii commented Jun 20, 2026

Copy link
Copy Markdown
Owner Author

Withdrawing — held pending validation. A round-6 adversarial review (Gemini 3.1 Pro, high) BLOCKed this rollout ADR, and the BLOCK holds:

  • Expand-contract violation — the workflow rename is a destructive in-place change that breaks cross-repo callers, flatly against the methodology's own §11 / ADR 0004. The migration must be add → migrate → remove.
  • Build-before-validate — it commits to cross-repo CI for a model-agnosticism premise that has never been demonstrated (every run was Claude-author / Gemini-adversary). A cheap reversed-role run validates it first.
  • Reintroduced ADR-0022 duplication — two separate workflows duplicate trigger/skip/permission boilerplate, and the single-sourcing mechanism is hand-waved.

Decision: hold and validate the premise first. Do a reversed-role run (Gemini authors, Claude adversary-reviews) before designing the rollout, then redesign it informed by that evidence and with the fixes. The review record and round-6 log entry are preserved on main via #20. ADR 0023 will be reclaimed by the redesigned rollout.

@vpciii vpciii closed this Jun 20, 2026
vpciii added a commit that referenced this pull request Jun 20, 2026
Round 6: Gemini 3.1 Pro (high) BLOCKed the rollout ADR (PR #21, withdrawn).
Strong findings — the rollout violated the methodology's own §11/ADR 0004
(rename-and-break vs expand-contract), was build-before-validate (CI infra
for an agnosticism premise never demonstrated), and reintroduced ADR-0022
boilerplate duplication.

Records an honest confound while logging it: rounds 3/5/6 were on the
author's own ADRs with the adversary pre-pointed at suspected weaknesses —
confirmations, not independent discoveries. The genuinely independent
catches are rounds 1 and 4 (opn-mcp). The hypothesis holds, but on 2 clean
runs, not 6.

Two systemic lessons: drafting ran ahead of evidence, and model-agnosticism
is still unproven (only ever Claude-author / Gemini-adversary). Next: a
clean, un-steered reversed-role run before any more infra design.

Also gitignores the .agents/ artifact dir.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant