2 days ago
- Livelymerge uses Automerge to make every object, class, and method part of a shared heap, aiming for free merges but facing challenges with semantic correctness.
- Concurrent modifications to a linked list (e.g., swapping nodes) can result in truncated lists or cycles after merging, because Automerge replays writes rather than intents.
- The problem extends beyond linked lists to any invariant spanning multiple properties or objects, such as doubly-linked lists, trees, cached counts, or uniqueness constraints.
- A proposed solution is merge-aware datatypes that record high-level operations (e.g., insert/delete) instead of raw pointer writes, similar to how Automerge's built-in types work.
- Related work includes Kleppmann et al.'s move operation for trees and Coln, a mergeable database that refuses merges violating constraints, requiring user intervention.