Scheduler run prologrlm-rage-worker fails with empty error: last_result persists as 'ERROR: ' with no diagnostic #104

Open
opened 2026-09-05 05:45:57 +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 prologrlm-rage-worker (uuid uBquAl5u), schedule 35 */2 * * * (America/New_York), last run 2026-09-05T00:48:20-04:00.

Recorded state: tasks.json has state: error with an empty error message:

ERROR: 

So the run failed and persisted nothing about why — the scheduler recorded an empty diagnostic.

Related log evidence from the container (docker logs, 12h window):

helpers.errors.RepairableException: response tool requires a non-empty top-level text or message string argument

plus asyncio.exceptions.CancelledError / TimeoutError tracebacks around the same period. That RepairableException (raised by tools/response.py:12-14) is exactly the textless-turn failure that precedes the "unusable model responses" breaker, so this run likely died the same way the other rage workers did, but the error text was lost on the way into last_result.

Problems to address

  1. Scheduler last_result can end up empty (ERROR: with no message) — the error path must always carry the exception text.
  2. The underlying failure is the same textless-model-turn / missing response tool call pattern seen in the other rage-worker runs (see sibling issues).
  3. The worker's Prolog-RLM demo environment has an additional known crash (No permission to redefine imported_procedure 'text_string/2' in prolog-rlm/prolog/rlm_completion.pl) that can kill bridge calls on that worker.

Suggested next steps

  • Guard the scheduler run wrapper so last_result falls back to a generic error string (exception type + repr) when the message is empty.
  • Add a test asserting a failed run never persists a whitespace-only error.
Found during live inspection of the running `a0-symbolics:local` container (up 6h, healthy) on 2026-09-05. **Run**: scheduler task `prologrlm-rage-worker` (uuid `uBquAl5u`), schedule `35 */2 * * *` (America/New_York), last run `2026-09-05T00:48:20-04:00`. **Recorded state**: `tasks.json` has `state: error` with an **empty error message**: ``` ERROR: ``` So the run failed and persisted nothing about *why* — the scheduler recorded an empty diagnostic. **Related log evidence** from the container (`docker logs`, 12h window): ``` helpers.errors.RepairableException: response tool requires a non-empty top-level text or message string argument ``` plus `asyncio.exceptions.CancelledError` / `TimeoutError` tracebacks around the same period. That RepairableException (raised by `tools/response.py:12-14`) is exactly the textless-turn failure that precedes the "unusable model responses" breaker, so this run likely died the same way the other rage workers did, but the error text was lost on the way into `last_result`. **Problems to address** 1. Scheduler `last_result` can end up empty (`ERROR: ` with no message) — the error path must always carry the exception text. 2. The underlying failure is the same textless-model-turn / missing `response` tool call pattern seen in the other rage-worker runs (see sibling issues). 3. The worker's Prolog-RLM demo environment has an additional known crash (`No permission to redefine imported_procedure 'text_string/2'` in `prolog-rlm/prolog/rlm_completion.pl`) that can kill bridge calls on that worker. **Suggested next steps** - Guard the scheduler run wrapper so `last_result` falls back to a generic error string (exception type + repr) when the message is empty. - Add a test asserting a failed run never persists a whitespace-only error.
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#104
No description provided.