The classification, keyed by policy so it is exhaustive at compile time: a
new member of the shipped ReplicaConflictPolicy union fails the build here
rather than falling through to a default the SDK never reasoned about.
The rule that decides the two arms is one question — can the complete effect
on the durable edit queue be computed from queue-side state alone?
manual retains the edit for a reviewer. That is the whole of the policy,
and it needs nothing remote.
server-wins means the server's committed row stands, so the queued edit
lost and is abandoned. Abandoning an edit needs no remote value. What the
SDK does not do under this policy is adopt the server's content into
local state — that needs the remote row, and the queue does not own local
read state at all. The scope is stated rather than glossed.
client-wins means the local edit should win, but the server has already
refused it. Making it win requires an override the mutation transport does
not define. Requeuing it locally would be a retry wearing the policy's
name, so the policy is refused instead.
last-writer-wins needs both writers' edit times. A conflicted
acknowledgement carries an opaque ServerGenerationCursor — an ordering
token, not a comparable clock — so the SDK cannot tell who wrote last.
The classification, keyed by policy so it is exhaustive at compile time: a new member of the shipped
ReplicaConflictPolicyunion fails the build here rather than falling through to a default the SDK never reasoned about.The rule that decides the two arms is one question — can the complete effect on the durable edit queue be computed from queue-side state alone?
manualretains the edit for a reviewer. That is the whole of the policy, and it needs nothing remote.server-winsmeans the server's committed row stands, so the queued edit lost and is abandoned. Abandoning an edit needs no remote value. What the SDK does not do under this policy is adopt the server's content into local state — that needs the remote row, and the queue does not own local read state at all. The scope is stated rather than glossed.client-winsmeans the local edit should win, but the server has already refused it. Making it win requires an override the mutation transport does not define. Requeuing it locally would be a retry wearing the policy's name, so the policy is refused instead.last-writer-winsneeds both writers' edit times. A conflicted acknowledgement carries an opaqueServerGenerationCursor— an ordering token, not a comparable clock — so the SDK cannot tell who wrote last.