{"repo":"NousResearch/hermes-agent","public_id":"119367","display_label":"Fleet restart obligation discharge and lifecycle fixes","summary":"These items address bugs in how fleet restart obligations are tracked and discharged, particularly when host commits diverge from expected SHAs via cherry-picks or local commits, plus fixes ensuring lifecycle commands target the correct profile.","subsystem":null,"counts":{"members":5,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":2,"attempt_prs":2},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":120143},"resolution":{"state":"resolved","by":"pr-120143"},"freshness":{"state":"verified","last_verified_at":"2026-09-23T23:48:34+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.4},"fix_edges":[{"issue_number":118742,"pr_number":120740,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":119367,"pr_number":120143,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":119367,"pr_number":120740,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":119886,"pr_number":120143,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":119955,"pr_number":120143,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":119982,"pr_number":120143,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true}],"members":[{"kind":"issue","number":119367,"title":"fleet_restart_pending / host restart obligation is permanently undischargeable after out-of-band HEAD movement (cherry-pick / local commit), and the armed-obligation veto preempts the #117051 receipt-settle path","url":null,"state":"closed"},{"kind":"pr","number":119376,"title":"fix(update): reconcile local-ahead restart obligations","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#120143","number":120143}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":119507,"title":"fix(update): discharge fleet-restart obligations by ancestry, not SHA equality (#119367)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"30056d612b","number":0},{"kind":"pr","value":"#119367","number":119367},{"kind":"pr","value":"#120740","number":120740}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":120143,"title":"fix: dashboard, tui-gateway and CLI lifecycle verbs act on the right profile (multiplexer, not the sticky/served one)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["hermes_cli/sessions_repair_profiles.py","hermes_cli/update_cmd_fleet.py","hermes_cli/update_cmd_fleet_checkout.py","hermes_cli/web_server_gateway.py","hermes_state_profile_repair.py","tests/hermes_cli/test_gateway_multiplex_served_record.py","tests/hermes_cli/test_sessions_repair_profiles.py","tests/hermes_cli/test_update_fleet_restart_pending.py","tests/tui_gateway/test_fast_session_scope.py","tests/tui_gateway/test_tui_gateway_server.py","tui_gateway/methods_config_set.py"]},{"kind":"pr","number":120740,"title":"fix(update): a Desktop-only host settles an inventory-less restart obligation","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_fleet.py","hermes_cli/update_cmd_fleet_gatewayless.py","tests/hermes_cli/test_manual_serve_deferral.py","tests/hermes_cli/test_update_scoped_reconciliation.py","website/docs/getting-started/updating.md"]}],"trust":{"default_tier":"verified","includes_suggested":false}}