From 297edd512d7b1dd84173907daa8ec33dd475c046 Mon Sep 17 00:00:00 2001 From: imccyu <276526105+imccyu@users.noreply.github.com> Date: Thu, 6 Aug 2026 03:20:34 +0800 Subject: [PATCH] fix(token-meter): drop the dead deep-compare from claim bookkeeping A defined fold claim is always freshly built and adjacent metering events cannot repeat, so presence alone decides the claim transition; the value comparison was unreachable and failed the per-file branch gate. --- packages/llm/token-meter/src/usage-projection.ts | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/packages/llm/token-meter/src/usage-projection.ts b/packages/llm/token-meter/src/usage-projection.ts index b83e761524..0d5db509b5 100644 --- a/packages/llm/token-meter/src/usage-projection.ts +++ b/packages/llm/token-meter/src/usage-projection.ts @@ -94,12 +94,6 @@ interface ContextPressureState { claim?: ShadowPriceClaim } -/** Whether two optional shadow-price claims price the same range identically. */ -const claimEquals = (left: ShadowPriceClaim | undefined, right: ShadowPriceClaim | undefined): boolean => - left === right - || (left !== undefined && right !== undefined - && left.start === right.start && left.end === right.end && left.tokens === right.tokens) - /** * Token-meter's session projection unit. * @@ -194,7 +188,9 @@ ProjectionDefinition<'contextPressure', ContextPressureState> = { if (fold.deltaTokens !== 0) { next = { ...next, surfaceTokens: next.surfaceTokens + fold.deltaTokens } } - if (claimEquals(state.claim, fold.claim)) return next + // A defined fold.claim is always freshly built, so presence decides claim + // bookkeeping: no claim before or after this event leaves `next` as is. + if (state.claim === undefined && fold.claim === undefined) return next const { claim: _expired, ...withoutClaim } = next return fold.claim === undefined ? withoutClaim : { ...withoutClaim, claim: fold.claim } },