Skip to content

Pricing matcher has no general normalizer for vendor-renamed auto-pilot/canary model ids (#187 was patched per-name) #193

Description

@pitimon

Follow-up to #187/#188.

Problem

#188 fixed claude-auto-pilot-fable-v1-canary / claude-mythos-*-canary by adding two literal curated.fuzzy substring rules ("fable", "mythos"). This is a per-model-name patch, not a fix to the underlying gap: src/lib/pricing/matcher.js has no tier that recognizes the <vendor>-auto-pilot-<name>-v<N>-canary naming shape in general.

Any future renamed/canary model whose base name is not already a short LiteLLM substring (the reason gpt-5.6-auto-pilot-* survived — "gpt-5" / "gpt-5.6" happen to already be short LiteLLM keys) will reproduce the exact same silent-$0 bug, requiring another one-line curated patch and another release cycle.

Also a real risk introduced by the current fix: {"match": "fable", "ref": "claude-fable-5"} is a bare substring rule — any future model id containing the literal substring "fable" (e.g. a hypothetical distinct cheaper fable-mini) will silently inherit the Opus-tier ($10/$50) Fable 5 price via fuzzy match, not because it is actually that model, but because the substring matched.

Ask

Design a normalizer for source: "hermes" (or general) that strips known infix/suffix noise (-auto-pilot-, -v\d+-canary, -canary, -preview) before running the existing lookup ladder, so vendor-renamed ids resolve to their real base model without a hand-added fuzzy rule per name. This is matcher.js resolve-order work — evaluate as a proper design pass, not another one-line patch, given the risk noted above.

Evidence

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions