Metadata
| Status | done |
|---|---|
| Assigned | agent-46 |
| Agent identity | f51439356729d112a6c404803d88015d5b44832c6c584c62b96732b63c2b0c7e |
| Created | 2026-04-26T15:15:41.464458828+00:00 |
| Started | 2026-04-26T16:17:16.819990887+00:00 |
| Completed | 2026-04-26T16:39:19.596170705+00:00 |
| Tags | eval-scheduled |
| Eval score | 0.05 |
| └ blocking impact | 0.00 |
| └ completeness | 0.00 |
| └ coordination overhead | 0.00 |
| └ correctness | 0.00 |
| └ downstream usability | 0.00 |
| └ efficiency | 0.00 |
| └ intent fidelity | 0.16 |
| └ style adherence | 0.50 |
Description
Description
wg show <task> reports concrete dated model ids like claude-opus-4-6, claude-sonnet-4-20250514, etc. when the user wrote claude:opus / claude:sonnet in config or CLI. That's wrong — we should pass the bare alias (opus, sonnet, haiku) to the claude CLI, which knows how to resolve to the current model on its end. Hardcoding dated ids in wg means we're forever chasing Anthropic's release cadence in our config.
Required mapping
| Alias | Should resolve to (string passed to claude CLI) |
|---|---|
claude:opus | opus |
claude:sonnet | sonnet |
claude:haiku | haiku |
Yes, just the bare tier name. The claude CLI accepts these and resolves to current production models on its side. We should not be in the business of tracking which dated id is 'current.'
Fix
- Find where the alias resolution happens (likely in src/models/ or src/config/ — grep for the existing dated ids
claude-opus-4-6,claude-sonnet-4-20250514,claude-haiku-). - Replace the lookup table to map to the bare strings above.
wg showshould display the bare alias (opus) for tasks created withclaude:opus, NOT a dated id. If wg currently 'helpfully' canonicalizes to a dated id at task-creation time, stop doing that — store the alias as written and only resolve at spawn time when invoking claude CLI.- Add unit tests asserting the alias → 'opus' / 'sonnet' / 'haiku' bare-string mapping. The tests must NOT contain any dated id; if they do, drift will silently re-introduce the bug.
- Document the bare-alias contract in a single source-of-truth comment + corresponding entry in docs/AGENT-SERVICE.md or wherever models are listed.
Additionally
- Audit the codebase for any OTHER place that hardcodes dated model ids (
claude-*-4-*,claude-*-202[0-9]-*-*). If found, replace with bare aliases or a single defaults constant. - Coordinator-launch surfaces (TUI dialog, IPC CreateCoordinator) should also show / pass bare aliases — user reported seeing
--executor claude --model claude-opus-4-6in the launch dialog.
Out of scope
- Don't redesign the alias system; just stop hardcoding dated ids.
- Don't change the alias names themselves (
claude:opusetc. stay).
Validation
- Failing tests first: test_alias_claude_opus_resolves_to_bare_opus, test_alias_claude_sonnet_resolves_to_bare_sonnet, test_alias_claude_haiku_resolves_to_bare_haiku, test_no_dated_model_ids_anywhere_in_source (grep src/ for 'claude--4-' regex; assert zero matches outside test fixtures and docs)
- Implementation makes tests pass
- cargo build + cargo test pass with no regressions
-
Manual:
wg add 'test' --model claude:opusthenwg show <id>reportsopus(orclaude:opus), NOTclaude-opus-4-6or any dated id -
Manual: TUI new-coordinator dialog launch line shows
--model opusnot--model claude-opus-4-6
Depends on
Required by
- (none)
Log
- 2026-04-26T15:15:41.464222344+00:00 Task paused
- 2026-04-26T16:03:14.701284593+00:00 Task published
- 2026-04-26T16:13:58.190221813+00:00 Spawned by coordinator --executor native --model claude-opus-4-6
- 2026-04-26T16:13:58.222536494+00:00 Task marked as failed: Agent exited with code 1
- 2026-04-26T16:17:15.872540638+00:00 Task reset for retry from failed (attempt #2)
- 2026-04-26T16:17:16.819994393+00:00 Spawned by coordinator --executor claude --model claude-opus-4-6
- 2026-04-26T16:17:24.324076953+00:00 Starting implementation — searching for dated model IDs and alias resolution code
- 2026-04-26T16:22:59.905868021+00:00 FANOUT_DECISION: stay inline — single-concern change across multiple files, all sequential dependencies
- 2026-04-26T16:36:22.038857359+00:00 Completed: constants changed to bare aliases, all tests passing (6 pre-existing failures unchanged)
- 2026-04-26T16:39:13.199957270+00:00 Committed: e06b2dcec — pushed to remote
- 2026-04-26T16:39:13.215671347+00:00 Validated: cargo build + cargo test pass (2774 pass, 6 pre-existing failures)
- 2026-04-26T16:39:13.233069687+00:00 Validated: manual test — wg add --model claude:opus shows 'Model: claude:opus' not dated ID
- 2026-04-26T16:39:13.249831361+00:00 Validated: no dated model IDs (claude-*-YYYYMMDD) remain in src/
- 2026-04-26T16:39:19.596184601+00:00 Task marked as done