Operational transform, live
Three watershed documents share one
JSON document over the ottypes json0 algebra with the
single-op-in-flight client protocol. One client creates it and shares the
handle; the others resolve it. They talk to one sluice, the
in-memory server that ships in the library. It
runs the production client runtime without a network backend. Optimistic
edits are drawn in
magenta; server-sequenced state in
ink.
Nudge the gauge.stage reading or flip its trend, rename the
site, add or remove a surveyor, reorder the crew, stretch the link latency,
then race two inserts at the same index. Ops address any depth: the gauge
is nested inside an object, so a bump targets the path
.gauge.stage. Numbers add commutatively; a rename is
last-writer-by-sequencing; but the crew list is where OT earns its keep.
Concurrent inserts have their indices transformed, so every
replica converges to the same array (positions and all).
Client B
0 pendingClient C
0 pendingConverged replicas identical · nothing pending
Latency and jitter affect simulated arrival order; animation speed changes playback only.
The live demo couldn’t start: it runs the production client runtime against
the in-memory sluice as compiled JavaScript, and this browser
didn’t load it. The rest of the page works fine without it.