Thanks! Rollback functionality is a complex topic and definitely merits a dedicated article. In my mind, implementing rollback logic typically falls under the responsibility of the workflow developer. With Infinitic, a robust error management system is provided : https://docs.infinitic.io/docs/workflows/errors.
Regarding the shared data issue, I'm not sure to respond perfectly to your point, but I'd like to mention that a workflow instance can be used to maintain a distributed state in a consistent way, see for example https://docs.infinitic.io/docs/introduction/examples#loyalty-program