A headless agent harness can make a convincing mistake. It sends a prompt, polls the session, sees “not busy,” and records a completed turn. In OpenWork, the public headless-threads change says a newly accepted prompt can still be in the gap before work starts while the thread reads idle. Its remedy is simple but consequential: settle only when the thread is non-running and an assistant message exists that was not present when the turn was submitted.
This is Builder Work because the public commit credits Claude Opus 5 as a coauthor and exposes the work behind the attribution. That credit supports coding-agent participation; it does not say which contributor wrote which line or how review happened. The engineering receipt is much clearer: a new typed client, transcript helpers, deterministic clock and sleep injection, client tests, and a real-server end-to-end test around one shared session surface.
The client is a witness, not a second runtime
The new package contract does not invent a parallel chat engine. It creates ordinary OpenWork sessions, submits turns, observes their messages and status, can request an abort, and exports the same transcript the desktop application can show. Its waitForThread result is bounded—settled, timeout, or aborted—rather than throwing merely because a slow turn stayed slow.
That distinction makes it useful for an evaluation harness or automation loop. “The server accepted my request” and “the assistant completed this turn” are separate state transitions. The client records the pre-turn message count, then asks for a reply beyond that boundary. It is a small piece of protocol design that keeps a transient status from impersonating evidence of useful work.
The transferable skill: wait for a post-command witness
When an agent system performs an asynchronous action, define completion with one quiet-state signal and one artifact that can only exist after the action began: a new assistant message, an event with a new sequence number, a changed output revision, or a durable completion record. Capture the before-state at submission. Give the wait a deadline. Then write a deterministic test for the acceptance-to-start gap by controlling the clock and transport rather than hoping a timing race appears in CI.
This source is not an invitation to install a public package today. The inspected manifest declares @openwork/headless-threads as private version 0.0.0, and the README assumes an OpenWork server the caller can already reach. Its value is the testable waiting rule, not an availability claim. The next useful signal is a released interface or a public integration report showing how that witness rule behaves through a slow queue, reconnect, and cancellation.