test initial options and default options deep equality
take the run function build-logic out of makeState and put it in a standalone makeStateRun helper which is exposed on jonas.dev
autopromote for yet-to-be written Array monad should be false