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).
Thrown during a node's start-up restore when the RaftStorage it was given returns durable state that violates the storage contract — currently, a persisted term outside the plausible range (issue #1855).
Why a candidate's RequestVote or PreVote was denied by the responding node.
An in-memory RaftStorage implementation.
The node §5.2 Election Safety established as the leader of term — a fact about that term, which is why the two travel together and are meaningless apart.
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.
The Raft wire vocabulary, as a value a trace consumer can hold and compare.
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.
Which guard refused an inbound frame — the gate of RaftTraceEvent.FrameRefused.
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
The Committed instruction a committed LogEntry surfaces as: an application entry becomes Committed.Entry; raft's own bookkeeping — the §5.4.2 election no-op (LogEntry.isNoOp) and §6 membership-change entries (LogEntry.config) — becomes a payload-free Committed.Internal.
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.
Applies a membership change to this node, retrying while a prior change is still settling.
Creates and starts a RaftNode whose lifetime is tied to this CoroutineScope.