Cross-Language Feature Coverage
This is the canonical feature-coverage matrix for the lazily family. Each binding’s README reproduces it; this page is the source of truth. It is a status view (what each port ships today), distinct from the normative Binding Conformance Matrix, which fixes what every binding must eventually provide.
Legend: ✅ shipped · ~ partial · — absent · ⊘ not applicable (see notes).
The table below is generated from
coverage.jsonbyscripts/sync-coverage.mjs. Editcoverage.jsonand runmake coverage-sync(ornode scripts/sync-coverage.mjs) to update this table and every binding README in one shot;make coverage-checkguards drift in CI.
Summary — family × language
| Family | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| Reactive graph | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ~ |
| Materialization | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Family sync | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Statecharts | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Keyed collections | ✅ | ✅ | ✅ | ✅ | ✅ | ~ | ✅ | ✅ | ✅ | — |
| Reactive queue | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Broadcast topic | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Work queue | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| CRDT data types | ✅ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ✅ | — |
| Lossless tree | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Egress | ✅ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ |
| Ingress | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Wire codec | ✅ | ✅ | ✅ | ✅ | ~ | ✅ | ✅ | ✅ | ✅ | — |
| Transport & FFI | ✅ | ✅ | ✅ | ~ | ~ | ✅ | ✅ | ~ | ✅ | — |
| Message passing | ✅ | ✅ | ✅ | ✅ | ✅ | ~ | ✅ | ✅ | ✅ | — |
| Reliable sync | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | — |
| Durable owner | ✅ | — | — | — | — | — | — | — | — | — |
| Durable capability tiers | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ |
| Distributed plane | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Causal receipts | ~ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Security boundary | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Membership | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Coordination | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Presence | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Temporal | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Rate shaping | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Windowing | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Resilience | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Portable stdlib | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Service plane | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Instrumentation | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Roll-up rule: a family cell is ✅ only when every required row in that family is ✅; ~ when the family is mixed (some shipped or partial); — when no required row is shipped or partial; ⊘ only when every required row in the family is not applicable. Rows the spec marks MAY (optional, shown as opt below) are excluded from the roll-up — declining an optional feature is not a gap.
Reactive graph
| Feature | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| Reactive graph 1 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Thread-safe context 2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Async reactive context 3 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Merge algebra 4 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ~ |
| Replay-equivalence proof (opt) 5 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Consumer simulation testkit (opt) 6 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Materialization
| Feature | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| Keyed-map materialization 7 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Thread-safe keyed map 8 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Async keyed map 9 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Family sync
| Feature | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| Keyed-map sync 10 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Statecharts
| Feature | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| Flat state machine 11 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Harel state charts 12 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Keyed collections
| Feature | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| Keyed reactive maps 13 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| ReactiveMap core — single-threaded 14 | ✅ | ✅ | ✅ | ✅ | ✅ | ~ | ✅ | ✅ | ✅ | — |
| ReactiveMap core — thread-safe 15 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| ReactiveMap core — async 16 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Exact-key dependency availability 17 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Atomic ordered move 18 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Memoized semantic tree 19 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Stable-id alignment 20 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Reactive queue
| Feature | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| Reactive queue core — single-threaded 21 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Reactive queue core — thread-safe 22 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Reactive queue core — async 23 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Broadcast topic
| Feature | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| Broadcast topic core — single-threaded 24 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Broadcast topic core — thread-safe 25 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Broadcast topic core — async 26 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Work queue
| Feature | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| Work queue core — single-threaded 27 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Work queue core — thread-safe 28 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Work queue core — async 29 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
CRDT data types
| Feature | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| Free-text character CRDT 30 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| TextCrdt delta sync 31 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| CrdtTree lossless document 32 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Move-aware sequence CRDT 33 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Registers (LWW/MV) + PnCounter 34 | ✅ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ✅ | — |
Lossless tree
| Feature | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| Lossless tree CRDT core 35 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Lossless tree — anti-entropy 36 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Lossless tree — merge convergence 37 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Egress
| Feature | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| Reactive egress 38 | ✅ | — | — | — | — | — | — | — | — | — |
| Latest durable projection 39 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Egress — thread-safe 40 | ✅ | — | — | — | — | — | — | — | — | — |
| Egress — async 41 | ✅ | — | — | — | — | — | — | — | — | — |
| RelayCell 42 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Ingress
| Feature | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| Reactive ingress 43 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Ingress — thread-safe 44 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Ingress — async 45 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Boundary-ingress adapter 46 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Wire codec
| Feature | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| IPC wire — Snapshot/Delta/CrdtSync 47 | ✅ | ✅ | ✅ | ✅ | ~ | ✅ | ✅ | ✅ | ✅ | — |
| Frame codec — json 48 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Frame codec — msgpack 49 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Frame codec — postcard (opt) 50 | ✅ | — | — | — | — | — | — | — | — | — |
| NodeId/PeerId exact-representation 51 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| NodeKey null-leniency 52 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Capability negotiation 53 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Transport & FFI
| Feature | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| Shared-memory blob path 54 | ✅ | ✅ | ✅ | ~ | ~ | ✅ | ✅ | ~ | ✅ | — |
| Cross-process zero-copy transport 55 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| C-ABI FFI boundary 56 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Message passing
| Feature | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| Message-passing + RPC command plane 57 | ✅ | ✅ | ✅ | ✅ | ✅ | ~ | ✅ | ✅ | ✅ | — |
Reliable sync
| Feature | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| Reliable sync 58 | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | ~ | — |
| Storage-independent durable outbox 59 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Reliable-sync transport seam 60 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Durable owner
| Feature | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| Durable owner contracts 61 | ✅ | — | — | — | — | — | — | — | — | — |
Durable capability tiers
| Feature | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| Durable tier: Core 62 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Durable tier: Client 63 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Durable tier: Durable Host 64 | ✅ | — | — | — | — | — | — | — | — | — |
| Durable tier: Distributed Host 65 | ✅ | — | — | — | — | — | — | — | — | — |
| Durable tier: Accelerated Host 66 | — | — | — | — | — | — | — | — | — | — |
Distributed plane
| Feature | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| Distributed CRDT plane 67 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Distributed plane — WebRTC 68 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| State projection / mirror 69 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Causal receipts
| Feature | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| Causal receipts 70 | ~ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Security boundary
| Feature | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| Permission boundary 71 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Membership
| Feature | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| Membership + failure detection 72 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Coordination
| Feature | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| Distributed coordination 73 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Presence
| Feature | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| Presence + ephemeral plane 74 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Temporal
| Feature | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| Temporal sources 75 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Rate shaping
| Feature | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| Rate-shaping operators 76 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Windowing
| Feature | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| Stream windowing 77 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Resilience
| Feature | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| Fault tolerance 78 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Portable stdlib
| Feature | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| Portable stdlib Timer 79 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Portable stdlib Timeout 80 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Portable stdlib RevisionBarrier 81 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Service plane
| Feature | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| Embedded-service plane 82 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Instrumentation
| Feature | Rust | Python | Kotlin | JS | Dart | Zig | Go | C++ | C# | GDScript |
|---|---|---|---|---|---|---|---|---|---|---|
| Instrumentation / benchmarks 83 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Convergence and the wire protocol are pinned by the shared conformance fixtures and JSON Schemas in this repo and the Lean models in lazily-formal.
Notes
- ᵃ Python reactive graph:
Cell/Slot/Signal/Effect(sync) and the top-levelbatch(run)boundary ship; the!=PartialEq memo guard applies to cells, slots, and signals. The async counterpart (AsyncEffect) queues reruns at the batch boundary forasyncioreactors. - ᵇ Dart reactive graph:
Context/Slot/Cell/Signalship; there is no standaloneEffecttype (observers subscribe on cells) andbatchis scoped to the async context. - ᶜ Zig reactive graph:
Cell/Slot/Signal/Effectand the publicbatch(run)boundary ship (context.zigcoalesces the eager-recompute drain at the outermost batch exit). - ᵈ Serialized context (JS / Dart) — decision: both are meaningful as
serialized, realm-local execution flavors, not asshared-graphcontexts. They are scored when their own surfaces replay the portable Core fixtures, and are excluded from cross-thread shared-graph stress/model-check tests. A duplicate wrapper is not sufficient by itself: unsupported Core features remain staged, and runner-local locks/dictionaries cannot stand in for them. Either binding may remove the flavor and declare it absent; while it advertises the flavor, it must join every feature peer group it actually supports. See protocol.md § Concurrency layers are required for the conditional layer requirement and reactive-graph.md § Declared context capabilities for theserialized/shared-graphdistinction. - ᵉ Zig async context: Zig removed language
asyncand has no suspendable executor, so the layer is a task-queue +settle()drain surface — the synchronous graph’spending_recompute/drainPendingRecomputegeneralized with revision tracking and the 4-state slot machine (async_context.zig). - ᶠ Zig collections:
SourceMap/ComputedMapwith atomic move,SourceTree(per-level membership/order reactivity, atomic child move), and the LIS-move-minimized reconcile op-set all ship (collection.zig,cell_tree.zig,reconcile.zig). - ᵍ Shared-memory blob path (JS / Dart): carry
ShmBlobRefwire references but no host-sideShmBlobArena— the I/O-channel fallback of the shared-memory carve-out (see protocol.md § Shared-memory payload path is required). - ʰ Dart distributed CRDT plane: the
CrdtPlaneengine (HLC / stamp frontier / stability watermark) ships, but is not yet wired to livemerge: crdtroot cells. - ⁱ C-ABI FFI (JS): platform carve-out
ffi = none— browser/Worker JS has no shared in-process C ABI. The full state plane (includingCrdtSync) still flows over IPC / WebSocket / WebRTC (see protocol.md § C-ABI FFI is required). - Distributed plane — WebRTC transport + signaling (Rust / Kotlin / JS / Zig): the
portable stack (signaling protocol + client, the
DataChannelseam, permission- filtering sink/source, in-memory loopback, and the CRDT plane runtime) ships and is conformance-tested; the concrete native WebRTC backend is a platform adapter (str0m in Rust; the browserRTCPeerConnectionin JS; a consumer-provided seam in Kotlin and Zig), matching the reference design where the heavy transport is optional behind the seam.
-
Reactive graph — two cell kinds (nodes
SourceCell/ComputedCell; handlesSource<T, M>/Computed<T>) +Effectsink + eagerComputed(computed().eager()) / all cells guarded / batch ↩ -
Thread-safe context (lock-backed) ↩
-
Async reactive context ↩
-
Merge algebra +
Source<T, M>— associativeMergePolicy(KeepLatest/Sum/Max/SetUnion/RawFifo),Cell ≡ Source<KeepLatest>, read-any-cell/write-Sourcesplit (#relaycell) ↩ -
Replay-equivalence harness — a log-bound fingerprint revalidated before any value compare, first-checkpoint divergence localization, canonical observation encoding (MAY,
#lzreplayproof) ↩ -
Consumer simulation testkit — one materialized generated history through a deterministic in-memory baseline and explicitly selected real or external-process adapters, with per-action observation, history-prefix, and world-execution proof (MAY,
#lzconsumerstestkit) ↩ -
Keyed-map materialization (
ComputedMap) — mint-on-access derived slots: transparency + deferral (#lzmatmode) ↩ -
Thread-safe keyed map (
ThreadSafeComputedMap) —Send + Sync+ materialization confluence (#lzmatmode) ↩ -
Async keyed map (
AsyncComputedMap) — eventual transparency (#lzmatmode) ↩ -
Keyed-map sync — membership propagation + materialize-on-ingest + derived-aggregate transparency (
#lzfamilysync) ↩ -
Flat state machine ↩
-
Harel state charts ↩
-
Keyed reactive maps (
ReactiveMap:SourceMap/ComputedMap) +SourceTree+ reconcile ↩ -
ReactiveMapCore surface — single-threaded flavor (cell-model.md § Core surface vs. binding extensions) ↩ -
ReactiveMapCore surface — thread-safe flavor (ordering + membership reactivity) ↩ -
ReactiveMapCore surface — async flavor (ordering + membership reactivity) ↩ -
Exact-key dependency availability (
DependencyMap: observe before publish, unrelated-key isolation, stable identity;#lzdependencyavailability) ↩ -
Atomic ordered move replayed against all three flavors (
cellmap_atomic_move+cellmap_independence) ↩ -
Memoized semantic tree (
SemTree) ↩ -
Stable-id alignment (manufactured identity) ↩
-
Reactive queue (
QueueCellSPSC/MPSC +QueueStorageadapter) Core surface — single-threaded flavor ↩ -
Reactive queue (
QueueCellSPSC/MPSC +QueueStorageadapter) Core surface — thread-safe flavor (reader kinds + closure lifecycle) ↩ -
Reactive queue (
QueueCellSPSC/MPSC +QueueStorageadapter) Core surface — async flavor (reader kinds + eventual transparency) ↩ -
Broadcast topic (
TopicCell) Core surface — single-threaded flavor — independent cursors + durable replay + safe GC (#lztopiccell) ↩ -
Broadcast topic (
TopicCell) Core surface — thread-safe flavor (reader kinds + closure lifecycle) ↩ -
Broadcast topic (
TopicCell) Core surface — async flavor (reader kinds + eventual transparency) ↩ -
Competing-consumer work queue (
WorkQueueCell) Core surface — single-threaded flavor — exclusive leases + ack/nack + redelivery + DLQ (#lzworkqueue) ↩ -
Competing-consumer work queue (
WorkQueueCell) Core surface — thread-safe flavor (reader kinds + closure lifecycle) ↩ -
Competing-consumer work queue (
WorkQueueCell) Core surface — async flavor (reader kinds + eventual transparency) ↩ -
Free-text character CRDT (
TextCrdt) ↩ -
TextCrdtdelta sync (version_vector/delta_since/apply_delta) ↩ -
CrdtTreelossless document contract (#lzcrdttree) ↩ -
Move-aware sequence CRDT (
SeqCrdt) ↩ -
Registers (LWW / MV) +
PnCounter+CellCrdt↩ -
Lossless tree CRDT core (
LosslessTreeCrdt, M1) ↩ -
Lossless tree — dotted-frontier anti-entropy ↩
-
Lossless tree — concurrent merge convergence ↩
-
Transport-agnostic reactive egress (
EgressCore) — monotone sequence assignment, bounded unacknowledged window, cumulative ACK watermark, bounded retry/backoff/exhaustion, producer-generation fence (#lzegress) ↩ -
Keyed latest durable projection (
LatestDurableProjectionCore) — monotone caller epochs, one in-flight effect per key, pending-value supersession without false acknowledgement, monotonedurable_through, retryable failure, and sink-generation fencing (#lzlatestdurableprojection) ↩ -
Egress family —
Send + Syncflavor (ThreadSafeEgressCell): delivery authority stays in the shared core, one attached transport Effect per incarnation (#lzegress) ↩ -
Egress family — async flavor (
AsyncEgressCell): the delivery-state readers stay synchronous Computeds; only the transport attachment is async-coloured (#lzegress) ↩ -
RelayCell — conflating relay +
BackpressurePolicy+SpillStore+Transport+ Inbox/Outbox + Rate/Window/Expiry/Priority/keyed policies (#relaycell) ↩ -
Transport-agnostic reactive ingress (
IngressCell) — keyed lifecycle scopes, generation/sequence/freshness envelopes, reorder buffer, accepted/dropped/error receipt readers (#designimplementtransport) ↩ -
Ingress family —
Send + Syncflavor (ThreadSafeIngressCell): one frontier walk per admission (#designimplementtransport) ↩ -
Ingress family — async flavor (
AsyncIngressCell): admission is not async-coloured (#designimplementtransport) ↩ -
Boundary-ingress adapter (
BoundaryIngressAdapter) — the non-reactive/reactive seam ahead ofIngressCell: one monotone channel cursor per producer generation, snapshot-plus-event bootstrap applied as one batch, derivedReplayRequired(from)on a cursor gap, generation fence + hot resubscribe (#designimplementtransport) ↩ -
IPC wire —
Snapshot+Delta+CrdtSync↩ -
Frame codec —
jsonreference codec: dependency-free interop floor, FFI baseline form, byte-canonical (MUST) — executable round-trip obligation (conformance/codec/frame_roundtrip_json.json,#lzmsgpackparity) ↩ -
Frame codec —
msgpackcross-language binary default: externally-tagged frame over named-field maps, semantic (not byte-identical) round-trip (MUST) — executable round-trip obligation (conformance/codec/frame_roundtrip_msgpack.json,#lzmsgpackparity). Shipping a MessagePack codec does not earn this mark: lazily-cpp read~here while its private internally-tagged framing wore the token, and only flipped once it shipped the spec wire (#lzcppmsgpackwire) ↩ -
Frame codec —
postcardpositional same-schema fast path: smallest + byte-canonical, not cross-language (MAY) ↩ -
NodeId/PeerIdexact-representation bound (MUST) — a decoder that cannot represent a received identifier exactly rejects the frame rather than rounding it (conformance/codec/nodeid_exact_range.json,#lzspecdecoderbound). A binding’s exact range MAY be narrower than theu64wire type; ✅ means it refuses outside that range instead of substituting a neighbouring id, not that it carries the fullu64. Exact ranges: fullu64in Rust / Zig / C#, unbounded in Python,[0, 2^63)in Kotlin / Go / C++,[0, 2^53)in JS, and platform-split in Dart (63-bit on the VM, 53-bit on web). protocol.md stated only the PRODUCER half until this audit, and two C++ decoders were substituting rather than refusing. ↩ -
NodeKeynull-leniency on decode (MUST) — omit-when-absent binds the ENCODER; a decoder reads both an omittedkeyand an explicitkey: nullas absent, refusing neither and constructing a key from neither (conformance/codec/nodekey_null_leniency.json,#lzkeynullstrict). Replayed on BOTH optional-key sites (NodeSnapshot, theNodeAdddelta op) in both codecs, and the fixture pins the RE-ENCODED field set as well: reading null as absent and writing it back out is a correct decode with a non-conforming encoder. Before the audit lazily-py and lazily-zig refused the null form, and lazily-kt decoded it into a real key namednull— all three had the same field right onCrdtOp, in the same file. ↩ -
Capability negotiation (
SessionHandshake) ↩ -
Cross-process zero-copy transport (
BlobBackend/ shm / arrow) ↩ -
C-ABI FFI boundary ↩
-
Message-passing + RPC command plane (
command-plane-v1) ↩ -
Reliable sync — resync coordinator + at-least-once durable outbox + OR-set/LWW liveness (
#lzsync) ↩ -
Storage-independent durable outbox (
OutboxStore+ shared outbox protocol; SQLite/Room/IndexedDB/file adapters) ↩ -
Reliable-sync transport seam + full-duplex
SyncDriverloop (IpcSink/IpcSource,#sync-driver) ↩ -
Backend-neutral durable owner — ordered history or snapshot state, monotone positions, exact CAS/fencing, versioned payloads, atomic inbox/outbox/receipt boundary, crash recovery, and source-bound projection fingerprints (
#lzdurablespec) ↩ -
Reactive graph plus typed state and decision semantics (
#lzdurablefamily) ↩ -
Typed NATS envelope through an injected compatible transport; no durable-owner authority (
#lzdurablefamily) ↩ -
Database-authoritative durable owner with atomic inbox/state/outbox/receipt boundary (
#lzdurablefamily) ↩ -
Durable Host plus leased broker delivery/relay, recovery, drain, and poison disposition (
#lzdurablefamily) ↩ -
Distributed Host plus bypassable Valkey acceleration with cache-loss equivalence (
#lzdurablefamily) ↩ -
Distributed CRDT plane (
CrdtPlaneRuntime/ anti-entropy) ↩ -
Distributed plane — WebRTC transport + signaling ↩
-
State projection / mirror ↩
-
Causal receipts (
CausalReceiptsoutcome projection) ↩ -
Permission boundary (
PeerPermissions/RemoteOp) ↩ -
Membership + failure detection —
MembershipCell(SWIM + Phi-accrual) /PeerSet/PeerChangeEvent(#lzmemb) ↩ -
Distributed coordination —
LeaseCell/LeaderCell/LockCell/SemaphoreCell/BarrierCell+QuorumCell(#lzcoord) ↩ -
Presence + ephemeral plane —
PresenceCell/AwarenessCell/EphemeralCell+Ephemeral/Durablemarkers (#lzpresence) ↩ -
Temporal sources —
TimerCell/IntervalCell/CronCell/DeadlineCellover a logical clock (#lztime) ↩ -
Rate-shaping operators —
DebounceCell/ThrottleCell/SampleCell/ProbabilisticSampleCell(#lzrateshape) ↩ -
Stream windowing —
TumblingWindow/SlidingWindow/SessionWindowover the merge algebra (#lzwindow) ↩ -
Fault tolerance —
CircuitBreakerCell/RetryPolicyCell/BulkheadCell/TimeoutCell(#lzresilience) ↩ -
Portable stdlib
Timer(stdlib_timer_v1) — canonical fixture + mutation-gate verified ↩ -
Portable stdlib caller-driven
Timeout<T>(stdlib_timeout_v1) — distinct from reactiveTimeoutCell↩ -
Portable stdlib
RevisionBarrier(stdlib_revision_barrier_v1) — register/recheck lost-wakeup guard ↩ -
Embedded-service plane —
HealthCell/ReadinessCell/DiscoveryCell/ServiceRegistry(#lzservice) ↩ -
Instrumentation / benchmarks ↩