{"repo":"NousResearch/hermes-agent","public_id":"94264","display_label":"Update stash restore safety and git state accuracy","summary":"These issues and pull requests concern the update process incorrectly restoring invalid local Python from stash while reporting success, and separately misreporting git state during updates (false divergence, updates during rebase, incorrect completion status). Fixes focus on rejecting unsafe or unproven stash restores and ensuring honest git state reporting.","subsystem":null,"counts":{"members":7,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":2,"attempt_prs":4},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":99555},"resolution":{"state":"resolved","by":"pr-99555"},"freshness":{"state":"verified","last_verified_at":"2026-09-28T12:33:26+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.2857142857142857},"fix_edges":[{"issue_number":94264,"pr_number":99555,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":94264,"pr_number":126166,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":122557,"pr_number":126166,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":122627,"pr_number":126166,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":124642,"pr_number":126166,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":124644,"pr_number":126166,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true}],"members":[{"kind":"issue","number":94264,"title":"Update can restore invalid local Python and report success while every agent turn fails","url":null,"state":"closed"},{"kind":"pr","number":94287,"title":"fix(update): reject unsafe stash restores","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#99555","number":99555},{"kind":"pr","value":"#99555","number":99555}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":94303,"title":"fix(update): reject stash restores that re-apply invalid Python","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#94287","number":94287}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":94344,"title":"fix(update): fail closed on unproven stash restore","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"ca12cbd68d8b85fc1f51c4a5db2dcb64e75604d1","number":0},{"kind":"pr","value":"#94264","number":94264},{"kind":"pr","value":"#94344","number":94344},{"kind":"pr","value":"#94264","number":94264},{"kind":"pr","value":"#94287","number":94287},{"kind":"pr","value":"#94303","number":94303}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":99555,"title":"fix(update): reject stash restores that re-apply invalid Python (salvage #94287)","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_update_autostash.py","tests/hermes_cli/test_update_import_guard.py"]},{"kind":"pr","number":122828,"title":"fix(update): name this run's unsettled autostash before any update outcome","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#126166","number":126166}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":126166,"title":"hermes update tells the truth about git state: no false divergence, no update under a rebase, no 'complete' with a parked patch, works from a PM venv","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["hermes_cli/_early_recovery.py","hermes_cli/update_cmd.py","hermes_cli/update_cmd_stash.py","hermes_cli/update_owning_install.py","tests/e2e/core/upgrade/git/test_foreign_state.py","tests/e2e/core/upgrade/git/test_local_modifications.py","tests/e2e/core/upgrade/git/test_truthful_outcome.py","tests/e2e/core/upgrade/pm/test_stamps_and_doctor.py","tests/hermes_cli/test_update_autostash.py","tests/hermes_cli/test_update_diverged_rescue_ref.py","tests/hermes_cli/test_update_owning_install.py","tests/hermes_cli/test_update_parked_branch_guard.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}