-
Notifications
You must be signed in to change notification settings - Fork 66
teams.json cannot pin a per-agent model; the documented claude:opus syntax is dead
#1845
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
28b174a
5e5baa4
a6dbffd
dd1708e
78e219c
7c74ae4
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,55 @@ | ||
| { | ||
| "id": "compact_219eq595nnmd", | ||
| "version": 1, | ||
| "type": "compacted", | ||
| "compactedAt": "2026-09-22T19:28:36.361Z", | ||
| "sourceTrajectories": [ | ||
| "traj_hwpsorpvo3va" | ||
| ], | ||
| "dateRange": { | ||
| "start": "2026-09-22T19:25:17.654Z", | ||
| "end": "2026-09-22T19:28:35.620Z" | ||
| }, | ||
| "summary": { | ||
| "totalDecisions": 2, | ||
| "totalEvents": 2, | ||
| "uniqueAgents": [ | ||
| "default" | ||
| ] | ||
| }, | ||
| "decisionGroups": [ | ||
| { | ||
| "category": "database", | ||
| "decisions": [ | ||
| { | ||
| "question": "Use the existing broker model handling and document supported harnesses without catalog validation", | ||
| "chosen": "Use the existing broker model handling and document supported harnesses without catalog validation", | ||
| "reasoning": "The protocol already supports model; catalog validation would reject future models. Preserve inline model argument precedence.", | ||
| "fromTrajectory": "traj_hwpsorpvo3va" | ||
| }, | ||
| { | ||
| "question": "Deprecate public model-mapping helpers; retain root and subpath exports until the next major", | ||
| "chosen": "Deprecate public model-mapping helpers; retain root and subpath exports until the next major", | ||
| "reasoning": "The reviewed plan reserves breaking removal for an explicit release-level choice. No preference was supplied, so preserve compatibility and mark the obsolete helpers deprecated. Leave model-commands, broker colon branches and capacity normalization for follow-up.", | ||
| "fromTrajectory": "traj_hwpsorpvo3va" | ||
| } | ||
| ] | ||
| } | ||
| ], | ||
| "keyLearnings": [], | ||
| "keyFindings": [], | ||
| "filesAffected": [ | ||
| "CHANGELOG.md", | ||
| "crates/broker/src/worker.rs", | ||
| "packages/cli/src/cli/commands/core.test.ts", | ||
| "packages/cli/src/cli/commands/core.ts", | ||
| "packages/cli/src/cli/lib/broker-lifecycle.ts", | ||
| "packages/config/src/schemas.test.ts", | ||
| "packages/config/src/schemas.ts", | ||
| "packages/config/src/teams-config.test.ts", | ||
| "packages/config/src/teams-config.ts" | ||
| ], | ||
| "commits": [ | ||
| "28b174a" | ||
| ] | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,19 @@ | ||
| # Trajectory Compaction: Sep 22, 2026 - Sep 22, 2026 | ||
|
|
||
| ## Summary | ||
| - Sessions: 1 | ||
| - Decisions: 2 | ||
| - Events: 2 | ||
| - Agents: default | ||
| - Files: 9 | ||
| - Commits: 1 | ||
|
|
||
| ## Database | ||
| - Use the existing broker model handling and document supported harnesses without catalog validation -> Use the existing broker model handling and document supported harnesses without catalog validation (traj_hwpsorpvo3va) | ||
| - Deprecate public model-mapping helpers; retain root and subpath exports until the next major -> Deprecate public model-mapping helpers; retain root and subpath exports until the next major (traj_hwpsorpvo3va) | ||
|
|
||
| ## Key Learnings | ||
| - None | ||
|
|
||
| ## Key Findings | ||
| - None |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -409,7 +409,7 @@ impl BrokerRuntime { | |
| return; | ||
| } | ||
| }; | ||
| let spec = match build_http_api_spawn_spec( | ||
| let mut spec = match build_http_api_spawn_spec( | ||
| name.clone(), | ||
| cli.clone(), | ||
| transport, | ||
|
|
@@ -533,6 +533,28 @@ impl BrokerRuntime { | |
| // so all task decoration must be complete before registration | ||
| // or spawn. This also lets the broker reject non-portable argv | ||
| // text before creating a remote worker identity. | ||
| // An inline `--model`/`-m` in the command or the arguments is | ||
| // what the harness actually runs: it reads argv and never sees | ||
| // `spec.model`. Resolve it before the skill prefix is chosen -- | ||
| // repairing the metadata inside worker startup would be after | ||
| // this decision -- and keep the effective value on the spec so | ||
| // listings, spawn events and telemetry agree with the harness. | ||
| if let Some(inline) = crate::worker::model_override_from_args(&{ | ||
| let command = spec.cli.as_deref().unwrap_or(&cli); | ||
| let mut tokens = shlex::split(command).unwrap_or_default(); | ||
| tokens.extend(spec.args.iter().cloned()); | ||
| tokens | ||
| }) { | ||
| if spec.model.as_deref() != Some(inline) { | ||
| tracing::debug!( | ||
| agent = %name, | ||
| pinned_model = ?spec.model, | ||
| effective_model = %inline, | ||
| "argv names a model; recording it as the effective model" | ||
| ); | ||
| spec.model = Some(inline.to_string()); | ||
| } | ||
| } | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Relaycast skips inline model reconciliationMedium Severity Inline Reviewed by Cursor Bugbot for commit 7c74ae4. Configure here. |
||
| if !skip_relay_prompt { | ||
| if let Some(prefix) = relay_skill_prefix( | ||
| spec.cli.as_deref().unwrap_or(&cli), | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -2439,6 +2439,7 @@ export async function runUpCommand(options: UpOptions, deps: CoreDependencies): | |
| await relay.spawn({ | ||
| name: agent.name, | ||
| cli: agent.cli, | ||
| ...(agent.model ? { model: agent.model } : {}), | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🟡 Inline overrides retain the wrong model When Learn moreThe auto-spawn request now carries both the configured pin and inline CLI arguments. The broker detects an inline Example: With Recommended fix: Parse the effective inline model in the broker and replace Was this helpful? React with 👍 or 👎 to provide feedback. |
||
| channels: ['general'], | ||
| task: agent.task ?? '', | ||
| team: teamsConfig.team, | ||
|
|
||


There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Apply this effective-model resolution to the fleet/Relaycast
action.invokepath as well.spawn_worker_from_requestinruntime/relaycast_events.rscallsrelay_skill_prefixusing the pinnedspec.modelbeforeWorkerRegistry::spawn; the correction atworker.rs:1110therefore happens too late. For example, a Relaycast spawn withcli: "claude --model haiku"andmodel: "opus"runs Haiku but omits the small-model guidance because the prefix was selected as Opus, undermining the reliability guarantee documented for that guidance.Useful? React with 👍 / 👎.