The stale-snapshot failure is really a shared-state problem: the agent's memory of the file and the working tree diverge the moment anything outside the session writes to it. Re-reading after an external-change notification, or hashing the file before editing, turns the argument into a plain conflict check.