Skip to content

feat(review): add a codex fanout_diversity value that puts the panel on the Codex reviewer - #12858

Merged
kyle-sexton merged 4 commits into
mainfrom
fix/12636-replacement
Nov 3, 2026
Merged

kyle-sexton merged 4 commits into
mainfrom
fix/12636-replacement

Conversation

@kyle-sexton

@kyle-sexton kyle-sexton commented Nov 3, 2026 •

Copy link
Copy Markdown
Member

Closes #12504

Supersedes #12636

Summary

Owner-login replacement for #12636, which the lanes App opened and pr-unblock left as needs-session (reason feedback-unadjudicated). This branch merges #12636's head (0e7d7adc241e416c79f2c182b747ce162d920960) onto current main unchanged.

Adds a third fanout_diversity value, codex, opt-in through the plugin option or docs/conventions/review.yaml. The default stays lens. Under codex, /review:fanout run-everything launches review:fanout-sweep with args.diversity set to lens, so no same-vendor model tiers run, and step 3's two codex-review.sh runs (plain and --adversarial) are reported as the panel: panel: codex ran, or panel: codex skipped|failed (<reason>).

Fix

The changes are #12636's, file by file:

  • plugins/review/schemas/review.schema.json: fanout_diversity enum gains codex
  • plugins/review/.claude-plugin/plugin.json: userConfig options gain codex; description kept under the 300-character option budget
  • plugins/review/README.md, plugins/review/reference/config.md, plugins/review/skills/fanout/SKILL.md, plugins/review/skills/setup/SKILL.md: name codex and what it does
  • plugins/review/skills/fanout/context/run-everything-mode.md: the codex diversity bullet, Launch exception and fallback roster
  • plugins/review/skills/fanout/evals/evals.json: cases 50 and 51 (Codex present and absent); eval 48's WARN text lists codex
  • plugins/review/skills/setup/scripts/setup-apply.test.sh: case 26 writes and checks fanout_diversity=codex
  • .changes/review/...12504...md: minor changelog fragment

Review thread on #12636:

  • plugins/review/.claude-plugin/plugin.json:51 (claude-security-review, IMPORTANT, a manifest options flag): accepted, no code change. The flag itself shows the value widens nothing, and each point checks out at this head: the default stays lens (plugin.json:47); under codex the sweep still launches with args.diversity lens (skills/fanout/context/run-everything-mode.md:16-17); the Codex runs are step 3's, which run in every mode (run-everything-mode.md:11); and a change set editing docs/conventions/review.yaml still skips the repository layer (skills/fanout/SKILL.md:63-64). The option only selects how review fan-out spreads; it gates, caps or charges nothing.

Client floor unchanged: options already ships on fanout_diversity at main (plugins/review/.claude-plugin/plugin.json:48-51 at origin/main, review 6.0.1, listing lens and model); this change adds one value to the existing list.

Verification

  • bash plugins/review/skills/setup/scripts/setup-apply.test.sh: 390 of 391 checks pass, every case 26 check included (fanout_diversity=codex exits 0, --check reports fanout_diversity codex). The one failure, case 15 "a root equal to $HOME: the refusal is one line" (expected 1 line, got 5), fails the same way on main (386 of 387), so it is a pre-existing host-specific failure, not this change.
  • The pre-push check-affected hook passed on this head.

Related

🤖 Generated with Claude Code

@kyle-sexton
kyle-sexton marked this pull request as ready for review November 3, 2026 16:20
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-03T16:22:18.788913Z 021451d Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

claude-security-review: 1 inline finding(s) on 021451df0761a12fb1e756169678a9a88e5e0f80; the summary is in this lane's pull request comment.

claude-lane: claude-security-review

@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

claude-security-review reviewed 021451df0761a12fb1e756169678a9a88e5e0f80: read 10 of 10 changed file(s); 1 finding(s), 1 as inline comments.

Security review: PR #12858, fanout_diversity: codex

I found no exploitable security issue. There is one finding: a manifest flag that the default-deny rule requires. This review covers all 10 files in the full diff.

