These three things should happen in parallel, while we currently await completion of each stage.
- Block production
- Batch proving
- settlement & message rollup
They have to be coupled, since each stage's result is the input to the next stage, but especially batch proving and settlement contains a lot of waiting (for proofs to come and for transactions to be included). This shouldn't block the main thread and block production.
We already have the busy pattern which should implement the locks