Roll-forward reconciliation: a client-side optimistic concurrency model for
collaborative / multi-peer editing. Provided to prove the
ConcurrencyStrategy seam can host a fundamentally different
reconciliation engine than createRebaseReplayConcurrency — it is
not currently wired into a real transport.
Roll-forward, not re-execute. On rebase, each pending local edit is
replayed by re-applying its captured post-image tuples, not by
re-running its transaction function. A transaction that reads current
state and derives a new value (e.g. "add 10 to whatever is there")
therefore preserves the value it originally produced, regardless of how
the confirmed base shifted underneath it. Re-execution would instead
recompute against the new base.
The rebase sequence on a confirmed (positive-time) delta:
roll back all pending entries newest-to-oldest (apply their undo),
apply the confirmed delta,
replay the remaining pending entries oldest-to-newest by re-applying
their captured redo tuples, recapturing fresh undo against the new base.
Local transients carry monotonically increasing |time| (they are appended
as the user edits), so a newly-captured entry always sorts last; the buffer
is kept in arrival order and a new entry is materialized on top of the
replayed survivors.
Parameters
userId: string|number
Stable peer/session identifier stamped on every outbound
envelope, unique across all peers sharing the same sync server.
Roll-forward reconciliation: a client-side optimistic concurrency model for collaborative / multi-peer editing. Provided to prove the ConcurrencyStrategy seam can host a fundamentally different reconciliation engine than createRebaseReplayConcurrency — it is not currently wired into a real transport.
The defining difference from createRebaseReplayConcurrency:
The rebase sequence on a confirmed (positive-time) delta:
Local transients carry monotonically increasing |time| (they are appended as the user edits), so a newly-captured entry always sorts last; the buffer is kept in arrival order and a new entry is materialized on top of the replayed survivors.