v3.7.0 — Phase 5 Part 4: CRDT Vector-Clock Blackboard Backend #44
Jovancoding
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
New Exports
CrdtBackendwrite(),delete(),merge(),sync()CrdtEntryBlackboardEntry+vectorClock,nodeId,deletedfieldsVectorClockRecord<string, number>— maps nodeId to logical counterCrdtBackendOptions{ nodeId?: string }tickClock(clock, nodeId)mergeClock(a, b)happensBefore(a, b)trueifacausally precededbisConcurrent(a, b)trueif neither clock happened-before the othercompareClock(a, b)-1 | 0 | 1for causal orderingmergeEntry(a, b)Conflict Resolution
Concurrent writes are resolved deterministically — no randomness, no arrival-order dependency:
nodeIdwinsTombstone Deletes
delete()records adeleted: truetombstone so deletions propagate correctly throughmerge()andsync()to all nodes.Testing
test-phase5d.ts) — vector clock primitives, causal/concurrent merge, 3-node convergence, tombstone propagation, TTL, commutativity, idempotency, export verificationNo Breaking Changes
All existing backends (
FileBackend,MemoryBackend,RedisBackend) are unchanged.Full Changelog
See CHANGELOG.md for details.
Beta Was this translation helpful? Give feedback.
All reactions