From 7ffb6b28f5b6bdbfc53ebed94fc68af557612189 Mon Sep 17 00:00:00 2001 From: Adam Malczewski Date: Thu, 11 Jun 2026 14:11:13 +0900 Subject: fix(cache-warming): accurate cache rate + expectedCacheRate (retention) metric The Claude cache % read 100% whenever anything was cached, because the metric's denominator (inputTokens) excluded cached tokens on Anthropic. Fixed upstream in ../claude/provider-anthropic (inputTokens = total prompt); this commit adds the companion retention metric and exposes it: - transport-contract: WarmResponse += expectedCacheRate - transport-http: POST /chat/warm returns expectedCacheRate = cacheRead/(cacheRead+cacheWrite) - cache-warming: computeExpectedCacheRate + a per-conversation 'cache retention' surface stat - handoff: documents the fix + cache-rate vs expected-cache (cross-turn) for the FE Live-verified vs claude haiku: real turn cache rate 61% (was inflated 100%); warm within TTL expectedCacheRate=100%, after expiry=0%. --- packages/cache-warming/src/index.ts | 1 + 1 file changed, 1 insertion(+) (limited to 'packages/cache-warming/src/index.ts') diff --git a/packages/cache-warming/src/index.ts b/packages/cache-warming/src/index.ts index d77f4ec..88cab3b 100644 --- a/packages/cache-warming/src/index.ts +++ b/packages/cache-warming/src/index.ts @@ -5,6 +5,7 @@ export { type ConversationSettings, type ConversationState, computeCachePct, + computeExpectedCacheRate, DEFAULT_INTERVAL_MS, isTokenCurrent, MIN_INTERVAL_MS, -- cgit v1.2.3