Skip to content

data: widen coverage from 12 models to 25 - #8

Merged
bytebrujo merged 1 commit into
mainfrom
feat/widen-coverage
Sep 4, 2026
Merged

bytebrujo merged 1 commit into
mainfrom
feat/widen-coverage

Conversation

@bytebrujo

Copy link
Copy Markdown
Owner

The registry omitted models people actually use. This adds seven Claude models and six Gemini models.

Provider Added
Anthropic Fable 5, Opus 4.8, Opus 4.7, Opus 4.6, Opus 4.5, Sonnet 4.6, Sonnet 4.5
Google Gemini 3.7 Flash, 3.6 Flash, 3.5 Flash, 3.5 Flash-Lite, 2.5 Flash, 2.5 Flash-Lite

How the values were produced. Prices, display names and lifecycle state come from the parsers running over the committed fixtures, so what is recorded is exactly what the scraper will assert tomorrow rather than something hand-typed that could quietly disagree. Context windows, max output and modalities are not published in a scrapeable table by either provider, so they were read from each model's own page and those pages are cited in sources.

Release dates are also filled in for the four Claude models that already had records but carried released: null.

New invariant. test/data.test.js now asserts every tracked id has a record and every record is tracked. Adding an id to tracked without seeding the record would otherwise turn the next scrape red, since normalize() will not invent a context window. The test caught exactly that mistake while this was being written.

Untracked models reported on catalog pages drop from 13 to 6 for Anthropic and 46 to 40 for Google. The remainder are image, video, audio, embedding and robotics models with no per-token price, plus the invitation-only Mythos models.

Adds seven Claude models (Fable 5, Opus 4.8, 4.7, 4.6, 4.5, Sonnet 4.6, 4.5)
and six Gemini models (3.7 Flash, 3.6 Flash, 3.5 Flash, 3.5 Flash-Lite, 2.5
Flash, 2.5 Flash-Lite). The registry previously omitted models people actually
use, which is a poor answer to "what does this cost".

Prices, display names and lifecycle state come from the parsers running over
the committed fixtures, so what is recorded is exactly what the scraper will
assert tomorrow. Context windows, max output and modalities are not published
in a scrapeable table by either provider, so they were read from each model's
own page and are cited in `sources`.

Also fills in release dates for the four Claude models that already had records
but carried `released: null`, since each model page publishes one.

Two Claude snapshots carry aliases (claude-opus-4-5, claude-sonnet-4-5) so the
pricing page's display name and the deprecation page's dated id fold into one
record.

New invariant in test/data.test.js: every tracked id must have a record and
every record must be tracked. Adding an id without seeding the record would
otherwise turn the next scrape red, because normalize() will not invent a
context window. That test caught exactly that mistake while writing this.

Untracked models still reported on catalog pages drop from 13 to 6 (Anthropic)
and 46 to 40 (Google); the remainder are image, video, audio, embedding and
robotics models with no per-token price, plus the invitation-only Mythos models.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@bytebrujo
bytebrujo merged commit bafa331 into main Sep 4, 2026
3 checks passed
@bytebrujo
bytebrujo deleted the feat/widen-coverage branch September 4, 2026 07:27
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.

1 participant