marigold-dev / marigold-dev/deku

Using Rust's Stateright as a model checker and possible groundwork for a Rust implementation

Open
#8 0 comments 0 reactions 0 assignees View on GitHub
backlog
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.