Decision consistency
What Isolation Level Should Govern an Agent Decision?
A consequential agent decision should be governed as a logical read transaction: choose an isolation class, preserve its read manifest, validate it before effect, and rerun reasoning when the state has changed.

An agent can make a perfectly reasonable decision from an incoherent view of the organization.
Consider a workflow that assembles a recommendation from a customer record, an inventory service, a policy document, an internal knowledge store and a cached risk score. Each read may be legitimate. Each source may offer its own consistency guarantees. Yet between the first read and the external action, stock can be allocated, the customer record can change, a policy can be revised, or the risk score can be replaced. The reasoning may still be internally fluent. Its factual basis is no longer necessarily one state of the organization.
This is not primarily an authorization problem. Authorization asks whether an actor may perform an effect. Decision isolation asks whether the state used to justify that effect was coherent enough for its consequence. A governed runtime needs both controls, and it should not confuse them.
Treat the decision as a logical read transaction
The useful unit is not an individual tool call. It is the complete decision: the collection of reads, retrievals, memory lookups and intermediate conclusions that lead to a proposed external effect. The runtime should treat that work as a logical read transaction, even where the underlying sources cannot join a shared database transaction.
This is an architectural extension of familiar database ideas, not a claim that arbitrary SaaS APIs, people and physical systems can participate in one ACID transaction. The runtime cannot impose serializability on an external service that does not cooperate. It can, however, state the consistency required for its own decision, retain evidence of what it observed, and refuse an effect when the evidence no longer satisfies that requirement.
The governing question is therefore concrete: what degree of change can occur between reading the basis for a decision and making its effect, without invalidating the decision? The answer should be an explicit isolation class attached to the decision, rather than an accidental property of tool timing.
Fresh reads are not a coherent view
A common but unsafe pattern is to ask every source for its newest available value and call the result current. Newest is a per-source property. Consistency is a relationship among reads. Separate strong reads can each be fresh while failing to describe one mutually repeatable state under concurrent writes. Spanner documents this distinction: reads placed in one read-only transaction can share a consistent view, whereas separate strong reads need not be mutually repeatable.
Wall-clock proximity does not solve the problem either. Querying five systems within a few milliseconds does not create an organizational snapshot. Consistent reads depend on versioned state and an ordering mechanism. Spanner's MVCC-based consistent reads illustrate the point; synchronized clocks alone do not establish the state relationship that a decision needs.
For agent runtimes, the practical implication is clear. “Read at approximately 10:03” is weak evidence. “Read object X at version V, under freshness bound F, as part of decision snapshot S” is evidence that can be tested later.
Use isolation classes proportionate to consequence
Not every task deserves the highest isolation. A low-risk drafting agent may use bounded-staleness knowledge: it should disclose or constrain its freshness budget, but it need not block on a globally stable view. This is a deliberate trade-off. Spanner exposes bounded-staleness reads precisely as a choice between freshness and potential locality or latency benefits.
A decision that allocates scarce capacity, changes eligibility, releases funds, accepts a contractual commitment or depends on a cross-record invariant needs a stronger contract. At minimum, it may require a stable snapshot of relevant inputs. Where concurrent changes can make the intended result invalid, it needs serializable-style validation or explicit coordination around the affected invariant.
A stable snapshot is valuable but not magic. PostgreSQL documents that Repeatable Read provides a stable transaction snapshot while serialization anomalies can still occur. The broader isolation literature likewise shows that avoiding dirty, nonrepeatable and phantom reads does not itself guarantee serializability. If a business rule spans records or resources, the runtime must specify how that rule is protected; a snapshot alone may not be enough.
A practical decision-isolation ladder
- Bounded staleness: accept inputs no older than a declared limit. Use it for low-consequence work where some delay does not violate a rule.
- Stable snapshot: bind relevant readable sources to a mutually identified point or version set where their capabilities allow it. Use it when the decision requires a coherent basis.
- Serializable-style validation: before effect, verify that relevant read dependencies and protected invariants still permit the decision. Use it where a concurrent change could make the action wrong.
- Explicit coordination: reserve, lock or otherwise coordinate a scarce or invariant-bound resource when validation alone cannot safely resolve the race.
The read manifest is the decision record
Isolation must be inspectable. A governed runtime should create a versioned read manifest as the agent reasons. It need not preserve every token of a model conversation to establish this contract. It does need to preserve the inputs that materially justified the decision and the conditions under which they were read.
- Source and query, object identity, or retrieval scope for each material input.
- Observed version, revision identifier, ETag, transaction timestamp or other available read marker.
- The freshness bound and the isolation class selected for the decision.
- The policy version that classified the decision and set its required validation.
- Dependencies on cross-record invariants, reservations or coordination mechanisms where applicable.
- The validation result immediately before effect, including conflicts, aborts and reruns.
This record does not manufacture guarantees a source cannot provide. A cache without a trustworthy version marker cannot suddenly become a snapshot participant. The manifest makes that limitation visible, allowing policy to reject the source for a high-consequence decision, accept it only within a stated staleness budget, or require corroboration from a stronger source.
A conflict invalidates reasoning, not just the final call
The most important operational rule follows from serializable execution. PostgreSQL can reject a transaction when concurrency would produce an invalid ordering, and applications must retry the complete transaction. The equivalent rule for an agent is stronger than a tool-call retry.
When pre-effect validation finds that a material input or protected invariant changed, the runtime should abort the decision and rerun the reasoning from a new snapshot. Retrying only the final API call assumes the original conclusion remains valid. That assumption is exactly what the conflict has placed in doubt.
The rerun may choose the same action. It may reach a different recommendation, request human review, or determine that no action is now permitted. Those are not failures of autonomy. They are the runtime preserving the distinction between a plausible answer and a valid organizational decision.
Make isolation part of the operating model
Autonomous organizations will not obtain one global transaction manager for databases, knowledge bases, queues, vendor APIs and human work. They do not need to pretend otherwise. They need a decision contract that is honest about source capabilities and firm about consequences.
Classify the decision before reasoning begins. Capture material reads as versions rather than as an unstructured trail. Validate the required dependencies immediately before the effect. If the contract is broken, abort the decision, then reason again. Pair this with authorization-at-commit, but keep the questions separate: permission can still be valid when the decision basis is stale, and a fresh basis does not grant permission.
The architectural shift is modest in wording and demanding in practice: an agent does not act merely because it has completed a plan. It acts because the plan was formed under an isolation level appropriate to the consequence, and that level still holds when the organization is asked to bear the effect.
Sources
- PostgreSQL, “Transaction Isolation”: https://www.postgresql.org/docs/current/transaction-iso.html
- Berenson et al., “A Critique of ANSI SQL Isolation Levels”: https://www.microsoft.com/en-us/research/publication/a-critique-of-ansi-sql-isolation-levels/
- Google Cloud Spanner, “Timestamp bounds”: https://docs.cloud.google.com/spanner/docs/timestamp-bounds
- Google Cloud Spanner, “TrueTime and external consistency”: https://docs.cloud.google.com/spanner/docs/true-time-external-consistency

