fix(settings): retry pool-limit metadata after stream interruptions #764
No Reviewers
Dismiss Review
Are you sure you want to dismiss this review?
Labels
Clear labels
accessibility
all-platforms
area:agents
area:ai
area:chain
area:ci
area:client
area:daemon
area:p2p
area:project
area:protocol
area:runtime
area:storage
bug
chore
community
dependencies
discussion
discussion/Announcements
discussion/General
discussion/Ideas
discussion/Q&A
discussion/Show and tell
discussion/answered
documentation
duplicate
enhancement
good first issue
help wanted
i18n
infra
invalid
needs:decision
needs:hardware
paired
question
research
security
status:in-review
test
testing
tracking
wontfix
Barrier affecting people with disabilities
Run every platform's packaging and checks on this pull request, not only the three main ones
MCP server, skill, and thinking on the pool
Planner and model providers
Blockchain, SISY, verification
Continuous integration and build workflows
Desktop and web clients
sisyphusd coordinator, worker, scheduler
libp2p hosts, relays, discovery, connections between nodes
Project planning, roadmap, and governance
Protobuf schemas and RPC contracts
Workload execution and environments
Content-addressed storage, IPFS, Kubo, Cluster, S3, names, pinning
Something isn't working
Repository health, templates, Discussions, contributor experience
Updates to actions, Go modules or npm packages
Migrated from GitHub Discussions
GitHub Discussions category: Announcements
GitHub Discussions category: General
GitHub Discussions category: Ideas
GitHub Discussions category: Q&A
GitHub Discussions category: Show and tell
Q&A discussion with an accepted answer
Improvements or additions to documentation
This issue or pull request already exists
New feature or request
Good for newcomers
Extra attention is needed
Translations and right-to-left layouts
Build, CI, releases
This doesn't seem right
Waits on a decision from both owners
Waits on a machine we do not have yet
Built together by both maintainers, with co-authored commits
Further information is requested
Needs investigation or a design decision
Sealing, keys, access control, tokens, the security model
Built and in an open pull request; closes when it merges
Tests, test harnesses and the rehearsal
Roadmap and meta issues
This will not be worked on
type
Feature
A request, idea, or new functionality (GitHub issue type)
type
Task
A specific piece of work (GitHub issue type)
Milestone
No items
No Milestone
V0: prove the loop
Projects
Clear projects
No projects
Sisyphus roadmap
Done
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: Sisyphus/Sisyphus#764
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
This follow-up keeps the one-shot Electron metadata fallback retryable after transient request failures or live stream updates. Pool limits remain daemon-authoritative; this does not add polling. The shared-state documentation now explains the Electron-only metadata read and event-triggered retry behavior.
The initial configurability metadata fix and its E2E readiness regression are part of #751 so the base feature PR is independently usable and greenable. This PR retains only the distinct retry-after-stream-loss fix and its documentation.
Verification
npm --prefix apps/sisyphus run typechecknpm --prefix apps/sisyphus test(235 passed)npm --prefix apps/sisyphus run buildmake lintactionlintgofmtgit diff --checkmake coverattempted locally; Kubo/IPFS integration cases cannot run becauseipfsis not installed whileSISYPHUS_REQUIRE_KUBOis set. The required full coverage gate is running in CI.Part of #741.
/cc @rvnminers-A-and-N
I read the latest diff and preserved your distinct retry-after-stream-loss change. To fix the actual disabled-controls E2E failure in #751, I moved the first commit (metadata preservation plus enabled-control E2E readiness) into #751. This PR is now rebased onto that refreshed parent and narrowed to the second commit, which clears the fallback guard after failure/live updates. The branch and description now reflect that split; Austin remains requested as reviewer.
/cc @rvnminers-A-and-N
Branch maintenance: rebased the retry-after-stream-loss change onto the current #751 head, resolving the stale-base conflict. Added a README note explaining that Electron-only pool-limit metadata is retried after stream/domain recovery and that this is event-triggered, not polling. Local renderer tests (235), typecheck, production build, make lint, actionlint, gofmt and diff checks pass.
make coverwas attempted but cannot pass locally becauseipfsis absent whileSISYPHUS_REQUIRE_KUBOis set; the required full coverage run remains in CI. Austin reviewer request is preserved. /cc @rvnminers-A-and-NThanks Lior. The intent makes sense, and CI is green on 3f3e2ba. A couple of things I noticed while tracing it.
The README says the metadata read is retried on the next recovery or update. In the code, a stream event only clears
fallbackRequested; the actual retry happens inreconnect, which runs when the stream drops. So if the firstgetPoolLimitsfails but the stream is healthy,managedstays false and the Restart node button stays hidden until something disconnects. Retrying from the data handler whilemanaged/configurableare still unknown would match the docs.Also, since
finallynow clears the guard, every disconnect re-reads, even after a successful load. A node restart will toast "load failed" at each backoff step, and #752's card does the same. Could reconnect-time reads skip when the metadata is already known, or fail silently?Since this is 7 lines on top of #751 and carries 751's commits, would it be easier to fold it into 751 before that gets rebased onto dev?
Refreshed this follow-up onto the current #751 head. The metadata read now retries when a healthy POOL_LIMITS snapshot arrives after startup failed, and it only fetches again while management metadata is still unknown. Reconnect/update retries are silent, so repeated backoff no longer produces a toast per attempt. The existing docs now match the event-triggered retry behavior. Renderer tests, typecheck, and production build pass locally; fresh CI is running.
/cc @rvnminers-A-and-N
I refreshed this on the new #751 root and reconciled the metadata behavior: stream snapshots remain non-editable until management metadata arrives; metadata reads retry on a healthy stream event if startup raced the daemon, then stop once known. Reconnect reads are silent and skipped after a successful metadata read, so an outage does not produce a toast at every backoff step. #752 already follows the same pattern for location discovery.
/cc @rvnminers-A-and-N