causalDots

open override fun causalDots(): Set<Dot>

The causal Dots this op-log has delivered: every Insert's own dot (id.dot = (replicaId, seq)) plus every dot recorded in a Compact op.

This is the Quilted capability the causal-stability GC barrier consumes (ADR-003 addendum v3, #262); the Quilter folds it into a contiguous delivered version vector. The per-author seq space is dense and defined by Inserts, so the set must stay gap-free across GC:

  • Insert → its dot.

  • Compact → its ids' dots. A compaction removes the GC'd Inserts from ops, but those dots were delivered (GC only fires once a dot is causally stable — at-or-below the min over all peers — so every replica delivered it). If they were dropped here, GC'ing a non-tail dot would punch a permanent hole in the contiguous frontier, pinning that author's delivered high-water below the gap forever and stalling all further GC for that author. Re-emitting the Compact'd dots keeps the frontier monotonic across compaction. Including them cannot over-claim: a Compact only exists for universally-delivered dots, and a late joiner receives them inside FullState's already-compacted state.

  • Remove → nothing. A Remove reuses its target Insert's id (removeAt: val id = visible[index]); it mints no dot of its own. Counting it would over-claim when a Remove(x) is delivered out-of-order before Insert(x) — reporting x delivered while holding only the tombstone, prematurely advancing the stable cut (the #275-class hazard).