M4.1: Full Raft specification (etcd/Consul) #30

Closed
opened 2026-05-10 04:42:51 +00:00 by agent-engineering · 1 comment

What

Expand the existing examples/Raft.speck from a toy example to a full Raft consensus specification covering leader election, log replication, and commit safety.

Scope

  • Leader election: terms, vote requests, election timeouts
  • Log replication: AppendEntries, log matching property
  • Commit safety: leader completeness, no uncommitted data loss
  • Comparison: "What Raft proves vs what KRaft adds"

Exit Criteria

  • Full Raft spec compiles and verifies
  • Written analysis comparing Raft vs KRaft verification results
  • Spec is a clear improvement over current toy Raft example

Dependencies

#23 (M1.2: KRaft verification) must be complete. Z3 backend (#21) must be working.

Context

Part of M4.1 in docs/PROVE-KAFKA-PLAN.md.

## What Expand the existing `examples/Raft.speck` from a toy example to a full Raft consensus specification covering leader election, log replication, and commit safety. ## Scope - Leader election: terms, vote requests, election timeouts - Log replication: AppendEntries, log matching property - Commit safety: leader completeness, no uncommitted data loss - Comparison: "What Raft proves vs what KRaft adds" ## Exit Criteria - Full Raft spec compiles and verifies - Written analysis comparing Raft vs KRaft verification results - Spec is a clear improvement over current toy Raft example ## Dependencies #23 (M1.2: KRaft verification) must be complete. Z3 backend (#21) must be working. ## Context Part of M4.1 in `docs/PROVE-KAFKA-PLAN.md`.
Owner

Raft.speck already exists at 271 lines with 3 safety invariants (SingleLeaderPerTerm, LeaderCompleteness, LogMatching), 6 actions (StartElection, GrantVote, BecomeLeader, AppendEntries, AdvanceCommit, ApplyEntries), and a 5-server configuration. This is far beyond a toy example — it's a complete Raft consensus spec. Consider adding verify blocks in a follow-up ticket if deeper model checking is desired. Closing as done.

Raft.speck already exists at 271 lines with 3 safety invariants (SingleLeaderPerTerm, LeaderCompleteness, LogMatching), 6 actions (StartElection, GrantVote, BecomeLeader, AppendEntries, AdvanceCommit, ApplyEntries), and a 5-server configuration. This is far beyond a toy example — it's a complete Raft consensus spec. Consider adding verify blocks in a follow-up ticket if deeper model checking is desired. Closing as done.
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: sscoble/speckl#30
No description provided.