Multiplayer Collaborative Canvas  ·  View 20 of 23  ·  Operations

Release and Rollout

Convergence as a release gate, and a rollout that waits for documents rather than restarting them.

Editable source SVG draw.io All views
Source Monorepo client + server Op schema versioned Build Build & test GitHub Actions Signed image ACR, attested Gates Convergence replay randomised orders Op fuzzing Ack latency budget Canary 1% of new sessions Divergence watch checksum mismatch Rollout Version-pinned sessions no mid-life swap Drain on release idle documents first Rollback Previous version re-host on reopen Stop the line divergence > 0 Release — Convergence as a Gate, Rollout as a Drain External / third party Application we own Data store Decision point Security / platform Risk / gap A live session never changes code version: a rollout waits for documents to be released and re-hosts them on the new build. v 1.0 · owner Platform Architecture · date 2026-10

Decisions

  • Randomised operation-set replay is a build gate: the same operations, delivered in many orders, must produce byte-identical documents. Convergence is tested, never asserted (ADR-05).
  • A live session never changes code version. A rollout drains idle documents onto the new build and leaves busy ones until they release, so no document is ever applied by two different implementations (ADR-17).
  • Rollback is the same mechanism in reverse, which is why it needs no separate procedure.

Gates

  • Convergence replay, operation fuzzing, and the acknowledgement latency budget — a build that passes correctness but misses p99 120 ms does not ship.
  • Canary on 1% of new sessions with divergence watch; a single checksum mismatch stops the line.

Risks

  • A long-lived document can hold an old version for hours. The platform accepts a bounded version skew in exchange for never hot-swapping the code that owns a document in memory, and caps it by forcing a release at the next idle window.