What exactly should Undo reverse?
Undo is a small word that can conceal a large requirement. It might mean removing the last line you added, restoring an entire record, reversing a business action or recovering an earlier version for comparison. Those operations have different consequences when another person has also worked on the record.
Before adding an Undo button to an operational tool, ask what the user is entitled to reverse and which later work must survive. A concrete example makes that question easier to answer than a general request for version history.
Separate two legitimate editing histories
Consider a fictional supplier's quote Q-31. An operator accidentally adds optional fitting line L-8. Before they notice, a colleague corrects the delivery instruction from the old warehouse gate to the customer-approved receiving point. The fitting line should be removed; the delivery correction should stay.
The proposed implementation offers to restore the record from the snapshot taken before L-8 was added. That snapshot contains the old delivery instruction. Restoring it would erase a correct, independent change while appearing to undo the mistake.
The reviewer records both operations:
| Operation | Person's intention | Current result |
|---|---|---|
| OP-81 adds L-8 | Mistaken optional fitting selection | Unwanted line remains unchanged since addition |
| OP-82 corrects delivery | Use the customer's approved receiving point | Correct instruction should remain |
The business owner is then asked a precise question: should Undo restore the whole earlier quote, or reverse the specific accidental line addition while preserving unrelated work? For this tool, the owner chooses the second meaning.
Inspect whether the application can support that promise
The example application records operation identity and line identity, retains an audit history and supports an authorised line reversal with a current-condition check. Those capabilities are inspected before the button is promised. A system that stores only occasional whole-record snapshots might need additional work or a different operating procedure.
The reversal refers to OP-81 and L-8, not simply “the last change”. It verifies that Q-31 is still in a state where the operator may make the correction and that L-8 has not been changed or used in a consequential later action. The condition check and the supported reversal belong to one controlled operation so another edit cannot slip between an inspection and an unconditional change.
This is not a claim that every application supplies such an operation. It is a requirement to establish the actual supported behaviour before offering a reassuring label.
Complete the narrow correction
In the isolated fixture, the operator reviews the proposed reversal. It names the fitting line and explains that other quote changes will remain. The application removes the effect of OP-81 through its supported correction path and records reversal OP-83, linked to the original operation and the responsible account.
Q-31 now contains no active L-8 fitting line. Its corrected delivery instruction remains exactly as approved in OP-82. The history still explains why the line appeared and who reversed it; it has not been rewritten to imply that the mistake never occurred.
The reviewer compares the resulting quote with the intended outcome. A total that happens to match is not enough. The specific line state, delivery instruction and audit relationships all matter.
Decide what happens when Undo is no longer simple
The second fixture starts from the same mistaken addition but gives L-8 a later authorised quantity change. The original reversal request is now refused because its condition no longer holds. The tool explains that the line has changed and asks the operator to review its current state. It does not delete the colleague's work under the earlier permission.
Another fixture uses quote Q-32. Reversing Q-31's OP-81 cannot alter a similarly named fitting line on Q-32. A user without correction authority cannot perform the operation even if they can view its history. Repeating an already completed reversal should follow the application's documented result rather than removing another line.
Some consequential actions may require a different correction entirely. An issued financial document, fulfilled order or externally accepted instruction cannot be treated as an ordinary draft line merely because both appear on a screen. The responsible business and provider rules determine the appropriate route.
Turn the answer into a project requirement
The useful specification names the action, eligible record states, authorised role, condition that must still hold, affected fields, preserved work and audit evidence. It also describes the refusal message and what the operator does next.
That makes the interface copy more honest. “Remove this unmodified optional line” may be more useful than an ambiguous Undo label. Where Undo is retained, its confirmation should explain the bounded effect.
Use project planning to bring one correction that matters to your team. The answer can determine the data and operating model long before a developer chooses where to place the button.