This shows, once more, that humans are bad with modes. You have two copies of the repo, one in a transaction and one not in a transaction.
The problem is that the thing you use to build the transaction can also be used to directly manipulate the DB. A better API design would be to separate those two things.
Interestingly, modal editing comes very natural to us. It enters muscle memory quite well.