Earlier version · Trust in automated work

An agent is finished only when the result can be checked

Completion is a contract between systems. A merge, an accepted write and a visible result can each be true at different times.

By Vihang Patel · Published · Updated

Prior version — preserved text. Read the current version.

The merge was complete; the work was not

On 12 October 2026, a source merge for this site automatically closed its tracking issue while deployment or broader acceptance work remained open. The merge had happened. The issue state gave a misleading account of the larger commitment. I reopened it and recorded what was accepted and what still needed an actor.

This was a failure in the mapping between two workflows: a source-control milestone had become the completion signal for a broader operating task. It did not establish that the issue had lost its recorded assignee, or that the source change was wrong. The misleading state was enough to make unfinished work disappear from an open-work view.

My conclusion is that a completion signal needs a named boundary. “Merged”, “deployed” and “accepted by the reader” are different states. Connecting them automatically is useful only when the receiving task has the same definition of done.

Why a successful response can still mislead

There are several mechanisms, and they need different repairs. A synchronous write may commit the wrong field. An asynchronous API may accept a job that has not finished. A replica may not yet show a committed update. A cached page may retain an older representation. Retrying the same write treats all four as one problem.

AWS documents an eventual-consistency example in EC2: a newly created resource can temporarily appear absent to a later request. Its guidance uses state reads with backoff. That is a documented distributed-system mechanism, not the cause of my premature issue closure. In the issue incident, the completion meanings differed.

Choose the verification boundary

One option is to trust the write response. That can be sufficient when it returns a committed record and revision, and that record is the entire required outcome. A second option reads the authoritative destination. A third checks the surface another person or process will use. Each extra read adds latency, API work and another possible failure.

For the publishing workflow, I keep source acceptance, deployed version and visitor-facing content as separate checks. I reopened the parent issue when merge automation closed it prematurely. This is an observed recovery, not a claim that the integration’s closure mapping has been permanently repaired.

For high-consequence state changes, I would check the named destination each time. For low-consequence repeated work, a validated transactional response plus sampled downstream checks may be enough. Sampling accepts a detection gap; the cost of that gap belongs in the decision.

A second failure made the boundary visible

On 11 October, an asset deployment returned the expected page and module bytes but omitted required response headers. The upload client had supplied readback fields where the request needed header configuration. Content checks passed; header checks did not. Correcting the upload input and repeating the destination checks restored the required headers.

Checking a field in a configuration file would have tested intent. Reading the actual HTTP response tested delivery. The lesson is to verify the property at the layer that controls it, rather than collecting more checks of the same earlier layer.

An uncertain outcome needs lookup before retry

If a request times out, the effect may already exist. Look up the destination before repeating the action. A retry-safe request identity can prevent duplication where the receiving API actually implements it. A key logged by the caller alone proves nothing about the receiver.

For illustration, a fictional library-hours update might commit correctly while its public page remains stale. Verify the branch record, then the page; a cache repair is different from a second record update. This example explains the distinction. The dated publishing incidents above carry the evidence.

Measure the gap between apparent and actual completion

Define the expected object, value, revision and downstream surface before execution. Keep the observed state, checked time and next actor in the receipt. Useful measures include verified outcomes per attempted task, apparent successes rejected by destination checks, time to discover a mismatch and recovery effort. These are proposed evaluation measures; I have not published a reliability rate for the wider system.

Anthropic’s January 2026 agent-evaluation guidance distinguishes a transcript from the environment’s final state. That helps locate the ground truth. It does not decide which downstream state matters for your institution; that is an operating choice to make before the agent acts.

Dated operational evidence and limits

Sources and attribution

This is an original, self-published piece. Sources support the referenced frameworks. Observed incidents, design principles and illustrative examples are identified separately in the text.

Launch version · Editorial revision, 12 October 2026 · Before historical examples and clearer titles · Before publication-date assignment and internal references · Before independent examples and expanded arguments · Before the October publication ordering ·

← All writing