{"repo":"NousResearch/hermes-agent","public_id":"108341","display_label":"Cron fire-fence timeout vs ownership loss correction","summary":"These issues and PRs address a bug where a local fire-fence timeout during heartbeat renewal was incorrectly treated as loss of fire-claim ownership, causing slow or fenced deliveries to be falsely recorded as `failed`. The work focuses on correctly distinguishing fire-fence contention from actual ownership loss.","subsystem":null,"counts":{"members":6,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":4},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":109310},"resolution":{"state":"resolved","by":"pr-109310"},"freshness":{"state":"verified","last_verified_at":"2026-09-12T17:27:44+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.3333333333333333},"fix_edges":[{"issue_number":100401,"pr_number":109310,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":105861,"pr_number":109310,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":108341,"pr_number":109310,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":108862,"pr_number":109310,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false}],"members":[{"kind":"issue","number":108341,"title":"cron: fire-claim heartbeat treats a local fire-fence timeout as ownership loss, so a slow notifying delivery is recorded as failed","url":null,"state":"closed"},{"kind":"pr","number":108359,"title":"fix(cron): renew fire-claim heartbeat without fire-fence timeout (fixes #108341)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"9a60a7f3167e","number":0},{"kind":"pr","value":"#108341","number":108341}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":108360,"title":"fix(cron): distinguish fire fence contention from ownership loss","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#108359","number":108359}],"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":108471,"title":"fix(cron): remove unnecessary fire_fence_lock in heartbeat_fire_claim","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"9a60a7f3167e","number":0}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":109310,"title":"fix(cron): long fenced deliveries no longer recorded as failed 'ownership lost' (#108341, #100401; salvage #106745)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["cron/jobs.py","tests/cron/test_claim_job_for_fire.py"]},{"kind":"pr","number":127874,"title":"fix(cron): an unacquirable fire fence is not lost fire-claim ownership","url":null,"state":"closed","close_reason":{"category":"uncategorized","implication":"needs_llm"},"merged":false}],"trust":{"default_tier":"verified","includes_suggested":false}}