Problem
Opening a pull request from a link (a #N chip or a PR link in chat) sometimes shows "Could not load pull requests: All fibers interrupted without error" in the right-panel PR tab. Retry loads it.
Cause (from the desktop and server traces of the 2026-09-27 19:35 occurrence)
- When the panel opens, the client starts the
pullRequests.detail and pullRequests.activity reads, then about 6ms later its query atoms recompute and start them again. The first requests are cancelled (upstream client behaviour).
- On the server, the second
detail request joins the first request's in-flight Cache lookup (PullRequestService detailCache). The first request's cancellation is still tearing that lookup down: the gh subprocess kill takes a few ms. The second request gets the interrupt as its result (server span ws.rpc.pullRequests.detail interrupted after 1ms with no GitHub work of its own).
- The client query atom stores that interrupt-only exit as a
Failure, and useEnvironmentQuery renders it as an error. A client atom never observes its own cancellation, so an interrupt-only failure there always comes from the server side.
This code path (client query atoms, PullRequestService, Effect Cache) is upstream code the fork has not changed. The fork's Issues work (#37, #41) does not touch it.
Contribution to the Objective
This keeps the fork usable as the daily working surface while the Objective work continues.
Acceptance criteria
- An environment query that the server answers with an interrupt-only failure is read again, not shown as an error.
- A logic test reproduces the interrupted-read case and fails without the fix.
scripts/fork-check.sh passes, with the upstream edit allowlisted and owned in the feature map.
Non-goals
- Changing the server
Cache join race or the client's double start. Both are upstream behaviour and candidates for a separate change.
Proof
Targeted vp test run, typecheck, lint, knip and fork check on the PR.
Problem
Opening a pull request from a link (a
#Nchip or a PR link in chat) sometimes shows "Could not load pull requests: All fibers interrupted without error" in the right-panel PR tab. Retry loads it.Cause (from the desktop and server traces of the 2026-09-27 19:35 occurrence)
pullRequests.detailandpullRequests.activityreads, then about 6ms later its query atoms recompute and start them again. The first requests are cancelled (upstream client behaviour).detailrequest joins the first request's in-flightCachelookup (PullRequestServicedetailCache). The first request's cancellation is still tearing that lookup down: theghsubprocess kill takes a few ms. The second request gets the interrupt as its result (server spanws.rpc.pullRequests.detailinterrupted after 1ms with no GitHub work of its own).Failure, anduseEnvironmentQueryrenders it as an error. A client atom never observes its own cancellation, so an interrupt-only failure there always comes from the server side.This code path (client query atoms,
PullRequestService, EffectCache) is upstream code the fork has not changed. The fork's Issues work (#37, #41) does not touch it.Contribution to the Objective
This keeps the fork usable as the daily working surface while the Objective work continues.
Acceptance criteria
scripts/fork-check.shpasses, with the upstream edit allowlisted and owned in the feature map.Non-goals
Cachejoin race or the client's double start. Both are upstream behaviour and candidates for a separate change.Proof
Targeted
vp test run, typecheck, lint, knip and fork check on the PR.