chore(config): route agents across runtimes and models - #1209
Conversation
PR Summary by QodoRoute Fullsend agents across runtimes and models
AI Description
Diagram
High-Level Assessment
Files changed (1)
|
|
🤖 Review · Commit: |
Code Review by Qodo
1. Dispatch regressions escape CI
|
2f14d49 to
1348c60
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>
1348c60 to
a41f210
Compare
|
🤖 Finished Review · ✅ Success · Started 7:24 PM UTC · Completed 7:43 PM UTC Commit: Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $4.52 |
|
Risk Assessment: low (1/5) DetailsTier 1 signals are unchanged from prior assessment (no protected paths, security sensitivity, CI, or dependency signals; small blast radius); Tier 2 churn was already explicitly acknowledged and dismissed in the prior rationale as consistent with an actively maintained routing config, so no new articulable reason exists to deviate from the prior score of 1. Previous runRisk Assessment: low (1/5) DetailsSingle config-only file with 28 additions and minimal risk metadata (no protected paths, security sensitivity, CI, or dependency changes) yields a low composite; the only notable signal is the file high recent churn (17 commits in 30d, 4 authors), which is consistent with an actively maintained routing config rather than a risk indicator. |
ReviewFindingsHigh
Medium
Low
Next steps:
Previous runReviewFindingsCritical
Medium
Low
Next steps:
|
…t fallback Both runtime-support sections still said review and retro fall back to a single-context pass on pi. Since fullsend 0.42.0 the runner's Agent tool dispatches the same sub-agents on pi, and the repository's .fullsend/config.yaml can route each persona to its own model (agents[].subagents), which this branch now does. Say so, and point at the per-persona configuration docs. Assisted-by: Claude Signed-off-by: Wayne Sun <gsun@redhat.com>
|
🤖 Finished Review · ✅ Success · Started 8:13 PM UTC · Completed 8:33 PM UTC Commit: Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $4.77 |
Depends on #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.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.modelfrom the frontmatter and not setsubagent_type, so every child ran as an anonymous sub-agent on opus/sonnet and thesubagentsblock here was inert. Without fix(pr-review): dispatch sub-agents by persona when the runtime registers them #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.