{"ref":"artifact:miyasuta-cds-softdelete-plugin","page":"/artifacts/miyasuta-cds-softdelete-plugin","json":"/artifacts/miyasuta-cds-softdelete-plugin.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"miyasuta-cds-softdelete-plugin","name":"cds-softdelete-plugin","artifact_type":"cds-plugin","ecosystem":"cap","domain":"data-and-persistence","origin_ring":"independent","description":{"one_line":"A CAP plugin that turns DELETE into a flag on the record: annotated entities keep the row, record who deleted it and when, flag composition children with it, and drop out of reads.","short":"CAP plugin turning DELETE into a flag on annotated entities","what_it_solves":"A `softdelete` aspect adds `isDeleted`, `deletedAt` and `deletedBy` to an entity. On a service projection carrying `@softdelete.enabled`, DELETE becomes an UPDATE that sets the flag, composition children are flagged with their parent, and READ filters flagged rows out. Both parent and child projections need the annotation — the aspect on the persistence entity does not carry the behaviour into the service by itself.","when_not_to_use":"It changes what DELETE means for every client of the annotated projection, so anything that must actually remove a row — an erasure request, a retention job — has to go around it."},"links":{"npm":"https://www.npmjs.com/package/cds-softdelete-plugin","repo":"https://github.com/miyasuta/cds-softdelete-plugin","changelog":"https://github.com/miyasuta/cds-softdelete-plugin/blob/main/CHANGELOG.md","issues":"https://github.com/miyasuta/cds-softdelete-plugin/issues"},"identity":{"author":"miyasuta","license":"MIT"},"compat":{"runtimes":["node"],"cds_range":">=9"},"type_properties":{"distribution":{"value":["npm"],"sources":[{"url":"https://github.com/miyasuta/cds-softdelete-plugin","title":"cds-softdelete-plugin — README","checked":"2026-10-18","quote":"npm install cds-softdelete-plugin"}]}},"maintainers":["actor:mio-yasutake"],"provenance":{"discovered_via":[{"source":"source:npm"},{"source":"source:github","channel":"miyasuta"}],"first_seen":"2026-09-07"},"provides":["capability:soft-delete"],"history":[{"date":"2026-09-07","field":"provides","from":null,"to":"capability:soft-delete","reason":"Entered unmapped because no capability fitted: change-tracking is history of changes, data-privacy is close to the opposite, and inventing an edge would have been worse than the gap. The capability now exists, so the edge is the honest one rather than the nearest one."}],"contributors":["actor:mio-yasutake"],"drafted_with_ai":true},"effective_normative_relations":[{"instrument":"instrument:sap-developer-license-3-2-cap","relation":"use-constrained-by","sections":["1","2","3"],"applies_when":"A cds-plugin is used with SAP CAP materials, or an artifact is explicitly identified as a CAP plugin or application.","note":"This is inherited applicability, not a licence verdict about the artifact itself. Review the agreement for the actual materials and use; an explicit artifact relationship to another revision takes precedence.","scope":{"kind":"artifact"},"sources":[{"url":"https://cap.cloud.sap/resources/license/developer-license-3_2_CAP.txt","title":"SAP Developer License Agreement 3.2 CAP","checked":"2026-09-16","quote":"documentation, plug-ins, templates, scripts and sample code, libraries, software development kits"}],"inherited_from":"cap-plugins-and-applications","relevant_capabilities":["agent-systems-access","async-processing","data-import-export","database-connectors","deployment","destinations","llm-integration","mcp-servers","plugin-authoring","replication","retrieval-augmented-generation","rfc-connectivity"]}],"readings":{"liveness":[{"label":"Maintenance","tier":"fair","evidence":"10 months since release"},{"label":"Continuity","tier":"fair","evidence":"one contributor, personally owned"},{"label":"Repository","tier":"fair","evidence":"pushed 2026-01, not archived"}],"compatibility":[{"label":"Declared for","tier":"good","evidence":">=9 — includes cds 10 and 9"},{"label":"Survived majors","tier":"poor","evidence":"no release since @sap/cds 10 shipped (July 2026)"},{"label":"Maintainer's CI","tier":"good","evidence":"npm publish green, 2025-12-12"}],"practice":[{"label":"Tests","tier":"good","evidence":"15 test files"},{"label":"Docs","tier":"good","evidence":"docs/ with 3 pages, README 3 KB"},{"label":"Changelog","tier":"good","evidence":"CHANGELOG in the repo"}],"reach":[{"value":2,"unit":"installs/week"},{"value":7,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-26","latest_version":"1.0.2","majors":{"1":{"version":"1.0.0","date":"2025-12-05"},"0.0":{"version":"0.0.1","date":"2025-11-06"},"0.1":{"version":"0.1.0","date":"2025-11-09"},"0.2":{"version":"0.2.0","date":"2025-11-23"},"0.3":{"version":"0.3.0","date":"2025-11-25"}},"license":"MIT","first_release":"2025-11-06","last_release":"2025-12-12","releases":17,"cadence_days":2,"maintainers":1,"repository":"git+https://github.com/miyasuta/cds-softdelete-plugin.git","peer_cds":">=9","test_script":false,"types":false,"downloads_weekly":2,"stars":7,"forks":0,"open_issues":0,"archived":false,"pushed_at":"2026-01-15","license_spdx":"MIT","org_owned":false,"default_branch":"main","contributors":1,"tree_truncated":false,"test_files":15,"workflows":1,"other_ci":false,"readme_bytes":3279,"docs_files":3,"changelog":true,"license_file":true,"dts_files":0,"ci_status":"success","ci_run_at":"2025-12-12","ci_workflow":"npm publish","ci_event":"workflow_dispatch","readme_path":"README.md","readme_sha":"015a4689579164606623426f7b0220f73f04bf3c","months_since_release":10,"dormant":false,"repository_directory":null,"dependencies":0,"node_engine":null,"downloads_monthly":14,"created_at":"2025-11-05T21:21:48Z","open_prs":0,"first_commit":"2025-10-19","last_commit":"2026-01-15","commits":98,"repo_read":"2026-10-26"},"release_notes":{"license":"MIT","quotable":true,"source":{"kind":"npm","path":"CHANGELOG.md","version":"1.0.2","url":"https://github.com/miyasuta/cds-softdelete-plugin/blob/main/CHANGELOG.md"},"format":"keep-a-changelog","releases":[{"version":"1.0.2","date":"2025-12-13","date_source":"heading","heading":"[1.0.2] - 2025-12-13","url":"https://github.com/miyasuta/cds-softdelete-plugin/blob/main/CHANGELOG.md#102---2025-12-13","sections":[{"kind":"feature","heading":"Added","items":1}],"hash":"5f05aa738450520c"},{"version":"1.0.1","date":"2025-12-12","date_source":"heading","heading":"[1.0.1] - 2025-12-12","url":"https://github.com/miyasuta/cds-softdelete-plugin/blob/main/CHANGELOG.md#101---2025-12-12","sections":[{"kind":"feature","heading":"Added","items":2},{"kind":"change","heading":"Changed","items":1}],"hash":"9033e259334b136f"},{"version":"1.0.0","date":"2025-12-06","date_source":"heading","heading":"[1.0.0] - 2025-12-06","url":"https://github.com/miyasuta/cds-softdelete-plugin/blob/main/CHANGELOG.md#100---2025-12-06","sections":[{"kind":"other","heading":"First Major Release","items":0},{"kind":"feature","heading":"Features","items":9},{"kind":"other","heading":"Technical Details","items":3},{"kind":"other","heading":"Known Behavior","items":1}],"hash":"381ea813599c5938"},{"version":"0.3.5","date":"2024-12-05","date_source":"heading","heading":"[0.3.5] - 2024-12-05","url":"https://github.com/miyasuta/cds-softdelete-plugin/blob/main/CHANGELOG.md#035---2024-12-05","sections":[{"kind":"feature","heading":"Added","items":3},{"kind":"fix","heading":"Fixed","items":1}],"hash":"c54f712243f761de"},{"version":"0.3.4","date":"2025-12-01","date_source":"registry","heading":"[0.3.4] - 2024-11-XX","url":"https://github.com/miyasuta/cds-softdelete-plugin/blob/main/CHANGELOG.md#034---2024-11-xx","sections":[{"kind":"feature","heading":"Added","items":2},{"kind":"fix","heading":"Fixed","items":1}],"hash":"bb7eee1be5f10f1b"},{"version":"0.3.3","date":"2025-11-29","date_source":"registry","heading":"[0.3.3] - 2024-XX-XX","url":"https://github.com/miyasuta/cds-softdelete-plugin/blob/main/CHANGELOG.md#033---2024-xx-xx","sections":[{"kind":"fix","heading":"Fixed","items":1}],"hash":"e99b33d77cb722a4"},{"version":"0.3.2","date":"2025-11-28","date_source":"registry","heading":"[0.3.2] - 2024-XX-XX","url":"https://github.com/miyasuta/cds-softdelete-plugin/blob/main/CHANGELOG.md#032---2024-xx-xx","sections":[{"kind":"fix","heading":"Fixed","items":1}],"hash":"a78aff8a4e96f9b5"},{"version":"0.3.1","date":"2025-11-28","date_source":"registry","heading":"[0.3.1] - 2024-XX-XX","url":"https://github.com/miyasuta/cds-softdelete-plugin/blob/main/CHANGELOG.md#031---2024-xx-xx","sections":[{"kind":"fix","heading":"Fixed","items":1}],"hash":"34de2364c7f3d0a7"},{"version":"0.3.0","date":"2025-11-25","date_source":"registry","heading":"[0.3.0] - 2024-XX-XX","url":"https://github.com/miyasuta/cds-softdelete-plugin/blob/main/CHANGELOG.md#030---2024-xx-xx","sections":[{"kind":"feature","heading":"Added","items":1}],"hash":"2048e2f632592ca8"},{"version":"0.2.0","date":"2025-11-23","date_source":"registry","heading":"[0.2.0] - 2024-XX-XX","url":"https://github.com/miyasuta/cds-softdelete-plugin/blob/main/CHANGELOG.md#020---2024-xx-xx","sections":[{"kind":"fix","heading":"Fixed","items":1}],"hash":"eb5a9a23c652fa40"},{"version":"0.1.2","date":"2025-11-22","date_source":"registry","heading":"[0.1.2] - 2024-XX-XX","url":"https://github.com/miyasuta/cds-softdelete-plugin/blob/main/CHANGELOG.md#012---2024-xx-xx","sections":[{"kind":"fix","heading":"Fixed","items":2}],"hash":"727bc51b32987ca3"},{"version":"0.1.1","date":"2025-11-09","date_source":"registry","heading":"[0.1.1] - 2024-XX-XX","url":"https://github.com/miyasuta/cds-softdelete-plugin/blob/main/CHANGELOG.md#011---2024-xx-xx","sections":[{"kind":"fix","heading":"Fixed","items":1}],"hash":"c0f7b32d01ff6490"},{"version":"0.1.0","date":"2025-11-09","date_source":"registry","heading":"[0.1.0] - 2024-XX-XX","url":"https://github.com/miyasuta/cds-softdelete-plugin/blob/main/CHANGELOG.md#010---2024-xx-xx","sections":[{"kind":"feature","heading":"Added","items":2}],"hash":"183413282b5c0f2a"}],"versions":[{"version":"1.0.2","date":"2025-12-12"},{"version":"1.0.1","date":"2025-12-12"},{"version":"1.0.0","date":"2025-12-05"},{"version":"0.3.5","date":"2025-12-04"},{"version":"0.3.4","date":"2025-12-01"},{"version":"0.3.3","date":"2025-11-29"},{"version":"0.3.2","date":"2025-11-28"},{"version":"0.3.1","date":"2025-11-28"},{"version":"0.3.0","date":"2025-11-25"},{"version":"0.2.0","date":"2025-11-23"},{"version":"0.1.2","date":"2025-11-22"},{"version":"0.1.1","date":"2025-11-09"},{"version":"0.1.0","date":"2025-11-09"},{"version":"0.0.4","date":"2025-11-06"},{"version":"0.0.3","date":"2025-11-06"},{"version":"0.0.2","date":"2025-11-06"},{"version":"0.0.1","date":"2025-11-06"}],"crawled_at":"2026-10-25"},"edges":{"maintainers":[{"ref":"actor:mio-yasutake","name":"Mio Yasutake","json":"/actors/mio-yasutake.json"}],"contributors":[{"ref":"actor:mio-yasutake","name":"Mio Yasutake","json":"/actors/mio-yasutake.json"}],"explained_by":[],"alternative_to_this":[{"ref":"artifact:miyasuta-cds-feature-softdelete","name":"cds-feature-softdelete","json":"/artifacts/miyasuta-cds-feature-softdelete.json"}],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}