feat(orchestrator): cap parallel PR reviewers at 3; document Fable on Bedrock (v3.4.0)#62
Draft
sfreudenthaler wants to merge 4 commits into
Draft
feat(orchestrator): cap parallel PR reviewers at 3; document Fable on Bedrock (v3.4.0)#62sfreudenthaler wants to merge 4 commits into
sfreudenthaler wants to merge 4 commits into
Conversation
…rallel reviewers at 3 Adds Fable (and any future plain-named Claude model, e.g. claude-fable-5) as a selectable review model on the direct Anthropic API path — previously only Bedrock inference-profile IDs (containing "anthropic.") routed to Claude, so a bare model name fell through to the Bedrock-generic/harness executor and would have failed there. Also enforces the existing comma-separated model_id list at a hard max of 3 parallel reviewers, matching the intended one-prompt/multiple-models review fan-out. Docs (CLAUDE.md, ARCHITECTURE.md, examples/consumer-repo-workflow.yml) updated to describe the new routing case, the 3-model cap, and a multi-provider parallel-review example. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VD5n4VXNdJQa4xxMdbfGTB
🤖 Bedrock Review —
|
Fable (and any new Claude model) already routes correctly through the existing anthropic-bedrock regex, since Bedrock inference profiles follow the same "<region>.anthropic.claude-<name>-<version>" form as Sonnet/Opus (e.g. global.anthropic.claude-fable-5) — the match is on the "anthropic." family prefix, not a per-model allowlist. The prior commit added a new bare-"claude-*" -> direct-Anthropic-API branch based on a wrong assumption about the model_id string, which would have required ANTHROPIC_API_KEY per consumer — working against this org's Bedrock-only, no-API-key setup. Reverts that branch; keeps the 3-model parallel-reviewer cap. Docs updated to use the correct Bedrock-form example ID throughout. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VD5n4VXNdJQa4xxMdbfGTB
🤖 Bedrock Review —
|
Verified via research: Fable 5 GA'd on Bedrock 2026-06-09 with exactly the guessed inference-profile ID (global.anthropic.claude-fable-5), confirming the existing anthropic.* regex needs no change. Only gap was the region constraint, which isn't obvious from the model_id alone. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VD5n4VXNdJQa4xxMdbfGTB
🤖 Bedrock Review —
|
New examples/multi-model-review-workflow.yml demonstrates the comma-separated model_id fan-out end to end: one PR, one prompt, three reviewers routed to different executors (Claude Fable 5 + Sonnet 4.6 over Bedrock, GPT-5.5 over bedrock-mantle), each posting its own sticky comment. Linked from both example lists and the Quick Examples section in README.md. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VD5n4VXNdJQa4xxMdbfGTB
🤖 Bedrock Review —
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
<region>.anthropic.claude-<name>-<version>(e.g.global.anthropic.claude-sonnet-4-6), and the orchestrator already matches on theanthropic.family prefix, not a per-model allowlist. Verified via research: Fable 5 is GA on Bedrock (launched 2026-06-09) with exactly the ID this predicts —global.anthropic.claude-fable-5— so it already routes toclaude-executor(anthropic-bedrock) today, same as Sonnet/Opus, with noANTHROPIC_API_KEYneeded. Docs updated to use Fable as the documented example, plus a note that it's region-limited tous-east-1/eu-north-1at launch.claude-*→ direct-Anthropic-API routing branch on the wrong assumption that Fable's model_id wouldn't be a Bedrock inference profile. Reverted — it would have required a newANTHROPIC_API_KEYsecret per consumer, working against the existing Bedrock-first architecture.)model_idalready accepted a comma-separated list (each model reviews the PR independently viastrategy.matrix, shipped in feat(orchestrator): accept comma-separated model_id; each model reviews the PR #59/v3.3.2). This adds a hard cap of 3 parallel reviewers — a 4th model now fails theroutejob with a clear::error::instead of silently fanning out further.examples/multi-model-review-workflow.ymlis a complete, runnable consumer workflow demonstrating the 3-reviewer fan-out (Fable 5 + Sonnet 4.6 over Bedrock, GPT-5.5 over bedrock-mantle), linked from both example lists and the Quick Examples section inREADME.md.CLAUDE.md,ARCHITECTURE.md,README.md,examples/consumer-repo-workflow.yml) with the 3-model cap and mixed-provider parallel-review examples:Versioning: this is additive — no renamed/removed inputs, no changed defaults, no changed output shape. The new validation only rejects an edge case (>3 models) that isn't part of any documented contract and has no known consumers today. Per this repo's own precedent (MAJOR reserved for architecture shifts like the v2.0.0 claude-code-action GA migration and the v3.0.0 multi-executor routing overhaul; smaller additive features like the codex executor and the comma-separated
model_idfeature itself landed as 3.x), this should ship as v3.4.0, not v4.0.0.Test plan
python3 -c "import yaml; yaml.safe_load(...)"on all changed workflow filesdocker run rhysd/actionlint:1.7.7— cleanglobal.anthropic.claude-fable-5routes toanthropic-bedrock(no code change needed); a 3-model mixed list (Fable + Sonnet + GPT-5.5) fans out to the correct 2 executors; a 4th model is rejected; emptymodel_idstill defaults to anthropic-api