Repository navigation
bot: a saved hand the store already holds is not reported lost - #972
Merged
Merged
Conversation
`report_unsettled` named a saved open hand "lost" whenever the resync snapshot had moved past it, without asking the store. Three false warnings on 2026-10-10: SvanBotV10 at the hot swap, where the swapped-out process had stored the hand two seconds before it was replaced, and SurSvan and Svanism at reconnects hours later, where the live path had stored the hand after the restart but left its saved start in `resumable`. The reporter now asks the store first and says nothing when the row is there. A store that cannot answer still warns, because an unreadable store says nothing about the row. Closes #968. Generated-by: claude-code/claude-sonnet-5-5 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This was referenced Oct 12, 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.
What generated this?
Generated-by: claude-code/claude-sonnet-5-5
Motivation
Closes #968.
report_unsettlednames a saved open hand "lost" whenever the resync snapshot has moved past it, without asking the store. Three false warnings in 35 hours on build 7a1494c (2026-10-10 11:00 to 2026-10-11 22:12 UTC), each for a hand whose row is in thehandstable:shared.resumable(resume_open_handreturns early when the tracker already knows the hand).The warning exists so that a row lost at a hot swap is not silent (0315); a false one at every swap hides a true one, and the next release is a swap.
Solution
One check in the one reporter, in
crates/apps/bot/src/client/recover.rs: after the entry is dropped,report_unsettledasksshared.store.handand returns without a warning onOk(Some(_)). A store that cannot answer still warns, because an unreadable store says nothing about the row. It covers all three causes.Test:
a_saved_hand_the_store_already_holds_is_not_reported_loststores the saved hand's row, then resyncs onto another hand; it failed onorigin/mainwith "the row is stored: nothing is lost" before the fix. The existinga_saved_hand_the_replay_cannot_settle_is_reported_lost_oncestill passes: with no stored row the warning stays.Log-only change off the decision path, so no paired simulation and no golden change. Not released: the running build is 7a1494c.
Checklist
scripts/check.sh fullpasses on this exact commit (e842e1b), run in a worktree on the shared warmtarget/dev:Generated-by:is in the commit footer and in the section above.🤖 Generated with Claude Code