Automatic crash detection for your process is built-in our Conductor offering. The library has a default recovery mode when used standalone.
What do you find strange with workflow versioning? Would love to consider improving the semantics. In fact, we started doing it: https://github.com/dbos-inc/dbos-transact-py/pull/598