Skip to content

Performance dashboard: Claude Fable 5 sessions costed at Sonnet pricing and shown as raw model id #1341

@asdf8675309

Description

@asdf8675309

The Performance dashboard doesn't know about Claude Fable 5 yet. Two problems:

  • Costs are wrong. MODEL_PRICING has no claude-fable-5 entry, so getPricing() falls through to the Sonnet default ($3/$15). Fable is $10/$50 — Fable-heavy sessions get under-costed about 3.3x.
  • Display is broken. shortModel() only knows opus/haiku/sonnet, so Fable sessions show up as a truncated raw id like claude-fable-5[1m] instead of "Fable".

One detail that matters: transcripts carry suffixed ids (claude-fable-5[1m]), so a table entry alone won't fix it — the fuzzy match needs a fable branch too.

The fix is small (PR incoming):

  • Add "claude-fable-5": { input: 10, output: 50, cacheWrite: 12.50, cacheRead: 1.00 } to MODEL_PRICING
  • Add a fable branch to the fuzzy match
  • Add the "Fable" display name to shortModel()

Tested in a sandbox with a synthetic Fable transcript — costs came out exact ($10.00 for 1M input, $5.00 for 100K output, and so on down the line).

Two things I hit while testing, separate from this fix — I can file them if you want them tracked:

  • First run on a completely fresh system crashes: saveState() writes into PAI/PULSE/Performance/, but nothing ever creates that directory
  • The Opus rows still carry $15/$75 pricing; current Opus 4.x is $5/$25

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