fix: clear writerFailures counter in resetThresholds#806
Open
0xSkybreaker wants to merge 1 commit into
Open
Conversation
fix: clear writerFailures counter in resetThresholds resetThresholds(sessionID) clears crossed and maxCrossed but leaves writerFailures untouched. A session entering a fresh checkpoint threshold cycle after rebuild could inherit stale failure counts, hitting the retry cap prematurely. Add writerFailures.delete(sessionID) so all per-session checkpoint threshold state resets together. Add test that records failures, calls resetThresholds, then verifies the next cycle starts with a fresh failure count. Closes: XiaomiMiMo#734 @
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.
@
Summary
Fixes #734 —
SessionPrune.resetThresholds(sessionID)clearscrossedandmaxCrossedbut leaveswriterFailuresuntouched, causing stale failure counts to carry over into a fresh checkpoint threshold cycle after discard+rebuild.Changes
packages/opencode/src/session/prune.ts: AddwriterFailures.delete(sessionID)toresetThresholdsso all per-session checkpoint threshold state resets togetherpackages/opencode/test/session/prune.test.ts: Add targeted test that records 2 writer failures, callsresetThresholds, then verifies the next cycle has a full 3-retry budget (not just 1 remaining)Verification
The new test exercises the exact scenario described in the issue:
resetThresholds(sessionID)Without the fix, step 3 would only allow 1 more fire before hitting the cap.
🤖 Generated with Claude Code@