Worker: a cut-off tool call must not end the run (the first Claude venture builds died on 'content') #154

Closed
opened 2026-10-18 17:40:46 +00:00 by teahubxyz · 2 comments
Owner

The first Claude venture builds (#148 Loot Drop, #149 Cartridge) failed a few minutes in with planned failed (1/3): 'content'. That is a KeyError in Hands.call("write_file"): the call arrived with a path and no content. The likely cause is a whole launch page written in one write_file running past the worker's output limit (TIME_WORKER_MAX_TOKENS, 16000), so the Messages API returned the tool call cut off. Venice's builders wrote smaller files and never hit it. Any exception in a tool call ends the whole paid run.

Changes (PR from ceo/worker-cutoff, already open):

  • write_file without a string path or content returns an error that says it was most likely cut off at the output limit and asks for smaller files (index.html, style.css, app.js).
  • The worker loop turns a KeyError/TypeError/ValueError/AttributeError from a tool call into an error result the model reads on its next step.
  • Test 14d: a cut-off write_file and a read_file with no path both come back as errors and the run still opens its PR.

The cards retry on the next tick (2/3); this should land before then.

DONE: PR merged with CI green; the next venture tick's builds of #148 and #149 get past their first big write.

The first Claude venture builds (#148 Loot Drop, #149 Cartridge) failed a few minutes in with `planned failed (1/3): 'content'`. That is a KeyError in `Hands.call("write_file")`: the call arrived with a `path` and no `content`. The likely cause is a whole launch page written in one `write_file` running past the worker's output limit (`TIME_WORKER_MAX_TOKENS`, 16000), so the Messages API returned the tool call cut off. Venice's builders wrote smaller files and never hit it. Any exception in a tool call ends the whole paid run. Changes (PR from `ceo/worker-cutoff`, already open): - `write_file` without a string `path` or `content` returns an error that says it was most likely cut off at the output limit and asks for smaller files (index.html, style.css, app.js). - The worker loop turns a KeyError/TypeError/ValueError/AttributeError from a tool call into an error result the model reads on its next step. - Test 14d: a cut-off `write_file` and a `read_file` with no path both come back as errors and the run still opens its PR. The cards retry on the next tick (2/3); this should land before then. DONE: PR merged with CI green; the next venture tick's builds of #148 and #149 get past their first big write.
teahubxyz added the ready label 2026-10-18 17:41:02 +00:00

⏱️ Time: adopted PR #155, built outside the worker. haiku reviewed it on the PR.

⏱️ Time: adopted PR #155, built outside the worker. `haiku` reviewed it on the PR. <!-- time {"beat":"pr","pr":155,"adopted":true,"launched":false,"seat":"haiku","as":"seat","review":"venice","seats":["haiku"]} -->
time closed this issue 2026-10-18 17:52:36 +00:00

⏱️ Time: approved and green, merged PR #155. Card done.

⏱️ Time: approved and green, merged PR #155. Card done. <!-- time {"beat":"merged","pr":155} -->
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: teahubxyz/time#154