Repository navigation
Lagrange v0.2.6
Lagrange 0.2.6 — 2026-10-27 (experimental / alpha).
Consensus cutover to the Rust raft-rs core through the WASM operation
port, with full partition snapshot compaction and follower reconstruction,
replicated two-phase transaction decision and participant apply, fresh-identity
message-group membership replacement, cold retained-seed handoff, and
systematic deterministic replicated SQL admission (epic raft-rs-full-cutover):
- Every node boot reserves a durable, monotonic boot incarnation from one
owner per data directory before any lifecycle side effect; legacy
rejoin hints are a one-time migration source only, andbootIncarnation
is a required option of the public bootstrap and join services. ReplicaStateMachineis the sole lifecycle owner per partition-replica
and message-group row: every transition is an exact-generation
conditional update, activation checks the exact transport handler inside
the lifecycle lane and holds it through the durable ACTIVE write, and
handler retirement is exact-identity only. Executor-created replicas are
born STOPPED and activate through the same lane.- Reaped node generations are terminal: liveness, endpoint refresh and
delayed READY work from a superseded incarnation can no longer mutate a
successor's rows; bootstrap-snapshot addressing only breaks the initial
connection circularity and never out-ranks an authoritative NODES row. - Automatic
raft-rspartition snapshot creation, retention sweep, committed
log compaction (_raft_rs_snapshot/_raft_rs_log), interrupted compaction
retry across leadership changes, pending-log byte growth trigger, and
follower snapshot catch-up reconstruction. - Replicated transaction coordinator decision persistence, participant staging
and deterministic apply (TX1), and fresh-identity message-group learner
admission, caught-up promotion, replacement, and source removal (FreshMG). - Cold retained-seed continuation and handoff across restarts, system-table
client ingress refusal at both engine and partition boundaries, and
deterministic replicated SQL write and schema-default admission across
date/time, version, randomness, connection-state, and user-defined functions. - One replica lifecycle owner per live node incarnation across join
retries, with timers on the node's canonical time source. - The vendored
raft-rsWASM binding ships in the Docker image and the
packaged runtime.
Removed
- Intentional public-API removal (alpha single-path mandate, owner decision
2026-10-26). These exports of the package root (lagrange-server,
src/public-api.js) were retired implementations with no production
constructor;MessageRouteris the one transport andReplicaHandlerwith
ReplicaStateMachineis the one replica lifecycle path. No replacement
export is provided:- Transport (from
src/transport/index.js):WebSocketTransport, its
ConnectionState,WebSocketTransportProvider,WS_PROVIDER_SUBSYSTEM,
WS_PROVIDER_LOG_MSG,WS_PROVIDER_ERROR_MSG,TransportProvider,
TransportRegistry,REGISTRY_SUBSYSTEM,REGISTRY_LOG_MSG,
REGISTRY_ERROR_MSG,ConnectionPool,POOL_SUBSYSTEM,
POOL_LOG_MSG,POOL_ERROR_MSG.MessageRouter,
RouterConnectionState,RouterMessageTypeandRPCClientremain. - Replica lifecycle (from
src/node/index.js):ReplicaLifecycleManager,
LifecycleReplicaStatus,VALID_STATUS_TRANSITIONS,
LifecycleMessageType,AckStatus.
- Transport (from
- The unexported
RouterMessageHandlermodule (a dead duplicate of the
router's inbound dispatch, imported by no module).
Docker images (linux/amd64, distroless):
docker.io/psvensson/lagrange:0.2.6(Docker Hub)
Full history: CHANGELOG.md · process: RELEASE.md