Modules
The graph a list of transition modules declares: states as vertices, each transition an edge from every state it leaves to the one it reaches.
Combinators over {:ok, value} | {:error, reason}.
A named record state: the status that tags it and the properties that refine it.
What a transition's commit needs from the datastore.
A Hoare.Store that keeps records in the calling process, for testing a
transition without a datastore.
A declared transition: the states it leaves, the state it reaches, the
guards that must hold and the effects it performs, each list composed as one
Kleisli arrow. {from, guards} body {to} is the Hoare triple; run/4
discharges it.