Skip to content

Latest commit

 

History

History
64 lines (52 loc) · 2.11 KB

File metadata and controls

64 lines (52 loc) · 2.11 KB

Tasks

Documentation

  • Write system requirements.
  • Write the layered design and mapping onto rxnet.
  • Define the scope of the first production-ready version.

Project Structure

  • Create the Python code tree.
  • Create the C code tree.
  • Add the main README and build/test commands.

Conceptually Shared Raft Core

  • Define message types and log entries.
  • Define term, vote, and commit semantics.
  • Implement log validation rules.
  • Implement recovery from persistent storage.

Python

  • Create the raft_rx package.
  • 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, and rmnode.
  • Add an independent demo with HTTP transport, local CLI, join, and merge.

C

  • Create the raft library.
  • 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 consensus reconfiguration to the C library.
  • Add an independent demo with TCP transport, local CLI, join, and merge.

Verification

  • 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.