Adds snapshot() and batch helpers across network discovery/stack/transport, encoding-wire, observability, routing-advanced, supercomputer, state-crdts, scheduling-queues, and session-bridge modules. Co-authored-by: Cursor <[email protected]>
hyper-p2p-crdt-grow-only-set
State CRDT module: a grow-only set replicated over Hyperswarm + Protomux gossip.
Category: State CRDTs
Composes with: hyper-p2p-crdt-version-vector, hyper-p2p-reactive-state, hyper-p2p-presence
Protocol: crdt-grow-only-set/v1
When to use
- Tag lists, membership rosters, or allowlists that only grow (no removals).
- Eventual consistency across peers on a shared
topicwithout a central server. - Building blocks for 2P-set or higher-level CRDTs.
When not to use
- Sets that must support removal (use
hyper-p2p-crdt-two-phase-set). - Strong ordering or numeric aggregation (use counters or RGA text).
- Single-process state with no P2P (skip
topic/ready()).
Quick start
const { HyperP2PCrdtGrowOnlySet } = require('hyper-p2p-crdt-grow-only-set')
const topic = process.argv[2] // 64-char hex or string hashed to topic
const set = new HyperP2PCrdtGrowOnlySet({ topic })
await set.ready()
set.add('peer-1')
console.log(set.values(), set.has('peer-1'))
await set.close()
Docs
- docs/api.md — constructor, methods, wire, errors
- docs/architecture.md — wire table, state, composition
Test
cd modules/state-crdts/hyper-p2p-crdt-grow-only-set
npm install && npm test
bare examples/basic.js
bare examples/basic.js <topic>