Only item 1 is auto-applied. Items 2โ5 are reported in the PR body for human sign-off.
-
Audit โ see every finding (no silent green; all 5 checks always enumerated):
bash ${CLAUDE_PLUGIN_ROOT:-plugins/soleur}/skills/model-launch-review/scripts/audit-models.sh
-
Resolve the current landscape from authoritative sources โ never memory. Read the
claude-api skill model table plus the official docs (the claude-api skill is bundled,
not vendored, so cite the URLs directly โ models:
https://platform.claude.com/docs/en/about-claude/models/overview.md, pricing:
https://platform.claude.com/docs/en/about-claude/pricing.md). If a new model shipped in
an existing tier, do BOTH:
- add a
"<superseded-id>=<current-id>" entry to AUTOFIX_PAIRS in audit-models.sh, and
- retarget every existing same-tier pair's RHS to the new current id.
The second step is not optional. --fix applies pairs sequentially, so a CHAINED map
(4-7=4-8 left in place alongside 4-8=5) is order-dependent and lands files on an
intermediate id, which --detect then re-flags forever โ a permanently-red drift cron
auto-filing issues it cannot fix. assert_single_hop enforces this (exit 78) and
model-launch-review.test.ts pins it, so a chained table fails fast rather than silently.
Then verify item 2b: the new ID must appear in the pinned @anthropic-ai/claude-code
bundle ([2b] in the audit output). If it reports DRIFT, bump the pin in
apps/web-platform/package.json AND the Dockerfile global, regenerate both
lockfiles (see the bun.lock sharp edge below), and re-run. Grep the bundle with grep -a
โ the linux-x64 CLI is a compiled binary and a text-mode grep reports zero hits for
EVERY id, a null result that reads exactly like a real one.
-
Auto-fix model-ID swaps (mechanical; allowlist + deletion guard; never git add -A):
bash ${CLAUDE_PLUGIN_ROOT:-plugins/soleur}/skills/model-launch-review/scripts/audit-models.sh --fix
Then run the suite โ config ID swaps red the coupled test fixtures; update them in the
same PR so CI stays green.
-
Pin freshness (flag): resolve the action tip and each pinned SHA's date โ
gh api repos/anthropics/claude-code-action/releases --jq '.[0] | "\(.tag_name) \(.published_at)"'
gh api repos/anthropics/claude-code-action/git/tags/<PIN-SHA> --jq '"\(.tag) \(.tagger.date)"' \
|| gh api repos/anthropics/claude-code-action/commits/<PIN-SHA> --jq '.commit.committer.date'
audit-models.sh now computes this itself ([2] in the audit output) and prints an
explicit UNKNOWN when gh is missing or unauthenticated โ an unreachable API is
never a freshness pass.
Bump a pin only when a --model swap lands in the same workflow (#2540).
-
Open a CI-gated PR under operator identity (worktree-manager.sh create + gh pr create).
The PR body lists the model-ID diff plus a flag section (pin freshness, pricing drift,
tier-map judgment, dormant deferred issues). Use Ref #5106 for the registry-centralization
follow-up (deliberate split โ do not fold it in).