{"repo":"NousResearch/hermes-agent","public_id":"98436","display_label":"Update receipt lost during stale module purge","summary":"These issues and fixes address a bug where an active update receipt is incorrectly discarded when stale modules are purged during an update handoff. The work focuses on keeping in-flight receipts alive across the purge step.","subsystem":null,"counts":{"members":5,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":3},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":103478,"merged_at":"2026-09-05T07:24:41+00:00"},"resolution":{"state":"resolved","by":"pr-103478"},"freshness":{"state":"verified","last_verified_at":"2026-09-05T07:24:41+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.4},"fix_edges":[{"issue_number":92535,"pr_number":103478,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-05T07:24:41+00:00"},{"issue_number":97332,"pr_number":103478,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-05T07:24:41+00:00"},{"issue_number":98022,"pr_number":103478,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-05T07:24:41+00:00"},{"issue_number":98436,"pr_number":103478,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-05T07:24:41+00:00"}],"members":[{"kind":"issue","number":98436,"title":"[Bug][Windows] hermes update hand-off child silently loses its update receipt after the catch-up module purge — console end state also looks hung","url":null,"state":"closed"},{"kind":"pr","number":92934,"title":"fix(update): preserve active receipt across module purge","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"f58fcc8118","number":0},{"kind":"pr","value":"#103478","number":103478},{"kind":"pr","value":"#98436","number":98436}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":98449,"title":"fix(update): keep the in-flight update receipt module alive across the stale purge","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#92934","number":92934},{"kind":"pr","value":"#98436","number":98436}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":98454,"title":"fix(update): protect hermes_cli.update_receipt from the stale-module purge (#98436)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"f58fcc8118","number":0},{"kind":"pr","value":"#103478","number":103478},{"kind":"pr","value":"#92934","number":92934}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":103478,"title":"fix(update): fleet check no longer fails with \"no rows\" after stopping unmapped/dashboard-only runtimes; receipts survive the module purge (#97332, #98436, salvage #97350 #92934)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["contributors/emails/[redacted:email]","hermes_cli/update_cmd_fleet.py","hermes_cli/update_cmd_maint.py","tests/hermes_cli/test_update_fleet_check_fail_closed.py","tests/hermes_cli/test_update_fleet_probe_resume_token.py","tests/hermes_cli/test_update_stale_module_purge.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}