Files
hermes-agent/tests
Teknium 29a0305834 fix(update): a launch claimer never reclaims a dead marker while the checkout lock is held (R6/M1)
venv_sync.prepare_launch and _prepare_borrowed_launch claimed the marker with
UpdateLock() (no install_root), and UpdateLock._claim_marker unlinked a dead
marker without asking whether the checkout lock was held. The claim then
failed acquire_checkout and released its own claim: the killed update's
marker was gone while its completion child still ran, and the Desktop gate
reopened over it.

- _claim_marker refuses as held (pid 0) and keeps the marker when the checkout
  lock is held by another process tree (our own hold or an inherited lock fd
  may still reclaim).
- UpdateLock(checkout_first=False): install_root names the guarding checkout
  without taking its lock first; both venv_sync sites pass install_root=root.
- _lock_holder reports a dead recorded updater over a held lock as held, so
  hermes update / launch repair / source completion refusals use the held
  wording instead of naming the dead pid (m6).
2026-10-06 04:36:02 -07:00
..
…
…