This looks useful. I've been exploring similar durable execution patterns in Go recently to avoid the complexity of Temporal for smaller workflows.
How does stepped_actions handle the state between steps? Does it persist to the DB after every single action to handle crash recovery, or is it more optimistic?
Good luck with the launch
Yes, state is persisted to DB upon every change. Action exceptions are handled gracefully and natural part of the system, they simply fail the action. Crash recovery is build-in thanks to checksums and ActiveJob, if you're using the right adapter, like GoodJob or SolidQueue where crash recovery is guaranteed.
I recently started using this DBOS in Go and it’s been good.
https://github.com/dbos-inc/dbos-transact-golang
I have River on my list to try someday too
https://riverqueue.com/pro