Skip to content

Self-updating model lanes + family latest-model check (Opus 4.8 / Sonnet)#1

Merged
toly-aiornot merged 1 commit into
mainfrom
feat/self-updating-models-latest-check
Jun 6, 2026
Merged

Self-updating model lanes + family latest-model check (Opus 4.8 / Sonnet)#1
toly-aiornot merged 1 commit into
mainfrom
feat/self-updating-models-latest-check

Conversation

@toly-aiornot

Copy link
Copy Markdown
Collaborator

Why

TokenMaxed was shipping stale, hard-coded model ids (Claude pinned to claude-opus-4-7; price table had no claude-opus-4-8 / claude-sonnet-4-6), and CLI lanes were forced to hard-pin (@latest was API-only) with no freshness signal at all.

What

  • No hard-coding — Claude lanes use <family>@latest and self-update. CLI lanes pass --model {model} (resolved at spawn).
  • @latest allowed on every lane kind (was API-only).
  • Family-based latest-model check at session start — new staleAgainstPriceTable() (pure, egress-free, all lane kinds) flags any lane behind the newest priced model in its family; surfaced in the banner. Self-updating @latest lanes never false-flag.
  • Price table — added claude-opus-4-8 (frontier, $5/$25) + claude-sonnet-4-6 ($3/$15); older entries kept priced.
  • Sonnet — full-access via Claude Code (CLI subscription) as the default; an Anthropic API lane ships as a blocked opt-in template.
  • Billing is its own axisapimetered. MiniMax = costBasis: subscription; /tokenmaxed:setup now asks subscription-vs-metered for every API lane and never assumes.
  • Host-review path fixed/tokenmaxed:review + Stop gate now resolve @latest like routing, so a manager on an alias can never spawn claude --model <family>@latest.

Verification

  • 501/501 tests pass; typecheck clean; plugin bundles rebuilt.
  • Codex hard-reviewed (as requested): caught the host-review regression, which is fixed and re-verified ALL PASS.

🤖 Generated with Claude Code

….8 / Sonnet

Stop shipping hard-coded, stale model ids. Models now self-update via
<family>@latest and a session-start check flags any lane behind the newest
priced model in its family — across ALL lane kinds, not just API.

Core
- prices.seed.json (×3): add claude-opus-4-8 ($5/$25, new frontier) and
  claude-sonnet-4-6 ($3/$15); keep older entries priced for back-compat.
- registry.ts: allow <family>@latest on any lane kind (was API-only); still
  reject a malformed bare "@latest".
- node.ts: makeCliExecutor substitutes a {model} placeholder in args with the
  resolved lane.model, so CLI lanes spawn the current model without a stale pin.
- model-freshness.ts: add staleAgainstPriceTable() — pure, egress-free,
  all-lane-kinds "are the latest models in use?" check (family from @latest
  stem / model_family / price-table metadata; never guessed).

MCP
- summary-deps.ts: resolve @latest for display and merge the price-table
  staleness check into the session-start banner (covers the CLI Claude lanes
  the API-only live check never saw).
- host-review.ts: resolve @latest (and drop unresolved aliases) on the
  review/Stop-gate path too — mirrors routing so a manager on an alias can
  never spawn `claude --model <family>@latest`. (Codex-found regression.)
- lane-setup.ts/setup.ts + setup SKILL: surface each lane's billing and ASK
  subscription-vs-metered for every API lane — `api` is not assumed metered.

Config
- claude-native -> claude-opus@latest; claude-haiku/claude-sonnet -> @latest
  with `--model {model}`. Sonnet ships full-access via Claude Code (CLI
  subscription) as the default; an Anthropic API lane is a blocked opt-in.
- minimax-api: costBasis subscription (flat-rate token), not metered.

Tests: +unit coverage for staleAgainstPriceTable, {model} substitution, and
@latest on cli/native lanes. 501/501 pass; typecheck clean; bundles rebuilt.
Codex hard-reviewed: all findings addressed and re-verified.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@toly-aiornot toly-aiornot merged commit 2e73b7f into main Jun 6, 2026
1 check passed
@toly-aiornot toly-aiornot deleted the feat/self-updating-models-latest-check branch June 6, 2026 19:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants