Structures

MvRegister

The ranger cannot discard Alice's open report or Bob's closed report. Carol must see both before she walks to Eagle Creek and resolves the disagreement.

The disagreement remains visible

A multi-value register keeps concurrent writes as alternatives, often called siblings. Alice had not seen Bob's report, and Bob had not seen Alice's, so neither write replaces the other.

ReplicaVisible alternatives after merge
AliceTrail closed · Trail open
BobTrail closed · Trail open
CarolTrail closed · Trail open
Convergence can preserve a conflict instead of hiding it.

One trail-status field

Keep both trail reports

Alice and Bob write without observing each other. Exchange both deltas and inspect the alternatives that every notebook retains.

Conflict rule Keep concurrent writes as siblings.

Alice

No status received

No status

Field note trail-status: Trail open write identity A:1 · no other note received

Bob

No status received

No status

Field note trail-status: Trail closed write identity B:1 · no other note received

Carol

No status received

No status

Field note No note in this race Carol observes delivery

Trail exchange Does not choose by arrival order 0 writes shared

Decision evidence No alternatives yet.

  1. No writes shared yet.

Enable JavaScript to run the demo. The race and expected result remain in the lesson.

Race Alice's open report against Bob's closed report.

Carol resolves what she observed

Carol inspects the bridge, reads both alternatives, and writes a new status. That write replaces the siblings in her causal history. It cannot erase an unseen report from an offline hiker.

The deeper Atlas lab exposes the write tags, causal context, delayed messages, and observed resolution step.

Open the causal MvRegister lab

Sources and implementation

The demo runs Watershed's MV-register kernel through the Atlas toolkit.