Interaction Learning
A new edit can replace the redo path
Use a fictional drawing editor that stores a linear list of complete canvas snapshots and a pointer to the current one. Initially the only snapshot is an empty canvas. Adding an object appends a snapshot. Undo moves the pointer back one position; redo moves it forward if a later snapshot exists. A new edit after undo deletes the later snapshots before appending its own result. This is the stated policy for this exercise, not a claim about every application.
01
Build two edits and move back one step
Add object A to the empty canvas. The history now contains empty and A, with the pointer at A. Add object B next, producing a third snapshot containing A and B; that becomes current. Undo once, moving the pointer to A without deleting the later A-and-B snapshot. The visible canvas contains only A, while redo could still restore A and B. Record both the visible state and the history position. Looking only at the canvas would conceal the fact that a later snapshot remains available at this point.
02
Add a different object after undo
From the current A snapshot, add object C. Under the supplied policy, the editor first removes the later A-and-B snapshot, then appends A and C. The history is now empty, A, and A-and-C, with the pointer at the final entry. There is no later snapshot, so redo is unavailable. B was not removed from the current canvas by this edit; B was already absent after undo. What changed was the stored future path. Keeping that distinction visible helps explain why a new edit can affect recovery options even when it adds rather than removes an object.
03
Record history and recovery separately
The reusable trace sheet includes the action, visible objects, ordered snapshot list, current pointer and availability of undo and redo. After adding C, undo can still return to A and another undo can return to empty. Redo from those earlier positions follows the new path toward A and C, not the discarded A-and-B snapshot. A separate version archive could preserve that discarded result, but none exists in this exercise. State such recovery boundaries explicitly so a reader does not mistake linear undo history for an unlimited archive of every version ever created.