Files
hermes-agent/tests
Hermes Agent cd69be6909 fix(tui-gateway): register the readiness done-callback off the lock and give joiners a short grace
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...).
2026-09-25 17:59:19 -05:00
..