Files
agentic-dev/docs/compliance/retention-policy.example.yml
Danijel Martinek f77e6ea881 chore(template): clean-slate template snapshot from bb4a0c7
Curated, product-agnostic snapshot of the post-story-04 tree: demo
content deleted, auth-only reference feature, web-next shell, all gates
green. Product-specific docs, ADRs 027-029, PRDs/epics/archive, editor
library traces, and product naming are curated out; generic template
repairs (coverage provider devDeps, root test:coverage script, live
lint fixes, root-only release-please) are kept. See TEMPLATE.md for
provenance, curation list, and usage.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016j8z4VHjedXDTjEDNg7qHK
2026-07-12 20:40:54 +02:00

60 lines
3.1 KiB
YAML

# docs/compliance/retention-policy.example.yml — annotated reference for the retention-policy schema
#
# This file is NOT generated. It shows every possible field that can appear in
# compliance/retention-policy.yml and explains what each field means.
#
# Generated artifact : compliance/retention-policy.yml
# Generator : pnpm compliance:retention-policy
# Source of truth : packages/*/src/integrations/cms/collections/*.ts
# (custom.retention block inside each collection config)
# PII types : packages/core-shared/src/payload/pii-types.ts
collections:
# ── Collection with all optional retention fields populated ───────────────────
# This represents a user-identity collection with the strictest schedule.
profiles:
slug: profiles # matches the Payload collection slug; used as the map key
purgeSchedule:
daily # Required. Cadence for the background purge job.
# Allowed values: "daily" | "weekly" | "monthly"
# Set via custom.retention.purgeSchedule in the collection config.
# Optional. How long to keep an active record before it enters the delete flow.
# Omit if records should live indefinitely until a user-deletion request is received.
activeRetention:
duration: P2Y # ISO 8601 duration (P2Y = 2 years, P1Y = 1 year, P6M = 6 months, P90D = 90 days)
trigger:
from-last-access # RetentionTrigger: when the clock starts
# "from-creation" — counted from record creation date
# "from-last-access" — resets on every authenticated session
# Optional. Long-term cold-storage window before final purge.
# Use when regulatory obligations require records to survive deletion requests for a fixed term
# (e.g. financial records under EU accounting law, seven-year AML retention).
coldArchive:
duration: P7Y
trigger: from-creation # Usually from-creation for regulatory fixed-term obligations
# Required. What happens after a user submits a deletion request (DSR erasure / account closure).
postDeletion:
action:
pseudonymize # RetentionAction: "hard-delete" | "pseudonymize"
# hard-delete — row is permanently removed at the end of the grace period
# pseudonymize — PII columns are replaced with opaque tokens; row is kept
# (use when the record must survive for aggregate analytics)
duration: P30D # Grace period before the action executes (ISO 8601 duration)
trigger: after-deletion # Fixed value — clock starts when the deletion request is accepted
# ── Collection with only the required minimum fields ─────────────────────────
# Most content collections (articles, pages, media) use this minimal form.
articles:
slug: articles
purgeSchedule: monthly # Low-sensitivity content; monthly sweep is sufficient
# postDeletion is required even for non-PII collections.
# For content without PII, hard-delete with a short grace period is the default.
postDeletion:
action: hard-delete
duration: P90D
trigger: after-deletion