- Write system requirements.
- Write the layered design and mapping onto
rxnet. - Define the scope of the first production-ready version.
- Create the Python code tree.
- Create the C code tree.
- Add the main README and build/test commands.
- Define message types and log entries.
- Define term, vote, and commit semantics.
- Implement log validation rules.
- Implement recovery from persistent storage.
- Create the
raft_rxpackage. - Implement a deterministic clock for tests.
- Implement the in-memory transport.
- Implement file-based persistence.
- Implement no-op and JSONL
TelemetrySink. - Implement the persistent key-value state machine.
- Implement the Raft node over
rxnet.fsm. - Implement a simulation cluster.
- Create an executable distributed-database example.
- Create an external shell for cluster operation and inspection.
- Add tests for election, replication, and recovery.
- Implement stable/joint cluster configuration and the secondary membership FSM.
- Expose reconfiguration in the shell with
members,addnode, andrmnode. - Add an independent demo with HTTP transport, local CLI,
join, andmerge.
- Create the
raftlibrary. - Implement public types and limits.
- Implement the in-memory transport.
- Implement reference file-based persistence.
- Add optional tracing through
rxnet(RX_TRACE_ENABLE) and an exportable example. - Implement the persistent key-value state machine.
- Implement the Raft node over
rxnet/fsm.h. - Create a 3-node cluster example.
- Add tests for election, replication, and restart.
- Port
joint consensusreconfiguration to the C library. - Add an independent demo with TCP transport, local CLI,
join, andmerge.
- Run Python tests.
- Compile C.
- Run C tests.
- Verify the key-value example in both languages.
- Update the documentation with the final state of the deliverable.