Сделал бы полусагу. В каком-то постгресе.
Стейтмашину, каждое промежуточное состояние после очередного действия - отдельная запись создаётся. Все состояния линейно ложатся в большой документ, мутабельное поле показывает текущее состояние.
Когда какая-то часть фейлится, начинается откат, на каждый откат рождается новая запись, которая линейно ложится