Round-4 review of the resource found four real defects:
- The commit guard compared only the client key. A -> B -> A reuses the
same client object, so a stale request for A could overwrite a newer
result for A. Only the newest request may now commit.
- refreshTasks calls reload() and loadTasks() in the same event, and
React has not rendered the `requested` dispatch yet, so ensureLoaded
read `loaded` and returned the very list the reload was replacing.
It now joins the in-flight request, which also collapses the double
repo.list the issue-source handler could issue.
- The non-project header refresh still called loadTasks directly, so it
reused the cached list while pull-to-refresh re-read the host.
- Connected Linear waited on a repo list it never reads, so a slow or
failed repo.list delayed or cleared the issue list. Linear now starts
the fetch for the composer without blocking on it.