Weekend Build Log: The Timeout Is the Product
You sit down Saturday with one failing test file. The stack trace is ugly and long. You want a tiny helper that groups those failures. Ninety minutes later you are still retrying a model. The helper never became a demo. The weekend dissolved into another chat. This log cuts that loop. You freeze three files. You wrap the run in a timeout. You write a receipt. Then you stop. The Saturday trap You…
On Saturday, a programmer finds one failing test file and wants a helper that groups those failures together. After 90 minutes of retrying the model, the helper never becomes a demo. The weekend turns into a chat, but this log cuts that loop. Three files are frozen, and the run is wrapped in a timeout. A receipt is written, and the session stops.
The Saturday trap is avoided by treating the timeout as the product. If the job misses the window, it fails. The job is limited to one verb before opening the editor: group, summarize, or rank. The statement is put on a sticky note, and any additional verbs are put on hold. On Sunday, the job is reused with a tight scope: group pytest failures by file path, input from tests/last-run.txt, output in groups.json, and a limit of 90 seconds.
These files are boring and survive Saturday better than clever agents. The budget.yaml file limits the job to one attempt, input from tests/last-run.txt, output in groups.json, receipt in receipts/saturday.json, and max_attempts set to 1. The process is killed with a timeout of 90 seconds, and the exit code indicates if the clock ran out. The receipt file contains four fields: job, seconds, input, output, groups, and timed_out.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.