State requires
Ownership
The editor canceled a translation job. A late agent report says it is running. Which version of reality gets to win?
Part of Trustworthy Autonomy ↗Chapters in this collection 03 / 09
State is what a system carries forward: the current job status, an approval, an unresolved risk, or the next scheduled check. Ownership determines who is allowed to change each fact.
Imagine an editor cancels a translation job after twenty documents. A minute later, an agent finishes a report it started before the cancellation. Its summary says, “Translation running normally.”
Both messages have timestamps. Both look official. If the next automation reads the summary as permission to restart the job, an old description has overruled a current decision.
Yesterday arrives late#
An asynchronous system can receive old work after new decisions. Finishing later does not make a result more authoritative.
The agent's report may still contain useful observations. It should not own the job status, the human's approval, and the workflow clock simply because it can write a persuasive paragraph about all three.
The job scheduler owns whether a job is active. The translator owns its progress report. The approval system records authorized decisions. The orchestrator owns the next wake-up. Each can contribute to the same episode without becoming the writer of every field.
A question of authority#
There is a philosophical distinction between describing a situation and having the standing to change it. Writing “approved” in a notebook does not grant approval. An agent's narrative has the same limitation.
Ownership gives that distinction an operational form. A persistent field has a source of authority, permitted writers, and conditions under which a change is accepted.
The canceled translation job
An illustrative state conflict. Watch authority and versioning do different jobs.
- Translation job
- 20 of 100 documents
- Version
- 41
Version 41: running
- What happens
- The translator begins an investigation using episode version 41. The translation job is running.
- What it means
- That snapshot is valid input for the investigation, but it is not a promise that the world will remain unchanged.
- What the system does
- Carry the version used to prepare every proposed update.
Inspect the example record
{
"stage": {
"value": "RUNNING",
"owner": "job-scheduler"
},
"assessment_owner": "translator",
"episode_version": 41
}- Translation job
- Canceled after 20 documents
- Version
- 42
Version 42: canceled
- What happens
- An authorized editor cancels the job. The controller confirms the transition, and the episode advances to version 42.
- What it means
- The cancellation is an operational fact. A pending assessment cannot silently revoke it.
- What the system does
- Record the approval identity and scope through the authorized control path.
Inspect the example record
{
"stage": {
"value": "CANCELED",
"owner": "job-scheduler"
},
"cancellation_authorized_by": "document-owner",
"episode_version": 42
}- Write expects
- 41
- Current version
- 42
The stale update is rejected
- What happens
- The translation worker finishes and tries to save a report based on version 41.
- What it means
- A version check detects the conflict. Ownership rules separately prevent the translator from changing the job status.
- What the system does
- Refresh authoritative state, preserve useful evidence, and regenerate the report with the cancellation visible.
Inspect the example record
{
"write_result": "version conflict",
"expected_version": 41,
"actual_version": 42,
"stage_write_allowed": false,
"next_action": "reconcile, then regenerate"
}Decide who writes before deciding what to remember#
For each persistent fact, specify who creates it, who may change it, which transitions are legal, and how concurrent updates are detected. Also specify expiry and closure: a completed episode should not keep launching work because an old session wakes up.
A single authoritative writer means a defined authority for that field. It can be a replicated service; it need not be one fragile process.
Reports should be views of this governed state. Rebuilding a report from the same state should preserve the same facts, even if the wording changes. Retries should not duplicate approvals or actions.
Test this by delivering events out of order. Cancel a translation while a progress report is in flight. Restart the agent. Replay its last write. The human decision should survive every version of that story.
A convincing account of the world should never quietly become the authority that changes it.
Further reading: Kubernetes API concepts describes resource versions and conflict detection in a production API.