step

abstract suspend fun step(name: String, doneWhen: suspend () -> Boolean, action: suspend () -> Unit)

Run one idempotent step. If doneWhen is already true on-ledger the step is SKIPPED (resume/idempotency); otherwise action runs and the engine waits until doneWhen flips true (confirmation) before returning, so the next step sees a consistent ledger. name is for progress/logging.