manifest userConfig.fanout_diversity.options: flag, codex added to the option list; it is not a guard and widens nothing

  • What it is: a new allowed value for a user option. Nothing new runs and nothing new is installed. The description change in the same block is inert.
  • What I checked:
    • Default unchanged. The default is still "default": "lens" (plugin.json#L47), so users who never set the option see no change when they update.
    • Workflow input unchanged. Under codex, the sweep still launches with args.diversity set to lens (run-everything-mode.md#L16-L17).
    • Codex already ran in every mode. The two codex-review.sh runs already happen in step 3 whatever the diversity value (run-everything-mode.md#L11). So codex sends no code to a new vendor and runs no new command. It only adds a panel: report line.
    • Fewer agents, not more. Choosing codex instead of model means the per-tier review:lane-verifier runs don't happen.
  • Self-selection guard intact. A pull request still can't pick its own reviewers by editing docs/conventions/review.yaml: the repository layer is skipped when the reviewed change edits that file, and this diff doesn't touch that rule.

Other notes:

  • Prompt-text changes. The edits to the skill and reference files (fanout/SKILL.md, run-everything-mode.md, setup/SKILL.md, README.md, config.md) only add text. They remove or soften no standing instruction, so the instruction-surface lens doesn't apply. The diff deletes no guardrails, so I didn't need the protected-class register.
  • Schema enum. The review.schema.json enum gains codex. Its only effect is that setup-apply accepts one more value for a key that controls no gate.
  • Tests, evals, changelog. The added test case, the new eval cases and the changelog fragment have no security surface.
  • Trust controls. No trusted-path file changed. No trust control, token scope, kill switch or merge hold is touched.
  • PR context. The description and the linked issue contain no embedded instructions aimed at this lane.
  • Spend. Picking codex adds no review runs, because Codex already runs in step 3; any spend is prepaid or subscription usage, not a charge.

critical-findings: 0

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

claude-review: 1 inline finding(s) on 021451df0761a12fb1e756169678a9a88e5e0f80; the summary is in this lane's pull request comment.

claude-lane: claude-review

@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

claude-review reviewed 021451df0761a12fb1e756169678a9a88e5e0f80: read 10 of 10 changed file(s); 1 finding(s), 1 as inline comments.

Code review: PR #12858, fanout_diversity: codex

I read all 10 changed files in full, along with the PR context, the prior-findings file (round 0 of 3, cap not reached), and the .claude/rules/ files whose paths: match these files (skill-bodies-state-current-rules.md, cost-claims.md, eval-case-transcripts.md). None of those rules is broken.

What I checked against the code:

  • setup-apply.mjs checks values against schemas/review.schema.json, so adding codex to that enum is enough for the new case 26 assertions to be meaningful. I did not run the test. The 390/391 pass result is the author's claim and is unverified.
  • The fanout-sweep workflow rejects any diversity value other than lens or model (workflows/fanout-sweep.js#L35). run-everything-mode.md steps 5 and Launch map codex to lens before launch, so the workflow never sees codex. The fallback roster is also defined for codex.
  • The panel: line is built from codex: ran|skipped|failed (<reason>). Those strings match what skills/fanout/scripts/codex-review.sh prints (L74, L131, L134). The skip reason used in eval 51 matches that script's tests.
  • The README options table matches the plugin.json description word for word.

Closing issue #12504:

  • "fanout's panel placement uses the Codex reviewer where it used model mode, behind configuration": met. It is opt-in through the option or review.yaml, and the default stays lens.
  • "A test or eval case shows the panel runs Codex when present and reports it skipped when not": met by eval cases 50 (Codex present) and 51 (Codex absent).
  • The retracted agent comment on the issue does not change these criteria.

Manifest:

  • manifest userConfig.fanout_diversity.default: pass: still lens.
  • manifest userConfig.fanout_diversity.options: flag, the PR names no client version floor (inline on plugin.json:51).
  • manifest version: pass: the fragment's bump: minor matches an added option value.
  • manifest description/keywords: pass: the plugin description does not list diversity values, so nothing in it is now out of date.

Spend (not a finding): codex mode reuses the two Codex runs that step 3 already does in every mode, and it runs no model-tier verifiers. It adds no new subscription or credit spend compared with lens.

No hold applies.

@kyle-sexton
kyle-sexton added this pull request to the merge queue Nov 3, 2026
Merged via the queue into main with commit 9e00972 Nov 3, 2026
89 of 103 checks passed
@kyle-sexton
kyle-sexton deleted the fix/12636-replacement branch November 3, 2026 19:09
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.

feat(review): move the review panel's placement to the Codex reviewer once fanout can run Codex

1 participant