Repository navigation
fix(multi-agent): source every role default from an upstream statement that states it #6265
Description
Problem
The role defaults in plugins/multi-agent/reference/defaults.yaml cite an upstream pointer, but the cited page does not state the values. All four roles point at https://code.claude.com/docs/en/workflows#cost and the bundled /workflow-authoring skill: orchestrator: effort: high, worker: effort: medium, verifier: effort: high, retrieval: model: sonnet, effort: low. Fetched 2026-10-04, that section names no effort level for any role. It says a workflow agent's model follows the subagent model order and falls back to the session model, and it suggests a smaller model for stages that do not need the strongest.
Some values do have an upstream basis, on a page the file does not cite. The model-config effort table (https://code.claude.com/docs/en/model-config#choose-an-effort-level, fetched 2026-10-04) gives medium for "day-to-day engineering work with a clear scope, such as implementing a new feature" (the default on Opus 5.5 and Sonnet 5.5), high for "work where verification matters or edge cases are likely", and low for quick exchanges. The orchestrator's high and retrieval's sonnet/low have no stated source yet. So every value carries a pointer that reads like a source, and none of those pointers states the value.
/multi-agent:route presents these values as resolved routing, and callers pass them straight to workflows as args.roles. A reader cannot tell which values come from upstream and which are judgment.
Wanted
Every role default is set from an official upstream statement, as other plugins in this repo already do with dated pointer records:
- Each
modelandeffortvalue names the specific upstream statement it comes from (page, section, and the claim), not just a related page. Candidates: model-config's effort table (https://code.claude.com/docs/en/model-config#choose-an-effort-level), the cost-optimization guide's orchestrator strategy, and the records already indocs/upstream/(claude-dev-spending-your-effort-blog.md,opus-5-5-usage-guide.md,claudedevs-cost-performance.md). - Where no upstream statement sets a value, the entry says so (
basis: judgment) and gives its reason, sorouteoutput andaudit-defaultscan show it as judgment rather than as sourced. /multi-agent:audit-defaultsfails a default whose pointer does not support its value. A pointer that exists is not enough; it must state the value or the rule the value follows from.
Acceptance
- Every role in
defaults.yamlcarries either a pointer whose cited section states its model and effort (or the rule they follow from), orbasis: judgmentwith a reason. -
route.shoutput shows each value's basis (upstream or judgment). -
audit-defaultsreports a default whose pointer does not support its value. - Values that change as a result are listed in the CHANGELOG entry with their new source.
Related
- feat(instruction-placement): look up loading mechanics upstream at run time and gate stale records #6100 (instruction-placement: look up upstream at run time and gate stale records), the same idea for another plugin.
- Found while routing the testing-guard fix lanes:
route all code session=opusreturned workermedium, verifierhigh. The pointers behind them did not state those levels.
Activity
github-actions commentedon Oct 4, 2026
Thanks for the detailed writeup. As I understand it:
plugins/multi-agent/reference/defaults.yamlcitesworkflows#costand the bundled/workflow-authoringskill for every role'smodel/effort, but that page doesn't state effort levels at all, while themodel-configeffort table and the cost-optimization guide's orchestrator strategy do support some of the values on pages the file doesn't cite. The ask is to repoint each value at the specific upstream statement that actually sets it, mark any value with no such statement asbasis: judgmentplus a reason, and haveroute.shand/multi-agent:audit-defaultssurface that basis so a pointer that exists but doesn't support its value is caught.The acceptance checklist already spells out a concrete approach (per-value pointer or judgment basis, basis shown in
routeoutput,audit-defaultschecking pointer support, CHANGELOG entry), so scope looks well-defined. I didn't find an existing duplicate issue for this.Automated triage. A maintainer reviews it.
kyle-sexton commentedon Oct 11, 2026
Draft PR: #7105 (branch
fix/6265-role-default-basis).modelandeffortindefaults.yamlnow records a basis:upstream(section plus the statement in it, read live on 2026-10-11) orjudgmentwith a reason. No value changed. Four values are upstream-sourced: orchestrator model, worker and verifier effort, and retrieval model. The other four are judgment.routeprints the basis beside each value.audit-defaultsreportsunsupportedfor a pointer that does not state its value and lists judgment values with their reasons.list-scripts.test.shhas 5 failures, all inlist-targets.shcases; they come from this host's mawk and show up on main too.Left for a human: review, the merge order against #7105's overlap with #6904 in
defaults.yaml, and whether the worker model should move offinherit, which this PR records as judgment.Generated by Claude Code
kyle-sexton commentedon Oct 11, 2026
Handoff note for whoever picks this up next. The overnight Claude run has stopped, and Kyle is moving issue work to Cursor.
fix/6265-role-default-basisWhere a branch is listed it is pushed, so it can be taken over as is. A draft PR shows a red
ci-statusby design until it is marked ready.Generated by Claude Code
kyle-sexton commentedon Oct 13, 2026
Owner decision (2026-10-13): approved the recommendation.
Basis: plugins/multi-agent/reference/defaults.yaml on origin/main (feat: adopt the 2,000-PRs talk decisions across the marketplace #7009); https://code.claude.com/docs/en/costs#choose-the-right-model
Basis: gh pr view 7105; gh pr diff 7105
Next: #7105's owner session checks that the worker reason names workloads.mechanical sonnet, then merges it once ci-status is green. #7105 closes this issue.
This was generated by AI.