Follow-up to #3071 review (codex + @PGupta-Git): the family rewrite alone
did not heal users running off the bundled catalog or stale SQLite cache
rows, which still routed Sonnet 4.6 thinking efforts to the 404
`claude-sonnet-4-6-thinking` wire id. `collapseEffortVariants` treats
those collapsed snapshots as authoritative and `refreshCollapsedThinking`
exits early for families without `effortBudgets` (Claude pairs), so the
new empty routing in the hand table never reached the snapshot.
- Declared the dead wire ids as `retiredMembers` on the Claude 4.6
families (`claude-sonnet-4-6-thinking` on the Sonnet family,
`claude-opus-4-6` on the Opus family). This triggers
`reconcileRetiredRouting` to rewrite every `effortRouting` entry that
targets a retired id to a live wire id (Sonnet falls back to the bare
member; Opus falls back to `-thinking`).
- Refreshed the bundled `packages/catalog/src/models.json` Sonnet 4.6
entry so fresh installs do not boot with the dangling routing — the
surgical diff matches what the generator would emit; the rest of the
catalog is left untouched to keep the bug-fix PR scoped.
- Added regression tests in `variant-collapse.test.ts` for both
reconciliation paths and a bundled-catalog test
(`issue-3067-repro.test.ts`) that pins the live-wire-id resolution end
to end through `buildModel` for every effort tier.
Fixes#3067