Two defects in the single-flight (#65151) hung the desktop at the
readiness seam, timing out onboarding-first-chat and lineage-rotation in
Desktop core E2E:
- add_done_callback was registered while holding _readiness_lock, and
the callback acquires the same non-reentrant lock. A probe settling in
the window before registration runs the callback inline on the RPC
worker, self-deadlocking it: every later setup.status /
setup.runtime_check blocks on the held lock and the gateway stops
answering readiness at all ('Gateway checking' forever). Register the
callback outside the lock.
- An overlapping poll answered the retryable error AT ONCE. The desktop
fires setup.status + setup.runtime_check from independent consumers at
the same seam (boot, the post-assignment setup.ready broadcast); both
legs erroring read as unknown/fallback, which the onboarding gate
treated as not-ready and the blocking overlay never closed. Joiners now
wait a 0.5s grace for a fast (config-read) probe and read its shared
result; a probe still running after the grace answers the retryable
error so overlapping polls cannot starve the shared pool (#65151
invariant, kept by test_overlapping_runtime_checks...).