feat(pricing): V4.1 Flash is deepseek-flash, on a cheaper card - #26
Merged
Merged
Conversation
DeepSeek-V4.1-Flash shipped 2026-09-10 as `deepseek-flash`. The V4 Flash and V4 Flash Vision Exp models are retired; their names still work, are served by V4.1 Flash and bill at the Flash price. The Flash card fell on every item (off-peak $0.007/$0.22/$0.66 -> $0.003/$0.15/$0.60 per 1M, peak still double); Pro's did not move. Verified today off both pricing locales, the changelog, and GET /models, which lists exactly deepseek-flash and deepseek-v4-pro. The switch instant is INFERRED. Upstream dated the release and gave no time. Our docs mirror fetched the old card at 04:50 UTC on 09-10 and the new one at 11:27 UTC; V41At is 11:00 UTC, the last whole hour between, so an estimate for a call in that gap can only overstate. - CLI: ModelFlash is now deepseek-flash (the default model); the retired names resolve to it. Cards are keyed by tier and gated by era (flat, V4 time-of-day, V4.1), so a ledger row still reprices under the card it was billed at. `pricing` shows the card of the era in force (it read the card at RepriceAt, which would have shown V4 prices forever) and gains `card_since`. NextChange sees a card change as a change. - Gateway meter: same three eras, keyed by tier; every flash name lands on the flash card. The admission ceiling uses the admission era's card, which is correct because the one change since the repricing was a cut. - `make price-check` now also compares the dated instants between the two copies. The gateway's own comment admitted nothing guarded its clock; mutation-checked by moving the gateway's V4.1 hour. - Playground: its private card is on V4.1, and it now honours the weekend rule it missed on 2026-08-22 (it billed Beijing weekends at peak). A Go test pins its RATES to the newest flash card, read off the newest era rather than time.Now() so it cannot become a flip-day bomb; mutation-checked. - Site, README, AGENTS.md, SKILL.md, llms.txt, gateway/DESIGN.md: the new card and names everywhere a current claim is made; superseded cards kept, labelled, where the ledger needs them; a news entry; "text only" claims corrected (flash takes images since 09-10). The thinking surcharge table is labelled as a V4 Flash measurement: one probe on deepseek-flash read +26 at high, not +79, and the table is not re-measured here. - Docs corpus repacked from the mirror (77 pages, 100K, en/dsh excluded). Verified: make check, go test -race, cover-gate (72.7%); every changed page rendered in Chrome, no page scrolls sideways at 390px, and the pricing strip agrees with `ds pricing`. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
DeepSeek-V4.1-Flash shipped 2026-09-10 as
deepseek-flash. The Flash card dropped. Pro's did not. The V4 Flash names still work and bill as flash. Verified today off both pricing locales,/updates, andGET /models, which now lists exactlydeepseek-flashanddeepseek-v4-pro.Peak is still 2x (01:00-04:00, 06:00-10:00 UTC, Mon-Fri).
The switch instant is inferred
Upstream published a date and no time. The docs mirror got the old card at 04:50 UTC on 09-10 and the new one at 11:27 UTC.
V41At= 11:00 UTC, the last whole hour between those two fetches, so an estimate for a call in that gap can only overstate. The code comment says so, and so does every page that names the instant.What changed
ModelFlash=deepseek-flash(the new default). The retired names resolve to it. Cards are keyed by tier and gated by era (flat / V4 time-of-day / V4.1), so ledger rows reprice under the card they were billed at.ds pricingshows the full card of the era in force, addscard_since, and notes the retired names.NextChangecounts a card change as a change.make price-checknow also compares thetime.Dategates between the CLI and gateway copies. Mutation-checked.RATESto the newest flash card, taken from the newest era rather thantime.Now(). Mutation-checked.en/dshexcluded.Verified
make check(includes gateway interop + site-check + price-check),go test -race ./...,make cover-gate72.7%. I rendered the changed pages in Chrome: nothing scrolls sideways at 390px, and the pricing strip agrees withds pricing.Not in this PR (found while doing it)
web_searchis now silently ignored. A probe ondeepseek-flashreturned 21 input tokens with the tool echoed back, but no search ran (one measured search used to bill about 40K). Sorespond --web-searchis a quiet no-op, and the free tier's 3/day search ration counts searches that never happen.deepseek-flashread +26 athigh, not +79. The copy now labels the table as V4 Flash. The CLI'stokensestimate constants are unchanged, and the table needs a re-measure.deepseek-v4-flash. It acceptsdeepseek-flashviaresolve(), which I checked in code; the interop test passes.No release: pricing PRs #21-#25 merged without one.
🤖 Generated with Claude Code