chore(config): route agents across runtimes and models - #7116
Conversation
PR Summary by QodoRoute agents across runtimes and models
AI Description
Diagram
High-Level Assessment
Files changed (1)
|
|
🤖 Review · Commit: |
Code Review by Qodo🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)
Great, no issues found!Qodo reviewed your code and found no material issues that require reviewTip of the day💡 Did you know, you can tweak Display preferences with a live preview to see your comment before it ships |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
1b6ff05 to
4e549b5
Compare
4e549b5 to
ae74bdf
Compare
ae74bdf to
030eb13
Compare
|
🤖 Review · Commit: |
|
🤖 Review · Commit: |
Persist per-agent runtime and model selection in .fullsend/config.yaml (fullsend v0.42.0 agents entries, written with fullsend agent set): code on pi with xai/grok-4.6; prioritize on pi with gemini-3.8-flash; review on pi with a sonnet orchestrator, Grok on correctness, security and challenger, Gemini 3.8 Flash on docs-currency and style-conventions; fix, triage and retro on sonnet on Claude Code (retro's anonymous children inherit the parent, so they land on sonnet too). models.aliases pins sonnet to claude-sonnet-5 explicitly: fullsend's default alias table is one generation older, and an explicit alias in the repo shows users where the choice lives. Config in the repo is visible and reviewable, unlike repository variables, so rollback is a PR too. Assisted-by: Claude Signed-off-by: Wayne Sun <gsun@redhat.com>
030eb13 to
80dcbef
Compare
|
🤖 Finished Review · ✅ Success · Started 7:24 PM UTC · Completed 7:44 PM UTC Commit: Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $4.88 |
|
Risk Assessment: low (1/5) DetailsConfig-only routing change to a single 28-line file by a known author; no protected paths, security-sensitive files, CI workflows, or dependency changes touched. |
ReviewFindingsLow
|
|
🤖 Finished Retro · ✅ Success · Started 2:33 PM UTC · Completed 2:44 PM UTC Commit: Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $3.43 |
Retro: PR #7116 — route agents across runtimes and modelsWorkflow went well. This was a manually-authored, 28-line config-only change to What worked
Observations
No new proposalsAll candidate improvement areas are well-covered by existing open issues. No novel proposals are warranted from this retro. |
Depends on fullsend-ai/agents#1211 (pr-review dispatches sub-agents by persona when the runtime registers them). Without it the
subagentsblock below is inert on pi: the current skill tells the orchestrator to pass the frontmattermodeland not setsubagent_type, so every child runs anonymously on opus/sonnet (measured, see the first review thread). Order: #1211 merges on maintainer approval → next fullsend release (so release-installed repos pick up the fixed skill through the agents tag; repos onmainget it at once) → this PR, right after fullsend-ai/agents#1209 (no waiting period).What
Persist per-agent runtime and model selection in
.fullsend/config.yaml(fullsend v0.42.0agents:entries, written withfullsend agent set), instead of the fleet-wideopuson Claude Code that every harness carries today. Config in the repo is visible and reviewable; repository variables (<ROLE>_FULLSEND_MODEL) are not, so none are used and rollback is also a PR.codexai/grok-4.6fixsonnetprioritizegoogle-vertex/gemini-3.8-flashreviewsonnet(orchestrator)correctness,security,challenger→xai/grok-4.6;docs-currency,style-conventions→google-vertex/gemini-3.8-flash;risk-assessment,intent-coherence,cross-repo-contractskeep their frontmattersonnet;security-triagekeepshaikuretrosonnetsonnetfrom the parenttriagesonnetEvery line was produced by
fullsend agent set … --fullsend-dir .fullsendand validated withfullsend agent list; the only hand edit is reverting the CLI's cosmetic re-serialisation (header comment,status_notificationsindentation) so the diff is theagents:block alone.Why
opuseverywhere is the cost driver.codeis the from-scratch implementer whose commits are kept, so it gets the more capable model;fixfires after every review round and is the run most often superseded by a human takeover, so it getssonnet. The review keeps no opus persona at all.Model alias
fullsend's pinned default for
sonnetis one generation older (claude-sonnet-4-6), so everysonnetabove would silently run that without this block. The alias applies to the parent run of every agent on both runtimes and to pi sub-agents. It does not reach Claude Code sub-agents (code,fix,retrochildren on Claude), which resolvesonnetthrough the agents harness env pinANTHROPIC_DEFAULT_SONNET_MODEL— bumping that is a fullsend-ai/agents change, tracked separately. This repo's config is meant to be the worked example other repos copy, which is why the alias is explicit rather than left to the default table.Merge gates (do not merge before all are ticked)
claude-sonnet-5,xai/grok-4.6andgemini-3.8-flash— confirmed 2026-09-08 (all three enabled there; probed with a one-token request) (a pinned alias or persona model that cannot be served has no fallback: the review fails at Bootstrap after the sandbox is created,codeand the Claude agents fail at the first model call). Or pointXAI_VERTEX_PROJECT_IDat a project that does.a35983272: sandbox images repinned to the 0.42.0 digests — pi 0.85.0, pi-xai-vertex 0.2.1 with the Grok keepalive fix).main(a source build carries no release tag), and such a build fetches the built-in agents fromfullsend-ai/agentsatheads/main, not atv0. Verified on a fleet review run on 2026-09-08 19:29 UTC:fullsend version 41e7a66, agents fetched ata35983272, sandbox imagefullsend-code@sha256:623fc745…(the 0.42.0 image).v0only matters to a release-tagged binary, which the fleet runs just between a fullsend release and the next merge tomain.4749344e9; pr-review skill dispatches by persona when the runtime lists them). Found by the local review run on 2026-09-08: Bootstrap resolved all nine personas as configured, but the current skill tells the orchestrator to passmodelfrom the frontmatter and not setsubagent_type, so every child ran as an anonymous sub-agent on opus/sonnet and thesubagentsblock here was inert. Without feat(e2e): add TOTP support for 2FA-enabled GitHub accounts #1211 this PR changes the review's orchestrator model only.fullsend run reviewandfullsend run codewith this config on 2026-09-08: Bootstrap resolves all nine personas as configured; with the agents#1211 skill all eight review dispatches go out by persona on the configured models (Grok ×3, Gemini ×2, sonnet-5 ×3), exit 0, $5.34 — at parity with the fleet's own Claude/opus reviews of the same PR ($3.81–$5.91 across six runs);codeon Grok passed validation twice ($0.72–$1.00,effort: highaccepted, gopls plugin skipped as expected). Full evidence on agents#1209's first review thread.What this PR's own checks do and do not prove
The dispatch workflows check out
.fullsendfrom the base SHA, so the review that runs on this PR uses the current config, not this one. Green here proves the file parses and nothing else; the gates above are the real test.Rollback
A PR:
git revertof this commit, or onefullsend agent set <agent> --fullsend-dir .fullsend --runtime claude --model opusline for a single role.