Repository navigation
feat(usage): price claude-haiku-5-5 - #1930
Conversation
The mctl-agents cheap profile moved to Claude Haiku 5.5 (mctl-agents#666), and claude-remote already runs on it. The usage price catalog is keyed by canonical_model, so every Haiku 5.5 record was being stored unpriced. Haiku 5.5 is priced per request by prompt length (5x over 100k prompt tokens). mctl-api's catalog is flat and a record aggregates a whole query, so the tier cannot be resolved yet. This card uses the up-to-100k rates and the README states that longer prompts are under-priced by up to 5x (a lower bound); tier-aware pricing is mctl-api#642. Append-only entry; ROLLOUT_MARKER is bumped because mctl-api reads the catalog only at startup. Claude-Session: https://claude.ai/code/session_01BKnkncXtavYRiryZ2k33nM
|
Claude finished @mashkovd's task in 2m 20s —— View job Review complete ✅
Verdict: APPROVE (0 P1, 0 P2, 1 P3) Checked
P3 (nit, doesn't block): the One thing outside the diff itself, flagged for awareness only (not a code issue): the PR description cites |
| @@ -61,8 +61,9 @@ spec: | |||
| # annotation hook, so changing this value is how gitops restarts | |||
| # the pod. Bump only after zitadel-iac has applied generated | |||
There was a problem hiding this comment.
P3: Bump only after zitadel-iac has applied generated identity configuration: envFrom is read at container start. is leftover guidance from the previous rollout (loading ZITADEL_PORTAL_CLIENT_ID, mctl-gitops#1923) and has no bearing on this one (loading the usage-pricing catalog). Left as-is, it reads as a precondition for this bump too, which could make a future contributor wait on zitadel-iac unnecessarily. Consider trimming it to the parts that are actually rollout-reason-agnostic (the 503-until-restart rationale) and keeping reason-specific preconditions only in the line directly above ROLLOUT_MARKER.
There was a problem hiding this comment.
Valid, deferring as P3: that sentence predates this PR (it came with the #1923 rollout) and this PR only replaces the reason line directly above ROLLOUT_MARKER. I will trim it to the reason-agnostic rationale the next time the marker is bumped, rather than spending another review round on a comment-only change here.
Antigravity (agy) review — informationalModel: gemini-3.8-flash-high · commit No significant issues found. |
Why
The mctl-agents
cheapprofile moved toclaude-haiku-5-5in mctlhq/mctl-agents#666, andclaude-remotealready runs on it.claude-firstparty.jsonhad noclaude-haiku-5-5entry, soCatalog.CalculatereturnedErrNoPricingand every Haiku 5.5 usage record was stored unpriced.What
claude-firstparty.json: a new append-only entry, version2026-10-17-firstparty-1,effective_from: 2026-10-17T00:00:00Z. Its rates come from the pricing page's "Model pricing" table (https://platform.claude.com/docs/en/about-claude/pricing, retrieved 2026-10-17), the row for prompts up to 100,000 tokens, in USD per MTok: input 0.10, output 0.50, 5m cache write 0.125, cache hit 0.01. Web search costs $0.01 per call. No existing entry is edited.README.md: adds the table row and a section stating the known limitation.mctl-api.yaml: bumpsROLLOUT_MARKER, because mctl-api reads the catalog only at startup.Known limitation (owner decision: option 1)
Haiku 5.5 is priced per request by prompt length. Over 100,000 prompt tokens, every dimension costs 5x. mctl-api's catalog holds one flat rate set per entry, and a usage record aggregates a whole query, so the tier cannot be resolved from the record. This card uses the up-to-100k rates, which fit the short mechanical prompts
cheapis meant for. Any request with a longer prompt is under-priced by up to 5x, so Haiku 5.5 costs should be read as a lower bound. Tier-aware pricing is tracked in mctlhq/mctl-api#642. When it lands, a new entry supersedes this one.Records already ingested without a price before this card existed are not re-priced by this change.
Verification after merge
ROLLOUT_MARKERand loads the catalog without error.claude-haiku-5-5usage record carriespricing_version = 2026-10-17-firstparty-1and a non-nullcalculated_cost.🤖 Generated with Claude Code
https://claude.ai/code/session_01BKnkncXtavYRiryZ2k33nM