From 9a1b0a7b068e9c483dcd11980ee94aa56c3c944a Mon Sep 17 00:00:00 2001 From: teknium1 <127238744+teknium1@users.noreply.github.com> Date: Tue, 15 Sep 2026 18:47:02 -0700 Subject: [PATCH] docs(kanban): document the worker exit-code contract (1 failure, 75 quota wall) --- website/docs/user-guide/features/kanban.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/website/docs/user-guide/features/kanban.md b/website/docs/user-guide/features/kanban.md index 18a12df9c5..30a156d616 100644 --- a/website/docs/user-guide/features/kanban.md +++ b/website/docs/user-guide/features/kanban.md @@ -503,7 +503,12 @@ Every profile that works kanban tasks automatically gets the worker lifecycle That final `kanban_complete` / `kanban_block` call is part of the worker protocol. If the worker process exits with status 0 while the task is still `running`, the dispatcher treats that as a protocol violation and emits a -`protocol_violation` event. +`protocol_violation` event. A dispatcher-spawned worker whose turn failed +therefore exits non-zero: `1` for an ordinary failure, and `75` +(`EX_TEMPFAIL`) when the provider rate-limited it or the account hit a +billing/quota wall — the dispatcher records that run as `rate_limited` and +requeues the task without counting a failure, so a quota window is never +booked as a protocol violation. **Agent-side prevention:** Before the worker exits, Hermes injects up to two synthetic nudges when it detects the model is about to stop without a terminal