Skip to content

feat(pricing): add Fable 5.1 and Mythos 5.1 - #10

Merged
dspv merged 1 commit into
dspv:masterfrom
SergeAx:feat/pricing-fable-5-1
Sep 2, 2026
Merged

feat(pricing): add Fable 5.1 and Mythos 5.1#10
dspv merged 1 commit into
dspv:masterfrom
SergeAx:feat/pricing-fable-5-1

Conversation

@SergeAx

@SergeAx SergeAx commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Adds the two rows Anthropic published for Claude Fable 5.1 and Claude Mythos 5.1, and bumps pricing_version to 2026-09-02.1 (rule 8).

The one thing worth reading twice

Both models cost the same as Fable 5 on input and output — $10/$50 per 1M, with $12.50/$20 cache writes — but their cache reads are 0.025x input ($0.25/MTok), not the 0.1x every other row in the table follows. Anthropic's pricing page carries it as an explicit footnote:

Cache hits and refreshes on Claude Fable 5.1 and Claude Mythos 5.1 are priced at 0.025x the base input price. All other models use the standard 0.1x multiplier.

The table's own notes previously stated the 0.1x rule without exception, so anyone deriving cache_read from it would have written $1.00 and overcharged a cached Fable 5.1 turn four times over. The note now records the exception and why those rows break the rule.

TestFable51CacheReadsAtItsOwnRate pins it. claude-fable-5-1 is one character away from claude-fable-5, whose cache reads cost 4x as much; longest-prefix-wins already resolves it correctly, and the test makes that a guarantee rather than an accident.

Mythos 5.1 is included because the table already pairs every Fable row with its Mythos twin, and the pricing page lists both at identical rates.

Provenance

All figures read from https://platform.claude.com/docs/en/about-claude/pricing on 2026-09-02. Top-level fetched_at is deliberately left at 2026-08-18 — see the open issue below for why bumping it would have asserted more than this PR delivers.

Checks

go vet, go test ./..., UI tests, lint-ui, dist-check and make smoke are green. Two caveats, neither from this change:

  • internal/opencode TestIngestLive fails on master too (it reads a live OpenCode database: sql: Scan error on column index 1, name "c": converting NULL to float64 is unsupported).
  • golangci-lint is not installed on this machine, so lint-go's second half ran in CI only.

Out of scope, but found while sourcing this — Sonnet 5 is now overcharged

The same pricing page says:

The $2/$10 per million input/output token pricing for Claude Sonnet 5, announced at launch as introductory pricing through August 31, 2026, is now the standard price. The previously scheduled increase to $3/$15 per million input/output tokens on September 1, 2026 will not occur.

pricing.json still has the until: "2026-08-30" row at $2/$10 and a current row at $3/$15, so every Sonnet 5 turn priced since 2026-08-31 is reported 50% high. That is a rule 6 problem in the opposite direction from the one dated rows were built to prevent. It wants its own commit — happy to open it — but it did not belong in a PR titled "add Fable 5.1".

https://claude.ai/code/session_01PbAUomrYzs8MeJbd66Q1QP

Both launched at Fable 5's $10/$50 per 1M, but their cache reads are
0.025x input ($0.25) rather than the 0.1x every other row follows.
Deriving the figure from the table's own multiplier note would have
overcharged a cached Fable 5.1 turn four times over, so the rows
carry the published number and the note records why they differ.
The test pins it: "claude-fable-5-1" sits one character away from a
row that costs four times as much.

Mythos 5.1 comes along because the table already pairs each Fable
row with its Mythos twin, and the pricing page lists both at
identical rates.

pricing_version bumps to 2026-09-02.1 per rule 8. Prices read from
platform.claude.com/docs/en/about-claude/pricing on 2026-09-02.
@dspv

dspv commented Sep 2, 2026

Copy link
Copy Markdown
Owner

Thanks — merged.

The cache-read test is the part I'd have wanted most: $0.25 sits one character away from a row that charges four times as much, and it's the first row to break the 0.1× rule.

Verified the figures against the pricing page, and checked that claude-fable-5-1 doesn't collide with claude-fable-5 — longest-id-first handles it.

I'll fix fetched_at on merge; it was stale before this PR.

First outside contribution here, and it came with a test that would catch a real mistake. Appreciated.

@dspv
dspv merged commit 18cad6f into dspv:master Sep 2, 2026
9 checks passed
dspv added a commit that referenced this pull request Sep 2, 2026
One date cannot describe a table assembled from three vendors over three
weeks. It said 2026-08-18 while holding non-Anthropic rows read on the
27th, Gemini rows read on the 1st, and Fable 5.1 read on the 2nd — so a
reader checking any figure against the source learned nothing about that
figure from the field that exists to tell them.

It now names the most recent read, and a note lists the date per source.
The per-row notes already carried their own dates; this makes the header
stop contradicting them.

Promised to @SergeAx on #10 rather than sending him round again for a
field that was stale before his PR touched it.

Claude-Session: https://claude.ai/code/session_01DR8fggA2LRHcjNWUsqtDcF
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