feat(core-shared): grace-purge soft-deleted rows + boot registration

The retention purge job gated its whole body on activeRetention while
every collection declares only postDeletion, and no app ever called
registerRetentionPurgeJobs — retention was dead end to end (audit
findings A2 + A3). The DSR soft delete now stamps a deletedAt tombstone
on postDeletion collections (kept distinct from processingRestrictedAt
so an Art. 18 restriction never feeds the purge), the job grace-purges
tombstoned rows past postDeletion.duration with the declared action,
core-cms injects the tombstone field + Payload task definitions, and
bindAllProduction enqueues the first purge cycle at boot.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-10 18:02:43 +02:00
parent d09b3e2cdd
commit 413ac0273c
15 changed files with 755 additions and 54 deletions

6
pnpm-lock.yaml generated
View File

@@ -627,6 +627,12 @@ importers:
"@repo/blog":
specifier: workspace:*
version: link:../blog
"@repo/core-audit":
specifier: workspace:*
version: link:../core-audit
"@repo/core-shared":
specifier: workspace:*
version: link:../core-shared
"@repo/marketing-pages":
specifier: workspace:*
version: link:../marketing-pages