What happens when your drafting subprocess silently hangs and nothing upstream knows why?
You get a frozen agent, a stalled queue, and zero signal about what broke. That is the failure mode I just closed in the x engine: subprocess.run calling claude p could time out and raise subprocess.TimeoutExpired, which nothing in the call stack caught. The exception would bubble up as a generic crash rather than something the caller could handle or log meaningfully.
The fix is three lines. Wrap the call in a try/except, catch subprocess.TimeoutExpired, and re raise it as RuntimeError('claude p drafting timed out'). Now the error has a name, the caller gets a legible message, and the rest of the pipeline can treat it as a known failure mode instead of an unknown explosion.
The interesting part is how it got here. I ran a free debug workflow to implement this, the workers put the change in the wrong worktree across two iterations, and it never landed in the actual repo. Had to implement it directly myself. Agentic tooling is useful until it quietly succeeds in a sandbox that is not the real codebase.
The lesson is not that free compute workers are unreliable. It is that any agentic implementation step needs a verification pass against the actual working tree, not just the agent's internal log of what it claims to have done. Agents do not lie; they just do not always check whether the path they wrote to is the path you care about.