marigold-dev / marigold-dev/deku
Using Rust's Stateright as a model checker and possible groundwork for a Rust implementation
- Dominant language
- OCaml
- Stars
- 82
- Forks
- 17
- PR merge metrics
- No merged PRs in 30d
Description
There's a recently-developed model checker called [Stateright](https://github.com/stateright/stateright).
> In contrast with other actor libraries, Stateright enables you to formally verify the correctness of your implementation, and in contrast with model checkers such as TLC for TLA+, systems implemented using Stateright can also be run on a real network without being reimplemented in a different language.
Model checkers are useful for testing (superior to fuzz testing) because they allow you to verify all possible reorderings within a given network size. I believe in theory there's no reason why the Rust Stateright implementation and the OCaml one couldn't be compatible, but there are some incompatibilities: we use HTTP endpoints for RPC while Stateright currently wants you to use UDP, and other things like this. Stateright does not have too much abstraction so everything like this should be fixable but compatibility would not be automatic.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by reading Stateright's model-checker documentation and comparing its UDP assumptions with Deku's HTTP RPC approach. The issue names no files or tests, so first establish the compatibility requirements and scope; done would require an agreed plan or implementation for using Stateright with Deku.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- ocaml, rust
- Domain
- distributed-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100