{"repo":"NousResearch/hermes-agent","public_id":"88371","display_label":"hermes update stale-module and restart hint fixes","summary":"These items concern bugs and fixes in the hermes update flow, specifically stale sys.modules entries causing ImportError after update completion and a misleading startup hint shown after a successful restart. Both the ZIP path module purge and the restart messaging are addressed.","subsystem":"hermes_cli","counts":{"members":3,"open_issues":1,"open_issues_distinct":1,"open_prs":0,"closed_issues":0,"merged_prs":1,"attempt_prs":1},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":113776,"merged_at":"2026-09-17T07:02:10+00:00"},"resolution":{"state":"unresolved","by":null},"freshness":{"state":"verified","last_verified_at":"2026-09-17T07:02:10+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.6666666666666666},"fix_edges":[{"issue_number":88371,"pr_number":113776,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-17T07:02:10+00:00"}],"members":[{"kind":"issue","number":88371,"title":"[Bug]: `hermes update` crashes with ImportError after \"Update complete!\" (stale sys.modules in _kill_stale_dashboard_processes)","url":null,"state":"open"},{"kind":"pr","number":88378,"title":"fix(update): purge stale modules before dashboard cleanup on the ZIP path","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"bec89245945","number":0},{"kind":"pr","value":"#113776","number":113776}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":113776,"title":"fix(update): hermes update finishes on the pulled code; startup hint stops blaming a completed restart (#112604 class)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["evals/update_pipeline/post_swap_handoff_ab.sh","hermes_cli/AGENTS.md","hermes_cli/main.py","hermes_cli/main_dashboard.py","hermes_cli/subcommands/update.py","hermes_cli/update_abort_recovery.py","hermes_cli/update_cmd.py","hermes_cli/update_cmd_config.py","hermes_cli/update_cmd_deps.py","hermes_cli/update_cmd_fleet.py","hermes_cli/update_cmd_maint.py","hermes_cli/update_cmd_zip.py","hermes_cli/update_handoff.py","hermes_cli/update_inventory.py","hermes_cli/update_receipt.py","pyproject.toml","tests/hermes_cli/conftest.py","tests/hermes_cli/test_cmd_update.py","tests/hermes_cli/test_pending_supervisor_recovery.py","tests/hermes_cli/test_sibling_config_migration.py","tests/hermes_cli/test_update_autostash.py","tests/hermes_cli/test_update_config_migration_on_current.py","tests/hermes_cli/test_update_config_migration_on_current_checkout.py","tests/hermes_cli/test_update_config_reload_tools_config.py","tests/hermes_cli/test_update_fleet_restart_pending.py","tests/hermes_cli/test_update_no_gateway_restart.py","tests/hermes_cli/test_update_post_swap_handoff.py","tests/hermes_cli/test_update_self_lock.py","tests/hermes_cli/test_update_stale_dashboard.py","tests/hermes_cli/test_update_stale_module_purge.py","tests/hermes_cli/test_update_yes_flag.py","website/docs/getting-started/updating.md"]}],"trust":{"default_tier":"verified","includes_suggested":false}}