fix(cline-cli): decline the rollup when per-message calls were all deduped - #896
Merged
Conversation
…duped The rollup fallback was gated on the post-dedup emitted counter, so a session whose per-message calls were all suppressed by the shared dedup (a duplicated session directory reusing a session_id) fell through to the metadata.usage rollup and double-counted its cost. Gate on a hadMetrics flag set before the dedup check instead.
This was referenced Aug 4, 2026
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.
Closes #894. Follow-up from the adversarial review of #891.
The bug
The rollup fallback in
cline-cliwas gated onemitted > 0, butemittedcounted only calls that were actually yielded, and theseenKeysdedup check runs before the increment. So a session whose per-message calls were all suppressed by the shared dedup (a duplicated session directory reusing asession_id) keptemittedat 0 and fell through to themetadata.usagerollup, emitting the session's cost a second time undercline-cli:<id>:rollup. Over-reports; needs an abnormal on-disk layout.The fix
Gate the rollup on whether the session carried any per-message metrics at all, tracked by a
hadMetricsflag set before the dedup check rather than on the post-dedupemittedcounter. A session whose messages were all deduped now correctly declines the rollup.Verification
session_idand message ids, the second also carrying ametadata.usagerollup, collected through one sharedseenKeysset. The copy is deduped and its rollup declined, so exactly one call survives and cost stays $0.01 rather than doubling to $0.02.hadMetricsassignment after the dedup check reproduces the original double-count (the test then sees 2 calls).