a5cd8f0ec4
Tenant-scoped /v1/dsr: POST /erase (self-service right-to-erasure), POST/GET /holds + POST /holds/:id/release. smoke-dsr.mjs proves PII present → hold blocks erase (409) → release → erase redacts the ticket subject in place → re-erase idempotent → cross-tenant cannot see the hold. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>