> you're talking about about making a cleaner legal audit trail.
Not exactly, the legal audit trail can be messy and it doesn't matter one bit so long as it's accurate. In the case described change one is logged and the undo constitues a second change which is also logged. Change one incurs liability for the user and change two simply increases the liability for the user (sorry I can't go into specifics) even though it's correcting a problem. In my experience it's very difficult to create a user interface where the "undo" action clearly indicates the consequence of the change in these scenarios. Preventing unnecessary changes via a combination of up front documentation and confirmation provided the better user experience, and legal liability reduction, in my experience and based on some user feedback.
> But a worse interface that makes the software easier to code is one thing; a worse interface that makes the software more easily comply with the law is an entirely different trade-off.
Believe me, not confirming user actions would have been less code and easier to build and maintain in this case. Legal compliance on my part would have been maintained in either case. Allowing my users to quickly and easily build up liability would be doing them a disservice however. Adding some friction to those transactions was agreed to be the better option by everyone involved.
I think the idea that confirmation vs undo is subjective. We can go on and on for hours and come up with examples and counter examples. The particular context of the action likely determines which provides the better user experience in total (not just on that one screen or interaction but via the consequences of the action as well). I would certainly prefer that if I'm using a system like facebook that it confirm I really want to make my home address and phone number public before it does so rather than letting me check a box and it's done. The same goes with a money transfer where an undo may not even be possible after some amount of time. Not prompting for confirmation certainly makes the transactions move faster (less friction) and undo is easy enough in many cases, but does that frictionless transaction have the best outcome for my users? Not always. The blanket statement that "undo > confirmation. Always." is just plain wrong, not that you made it of course.