Scheduler run symbolics-rage-worker fails: unusable-response breaker fires during long tool-output sessions #103

Open
opened 2026-09-05 05:45:55 +00:00 by nsaspy · 0 comments
Owner

Found during live inspection of the running a0-symbolics:local container (up 6h, healthy) on 2026-09-05.

Run: scheduler task symbolics-rage-worker (uuid uPSt4KqX), schedule 15 */2 * * * (America/New_York), last run 2026-09-05T00:27:37-04:00.

Recorded state: tasks.json has state: error with

ERROR: Agent stopped after 2 consecutive unusable model responses to prevent further API charges. Send a new message to try again.

Context: chat tail (/a0/usr/chats/uPSt4KqX/messages/34.txt) shows the worker deep in CI-workflow authoring inside worktree /a0/git/worktrees/a0-symbolics-issue-33 — a log-secret-masking.yml workflow with nix steps and tests/test_log_secret_masking.py content, ending mid-shell-output. The model was producing long tool-output-heavy turns and then returned textless responses twice in a row, tripping the max_consecutive_unusable_responses breaker (extensions/python/_functions/agent/Agent/hist_add_warning/end/_90_stop_unusable_response_loop.py).

Problems to address

  1. Rage-worker sessions routinely end in the unusable-response breaker instead of a proper response tool call — the task records error even when the underlying work mostly succeeded.
  2. Long tool output bursts appear to correlate with the model abandoning the required final response call; there is no retry that nudges the model to emit a proper final response before the breaker fires.
  3. With a 2-hour cadence, each failure silently drops that cycle's review.

Suggested next steps

  • Before stopping on the breaker, inject a repair prompt that explicitly demands a non-empty response tool call, rather than stopping outright.
  • Consider per-task breaker overrides so long-running workers get more than 2 consecutive-recovery attempts.
Found during live inspection of the running `a0-symbolics:local` container (up 6h, healthy) on 2026-09-05. **Run**: scheduler task `symbolics-rage-worker` (uuid `uPSt4KqX`), schedule `15 */2 * * *` (America/New_York), last run `2026-09-05T00:27:37-04:00`. **Recorded state**: `tasks.json` has `state: error` with ``` ERROR: Agent stopped after 2 consecutive unusable model responses to prevent further API charges. Send a new message to try again. ``` **Context**: chat tail (`/a0/usr/chats/uPSt4KqX/messages/34.txt`) shows the worker deep in CI-workflow authoring inside worktree `/a0/git/worktrees/a0-symbolics-issue-33` — a `log-secret-masking.yml` workflow with nix steps and `tests/test_log_secret_masking.py` content, ending mid-shell-output. The model was producing long tool-output-heavy turns and then returned textless responses twice in a row, tripping the `max_consecutive_unusable_responses` breaker (`extensions/python/_functions/agent/Agent/hist_add_warning/end/_90_stop_unusable_response_loop.py`). **Problems to address** 1. Rage-worker sessions routinely end in the unusable-response breaker instead of a proper `response` tool call — the task records `error` even when the underlying work mostly succeeded. 2. Long tool output bursts appear to correlate with the model abandoning the required final `response` call; there is no retry that nudges the model to emit a proper final response before the breaker fires. 3. With a 2-hour cadence, each failure silently drops that cycle's review. **Suggested next steps** - Before stopping on the breaker, inject a repair prompt that explicitly demands a non-empty `response` tool call, rather than stopping outright. - Consider per-task breaker overrides so long-running workers get more than 2 consecutive-recovery attempts.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
nsaspy/a0-symbolics#103
No description provided.