kilo-gsd runners exit cleanly without kanban_complete/kanban_block — profile slots held indefinitely #20
Labels
No labels
blocked:needs-decision
bug
chore
cron
design
in-progress
infra
milestone
module-o
needs-decompose
needs-research
ops-task
pm
quickfix
security/medium
triage-approved
vikunja
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Mark/org_mode#20
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Bug — kilo-gsd runners exit cleanly without
kanban_complete/kanban_block(protocol violation)Symptom
A kilo-gsd runner finishes its work — commits land on disk, the agent
returns to a bash prompt — but the monitor script that wraps the runner
never calls
hermes kanban complete(orkanban_block). The card staysin
runningstate withconsecutive_crashes=2protocol violation,permanently holding the
kilo-gsd-runnerprofile'srunningslot.Reproduction (verified 2026-07-31 on
t_201675fffor Mark/org_mode#16)t_201675fffor Mark/org_mode#16 was created 2026-07-30 20:04,assigned to
kilo-gsd-runner~5 minutes, made two commits:
~/.hermes:6f7e8ce tasker-worker: file Forgejo issue before implementing code from card body/home/b/Projects/org_mode:89c29f9 vikunja-ingress: --skill kanban-worker on tasker card create^C b@blackhole:~/Projects/org_mode$)kilo-monitor-org_mode-16tmux session, started2026-07-30 20:09) was supposed to call
hermes kanban completeonsuccess — it did not
runningsince 2026-07-30 20:08 (now >3 hours)Direct downstream impact
The dispatcher only claims
readycards when the assignee profile has afree
runningslot. Withkilo-gsd-runnerpermanently occupied byt_201675ff, 13 otherreadycards on the fixit board are blocked,including:
Mark/easystitch#104— Thread max_colors through pipelineMark/easystitch#105— Add integration tests for max_colorsMark/easystitch#109— Photo-segmentation dirty treeMark/Kimi_Agent_Brother_10_Digitizing_App#43— View toggles regressionAuWoMe/forgeflow#23,Mark/nodedesk#37/#38/#41,Mark/osint-hub#65,Mark/docker_backup#16/#20,AuWoMe/forgeflow#21,Mark/kimi_agent_chore_management_integration_platform#24All these have valid work to do; none can be claimed until the stuck
card is killed and reclaimed.
Root cause
The
kilo-gsd-monitor.shpattern (perkanban-workerskill §"Long-running runner invocation") is supposed to:
hermes kanban completeon success,kanban blockon failureIn this case, the monitor script's
waitfor the runner exit either(a) didn't detect the clean exit, (b) ran but the
hermes kanban completeCLI call failed silently, or (c) the monitor itself crashedafter the runner finished. The tmux pane shows no recent output and
no completion signal.
The agent's earlier two attempts (
Run #533at 20:08,Run #535at20:10) both exited cleanly without signaling — both recorded as
protocol violation. The pattern has been seen in prior sessions(see
references/protocol-violation-chain.mdfor the documentedfracture chain).
Suggested fix direction
hermes kanban reclaim t_201675ffafter killing its detached tmuxsessions, freeing the lane slot
that
wait $RUNNER_PIDactually fires on clean exit, and that thehermes kanban completecall after the wait actually executes(currently appears to be silently failing)
runningcardswhose worker PID is dead for >30 min and the tmux session is empty
— call
kanban reclaimautomatically with reasonstale-running: monitor-completed-but-did-not-signalCompanion issue
exits with
missing EVENT_URL— ingress-side bug, no new cardsreach the kanban
Verified 2026-08-06 by bblhd: kilo-gsd-monitor.sh on blackhole (/home/b/.hermes/scripts/kilo-gsd-monitor.sh, mtime 2026-08-06 13:42) DOES call hermes kanban complete and hermes kanban block, gated on fix_actually_landed(). The example card cited in this issue (t_201675ff, Mark/org_mode#16) is currently status=done, assignee=verifier, completed_at=1785471745 — the protocol close happened. The bug as filed (monitor never closes the card, slot held forever) does not match the on-disk behavior. Closing as not reproducible.