Package-level declarations
Types
Thrown by a node using a caller-supplied durable ClientId when it observes another live writer committing under that same identity (Raft §8 collision). Indicates an operational error — two processes were handed one durable id. Fail loud; do not retry under the same id.
How a RaftNode obtains its Raft §8 client identity for proposal dedup.
The authoritative client-serial dedup table for a consumer's state machine (Raft §8).
Describes the membership of a Raft cluster.
The membership payload carried by a config log entry (§6 joint consensus).
Why a candidate's RequestVote or PreVote was denied by the responding node.
An in-memory RaftStorage implementation.
Thrown by RaftNode.propose when this node loses leadership while waiting for the proposal to be committed by a quorum.
Why a leadership transfer was abandoned without completing.
Thrown by RaftNode.transferLeadership when the transfer could not complete.
Thrown by RaftNode.changeMembership when a membership change is already in progress (a config entry is uncommitted).
Thrown by RaftNode.propose when this node is not the current leader.
Tuning parameters for a Raft node's timing behaviour.
A raw message from another cluster member, as received by the transport.
A structured metric event emitted by a RaftNode at key state-machine transitions.
Durable state that a Raft node must persist to survive restarts.
One engine state transition, emitted on RaftNode.trace.
The messaging seam between the Raft engine and any underlying network layer.
Adapts a kuilt-core Seam to the RaftTransport interface.
A state-machine snapshot. Opaque to kuilt-raft — it never deserializes state; only the consumer can collapse many log entries into compact state. The same payload flows both directions: the consumer publishes it via RaftNode.snapshots (outbound), and a lagging node receives it wrapped in Committed.Install (inbound).
Identifies the log position a snapshot covers: everything with index <= lastIncludedIndex.
Why a node stepped down from RaftRole.Leader or RaftRole.Candidate to RaftRole.Follower.
Functions
Linearizable read barrier: confirms the read index via RaftNode.readIndex, then suspends until applied reaches it, returning that index. applied is the caller's own monotonic applied-index flow, advanced as it consumes RaftNode.committed.
Creates and starts a RaftNode whose lifetime is tied to this CoroutineScope.