{"repo":"NousResearch/hermes-agent","public_id":"113222","display_label":"Stale child heartbeat leaves delegation stuck running","summary":"These items address a bug where delegated or batched child tasks with expired heartbeats are not collected as finished, leaving parent turns or bot-mode chats indefinitely in a running state. Fixes target heartbeat staleness detection and cleanup in delegation and bot-mode flows.","subsystem":"agent","counts":{"members":6,"open_issues":0,"open_issues_distinct":0,"open_prs":1,"closed_issues":1,"merged_prs":2,"attempt_prs":3},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":131811,"merged_at":"2026-10-05T21:40:39+00:00"},"resolution":{"state":"resolved","by":"pr-131811"},"freshness":{"state":"verified","last_verified_at":"2026-10-05T21:40:39+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.3333333333333333},"fix_edges":[{"issue_number":109749,"pr_number":113422,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-16T23:56:47+00:00"},{"issue_number":113222,"pr_number":113422,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-16T23:56:47+00:00"},{"issue_number":113222,"pr_number":131811,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-10-05T21:40:39+00:00"}],"members":[{"kind":"issue","number":113222,"title":"[Bug]: async delegate_task batch never reports when a finished child's heartbeat is retired as stale — entries stay 'running'","url":null,"state":"closed"},{"kind":"pr","number":109762,"title":"fix(delegation): release finite chat when a child stops progressing","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"bfa56a3be87e","number":0},{"kind":"pr","value":"#113422","number":113422},{"kind":"pr","value":"#10974","number":10974}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":113275,"title":"fix(delegation): collect finished children when heartbeat goes stale","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"bfa56a3be87e","number":0},{"kind":"pr","value":"#113422","number":113422},{"kind":"pr","value":"#10974","number":10974}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":113422,"title":"fix(bot-mode): a stalled subagent no longer locks a one-shot Bot Chat turn forever (#109749, salvage #109762, #113275)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["tests/tools/test_delegate_stale_wait_release.py","tools/delegate_tool.py","tools/delegate_tool_child_run.py","website/docs/user-guide/features/delegation.md"]},{"kind":"pr","number":129941,"title":"fix(delegation): stop a collected child's ticking clock from refreshing the batch stall clock","url":null,"state":"open","close_reason":{"refs":[{"kind":"commit","value":"5ac618b16c","number":0}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":131811,"title":"fix(delegation): collect a child's real result in a grace window after the stale-heartbeat verdict [risk 0.30]","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["tests/tools/test_delegate_stale_heartbeat_collect.py","tools/delegate_tool.py","tools/delegate_tool_child_run.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}