{"repo":"NousResearch/hermes-agent","public_id":"74805","display_label":"Windows update pipeline race conditions and deadlocks","summary":"These issues and fixes address race conditions, marker deadlocks, orphaned helper processes, and missing auto-relaunch behavior in the Windows desktop update pipeline. Multiple related failure modes during first-attempt and retry update flows are covered.","subsystem":"apps/desktop","counts":{"members":7,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":4,"attempt_prs":2},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":92013},"resolution":{"state":"resolved","by":"pr-95313"},"freshness":{"state":"verified","last_verified_at":"2026-08-27T00:42:59+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.2857142857142857},"fix_edges":[{"issue_number":61514,"pr_number":92013,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":61514,"pr_number":95069,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":61514,"pr_number":95313,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":61514,"pr_number":95949,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":70337,"pr_number":92013,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":70337,"pr_number":95069,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":70337,"pr_number":95313,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":70337,"pr_number":95949,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":74805,"pr_number":92013,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":74805,"pr_number":95069,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":74805,"pr_number":95313,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":74805,"pr_number":95949,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":75788,"pr_number":92013,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":75788,"pr_number":95069,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":75788,"pr_number":95313,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":75788,"pr_number":95949,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":77277,"pr_number":92013,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":87304,"pr_number":92013,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true}],"members":[{"kind":"issue","number":74805,"title":"[Bug] Windows: footbar-triggered update races process table on first attempt, no auto-relaunch after retry","url":null,"state":"closed"},{"kind":"pr","number":74956,"title":"fix(desktop): Windows update race — retry scanVenvBlockers, skip startHermes on remnants, clean stale marker (#74805)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"b04f8578eb686cb7db03d43d92d77a21bb7d6877","number":0},{"kind":"pr","value":"#74805","number":74805},{"kind":"pr","value":"#95313","number":95313},{"kind":"pr","value":"#74761","number":74761}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":78037,"title":"fix: Windows update pipeline — first-attempt race, marker deadlock, orphaned venv helpers, ZIP-fallback binary loss","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"b04f8578eb68","number":0},{"kind":"commit","value":"e1e72f109c95","number":0},{"kind":"pr","value":"#91277","number":91277},{"kind":"pr","value":"#74805","number":74805},{"kind":"pr","value":"#95313","number":95313},{"kind":"pr","value":"#75788","number":75788},{"kind":"pr","value":"#95069","number":95069},{"kind":"pr","value":"#61514","number":61514},{"kind":"pr","value":"#95949","number":95949},{"kind":"pr","value":"#92013","number":92013}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":92013,"title":"fix(update): ZIP fallback no longer destroys user work or the desktop build (#87331, #91962, #87304, #70337 — salvage #87878 + #70477)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["hermes_cli/update_cmd.py","tests/hermes_cli/test_cmd_update.py","tests/hermes_cli/test_update_zip_fallback_guards.py","tests/hermes_cli/test_update_zip_release_preserve.py","tests/hermes_cli/test_update_zip_symlink_reject.py"]},{"kind":"pr","number":95069,"title":"fix(bootstrap): stale checkouts can no longer deadlock the in-app updater against its own marker (#75788, salvage #78037)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["apps/bootstrap-installer/src-tauri/src/update.rs"]},{"kind":"pr","number":95313,"title":"fix(desktop): first Windows update attempt no longer fails on the app's own dying backends (#74805, salvage #78037)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["apps/desktop/electron/backend-release-gate.test.ts","apps/desktop/electron/backend-release-gate.ts","apps/desktop/electron/backend-release-gate.windows-live.test.ts","apps/desktop/electron/main.ts"]},{"kind":"pr","number":95949,"title":"fix(mcp): stdio helper children join the spawn ledger — orphans get reaped (#61514, completes #78037)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["hermes_cli/process_identity.py","hermes_cli/web_server.py","tests/hermes_cli/test_mcp_helper_ledger.py","tools/mcp_tool.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}