# NousResearch/hermes-agent · Kanban worker process lifecycle and termination fixes

## Open now

- 2 issues, 2 PRs open on GitHub.
- #22927: \[Bug\]: Kanban task state can change between dispatch and worker startup — no guard in worker init
- #61923: Kanban worker zombie process on Windows: complete_task doesn't terminate OS process, no process-state sync
- PR #61967: fix(kanban): stop zombie workers after complete (#61923)
- PR #131470: fix(kanban): guard worker startup against dispatch-state race

These issues and pull requests address bugs where Kanban worker processes were not reliably terminated when tasks were completed, blocked, or archived, including zombie process problems on Windows and a race condition between task state changes and worker startup.

## TL;DR

- 8 member(s): 2 open issue(s), 1 closed issue(s), 2 open PR(s), 0 merged PR(s), 3 PR(s) closed without merging.
- No fix has been merged to main; one or more PRs were attempted (see below).
- **Recommended:** review the prior/competing PR(s) below. A fix was attempted but not merged; your case may extend or revive that work.

## Maintainer resolution verdict

- Internal-tracker verdict over this cluster's issue members: `unresolved`. This is distinct from the fix status above. Weigh it yourself.

## How this cluster was grouped

- Link evidence (`STRUCTURAL_PARTIAL`): some members are connected by structural evidence (shared changed files, or a closing/superseded reference); the rest are joined by an automated relevance judgement over their text.
- Members outside that structural core may belong to a different underlying problem.
- Pairwise link density `0.20`: the share of member pairs that carry a link, counting a structural link in full and a relevance-only link at 0.36. `1.00` means every pair is linked.

## Open related issues

- #22927: \[Bug\]: Kanban task state can change between dispatch and worker startup — no guard in worker init
- #61923: Kanban worker zombie process on Windows: complete_task doesn't terminate OS process, no process-state sync

## Closed / duplicate issues

- #57596: Kanban worker process can survive after task is blocked/archived

## Prior & competing PRs

- **#57602: fix(kanban): terminate worker process on block/archive/complete (#57596)**. closed without merge
  - maintainer direction: category `superseded_by_pr`; implication `superseded`; refs `#31365`, `#31365`
- **#57713: fix(kanban): terminate workers when tasks are blocked or archived**. closed without merge
  - maintainer direction: category `superseded_by_pr`; implication `superseded`; refs `#57704`, `#31829`, `#35327`, `#57548`, `#28154`, `#57713`, `#31365`, `#57536`, `#57248`, `#57696`, `#47821`
- **#61967: fix(kanban): stop zombie workers after complete (#61923)**. open
  - maintainer direction: category `uncategorized`; implication `needs_llm`
  - files: `agent/conversation_loop.py`, `agent/tool_executor.py`, `hermes_cli/kanban_db.py`, `plugins/kanban/dashboard/plugin_api.py`, `tests/hermes_cli/test_kanban_db.py`, `tests/run_agent/test_tool_call_incremental_persistence.py`, `tests/tools/test_kanban_tools.py`, `tools/kanban_tools.py`
- **#116698: fix(kanban): reject stale worker claims at startup**. closed without merge
  - maintainer direction: category `superseded_by_pr`; implication `superseded`
- **#131470: fix(kanban): guard worker startup against dispatch-state race**. open
  - maintainer direction: category `silent_close`; implication `active`
  - files: `cli.py`, `tests/hermes_cli/test_kanban_worker_startup_guard.py`

## Fix status

- No merged fix on record.
- Subsystem: `agent`
