Repository navigation
Settings read again a read that failed on its way (#775) - #780
Merged
Merged
Conversation
A seat read that never answered left "Your seat could not be read." up until the person left settings and came back. A read that failed on its way (no answer, or a 502/503/504) is now asked again by itself, 3 s doubling to 30 s for up to 8 minutes, and settings draw again once every one answers. A failure that would come again is said as it is. shell-ui: the page's first seat read fails at the browser; settings say so, read it again, and show the seat with no reload. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
alexlwn123
approved these changes
Oct 31, 2026
alexlwn123
left a comment
Collaborator
There was a problem hiding this comment.
Pass at 87ee3f8f9e7838edf240bdf3171ef9c951fffee4.
The change recovers Settings after a transient read failure while retaining load-generation and page guards. The small, local retry helper and focused browser regression fit #775; I found no blocking regression.
Validation: pinned Node syntax check passed; a disposable harness exercising the extracted retry helper passed recovery, permanent/transient status classification, exponential backoff and cap, elapsed-budget stopping, and closed/stale-load guards. CI check is green; all four e2e shards are still running. I did not run the full browser suite locally. The external engineering-style document named in AGENTS.md was unavailable at its specified path.
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 #775.
Flake: billing-page: after Checkout's return, Settings said "Your seat could not be read." for the lane's whole 30 s wait (run 41144092617, shard 4/4). Two checks failed, and #750 was held.
Cause (product,
cell/shell/settings.js): settings read the seat once per visit (.catch(() => null)). A read that failed on its way left "could not be read" up until the person left settings and came back. Nothing read it again, so the lane's wait couldn't recover, and neither could a person. Still unknown, as the issue says: why that browser read failed while everyGET /api/seatin the node logs answered 200. A request that never reached the node fits. #743's front door removes one such loss in dev, but a phone's network can lose one too.Fix: a read is retried the way #765 retries the shell's: on its own and calmly.
Test: shell-ui adds "a seat read that fails on its way…". The page's first
GET /api/seatfails in the browser (TypeError: Failed to fetch, what a lost request gives). The check waits for "Your seat could not be read.", then for settings to read it again and show the seat, with no reload. The waits are on those conditions, the section's limit is unchanged, and billing-page's check is unchanged.Proof:
cargo xtask e2e --only shell-ui: 317 passed, 1 failed. The new check passed. The one failure was Apps' "closing and reopening Apps with access and card reads held", which is a test race of its own and doesn't touch settings' reads: its probe counts another app's card reads, so it can release before the new visit has read. That fix is a separate PR.🤖 Generated with Claude Code