{"ref":"capability:soft-delete","page":"/capabilities/soft-delete","json":"/capabilities/soft-delete.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"soft-delete","name":"Soft delete","domain":"data-and-persistence","ecosystems":["cap"],"universal":true,"description":"Deleting a record without removing it — flagging the row, recording who deleted it and when, and keeping it out of reads. The question underneath is what DELETE should mean to a client that cannot tell the difference, and what happens to a composition tree when its root is flagged.","short":"Deleting a record without removing it","core_coverage":{"state":"community-only","assessed_at":"2026-09-07","where_it_stops":"DELETE removes rows. Deleting a composition root cascades a physical delete down the hierarchy, and change tracking has to be told with @cascade:{delete} whether changelog entries should follow — a question that only arises because the record itself is gone. Retention under data privacy is about erasing sooner, not about keeping. Nothing in the core turns a delete into a flag.","community_adds":"Two implementations, one per runtime, from the same author: an aspect adding isDeleted, deletedAt and deletedBy, an annotation opting a service projection in, and handlers that rewrite DELETE as an update and filter flagged rows out of READ.","note":"Assessed by searching capire for soft or logical delete and finding no guidance — a assessment resting on the absence of a source rather than on one. If the core does answer this somewhere, this state is wrong and should be corrected."},"drafted_with_ai":true},"sap_delivery":{"door":"cap","all":null,"by_flavor":{"node":null,"java":null}},"edges":{"use_cases":[],"shared_tasks":[],"related_tasks":[],"options":[{"ref":"artifact:miyasuta-cds-feature-softdelete","name":"cds-feature-softdelete","json":"/artifacts/miyasuta-cds-feature-softdelete.json","ecosystem":"cap","origin_ring":"independent"},{"ref":"artifact:miyasuta-cds-softdelete-plugin","name":"cds-softdelete-plugin","json":"/artifacts/miyasuta-cds-softdelete-plugin.json","ecosystem":"cap","origin_ring":"independent"}],"samples":[],"explained_by":[],"normative_context":[]}}