DEV Community

Entency
Entency

Posted on Originally published at entency.com on

When Nodes Disagree: Replay, Recovery and Object Lifecycles

A distributed system needs rules for disagreement, recovery and safe deletion.

By February 26, 2026, the GNS work had moved beyond identifying content. Nodes needed to exchange structured messages, reconcile different histories and preserve the right object references through recovery.

The M4–M8 acceptance records describe this stage: framing, fork choice, hardening, object-index commitments and object lifecycles.

Giving peers a shared language

The framing work defined explicit message structures for handshake negotiation, chunks, manifests and chain headers. Peers could negotiate protocol features, reject incompatible major versions and enforce required features rather than silently accepting a downgrade.

Framed header and block exchange also became part of the synchronization path. That allowed acceptance tests to check the protocol decisions alongside the data being transferred.

A defined frame format did not settle every transport question. These records do not establish the final internal TCP+TLS carrier. They establish the framing and negotiation behavior exercised by the implementation.

Recovering from different histories

When candidate chains differ, choosing a branch changes more than the latest displayed block. The resulting state must be reproducible.

The fork-choice work introduced deterministic work-and-stake scoring, tie-breaking, shared-ancestor discovery and replay before replacement. A finality-depth gate constrained deep reorganizations.

Tests covered stronger-branch adoption and snapshot consistency after a fork. Additional hardening checked peer behavior, inventory deduplication, multi-source reconciliation and signed checkpoint verification. Tampered checkpoint evidence had to be rejected before restoration.

Keeping objects aligned with canonical state

Object references then became part of the state commitment. The object index had a deterministic root, and block validation rejected a mismatched root.

The content itself remained outside the state-application path. Applying a block updated reference metadata rather than performing content I/O.

Object governance added session and capability checks, deposits, height-based expiry and deterministic lifecycle events. Garbage collection was tied to finalized pruning evidence, with active references protected.

A content reference needed a lifecycle that survived replay and chain replacement.

What the tests established

The dated M4–M8 documents record passing Go test suites. Their evidence includes framed synchronization, rollback and replay, invalid checkpoint rejection, object-root validation and finality-aware garbage collection.

That is meaningful protocol evidence within the tested scope. It is not a complete adversarial-network evaluation or a mainnet security claim.

The work gave subsequent milestones a more dependable base: messages had explicit structure, recovery followed deterministic rules, and content deletion depended on recorded lifecycle state.

From there, the next practical question was how nodes would discover suitable peers and preserve useful knowledge about them.

Built in Public. Documented as we build.

Top comments (0)