5.5 KiB
Opus 4.6 dated-snapshot route audit
Opened: 2026-04-21 (Sprint 10 Day-2, per PM ratification at
PM-Waggle-OS/decisions/2026-04-21-sprint-10-task-1.2-ratified-opus46-deferred.md).
Policy: trigger on first caller trip — do NOT audit proactively
in Sprint 10.
Related: Sprint 10 Task 1.2 (Sonnet route repair, commit a09831e
merge), migration note at ops/litellm/README.md §Sprint-10-Task-1.2.
Why this file exists
Sprint 10 Task 1.2 repaired the claude-sonnet-4-6 LiteLLM alias which
had been routing to a dated snapshot (-20250514) that was never a
valid Claude API ID for the Sonnet 4.6 family. Investigation of the
config showed the adjacent claude-opus-4-6 alias uses the same
dated-snapshot pattern (-20250610) and may have the same latent
defect.
Per Anthropic's live models overview (re-fetched 2026-04-21), the Opus
4.6 family Claude API ID is claude-opus-4-6 (plain alias, no dated
suffix). The -20250610 suffix is not explicitly listed in the docs
for the 4.6 family — it could be a valid but unlisted snapshot, or it
could be a broken legacy entry that nobody's called in a while.
PM policy (2026-04-21): no speculative audit. The potential defect
affects only callers that explicitly call claude-opus-4-6, and Sprint
10 doesn't exercise that path (judges run claude-opus-4-7 + Sonnet +
tri-vendor). Opening a speculative audit PR in Sprint 10 distracts from
the locked operational queue. Instead, this ticket tracks the concern
and authorizes a targeted audit if/when a runtime caller trips on it.
Caller map (as of 2026-04-21 commit 6cf7554)
claude-opus-4-6 or claude-opus-4.6 is referenced in 22 files
(grep result, waggle-os repo only — zero hits in hive-mind):
- Config + docs:
litellm-config.yaml,ops/litellm/README.md,benchmarks/harness/config/models.json,docs/specs/PROMPT-ASSEMBLER-V4.md,EVAL-RESULTS-V5.md. - Runtime routes:
packages/server/src/local/routes/providers.ts,packages/server/src/local/routes/anthropic-proxy.ts,packages/server/src/local/routes/litellm.ts. - Frontend:
apps/web/src/lib/providers.ts,apps/web/src/components/os/apps/ChatWindowInstance.tsx,apps/web/src/lib/spawn-agent-helpers.test.ts. - Agent + eval:
packages/agent/src/cost-tracker.ts,packages/agent/tests/eval/prompt-assembler-v5-eval.ts,packages/agent/tests/eval/prompt-assembler-eval.ts,packages/agent/tests/model-tier.test.ts,packages/server/tests/local-mode.test.ts. - Scripts + historical:
scripts/evolution-hypothesis{,-resume,-rejudge-gemini}.mjs,docs/.evolution-hypothesis-2026-04-14T08-04-57/03-judge-scores.json. - Tauri artifacts:
app/src-tauri/resources/service.js{,.map}(build outputs — not source).
Most of these are configuration, UI model-picker strings, or historical eval artifacts. Active runtime paths are:
packages/server/src/local/routes/providers.tspackages/server/src/local/routes/anthropic-proxy.tspackages/server/src/local/routes/litellm.tspackages/agent/src/cost-tracker.tsapps/web/src/lib/providers.ts+ consumerChatWindowInstance.tsx
If a user in the UI picks "Claude Opus 4.6" in the model selector and
runs a chat turn, the call flows UI → providers.ts → Anthropic
route → LiteLLM → anthropic/claude-opus-4-6-20250610. That's the
trip surface.
Trigger condition
Open a PR with title
fix(litellm): audit claude-opus-4-6 dated-snapshot route
when any of the following happen:
- A user reports a 404 / model_not_found when picking Opus 4.6 in the Waggle UI model picker, OR
- A test or eval harness run fails with the LiteLLM error signature
litellm.NotFoundError: AnthropicException - ... model: claude-opus-4-6-20250610, OR - An operational readiness check (e.g., pre-Stage-2 full-suite vitest) explicitly exercises the Opus 4.6 route and returns the same signature.
Fix shape (if triggered)
Should mirror the Sprint 10 Task 1.2 Sonnet repair:
- Re-fetch Anthropic docs. Confirm the current live Claude API ID
for Opus 4.6 (expected: plain
claude-opus-4-6; the-20250610dated snapshot is expected to be either valid-but-decommissioned or invented). - Edit
litellm-config.yaml— repoint the primaryclaude-opus-4-6alias + the legacy aliasanthropic/claude-opus-4.6to the plainanthropic/claude-opus-4-6. - Add a section to
ops/litellm/README.mdunder the existing Sprint-10 Task-1.2 header documenting the triggering call, the date, and the verification docs URL. - Extend
scripts/smoke-sonnet-route.mjsintoscripts/smoke-anthropic-route.mjs(parameterized by model) OR add an Opus-specific smoke script — pick the cheaper path based on whether other Anthropic routes are expected to need similar audits (Haiku 4.5 is already correctly dated per the current config). - Commit + PR with commit message referencing this doc as root-cause memo and the Sprint 10 Task 1.2 migration note as the repair template.
Non-actions (per PM policy)
- Do NOT pre-audit. Do NOT open a Sprint 10 PR for this.
- Do NOT remove the
claude-opus-4-6alias from the config — a UI-picker reference still exists. If broken, repair is right; removal is scope-creep. - Do NOT expand the audit to other Anthropic aliases without a specific
caller-trip signal.
claude-haiku-4-5-20251001for example has a valid dated suffix per the public docs.
Ticket stays open until either the trigger fires (fix) or until the Opus 4.6 alias is retired from all callers (close as obsolete). No forced Sprint slot.