Skip to content

feat(proposals): proposals DSAR export, erasure, and commercial hold providers (TASK-0059) - #71

Merged
Ediminator merged 2 commits into
mainfrom
feat/task-0059-proposals-dsar-export-erasure-and-commer
Oct 28, 2026
Merged

Ediminator merged 2 commits into
mainfrom
feat/task-0059-proposals-dsar-export-erasure-and-commer

Conversation

@Ediminator

Copy link
Copy Markdown
Owner

Summary

Delivers the GDPR Art. 15 DSAR export provider, GDPR Art. 17 right-to-erasure provider, German commercial/tax statutory retention hold provider (§147 AO, §257 HGB), and automated 12-month retention sweep policy for commercial proposals and quotes (Epic E5 / ADR-0018 §6).

Changes

  • DSAR Export Provider (\src/server/proposals/privacy/export-provider.ts): Exports client proposals, line items, and acceptance metadata in \ownlight.dsar.v1\ JSON and accessible localized HTML tables (EN/DE) while redacting internal tokens/hashes.
  • GDPR Art. 17 Erasure Provider (\src/server/proposals/privacy/erasure-provider.ts): Hard-deletes unaccepted, draft, declined, or expired proposals and their child line items upon client erasure, leaving zero orphaned rows.
  • Statutory Commercial Hold Provider (\src/server/proposals/privacy/hold-provider.ts): Locks accepted proposals under \statutory.commercial_document\ (§147 Abs. 1 Nr. 2 AO, §257 Abs. 1 Nr. 2 HGB) for 10 years starting from the end of the calendar year of acceptance.
  • Retention Policy (\src/server/retention/policy.ts, \src/server/retention/runner.ts): Automatically prunes unaccepted proposals older than 12 months where no project was booked and emits audit events.
  • Zero Allowlist Exemptions: Removed temporary exemptions for \proposals\ and \proposal_line_items\ in \src/server/privacy/erasure/allowlist.ts\ and \src/server/privacy/export/allowlist.ts.

Verification

  • Local Quality Gate (--profile full): PASS across all 13 steps (91.1% statement, 85.96% branch, 86.97% function, 91.46% line coverage).
  • Independent Reviews: Validator (PASS, 0 blocking) and Security & Privacy Auditor (PASS, 0 blocking).
  • Closes TASK-0059.

…ers (TASK-0059)

Signed-off-by: Ediminator <211899731+Ediminator@users.noreply.github.com>
Signed-off-by: Ediminator <211899731+Ediminator@users.noreply.github.com>
@Ediminator
Ediminator merged commit d1f56dd into main Oct 28, 2026
8 checks passed
@Ediminator
Ediminator deleted the feat/task-0059-proposals-dsar-export-erasure-and-commer branch October 28, 2026 10:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant