Soft delete turns a point of no return into a delay
Aliases: soft delete · trash delete · reversible delete
What it is
Soft delete splits “take it out of the current view” from “destroy the bits.” When someone hits delete, the object leaves the main path and the data stays on a recoverable layer. Irreversibility is postponed; slips have somewhere to go. This entry is only about turning delete from a terminal state into a reversible one. It is not about how long it is kept, how findable the entry is, or drafts after a crash.
Why it happens
Delete is one of the high-stakes acts most often triggered by a slip, because it looks like archive, remove, or complete. If the click destroys, recovery has only pre-act friction left, and friction does not catch slips. Soft delete makes the result “not here,” and leaves destroy for another, usually later, explicit act. When people notice something missing from the main list, they can still pull it back from the recoverable layer; the blast radius stops at visibility, not existence. For the system, this trades storage and retrieval for a recoverable timeline.
Studying it
Compare hard delete, soft delete (recoverable from a dedicated layer), and a short undo after delete, using a set of files the participant just organized.
Independent variables: whether delete destroys immediately, whether a miss can be recovered without the transient bar. Dependent variables: recovery success after an accidental delete, time to notice the gap, whether soft delete is mistaken for already destroyed.
If the lab “delete” is the experimenter’s dummy file, soft delete is undervalued. Material they just imported is closer to life.
Where it stops holding
Data that law requires to be destroyed immediately and not restored (some withdrawn consents, a stolen key) cannot be soft-deleted; hard-destroy and say so. Storage cost will force a final destroy; that is a retention question and does not deny this layer. In collaboration, a softly deleted object that others already cited should appear as “removed,” not as a ghost link. Soft delete also does not replace a short undo: people still need a control on the result in those first seconds.
Applying it
- User-visible delete writes to a recoverable layer by default, rather than calling destroy; destroy is a separate, harder path.
- Success copy on the main list says “removed,” not “permanently deleted,” so a false terminal state is not announced.
- Build hard delete only for types that must be destroyed at once; do not mix them into the default soft delete.
- Verify by deleting a freshly created object, dismissing the transient feedback, and still finding it ten minutes later. If it cannot be found, delete is still hard.