Remove embedded local harness model defaults #1504

Closed
opened 2026-07-22 08:59:26 +00:00 by coilyco-ops · 0 comments
Member

Ward currently embeds a default local model for Goose and Opencode, but local-model harnesses cannot have a product-wide model default. The available model names and compatible endpoint shape are deployment-local, so Ward must get them from the selected bundle, user config, explicit CLI overrides, or another operator-owned config source. If none is provided, local harness launch should fail closed with a clear configuration error.\n\nObserved source evidence in current Ward:\n\n- cmd/ward/agent_fleet.go embeds qwen3-coder:30b in the fleet defaults.\n- cmd/ward/container_bootstrap.go resolves Opencode from WARD_OPENCODE_MODEL, then selected overlay, then the embedded fleet value. Goose resolves from WARD_GOOSE_MODEL, then the embedded fleet value.\n- internal/agents/goose/config.go has an additional fallback to qwen3-coder:30b when RunCtx.GooseModel is empty.\n- Multiple tests encode qwen3-coder:30b as the assumed local-harness default.\n\nThis surfaced during the Opencode dispatch attempt for #1502. Ward resolved model: qwen3-coder:30b even though the selected AOS role bundle does not define Opencode/Goose model policy. Kai's correction: that fallback should not exist.\n\nExpected behavior:\n\n- Remove embedded Goose/Opencode model defaults from product code and generated fleet assets.\n- Remove secondary fallback in Goose config composition.\n- Require an explicit local-harness model from selected config bundle, user config, environment, or --config agent.<harness>.model=....\n- Fail closed before container launch or at earliest bootstrap with an error that names the missing config key and the accepted sources.\n- Keep endpoint configuration similarly explicit where Ward cannot infer it safely.\n- Update tests so local harnesses without a configured model fail loudly, while configured models flow through unchanged.\n- Update docs/help to stop implying Ward knows a universal Qwen/local model default.\n\nRelated AOS-side sync ticket: coilyco-flight-deck/agentic-os#617. Related Opencode probe-shape bug: #1503. This is also one concrete removal slice under the broader embedded fleet configuration cleanup at #1498.

Ward currently embeds a default local model for Goose and Opencode, but local-model harnesses cannot have a product-wide model default. The available model names and compatible endpoint shape are deployment-local, so Ward must get them from the selected bundle, user config, explicit CLI overrides, or another operator-owned config source. If none is provided, local harness launch should fail closed with a clear configuration error.\n\nObserved source evidence in current Ward:\n\n- `cmd/ward/agent_fleet.go` embeds `qwen3-coder:30b` in the fleet defaults.\n- `cmd/ward/container_bootstrap.go` resolves Opencode from `WARD_OPENCODE_MODEL`, then selected overlay, then the embedded fleet value. Goose resolves from `WARD_GOOSE_MODEL`, then the embedded fleet value.\n- `internal/agents/goose/config.go` has an additional fallback to `qwen3-coder:30b` when `RunCtx.GooseModel` is empty.\n- Multiple tests encode `qwen3-coder:30b` as the assumed local-harness default.\n\nThis surfaced during the Opencode dispatch attempt for https://forgejo.coilysiren.me/coilyco-flight-deck/ward/issues/1502. Ward resolved `model: qwen3-coder:30b` even though the selected AOS role bundle does not define Opencode/Goose model policy. Kai's correction: that fallback should not exist.\n\nExpected behavior:\n\n- Remove embedded Goose/Opencode model defaults from product code and generated fleet assets.\n- Remove secondary fallback in Goose config composition.\n- Require an explicit local-harness model from selected config bundle, user config, environment, or `--config agent.<harness>.model=...`.\n- Fail closed before container launch or at earliest bootstrap with an error that names the missing config key and the accepted sources.\n- Keep endpoint configuration similarly explicit where Ward cannot infer it safely.\n- Update tests so local harnesses without a configured model fail loudly, while configured models flow through unchanged.\n- Update docs/help to stop implying Ward knows a universal Qwen/local model default.\n\nRelated AOS-side sync ticket: https://forgejo.coilysiren.me/coilyco-flight-deck/agentic-os/issues/617. Related Opencode probe-shape bug: https://forgejo.coilysiren.me/coilyco-flight-deck/ward/issues/1503. This is also one concrete removal slice under the broader embedded fleet configuration cleanup at https://forgejo.coilysiren.me/coilyco-flight-deck/ward/issues/1498.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-flight-deck/ward#1504
No description provided.