{"repo":"NousResearch/hermes-agent","public_id":"114543","display_label":"Desktop resume tool activity grafting bug fixes","summary":"A cluster of issues and fixes related to resumed tool activity being incorrectly grafted onto earlier messages or rows in the desktop client. The work involves guards and reconciler logic to keep resumed tool calls on their own intended turn or tail.","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":114971},"resolution":{"state":"resolved","by":"pr-114971"},"freshness":{"state":"verified","last_verified_at":"2026-09-18T17:49:19+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.4},"fix_edges":[{"issue_number":114543,"pr_number":114971,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true}],"members":[{"kind":"issue","number":114543,"title":"Desktop: empty-text resume matching grafts later tool activity onto earlier messages","url":null,"state":"closed"},{"kind":"pr","number":114547,"title":"fix(desktop): avoid grafting empty resume tool calls","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"4a833f1c53a4","number":0},{"kind":"pr","value":"#114971","number":114971},{"kind":"pr","value":"#114971","number":114971},{"kind":"pr","value":"#114543","number":114543},{"kind":"pr","value":"#114596","number":114596},{"kind":"pr","value":"#114543","number":114543}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":114560,"title":"fix(desktop): keep resumed tool activity on its owning live tail","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"4a833f1c53a4","number":0},{"kind":"pr","value":"#114971","number":114971},{"kind":"pr","value":"#114971","number":114971},{"kind":"pr","value":"#114543","number":114543},{"kind":"pr","value":"#114596","number":114596},{"kind":"pr","value":"#114543","number":114543}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":114596,"title":"fix(desktop): empty-prose and settled-target guards in resume reconciler","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"4a833f1c53a4","number":0},{"kind":"pr","value":"#114971","number":114971},{"kind":"pr","value":"#114971","number":114971},{"kind":"pr","value":"#114543","number":114543},{"kind":"pr","value":"#114596","number":114596},{"kind":"pr","value":"#114543","number":114543}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":114971,"title":"fix(desktop): resumed tool activity stays on its own turn instead of grafting onto earlier rows (#114543, salvage #114596)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["apps/desktop/src/app/session/hooks/use-session-actions/resume-empty-prose-pairing.test.ts","apps/desktop/src/app/session/hooks/use-session-actions/utils.ts"]}],"trust":{"default_tier":"verified","includes_suggested":false}}