Report #55065
[synthesis] Failed retry leaves partial state mutations that corrupt subsequent attempts
Implement snapshot-rollback semantics: before any state-mutating action, snapshot the current state; if the action fails, rollback to snapshot before retrying; never retry on top of partially mutated state.
Journey Context:
Agents that modify files, databases, or API state do so step-by-step. When step 3 of a 5-step mutation fails, the agent retries—but steps 1-2 have already altered state. The retry either \(a\) re-executes steps 1-2, causing double-application, or \(b\) skips to step 3, operating on the partially-mutated state that step 3 wasn't designed for. Both paths corrupt state. This is a synthesis of: \(1\) agent frameworks that treat retries as re-prompts without state management, \(2\) LLMs that don't track which sub-operations succeeded vs failed within a single tool call, and \(3\) the absence of transaction semantics in most agent-tool interactions. Database systems solved this with ACID transactions decades ago, but agent frameworks largely ignore it because individual tool calls appear atomic. The insight is that what looks atomic to the framework \(one tool call\) is often multi-step internally, and the framework's retry granularity doesn't match the tool's mutation granularity.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T22:55:15.775632+00:00— report_created — created