From 80b58ec71dd37d181358787912d40f1a8137fdf8 Mon Sep 17 00:00:00 2001 From: agent Date: Wed, 10 Jun 2026 10:23:08 -0700 Subject: [PATCH] fix(kanban): spawn goal_mode workers with -Q so the goal loop actually runs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _default_spawn sets HERMES_KANBAN_GOAL_MODE=1 but launched 'chat -q' without -Q; _run_kanban_goal_loop_q only executes in the quiet single-query branch, so goal-mode never ran for dispatcher-spawned workers — they got one turn, printed text, exited rc=0, and tripped the protocol-violation circuit breaker (2026-06-09, cards t_d9cbe312 et al). Root-cause report + upstream issue draft in kanban workspace t_720c5c60. --- hermes_cli/kanban_db.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hermes_cli/kanban_db.py b/hermes_cli/kanban_db.py index 7cee6feaf3c6..ed617c8634ab 100644 --- a/hermes_cli/kanban_db.py +++ b/hermes_cli/kanban_db.py @@ -8046,6 +8046,13 @@ def _default_spawn( "chat", "-q", prompt, ]) + if task.goal_mode: + # Goal-mode workers must take the fully-quiet single-query path: + # the kanban goal-loop hook (_run_kanban_goal_loop_q) only runs in + # cli.py's quiet branch. Without -Q the worker gets exactly one + # turn, prints text, exits rc=0, and the dispatcher records a + # protocol violation (incident 2026-06-09 t_d9cbe312). + cmd.append("-Q") # Redirect output to a per-task log under /logs/. # Anchored at the board root (not the shared kanban root), so # `hermes kanban log` on a specific board reads its own file and