HN Debrief

Convergence is not enough

  • Programming
  • Developer Tools
  • Infrastructure
  • Open Source

Ink & Switch’s note is a course correction on collaborative data systems. It starts from the CRDT promise that replicas can accept edits independently and still converge, then points out the hole in that promise: convergence can land on a state that is technically shared but structurally wrong. A linked list can end up malformed. A tree can gain cycles. A merge can satisfy the replication layer while breaking the application. The piece frames this as the boundary of tools like Automerge, which work well when the data model tolerates commutative updates, and as the place where richer constraints or refusal to merge become necessary.

If you are building collaborative editors, planning tools, or sync-heavy products, do not treat eventual convergence as your acceptance test. Define your invariants up front and decide which operations can merge freely, which need validation, and which need a single authoritative order.

Discussion mood

Mostly positive on the core idea and pragmatic about its limits. People accepted the article’s claim that convergence does not guarantee correctness, then focused on concrete ways to enforce invariants or on domains where CRDT-style merging is simply the wrong tool.

Key insights

  1. 01

    Guarded operations prevent structural corruption

    Guarded operations make the article’s abstract warning concrete. In a tree or graph editor, operations like moving a node cannot be replayed unconditionally because concurrent edits can make them create cycles or break permissions. The useful pattern is to replay against current state, validate in the mutator, and deterministically reject invalid operations while still keeping them in the log for history or conflict UI.

    Classify your write operations before you pick a sync algorithm. If an operation can change topology, ownership, or access rights, build validation and rejection into replay instead of assuming the merge layer can keep the model sane.

      Attribution:
    • wim #1 #2
  2. 02

    Constraint-aware merge needs richer machinery

    The pointer to BloomL, causal registers, Coln, and Pijul fills in what “more context” actually means in system design. Once you care about semantic correctness, you stop talking only about convergence and start talking about causality tracking, lattice-based data types, schema constraints, and patch models that understand intent. That shifts the problem from syncing bytes or ops to representing enough structure that merges can be judged, not just applied.

    If your product has meaningful invariants, evaluate tools that model causality and constraints directly. A plain CRDT library may be too low-level if your real problem is semantic merge, not transport of edits.

      Attribution:
    • alexisread #1
    • TacticalCoder #1
  3. 03

    Some domains still need total order

    The MMO and financial examples draw a hard line that the article only gestures at. When two actions compete for one scarce resource, or when moving an item between inventories must not duplicate or lose it, the system needs one canonical order for correctness. Mergeable replicas shine when local ownership is acceptable, but they do not replace serialization in transactional domains.

    Do not force collaborative-data tooling onto inventory, payments, or other transactional workflows. Put those paths behind an authority that can serialize updates and reserve CRDT-like techniques for user-owned or loosely coupled data.

      Attribution:
    • josephg #1

Against the grain

  1. 01

    The article hides a simple point

    The complaint here is not about the claim but about the writing. The note allegedly takes far too long to say that merge correctness depends on application context, repeats itself, and uses polished phrasing that reads like unedited LLM output. That matters because the underlying idea is practical and could have been conveyed much more directly.

    If you share design notes about sync or data systems internally, make the invariants and failure cases explicit early. Engineers are more likely to trust and use the argument when it gets to the operational point fast.

      Attribution:
    • tempfile #1
  2. 02

    Google Wave is not a decisive warning

    Invoking Google Wave as proof that this category fails does not hold up. A failed product launch does not show the underlying technical approach is dead, and it says even less about today’s implementations or use cases. The better question is where collaborative structured data now fits productively, not whether one famous predecessor stumbled.

    Do not reject modern collaborative systems because an older product in the space failed. Compare the specific data model, UX, and deployment constraints of your case rather than using Wave as a conversation stopper.

      Attribution:
    • amelius #1
    • sls #1

In plain english

Automerge
An open source CRDT-based library for building collaborative applications that sync changes across devices or users.
BloomL
A research system and paper about using lattice-based data types to build distributed programs that remain correct under disorder and partial information.
Coln
A mergeable database project mentioned in the article that lets developers declare constraints and refuse merges that would violate them.
CRDT
Conflict-free Replicated Data Type, a data structure designed so multiple replicas can accept updates independently and still converge to the same state without central coordination.
last-writer-wins
A conflict resolution rule where the most recent write according to some ordering overwrites earlier ones.
MMO
Massively Multiplayer Online game, a game where many players interact in a shared persistent world.
Pijul
A version control system based on patch theory that tries to represent and merge changes in a way that preserves their meaning.

Reference links

Collaborative data and CRDT tooling

  • Automerge
    Referenced as the CRDT system the article appears to build on and as the baseline for discussing where convergence works and where it fails.
  • Thymer
    Given as a real product example using guarded and unconditional operations for collaborative docs and planning data with tree and graph structure.

Research on constrained and semantic merge