Files
hermes-agent/hermes_cli
brooklyn! d892451a45 fix(update): cap boot recovery retries and derive self-lock native modules
Two residual Windows reinstall-loop paths behind #81594:

- The post-import recovery (_recover_core_update_marker_locked) had no
  attempt cap: once the early pass stood down after 3 failures (e.g. a
  .pyd mapped by a live Desktop backend or gateway), every launch re-ran
  the full .[all] reinstall from a process that already maps native venv
  extensions. It now shares the early pass's attempt budget stored in the
  marker body: failures bump it, and past the cap boots stop reinstalling
  and print the exact manual recovery commands (including clearing the
  marker). A single successful recovery still clears the marker.

- The updater's self-lock detector only knew cryptography._rust and
  yaml._yaml; the report's locked file was _cffi_backend.pyd. The set is
  now derived from sys.modules (every loaded extension under
  site-packages, mapped to its distribution). An unpinned transitive such
  as cffi counts as rewritten when uv.lock resolves it elsewhere AND a
  base-dependency parent is moving to its pin, so the deferral is cleared
  by the sync it defers (no #86735 always-fire loop); anything else stays
  fail-open.
2026-09-24 04:27:31 -05:00
..
…
…
…
…
…
…
…
…
…
…