You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Data Quality page shows quarantined async-inbox rows (count and cost) when ingestion: :async is configured, so cost stuck outside the ledger is visible instead of silently missing from totals.
Changed
BREAKING: LlmCostTracker.track(tokens:) and stream.usage (inside track_stream) now raise ArgumentError on unrecognized token keys instead of dropping them, so a typo like outpt_tokens: surfaces immediately rather than undercounting the ledger.
OpenAI's image-generation, computer-use, and MCP tool calls no longer add $0 line items that marked a call's pricing partial. Their cost is already captured in the model's tokens, so these tool calls are no longer recorded as separate rows and the call reflects complete pricing.
Fixed
The mounted dashboard no longer returns 404 — the engine now registers its routes during Rails boot.
Async ingestion (config.ingestion = :async) no longer permanently loses cost data when a transient database error (deadlock, lock timeout, dropped connection) interrupts the worker mid-drain — affected inbox rows are retried instead of counting toward quarantine.
With config.cache_rollups, a failed rollup-cache update no longer fails or retries the async ingestion batch — calls land in the ledger, the failure is logged, and bin/rails llm_cost_tracker:rebuild_rollups recovers the cached totals.
The dashboard labels non-USD amounts with their currency code (e.g. 1.23 EUR) instead of always rendering $, on the pricing table and per-line call costs.