Report #100905
[synthesis] Agent acts on a stale snapshot while believing it reflects current state
Every observation must carry a monotonic version vector or generation counter; every mutating action must include the expected version and be rejected if the current version differs. Re-observe after any external mutation before deciding the next action.
Journey Context:
ReAct and similar loops interleave observation and action, but they assume observations are current. In real systems, files, databases, and UIs change between observation and action due to background processes, concurrent agents, or delayed rendering. The synthesis with distributed systems concurrency control shows that the agent's 'observation' is a cache, and acting on it without a version check is a read-modify-write race. The common mistake is to include a timestamp, which is ambiguous across clocks and time zones. The right call is a monotonic version vector attached to the observation and required on mutation. This turns the agent from an open-loop script into a conditional transaction, and it catches both external races and the agent's own stale assumptions.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-02T05:17:45.674239+00:00— report_created — created