Privacy engineering standards
Criteria verified as of August 2026. Re-verify on the web before committing to anything (§8).
1. Scope and triggers
Applies when privacy has to exist inside the system: schemas, pipelines, APIs,
telemetry, non-production environments and models. It covers the inventory and classification of
personal data, minimisation and purpose limitation translated into design decisions, privacy
threat modelling, de-identification techniques and their real honesty, the
data subject's rights implemented as functionality, consent as state,
PII-free telemetry, how AI systems processing personal data fit in, and the technical part
of a breach.
Triggers: "PII", "personal data", "special category", "minimisation", "purpose
limitation", "retention", "erasure", "right to be forgotten", "deletion", "access", "portability",
"rectification", "DSAR", "consent", "banner", "anonymise", "pseudonymise", "k-anonymity",
"l-diversity", "differential privacy", "tokenisation", "masking", "synthetic data",
"test data", "copy production to staging", "crypto-shredding", "per-subject key", "LINDDUN",
"DPIA", "EIPD", "international transfer", "SCC", "Data Privacy Framework", "training with
personal data", "personal data breach", "PII in logs".
Governing principle: the only privacy control that never fails is the data you do not
collect. Everything else — encryption, access control, retention, erasure — is mitigation of a risk
you chose to take on. Corollary: a privacy policy protects nobody; a scheduled DROP,
a destroyed key and a field that was never asked for do.
Not applicable:
grc-compliance-standards: the management framework — ISO/IEC 27701:2025 as a certifiable PIMS,
SoA, risk register, record of processing activities (RoPA) as a governance artifact,
audit evidence, contracts with processors and third-party questionnaires. Here live
the engineering and the verifiable technical control; there, the management system that certifies it.
Arbitration rule: if the question is answered with a signed document, it is grc's; if it is
answered by running a query, a test or a deployment, it is this skill's.
data-governance-quality-standards: the catalogue, data ownership and the corporate
classification scale are theirs, and classifying an asset is a business act signed by its
owner. Here, the technical per-field gate — without class, purpose and retention nothing
gets merged. Precedence rule, because the two gates coexist: theirs decides who classifies
and with which scale, ours decides that no code enters without the label in place. If the owner has
not classified, the field does not pass: the technical gate does not invent the class, it demands it.
data-platform-standards: the translation into the concrete store — retention by partitions and
retention.ms, cache TTLs, the engine's encryption at rest, Kafka tombstones, RLS. Here, the
obligation, the full scope of the erasure and its end-to-end verification (which includes
stores that skill does not cover: search indexes, queues, the data lake, backups and third parties).
backup-recovery-standards: the repository's retention window, its immutability and the
GFS scheme are theirs; here the obligation to erase and its technical implementation.
bcdr-standards: the RTO/RPO and the recovery order derived from the business, and the continuity
plan. Boundary declared on both sides: the obligation to erase is this skill's; the
recovery objective is bcdr's; the concrete retention of the copy is
backup-recovery-standards'. The conflict between the two (§3.5) is resolved by design, not by arguing.
cryptography-pki-standards: the choice of algorithms, key management and custody, KMS/HSM. Here
only the pattern (a key per subject) and the requirement that the destruction be real and auditable.
secrets-management-standards: application secrets; a piece of personal data
is not a secret and is not managed the same way.
identity-access-management-standards: authentication and authorisation of whoever accesses the data,
including verifying the identity of the person requesting a right.
observability-standards: the telemetry pipeline, sampling and log retention. Here, what must not
enter it and how that is checked.
appsec-standards: STRIDE and vulnerability classes. LINDDUN complements STRIDE, it does not
replace it: a system can be secure and at the same time abusive with the data (§3.2).
incident-management-standards and incident-response-forensics-standards: governance and technical
response to the incident. Here, the assessment of the breach from the data subject's point of view and what
engineering must be able to answer within hours (§5). The criterion for notifying belongs to legal/DPO.
api-design-standards, the language skills and kubernetes-standards/cicd-standards: the
contract, the code and the pipeline the data flows through.
ai-governance-standards: governance of the AI system — model
risk, evaluation, technical documentation and provider obligations under the AI Act. Here, the
privacy of the data that feeds it: the lawful basis for training, memorisation and
extraction, and rights over an already-trained model.
technical-hiring-standards: the design of the selection process, its rubric and its
validity are theirs; the personal data of the applications is ours — lawful basis,
minimisation, retention period and effective erasure across every copy, including the one in the
applicant tracking system and the one in the interviewers' mailboxes. A hard precondition both
uphold: a selection process processes personal data of people who are neither customers nor
employees, and most organisations have never set its erasure deadline.
This is not legal advice. It sets engineering criteria for building systems that
comply; the lawful basis, the legal risk assessment and the decision to notify are set by
legal/DPO. When this skill says "verify it", that is exactly what it means.
2. Default decisions
Verify on the web every standard, version and regulatory status before pinning it in a real project
(§8). This is the catalogue domain with the most volatile facts: those in this table are from
August 2026 and some were in active motion when it was written.
| Decision |
Default |
Justifiable alternative / Forbidden |
| Privacy threat modelling |
LINDDUN alongside STRIDE, not in its place. Current variants: GO (card deck, lightweight analysis), PRO (systematic over a DFD), MAESTRO (model-driven) |
Current categories: Linking, Identifying, Non-repudiation, Detecting, Data Disclosure, Unawareness, Non-compliance. Citing the old breakdown (linkability, identifiability, …, disclosure of information) is a frequent error: the official site already uses the new one |
| Privacy risk framework |
NIST Privacy Framework aligned with CSF 2.0 |
Status as of Aug 2026: v1.1 still had no confirmed final publication (IPD Apr 2025; NIST announced final "in 2026"). Cite the edition you verify, not the one you remember (§8) |
| Unit of design |
The data subject, not the table: every piece of personal data must be locatable, exportable and destructible per subject across every store |
Designs where a person's data can only be found by scanning: that is an erasure that will not be deliverable |
| Retention |
Scheduled automatic deletion, with an owner and an alert if it does not run |
"Documented" retention with no job enforcing it = there is no retention |
| De-identification by default |
Pseudonymisation (still personal data) and saying so |
Calling pseudonymised data "anonymised": technically false and an aggravating factor before the AEPD |
| Real anonymisation |
Only with a documented re-identification assessment (singling out, linkability, inference) and control of the publication context |
k-anonymity as a floor, not as a guarantee: it falls to high-dimensional data and auxiliary knowledge; complement it with l-diversity/t-closeness and accept that it is still not a formal guarantee |
| Formal guarantee |
Differential privacy when statistics are published or models are trained over personal data — it is the only framework with a provable guarantee, and it is paid for in utility: an explicit ε budget, accounted for and published |
Applying it without budget accounting (every query spends) or with a high ε "so the numbers come out": that is theatre with Greek notation |
| DP tooling |
OpenDP Library (Harvard/OpenDP) and the SmartNoise SDK; Tumult Analytics; Google DP (Java/Go/C++) as an independent stack |
smartnoise-core is deprecated and redirects to the OpenDP library: do not introduce it into anything new. Verify version and activity before choosing (§8) |
| Erasure at scale in immutable stores |
Crypto-shredding: an encryption key per data subject, with audited destruction of the key |
It is the only practical route in append-only logs, event sourcing, WORM and backups; it does not replace real erasure where real erasure is possible |
| PII detection |
Presidio (analyzer/anonymizer/image-redactor/structured) in CI and in the data pipeline |
It changed owner: it is a community project under the Data Privacy Stack, images at ghcr.io/data-privacy-stack/presidio-*; the ones at mcr.microsoft.com are legacy and are no longer updated. Automatic detection = a net, never a guarantee |
| Data in pre-production |
Synthetic or generated; if that is not viable, pseudonymised with a key irreversible to whoever operates the environment and separate environments |
FORBIDDEN to copy production with real data to staging/QA/development. It is the most common breach and the cheapest to avoid |
| Consent |
Versioned state, with a timestamp, the exact text shown, the policy version and evidence of the action; queryable and revocable via API |
A banner that writes a cookie and nothing else; consent as a boolean with no history |
| Transfers outside the EEA |
A design that is agnostic to the transfer basis: a known region, locatable data and a proven ability to change region or provider |
Verify the status of the EU-US Data Privacy Framework before relying on it (§5 and §8): still in force but under challenge |
| DPIA/EIPD |
Triggered by written technical criteria (§3.6), assessed as an engineering artifact and before the design, not before the launch |
A DPIA written after building the system: that is a justification, not an assessment |
| PII in telemetry |
Forbidden by default, with redaction at the edge and a test that verifies it |
Trusting that "the team will be careful" when doing log.info(user) |
3. Design: privacy as a built property
3.1 Data inventory and taxonomy
Without an inventory there is no minimisation, no erasure and no correct breach notification. The source of
truth is the annotated schema, not a spreadsheet: it is versioned in git, validated in CI and the
documentation is generated from it, not the other way round.
# data-catalog/users.yaml — per-field annotation, verified in CI
table: users
subject: user_person # whose data it is (the key to everything else)
fields:
email:
class: direct_pii # direct identifier
purpose: [authentication, transactional_notification] # NOT "marketing" unless consented
lawful_basis: contract # set by legal/DPO; recorded and enforced here
retention: 30d_after_closure
treatment: per_subject_encryption
signup_ip:
class: indirect_pii
purpose: [antifraud]
retention: 90d
health_category:
class: special_category # Article 9 GDPR: demands reinforced justification and isolation
purpose: [service_delivery]
treatment: per_subject_encryption + restricted_access + access_auditing
destinations: # where it flows: without this, erasure is not complete
- postgres.primary
- postgres.reporting_replica
- opensearch.users_index
- kafka.topic.user_updated
- s3://datalake/bronze/users
- transactional_email_provider # processor: contract + erasure procedure
Hard rules:
- A field without
class, purpose and retention does not get merged. The gate is in §4.
- Special categories (health, biometrics, orientation, beliefs, origin…) and high-impact
identifiers (national ID, children's data, precise geolocation, financial data) live
isolated: their own schema or service, audited access by default, never in a shared
SELECT *, never in a generic domain event.
destinations is the list of places where erasure must happen. If it is incomplete, the erasure lies.
3.2 Minimisation and purpose limitation, applied
- Real minimisation is a schema matter, not a policy one: the field that is not in the table does not leak,
does not get exported, does not get lost and does not have to be erased. For every new field: which concrete
product decision cannot be made without it? If the answer is "just in case", it is not collected.
- Minimum sufficient precision: date of birth → age band; coordinates → municipality;
exact timestamp → truncated hour. Reducing precision is the cheapest minimisation and the one
nobody does.
- Derive and discard: if you only need "of legal age", compute the boolean at the edge and do not
store the date. If you only need "returning customer", do not keep the full history.
- Purpose limitation in the pipeline, not in the contract: the purpose travels with the data
(a column, an event header, a dataset label) and a consumer that does not declare a compatible
purpose does not receive the field. One topic or one dataset per purpose is simpler and more
defensible than a universal table with baroque access rules.
- Analytics and product do not share a store: derived datasets carry surrogate keys with no
PII; the mapping table lives under the strictest access control in the system and with
audited access.
- LINDDUN over the DFD in every new design or data-flow change, in the same session as
STRIDE: STRIDE asks "who can break it?"; LINDDUN asks "what does this system do to
the person even when it works perfectly?". Threats STRIDE does not see: linkability between
sessions, identification by combination, inference, detectability (the mere fact that you exist in
the system already reveals something), lack of transparency. Start with GO (cheap, as a team); move to
PRO/MAESTRO when the system is large or the data sensitive.
3.3 Pseudonymisation, anonymisation and the usual lie
- Pseudonymised is still personal data. Every obligation applies. It reduces risk, not
scope.
- Anonymisation is irreversible and is assessed against the context, including the additional
information available to whoever processes the data and what is reasonably accessible. Almost everything the
industry calls "anonymised" is not: removing the name anonymises nothing when
postcode + date of birth + sex remain, or a geolocation trace, or a purchase pattern.
- k-anonymity: it guarantees that each record is indistinguishable from k-1 others on the
quasi-identifiers you declared. It fails through: high dimensionality (with dozens of attributes, a
useful k is unreachable), homogeneity attacks (everyone in the group shares the sensitive
attribute → l-diversity), distribution skew (t-closeness) and external auxiliary
knowledge, which you cannot bound. Use it as a publishable floor, never as proof of anonymity.
- Differential privacy is the only thing with a formal guarantee: it bounds how much an
observer can learn about a specific individual, regardless of what they already know. Real cost:
noise, and therefore loss of utility in low-frequency queries and tails — accept that before
promising a dashboard. It requires ε budget accounting across all queries
and publications over the same dataset: without accounting, the guarantee disappears by the third
query.
- An AEPD criterion that must be internalised: if what you called "anonymised" allows
re-identification, the processing is personal data processing with all its consequences — and having
documented as "anonymous" what was pseudonymous is an aggravating factor, because it contradicts the
accountability principle. The guidance "Orientaciones y garantías en los procedimientos de anonimización"
additionally requires separation of environments and of roles: whoever works with the anonymised set does not access
the original data or the anonymisation keys.
3.4 Techniques: when to use each one
| Technique |
Used for |
The limit that must be said out loud |
| Tokenisation |
Taking the sensitive data out of the system that uses it (payments, national ID) leaving a worthless token |
The vault concentrates all the risk; its compromise is the maximum incident |
| Per-data-subject encryption |
Enabling crypto-shredding and compartmentalising the blast radius |
It complicates queries and joins: decide at design time which fields are encrypted and which stay in the clear for querying |
| Masking (static/dynamic) |
Reducing exposure in support, BI and operational access |
Dynamic masking does not protect against pg_dump; static masking only works if the source never leaves |
| Synthetic data |
Pre-production, demos, load and performance tests |
A generator trained on production can memorise and leak: generate from the schema and business rules, or apply DP to the generator. And validate that it does exercise the edge cases |
| Aggregation / precision reduction |
Metrics, reports, product signals |
Successive aggregates over the same data allow reconstructing the individual (differential attacks) |
| Differential privacy |
Publishing statistics and training with a guarantee |
Reduced utility; a budget that gets exhausted |
3.5 Data subject rights as functionality
They are endpoints and jobs with an SLA, not a mailbox with a person searching by hand. Minimum
design:
- Access and portability: a complete per-subject export, in a structured and commonly used format,
generated from the catalogue (§3.1) — if a store does not appear in
destinations, it is not exported and
the answer is incomplete. Delivery over an authenticated channel, with an expiring link, without attaching
the dump to an email.
- Rectification: propagable. A value corrected in the DB and not in the search index, the cache,
the CRM and the email provider is an incorrect value still alive in four places.
- Erasure: it is the right that reveals whether the system was well designed. Scope complete and
demonstrable:
- Primary store: real deletion. An eternal soft delete is not erasure.
- Replicas and standbys: it propagates on its own; verify it, do not assume it.
- Caches and sessions: explicit invalidation, do not wait for the TTL.
- Search indexes (OpenSearch/Elastic/vector): explicit deletion; vector indexes
and embeddings are also data derived from the subject.
- Queues and event logs: tombstone + compaction where it exists; where it does not, crypto-shredding.
- Data lake / warehouse: including time travel, snapshots and table versions (Delta,
Iceberg, BigQuery, Snowflake). Shrink the window before deleting or document the residue.
- Logs and telemetry: if they contain PII, the problem is earlier (§5); while it exists, it falls
within scope.
- Processors and third parties: a contractual erasure procedure with verification, not an
email asking for it. Record the date and the confirmation.
- AI models trained on the data: see §5.
- Backups: see below.
- The honest, defensible answer about backups. Deleting a specific record inside an
intact or immutable backup is, in general, impossible without destroying the backup, and destroying it puts
continuity at risk — which is also an obligation. What is defensible is, in this order:
- Design so that you do not need it: per-subject encryption from the start, so that
destroying the key also reaches what gets restored. This is the only complete solution, and
it is a day-1 architecture decision: retrofitting is extremely expensive.
- Bound and document the window: the backup's retention is finite, known, published to the
data subject and actually enforced (the retention and immutability policy is set by
bcdr-standards). The residue extinguishes itself when the window expires.
- Put the data out of use: the backup is not used for anything other than disaster
recovery, with restricted and audited access.
- Reapply the erasure after any restoration: the list of pending erasures is an
operational artifact (a tombstone register with timestamps) that is replicated outside
the backed-up system, and the restore runbook includes reprocessing it as a mandatory and
verified step. A restore that resurrects deleted data is a new breach.
- Say it: inform the data subject of the real extinction deadline. Promising an immediate erasure
that does not happen is worse than explaining the window.
- Verify the status of the regulatory recognition of crypto-shredding as a form of
erasure before relying on it alone: the sources contradict each other (§8). The technical control is
solid; its legal qualification is set by legal/DPO.
- Every rights operation leaves evidence: who requested it, how their identity was verified, which
stores were touched, what was executed, when and with what result — without creating unnecessary
PII again in the evidence record itself.
3.6 Consent and DPIA
Consent = versioned, auditable state, not a banner:
subject · purpose · granularity (one per purpose, no bundles) · version of the exact text shown · timestamp · evidence of the action · channel · state (granted/withdrawn) · full history. Withdrawing must be as easy as granting, with the effect propagated to every consumer
(it is not enough to stop showing the banner). And the rule most often broken: the system must not
be able to process the data for a purpose without valid consent — it is checked in the code,
not in a meeting.
DPIA/EIPD as an engineering artifact, triggered by written technical criteria and assessed
before building. Minimum triggers: large-scale processing of special categories; systematic
observation of publicly accessible areas or of behaviour; profiling
with legal or significant effects; automated decisions; children's or vulnerable people's data;
combining datasets from different origins; the use of new technology
(including AI) over personal data; transfer of sensitive data outside the EEA. Also consult
the list of processing operations the supervisory authority publishes (§8): in Spain the AEPD has its
own list. The DPIA is reviewed when the processing changes — it is not a one-off PDF.
4. Quality gates (they break the build)
In increasing cost order. The first four are automatic:
- Annotated schema: no migration adding or changing a field gets merged without
class,
purpose and retention in the catalogue (§3.1). It is a 40-line linter and it avoids 80% of the
problem.
- PII detection in code and in data: Presidio (or another detector) over (a) the diff, looking for
literal PII, real test data and dumps; (b) samples of logs and events in staging; (c)
new columns, comparing the actual content with the declared class. A field declared
internal with emails inside is a finding that breaks the build. Automatic detection is a
net, not a guarantee: it does not replace explicit annotation.
- A "the erasure really erases" test, across every store: create a synthetic subject,
propagate it through the whole system (DB, replica, cache, index, topic, lake, export to third parties in a
sandbox), run the erasure and search for the identifier in every store. It fails if it appears in
any of them. It is the test no organisation has and the only one that proves the right. Mandatory
extension: repeat the search after a test restore (coordinated with
bcdr-standards) to verify that erasures get reapplied.
- Pre-production without real data: a scheduled scanner over non-production environments looking for
PII patterns and any identifier that exists in production. A hit is an incident,
not a warning. Complementary: a technical (not merely procedural) prohibition of the paths that copy
production downwards — no production read credentials in the staging refresh pipeline.
- Retention test: check that the retention deletion job ran and how many rows
it deleted. A job that runs successfully and deletes 0 rows forever is a broken job. Alert on
missing runs and on the maximum age of the oldest record per table.
- Purpose test: a consumer without a declared compatible purpose does not get the field.
A contract verified in CI, not trust.
- Consent test: consent-based processing fails (it stops, it does not continue) if
there is no valid consent; withdrawal propagates and is verified.
- Privacy review at design time: LINDDUN applied and its threats with mitigation, documented
acceptance or a reasoned "not applicable". Without this, the PR for a new data flow is not approved.
5. Specific fronts
PII in telemetry and logs — where most of it leaks
It is the number one leak point, always by accident: log.debug(request), an exception with the
whole body, a URL with the email in the query string, a user_id that is the email, a metric
label with the identifier (which also blows up cardinality), an APM breadcrumb, a
recorded front-end session.
- Redaction at the edge, not at the destination: it is filtered before leaving the process; relying on the
log backend's redaction leaves the PII in transit and in every intermediate replica.
- An allowlist, not a blocklist: the declared fields get logged; everything else is discarded.
A blocklist always arrives late for the new field.
- Opaque identifiers in logs and traces (never email, phone number or national ID as a correlation key).
- The log's retention = the retention of the data it contains. A log with PII at 400 days is a PII store
at 400 days, and it falls within the scope of erasure (§3.5).
- Session recording and heatmaps: prior consent, field masking by default and
total exclusion of sensitive forms. It is product analytics, not operational
telemetry:
observability-standards does not cover it and it must not be used as an alibi for putting it
in the same pipeline. Its business justification belongs to analytics-bi-standards; the
processing and the lawful basis, here.
International transfers (status Aug 2026, verify it)
- The EU-US Data Privacy Framework adequacy decision is still in force. The General Court
dismissed the Latombe action (T-553/23) on 3 Sep 2025; there is an appeal pending
before the CJEU (C-703/25 P). In addition, the US Supreme Court's judgment in Trump v.
Slaughter (29 Jun 2026), which removed the protection against removal of FTC
commissioners, has reopened the debate about the independence of the supervisor enforcing the framework,
with a formal request from noyb to the Commission to withdraw it, and the PCLOB remains unable to carry out
the reviews EO 14086 itself requires.
- An engineering criterion, not a legal one: the framework has fallen twice (Safe Harbor, Privacy Shield)
and is under challenge for the third time. Design so that its fall is a configuration change, not a
redesign: a known and declared region per dataset, a proven ability to move the processing to
an EEA region, encryption with keys under your own control (and not accessible to the provider), and a
register of sub-processors with their location. A provider being certified does not exempt you from knowing
where your data is and who can access it.
- What legal/DPO decides: the applicable transfer basis (adequacy, SCCs, BCRs, derogations) and
the transfer impact assessment. Engineering provides the real technical map.
Personal data and AI systems
- Training on personal data is processing and needs its own lawful basis; the basis of the
original service does not extend to training by default. Status Aug 2026: the Digital Omnibus
proposal that would introduce an explicit legitimate interest for AI development (new
art. 88c) and would narrow the definition of pseudonymised personal data is still a proposal,
not law in force, with express opposition from the EDPB and the EDPS (Joint Opinion 2/2026,
10 Feb 2026). Do not design assuming it will be adopted.
- A model is not anonymous just by being a model: the EDPB (Opinion 28/2024, 17 Dec 2024) establishes that a
model's anonymity must be demonstrated case by case and that the threshold is high — the likelihood of extracting
personal data, directly or through queries, must be insignificant for each
data subject. Practical consequence: memorisation and extraction are privacy risks that get
tested (membership inference and extraction attacks before publishing the model), not
assumed solved.
- Erasure and models: retraining can be disproportionate, and machine unlearning is not a
mature technique. Defensible routes: training with DP from the start, excluding the data from the next
training cycle with a verifiable procedure, filtering at the output, and documenting the
limitation honestly. Promising a model erasure you cannot execute is worse than
explaining the limit.
- Prompts, RAG and inference logs are personal data stores: they enter the catalogue, the
retention and the scope of erasure. A vector index built over documents with
PII is a PII store.
- AI Act — effective calendar verified as of Aug 2026 (after the Digital Omnibus on AI, adopted
by Parliament on 16 Jun 2026 and by the Council on 29 Jun 2026, in force in July 2026):
2 Aug 2026 the transparency obligations of art. 50 apply (with the exception of art. 50(2)
for systems already on the market on that date); 2 Dec 2026, art. 50(2) (marking/watermarking)
for legacy systems and the new prohibited practices added; 2 Dec 2027, the
high-risk obligations of Annex III (standalone); 2 Aug 2028, those of Annex I
(embedded). The high-risk postponement does not change the GDPR: privacy obligations
still apply today, in full, with or without the AI Act. Declared gap: the dates of the
obligations already applicable before 2026 (prohibitions, AI literacy, GPAI) have not been
cross-checked in this review (§8).
Personal data breach
The process, the roles and the deadlines belong to incident-management-standards and
incident-response-forensics-standards; the criterion for notifying belongs to legal/DPO. What this
skill demands is that engineering can answer in hours, not weeks:
- Which categories of data were in the affected system → it comes from the catalogue (§3.1). Without a
catalogue, the answer is "we do not know", which is the worst of all.
- Approximately how many data subjects, and from which groups (children, patients, employees).
- Whether the data was readable: encryption with a non-compromised key radically changes the risk
assessment for the data subject — and therefore the obligation to communicate to those affected. This is decided
the day the encryption is designed, not the day of the breach.
- What an attacker can do with it: the assessment is of the risk to the person
(impersonation, discrimination, physical harm, financial loss), not to the company.
- Document every breach, whether notified or not. The AEPD publishes guidance and an assessment tool:
use them as a reference, verifying that they are current (§8).
6. Operability
- Internal rights SLA: measure the time from the request to full execution, with a
target well below the legal deadline (which is verified in §8) — the legal deadline is the limit,
not the target. Alert on requests close to expiring.
- Metrics that matter: number of personal data fields per service (target: going down);
% of fields with automated and executed retention; age of the oldest record per table
against its declared retention; rights requests by type and time to serve; PII findings
in logs and in pre-production; accesses to sensitive data per person and their review; ε budget
consumed per published dataset.
- Cost as an argument: every personal field costs encryption, retention, erasure, auditing, breach
risk and rights work. Minimising is the most profitable optimisation in the system and the only
argument that usually convinces whoever asks to "keep it just in case".
- Access review to sensitive data on a cadence and with consequences; bulk exports
with approval and an audit trail (exfiltration control).
- Purging as a first-class operation: the retention job has an owner, a runbook, an alert and a
metric, just like a backup. And like any destructive operation, it is tested in an environment with
representative data before being let loose on production.
7. Sustainability and prohibitions
Cadence: the data catalogue reviewed quarterly (new fields, new destinations,
new providers); the DPIA reviewed on any material change of the processing; a quarterly
regulatory radar — this domain moves by quarters and §8 is what stops you asserting something
expired —; an annual review of the consent texts and of the privacy policy against
what the system actually does.
Privacy debt: every exception (a field that cannot be erased, a store without erasure
coverage, a third party without a verified procedure) is recorded with an owner, a risk and an expiry
date. Without a date, it is an undocumented architecture decision.
FORBIDDEN
- ❌ Copying production data to development, QA or demo. No "temporary" exceptions.
- ❌ Calling a pseudonymised set "anonymised", in the code, in the DPIA or in a contract.
- ❌ Publishing or sharing "anonymised" data without a documented re-identification assessment.
- ❌ Collecting a field "just in case", or keeping more precision than is needed.
- ❌ Retention written in a policy and not implemented as verified automatic deletion.
- ❌ An eternal soft delete as the answer to the right to erasure.
- ❌ An erasure that does not reach replicas, caches, indexes, queues, the lake, logs and processors.
- ❌ Restoring a backup without reapplying the pending erasures.
- ❌ Promising the data subject an immediate erasure the architecture cannot execute.
- ❌ PII in logs, traces, metrics, error messages, URLs or cache keys.
- ❌ Personal identifiers (email, phone, national ID) as a correlation key or as
user_id.
- ❌ Consent as a boolean with no version, no text and no history; bundled consents;
withdrawal harder than granting.
- ❌ Processing data for a purpose other than the declared one because "we already have it".
- ❌ Training models on personal data without their own lawful basis and without a memorisation assessment.
- ❌ Assuming that a model trained on personal data is anonymous.
- ❌ Special categories in the same schema, event or index as ordinary data.
- ❌ A DPIA written after building the system, or never reviewed.
- ❌ Resting the whole design on a specific adequacy decision without a proven ability to change
region or provider.
- ❌ Applying differential privacy without ε budget accounting.
- ❌ Introducing
smartnoise-core (deprecated) or Presidio images from mcr.microsoft.com (no longer
updated) into anything new.
- ❌ Relying on an automatic PII detector alone as a compliance control.
- ❌ Fixing legal deadlines, standard names or regulatory status from memory (§8).
8. Mandatory web verification
Before pinning any standard, deadline, version or status, look it up — do not remember it. Here
inventing is the worst possible error:
- EU-US Data Privacy Framework: whether the adequacy decision is still in force; the status of appeal
C-703/25 P before the CJEU; the consequences of Trump v. Slaughter (29 Jun 2026) on the
independence of the FTC and on the position of the Commission and the EDPB; the status of the PCLOB. It is the
fact most often cited from memory and the most likely to be expired.
- AI Act: the effective calendar after the Digital Omnibus on AI (adopted Jun 2026, in force
Jul 2026). Verified: 2 Aug 2026 art. 50; 2 Dec 2026 art. 50(2) legacy + new prohibitions;
2 Dec 2027 high risk Annex III; 2 Aug 2028 Annex I. Declared gap: the dates of the
obligations prior to 2026 (initial prohibited practices, AI literacy, GPAI) have not been
cross-checked.
- Digital Omnibus — the GDPR/ePrivacy track: as of Aug 2026 it was still at proposal stage (the definition
of pseudonymised personal data, art. 88c on legitimate interest for AI, processing of special
categories for bias detection), with opposition from the EDPB/EDPS (Joint Opinion 2/2026).
Verify whether it has been adopted and in what terms before basing a design on it.
- NIST Privacy Framework: whether the final v1.1 has been published (as of Aug 2026 it was not confirmed;
IPD Apr 2025, new section 1.2.2 on AI and privacy, alignment with CSF 2.0). Cite the verified
edition.
- LINDDUN: the current variants (GO/PRO/MAESTRO) and the current breakdown of the acronym on
linddun.org. Declared gap: the site does not publish a version number; there is an
"Enhanced LINDDUN GO" revision of the cards with no date located.
- EDPB: the final status of the Guidelines 01/2025 on Pseudonymisation (adopted for
consultation on 16 Jan 2025; the final version not confirmed as of Aug 2026) and of the CJEU
judgment in C-413/23 P (EDPS v SRB), whose conclusion on pseudonymised data in the hands of a
third party may change the criterion. Opinion 28/2024 on AI models, and any new
guidance on anonymisation, scraping or erasure.
- Crypto-shredding: a declared gap and a source conflict — it has not been possible to confirm whether the
EDPB (Guidelines 5/2019 on the right to be forgotten) expressly recognises cryptographic
erasure as erasure under Article 17, nor the AEPD's current position. Verify it against a primary
source before relying on it alone.
- AEPD: whether the guidance "Orientaciones y garantías en los procedimientos de anonimización"
and the Guía básica de anonimización are current; the guidance and assessment tool for personal data
breaches and its notification channel; the list of processing operations requiring a DPIA; its criterion
on real data in test environments. Declared gap: it has not been verified whether a later
edition of those guides exists, nor the exact response deadline for rights currently in force — do not cite it
from memory.
- Deadlines: breach notification (Articles 33/34 GDPR) and response to rights — cross-check them with the
incident skills and with the primary source; the legal criterion belongs to legal/DPO.
- Tools before recommending them: Presidio (a community project under the Data Privacy Stack,
2.2.363 of Jun 2026,
presidio-analyzer on PyPI Jul 2026, images at
ghcr.io/data-privacy-stack), the **OpenDP Librar
…(truncated)
1---2name: privacy-engineering-standards3description: Use when privacy must be built into the system rather than written in a policy — PII discovery in source and columns, minimization and purpose limitation by design, automated deletion that actually deletes everywhere, LINDDUN privacy threat modelling (GO/PRO/MAESTRO), NIST Privacy Framework, DPIA/EIPD triggers, k-anonymity, l-diversity, t-closeness and differential privacy budgets (OpenDP, SmartNoise, Tumult, Google DP), tokenization, masking, synthetic test data, Presidio, crypto-shredding with per-data-subject keys, GDPR data subject rights (access, portability, rectification, erasure) implemented as software across every copy, consent as versioned auditable state, PII leaking into logs, traces and metrics, EU-US Data Privacy Framework and international transfer design, personal data in AI training, model memorization and the AI Act, and personal data breach impact assessment.4---56# Privacy engineering standards78Criteria verified as of **August 2026**. Re-verify on the web before committing to anything (§8).910## 1. Scope and triggers1112Applies when privacy has to exist **inside the system**: schemas, pipelines, APIs,13telemetry, non-production environments and models. It covers the inventory and classification of14personal data, minimisation and purpose limitation translated into design decisions, privacy15threat modelling, de-identification techniques and their real honesty, the16data subject's rights implemented as functionality, consent as state,17PII-free telemetry, how AI systems processing personal data fit in, and the technical part18of a breach.1920Triggers: "PII", "personal data", "special category", "minimisation", "purpose21limitation", "retention", "erasure", "right to be forgotten", "deletion", "access", "portability",22"rectification", "DSAR", "consent", "banner", "anonymise", "pseudonymise", "k-anonymity",23"l-diversity", "differential privacy", "tokenisation", "masking", "synthetic data",24"test data", "copy production to staging", "crypto-shredding", "per-subject key", "LINDDUN",25"DPIA", "EIPD", "international transfer", "SCC", "Data Privacy Framework", "training with26personal data", "personal data breach", "PII in logs".2728**Governing principle**: **the only privacy control that never fails is the data you do not29collect.** Everything else — encryption, access control, retention, erasure — is mitigation of a risk30you chose to take on. Corollary: a privacy policy protects nobody; a scheduled `DROP`,31a destroyed key and a field that was never asked for do.3233**Not applicable**:34- `grc-compliance-standards`: the **management framework** — ISO/IEC 27701:2025 as a certifiable PIMS,35 SoA, risk register, record of processing activities (RoPA) as a governance artifact,36 audit evidence, contracts with processors and third-party questionnaires. Here live37 **the engineering and the verifiable technical control**; there, the management system that certifies it.38 Arbitration rule: if the question is answered with a signed document, it is `grc`'s; if it is39 answered by running a query, a test or a deployment, it is this skill's.40- `data-governance-quality-standards`: **the catalogue, data ownership and the corporate41 classification scale are theirs**, and classifying an asset is a business act signed by its42 owner. Here, **the technical per-field gate** — without `class`, `purpose` and `retention` nothing43 gets merged. **Precedence rule, because the two gates coexist**: theirs decides *who* classifies44 and with which scale, ours decides *that no code enters without the label in place*. If the owner has45 not classified, the field does not pass: the technical gate does not invent the class, it demands it.46- `data-platform-standards`: the translation into **the concrete store** — retention by partitions and47 `retention.ms`, cache TTLs, the engine's encryption at rest, Kafka tombstones, RLS. Here, the48 **obligation, the full scope of the erasure and its end-to-end verification** (which includes49 stores that skill does not cover: search indexes, queues, the data lake, backups and third parties).50- `backup-recovery-standards`: **the repository's retention window, its immutability and the51 GFS scheme are theirs**; here the obligation to erase and its technical implementation.52- `bcdr-standards`: **the RTO/RPO and the recovery order** derived from the business, and the continuity53 plan. Boundary declared on both sides: the obligation to erase is this skill's; the54 recovery objective is `bcdr`'s; **the concrete retention of the copy is55 `backup-recovery-standards`'**. The conflict between the two (§3.5) is resolved by design, not by arguing.56- `cryptography-pki-standards`: the choice of algorithms, key management and custody, KMS/HSM. Here57 only the **pattern** (a key per subject) and the requirement that the destruction be real and auditable.58- `secrets-management-standards`: application secrets; a piece of personal data59 is not a secret and is not managed the same way.60- `identity-access-management-standards`: authentication and authorisation of whoever accesses the data,61 including verifying the identity of the person requesting a right.62- `observability-standards`: the telemetry pipeline, sampling and log retention. Here, **what must not63 enter** it and how that is checked.64- `appsec-standards`: STRIDE and vulnerability classes. LINDDUN **complements** STRIDE, it does not65 replace it: a system can be secure and at the same time abusive with the data (§3.2).66- `incident-management-standards` and `incident-response-forensics-standards`: governance and technical67 response to the incident. Here, the **assessment of the breach from the data subject's point of view** and what68 engineering must be able to answer within hours (§5). The criterion for notifying belongs to legal/DPO.69- `api-design-standards`, the language skills and `kubernetes-standards`/`cicd-standards`: the70 contract, the code and the pipeline the data flows through.71- `ai-governance-standards`: governance of the AI system — model72 risk, evaluation, technical documentation and provider obligations under the AI Act. Here, the73 **privacy of the data that feeds it**: the lawful basis for training, memorisation and74 extraction, and rights over an already-trained model.75- `technical-hiring-standards`: the design of the selection process, its rubric and its76 validity are theirs; **the personal data of the applications is ours** — lawful basis,77 minimisation, retention period and **effective erasure across every copy, including the one in the78 applicant tracking system and the one in the interviewers' mailboxes**. A hard precondition both79 uphold: **a selection process processes personal data of people who are neither customers nor80 employees**, and most organisations have never set its erasure deadline.8182**This is not legal advice.** It sets engineering criteria for building systems that83comply; the lawful basis, the legal risk assessment and the decision to notify are set by84legal/DPO. When this skill says "verify it", that is exactly what it means.8586## 2. Default decisions8788> Verify on the web every standard, version and regulatory status before pinning it in a real project89> (§8). **This is the catalogue domain with the most volatile facts**: those in this table are from90> August 2026 and some were in active motion when it was written.9192| Decision | Default | Justifiable alternative / Forbidden |93|---|---|---|94| Privacy threat modelling | **LINDDUN** alongside STRIDE, not in its place. Current variants: **GO** (card deck, lightweight analysis), **PRO** (systematic over a DFD), **MAESTRO** (model-driven) | Current categories: **Linking, Identifying, Non-repudiation, Detecting, Data Disclosure, Unawareness, Non-compliance**. Citing the old breakdown (*linkability, identifiability, …, disclosure of information*) is a frequent error: the official site already uses the new one |95| Privacy risk framework | **NIST Privacy Framework** aligned with CSF 2.0 | **Status as of Aug 2026: v1.1 still had no confirmed final publication** (IPD Apr 2025; NIST announced final "in 2026"). Cite the edition you verify, not the one you remember (§8) |96| Unit of design | **The data subject**, not the table: every piece of personal data must be locatable, exportable and destructible **per subject** across every store | Designs where a person's data can only be found by scanning: that is an erasure that will not be deliverable |97| Retention | **Scheduled automatic deletion**, with an owner and an alert if it does not run | "Documented" retention with no job enforcing it = there is no retention |98| De-identification by default | **Pseudonymisation** (still personal data) and saying so | Calling pseudonymised data "anonymised": technically false and an **aggravating factor** before the AEPD |99| Real anonymisation | Only with a **documented re-identification assessment** (singling out, linkability, inference) and control of the publication context | k-anonymity **as a floor, not as a guarantee**: it falls to high-dimensional data and auxiliary knowledge; complement it with l-diversity/t-closeness and accept that it is still not a formal guarantee |100| Formal guarantee | **Differential privacy** when statistics are published or models are trained over personal data — it is the only framework with a provable guarantee, and **it is paid for in utility**: an explicit ε budget, accounted for and published | Applying it without budget accounting (every query spends) or with a high ε "so the numbers come out": that is theatre with Greek notation |101| DP tooling | **OpenDP Library** (Harvard/OpenDP) and the **SmartNoise SDK**; **Tumult Analytics**; **Google DP** (Java/Go/C++) as an independent stack | **`smartnoise-core` is deprecated** and redirects to the OpenDP library: do not introduce it into anything new. Verify version and activity before choosing (§8) |102| Erasure at scale in immutable stores | **Crypto-shredding**: an encryption key **per data subject**, with audited destruction of the key | It is the only practical route in append-only logs, event sourcing, WORM and backups; it does **not** replace real erasure where real erasure is possible |103| PII detection | **Presidio** (analyzer/anonymizer/image-redactor/structured) in CI and in the data pipeline | **It changed owner**: it is a **community project under the *Data Privacy Stack***, images at `ghcr.io/data-privacy-stack/presidio-*`; the ones at `mcr.microsoft.com` are legacy and **are no longer updated**. Automatic detection = a net, never a guarantee |104| Data in pre-production | **Synthetic or generated**; if that is not viable, pseudonymised with a key irreversible to whoever operates the environment and **separate environments** | **FORBIDDEN** to copy production with real data to staging/QA/development. It is the most common breach and the cheapest to avoid |105| Consent | **Versioned state, with a timestamp, the exact text shown, the policy version and evidence of the action**; queryable and revocable via API | A banner that writes a cookie and nothing else; consent as a *boolean* with no history |106| Transfers outside the EEA | A design that is **agnostic to the transfer basis**: a known region, locatable data and a **proven ability to change region or provider** | Verify the status of the **EU-US Data Privacy Framework** before relying on it (§5 and §8): still in force but under challenge |107| DPIA/EIPD | **Triggered by written technical criteria** (§3.6), assessed as an engineering artifact and **before** the design, not before the launch | A DPIA written after building the system: that is a justification, not an assessment |108| PII in telemetry | **Forbidden by default**, with redaction at the edge and a test that verifies it | Trusting that "the team will be careful" when doing `log.info(user)` |109110## 3. Design: privacy as a built property111112### 3.1 Data inventory and taxonomy113114Without an inventory there is no minimisation, no erasure and no correct breach notification. **The source of115truth is the annotated schema, not a spreadsheet**: it is versioned in git, validated in CI and the116documentation is generated from it, not the other way round.117118```yaml119# data-catalog/users.yaml — per-field annotation, verified in CI120table: users121subject: user_person # whose data it is (the key to everything else)122fields:123 email:124 class: direct_pii # direct identifier125 purpose: [authentication, transactional_notification] # NOT "marketing" unless consented126 lawful_basis: contract # set by legal/DPO; recorded and enforced here127 retention: 30d_after_closure128 treatment: per_subject_encryption129 signup_ip:130 class: indirect_pii131 purpose: [antifraud]132 retention: 90d133 health_category:134 class: special_category # Article 9 GDPR: demands reinforced justification and isolation135 purpose: [service_delivery]136 treatment: per_subject_encryption + restricted_access + access_auditing137destinations: # where it flows: without this, erasure is not complete138 - postgres.primary139 - postgres.reporting_replica140 - opensearch.users_index141 - kafka.topic.user_updated142 - s3://datalake/bronze/users143 - transactional_email_provider # processor: contract + erasure procedure144```145146Hard rules:147- **A field without `class`, `purpose` and `retention` does not get merged.** The gate is in §4.148- **Special categories** (health, biometrics, orientation, beliefs, origin…) and high-impact149 identifiers (national ID, children's data, precise geolocation, financial data) live150 **isolated**: their own schema or service, audited access by default, never in a shared151 `SELECT *`, never in a generic domain event.152- **`destinations` is the list of places where erasure must happen.** If it is incomplete, the erasure lies.153154### 3.2 Minimisation and purpose limitation, applied155156- **Real minimisation is a schema matter, not a policy one**: the field that is not in the table does not leak,157 does not get exported, does not get lost and does not have to be erased. For every new field: *which concrete158 product decision cannot be made without it?* If the answer is "just in case", it is not collected.159- **Minimum sufficient precision**: date of birth → age band; coordinates → municipality;160 exact timestamp → truncated hour. Reducing precision is the cheapest minimisation and the one161 nobody does.162- **Derive and discard**: if you only need "of legal age", compute the boolean at the edge and do not163 store the date. If you only need "returning customer", do not keep the full history.164- **Purpose limitation in the pipeline, not in the contract**: the purpose travels with the data165 (a column, an event header, a dataset label) and **a consumer that does not declare a compatible166 purpose does not receive the field**. One topic or one dataset per purpose is simpler and more167 defensible than a universal table with baroque access rules.168- **Analytics and product do not share a store**: derived datasets carry surrogate keys with no169 PII; the mapping table lives under the strictest access control in the system and with170 audited access.171- **LINDDUN over the DFD** in every new design or data-flow change, in the same session as172 STRIDE: STRIDE asks *"who can break it?"*; LINDDUN asks *"what does this system do to173 the person even when it works perfectly?"*. Threats STRIDE does **not** see: linkability between174 sessions, identification by combination, inference, detectability (the mere fact that you exist in175 the system already reveals something), lack of transparency. Start with **GO** (cheap, as a team); move to176 **PRO/MAESTRO** when the system is large or the data sensitive.177178### 3.3 Pseudonymisation, anonymisation and the usual lie179180- **Pseudonymised is still personal data.** Every obligation applies. It reduces risk, not181 scope.182- **Anonymisation is irreversible and is assessed against the context**, including the additional183 information available to whoever processes the data and what is reasonably accessible. Almost everything the184 industry calls "anonymised" is not: removing the name anonymises nothing when185 postcode + date of birth + sex remain, or a geolocation trace, or a purchase pattern.186- **k-anonymity**: it guarantees that each record is indistinguishable from k-1 others **on the187 quasi-identifiers you declared**. It fails through: high dimensionality (with dozens of attributes, a188 useful k is unreachable), homogeneity attacks (everyone in the group shares the sensitive189 attribute → **l-diversity**), distribution skew (**t-closeness**) and external auxiliary190 knowledge, which you cannot bound. Use it as a publishable floor, never as proof of anonymity.191- **Differential privacy** is the only thing with a formal guarantee: it bounds how much an192 observer can learn about a specific individual, **regardless of what they already know**. Real cost:193 noise, and therefore loss of utility in low-frequency queries and tails — accept that before194 promising a dashboard. It requires **ε budget accounting** across all queries195 and publications over the same dataset: without accounting, the guarantee disappears by the third196 query.197- **An AEPD criterion that must be internalised**: if what you called "anonymised" allows198 re-identification, the processing is personal data processing with all its consequences — and having199 documented as "anonymous" what was pseudonymous is an aggravating factor, because it contradicts the200 accountability principle. The guidance **"Orientaciones y garantías en los procedimientos de anonimización"**201 additionally requires **separation of environments and of roles**: whoever works with the anonymised set does not access202 the original data or the anonymisation keys.203204### 3.4 Techniques: when to use each one205206| Technique | Used for | The limit that must be said out loud |207|---|---|---|208| **Tokenisation** | Taking the sensitive data out of the system that uses it (payments, national ID) leaving a worthless token | The vault concentrates all the risk; its compromise is the maximum incident |209| **Per-data-subject encryption** | Enabling **crypto-shredding** and compartmentalising the blast radius | It complicates queries and joins: decide **at design time** which fields are encrypted and which stay in the clear for querying |210| **Masking** (static/dynamic) | Reducing exposure in support, BI and operational access | **Dynamic** masking does not protect against `pg_dump`; static masking only works if the source never leaves |211| **Synthetic data** | Pre-production, demos, load and performance tests | A generator trained on production **can memorise and leak**: generate from the schema and business rules, or apply DP to the generator. And validate that it does exercise the edge cases |212| **Aggregation / precision reduction** | Metrics, reports, product signals | Successive aggregates over the same data allow reconstructing the individual (differential attacks) |213| **Differential privacy** | Publishing statistics and training with a guarantee | Reduced utility; a budget that gets exhausted |214215### 3.5 Data subject rights as functionality216217They are **endpoints and jobs with an SLA**, not a mailbox with a person searching by hand. Minimum218design:219220- **Access and portability**: a complete per-subject export, in a structured and commonly used format,221 generated **from the catalogue** (§3.1) — if a store does not appear in `destinations`, it is not exported and222 the answer is incomplete. Delivery over an authenticated channel, with an expiring link, without attaching223 the dump to an email.224- **Rectification**: propagable. A value corrected in the DB and not in the search index, the cache,225 the CRM and the email provider is an incorrect value still alive in four places.226- **Erasure**: it is the right that reveals whether the system was well designed. Scope **complete and227 demonstrable**:228 1. **Primary store**: real deletion. An eternal *soft delete* **is not erasure**.229 2. **Replicas and standbys**: it propagates on its own; verify it, do not assume it.230 3. **Caches and sessions**: explicit invalidation, do not wait for the TTL.231 4. **Search indexes** (OpenSearch/Elastic/vector): explicit deletion; vector indexes232 and embeddings are **also** data derived from the subject.233 5. **Queues and event logs**: tombstone + compaction where it exists; where it does not, crypto-shredding.234 6. **Data lake / warehouse**: including *time travel*, snapshots and table versions (Delta,235 Iceberg, BigQuery, Snowflake). Shrink the window **before** deleting or document the residue.236 7. **Logs and telemetry**: if they contain PII, the problem is earlier (§5); while it exists, it falls237 within scope.238 8. **Processors and third parties**: a contractual erasure procedure **with verification**, not an239 email asking for it. Record the date and the confirmation.240 9. **AI models trained on the data**: see §5.241 10. **Backups**: see below.242- **The honest, defensible answer about backups.** Deleting a specific record inside an243 intact or immutable backup is, in general, **impossible without destroying the backup**, and destroying it puts244 continuity at risk — which is also an obligation. What is defensible is, in this order:245 1. **Design so that you do not need it**: per-subject encryption from the start, so that246 destroying the key also reaches what gets restored. This is the only complete solution, and247 it is a day-1 architecture decision: retrofitting is extremely expensive.248 2. **Bound and document the window**: the backup's retention is finite, known, published to the249 data subject and **actually enforced** (the retention and immutability policy is set by250 `bcdr-standards`). The residue extinguishes itself when the window expires.251 3. **Put the data out of use**: the backup is not used for anything other than disaster252 recovery, with restricted and audited access.253 4. **Reapply the erasure after any restoration**: the list of pending erasures is an254 operational artifact (a *tombstone* register with timestamps) that is replicated **outside**255 the backed-up system, and the restore runbook includes reprocessing it as a mandatory and256 verified step. A restore that resurrects deleted data is a new breach.257 5. **Say it**: inform the data subject of the real extinction deadline. Promising an immediate erasure258 that does not happen is worse than explaining the window.259 - **Verify the status of the regulatory recognition of crypto-shredding** as a form of260 erasure before relying on it alone: the sources contradict each other (§8). The technical control is261 solid; its legal qualification is set by legal/DPO.262- **Every rights operation leaves evidence**: who requested it, how their identity was verified, which263 stores were touched, what was executed, when and with what result — **without creating unnecessary264 PII again** in the evidence record itself.265266### 3.6 Consent and DPIA267268**Consent** = versioned, auditable state, not a banner:269`subject · purpose · granularity (one per purpose, no bundles) · version of the exact text270shown · timestamp · evidence of the action · channel · state (granted/withdrawn) · full271history`. Withdrawing must be **as easy as granting**, with the effect propagated to every consumer272(it is not enough to stop showing the banner). And the rule most often broken: **the system must not273be able to process the data for a purpose without valid consent** — it is checked in the code,274not in a meeting.275276**DPIA/EIPD as an engineering artifact**, triggered by written technical criteria and assessed277**before** building. Minimum triggers: large-scale processing of special categories; systematic278observation of publicly accessible areas or of behaviour; profiling279with legal or significant effects; automated decisions; children's or vulnerable people's data;280combining datasets from different origins; the use of new technology281(including AI) over personal data; transfer of sensitive data outside the EEA. **Also consult282the list of processing operations the supervisory authority publishes** (§8): in Spain the AEPD has its283own list. The DPIA is **reviewed** when the processing changes — it is not a one-off PDF.284285## 4. Quality gates (they break the build)286287In increasing cost order. The first four are automatic:2882891. **Annotated schema**: no migration adding or changing a field gets merged without `class`,290 `purpose` and `retention` in the catalogue (§3.1). It is a 40-line *linter* and it avoids 80% of the291 problem.2922. **PII detection in code and in data**: Presidio (or another detector) over (a) the diff, looking for293 literal PII, real test data and dumps; (b) samples of logs and events in staging; (c)294 new columns, comparing the actual content with the declared class. A field declared295 `internal` with emails inside is a finding that breaks the build. **Automatic detection is a296 net, not a guarantee**: it does not replace explicit annotation.2973. **A "the erasure really erases" test**, across every store: create a synthetic subject,298 propagate it through the whole system (DB, replica, cache, index, topic, lake, export to third parties in a299 *sandbox*), run the erasure and **search for the identifier in every store**. It fails if it appears in300 any of them. It is the test no organisation has and the only one that proves the right. Mandatory301 extension: repeat the search **after a test restore** (coordinated with302 `bcdr-standards`) to verify that erasures get reapplied.3034. **Pre-production without real data**: a scheduled scanner over non-production environments looking for304 PII patterns and **any identifier that exists in production**. A hit is an incident,305 not a warning. Complementary: a technical (not merely procedural) prohibition of the paths that copy306 production downwards — no production read credentials in the staging refresh pipeline.3075. **Retention test**: check that the retention deletion job ran and **how many rows308 it deleted**. A job that runs successfully and deletes 0 rows forever is a broken job. Alert on309 missing runs and on the maximum age of the oldest record per table.3106. **Purpose test**: a consumer without a declared compatible purpose does not get the field.311 A contract verified in CI, not trust.3127. **Consent test**: consent-based processing fails (it stops, it does not continue) if313 there is no valid consent; withdrawal propagates and is verified.3148. **Privacy review at design time**: LINDDUN applied and its threats with mitigation, documented315 acceptance or a reasoned "not applicable". Without this, the PR for a new data flow is not approved.316317## 5. Specific fronts318319### PII in telemetry and logs — where most of it leaks320321It is the number one leak point, always by accident: `log.debug(request)`, an exception with the322whole body, a URL with the email in the *query string*, a `user_id` that is the email, a metric323label with the identifier (which also blows up cardinality), an APM *breadcrumb*, a324recorded front-end session.325326- **Redaction at the edge, not at the destination**: it is filtered before leaving the process; relying on the327 log backend's redaction leaves the PII in transit and in every intermediate replica.328- **An allowlist, not a blocklist**: the declared fields get logged; everything else is discarded.329 A blocklist always arrives late for the new field.330- **Opaque** identifiers in logs and traces (never email, phone number or national ID as a correlation key).331- **The log's retention = the retention of the data it contains.** A log with PII at 400 days is a PII store332 at 400 days, and it falls within the scope of erasure (§3.5).333- Session recording and heatmaps: prior consent, field masking by default and334 total exclusion of sensitive forms. **It is product analytics, not operational335 telemetry**: `observability-standards` does not cover it and it must not be used as an alibi for putting it336 in the same pipeline. Its business justification belongs to `analytics-bi-standards`; the337 processing and the lawful basis, here.338339### International transfers (status Aug 2026, **verify it**)340341- The **EU-US Data Privacy Framework adequacy decision is still in force**. The General Court342 dismissed the Latombe action (T-553/23) on **3 Sep 2025**; there is an **appeal pending343 before the CJEU (C-703/25 P)**. In addition, the US Supreme Court's judgment in *Trump v.344 Slaughter* (**29 Jun 2026**), which removed the protection against removal of FTC345 commissioners, has reopened the debate about the independence of the supervisor enforcing the framework,346 with a formal request from noyb to the Commission to withdraw it, and the PCLOB remains unable to carry out347 the reviews EO 14086 itself requires.348- **An engineering criterion, not a legal one**: the framework has fallen twice (Safe Harbor, Privacy Shield)349 and is under challenge for the third time. **Design so that its fall is a configuration change, not a350 redesign**: a known and declared region per dataset, a proven ability to move the processing to351 an EEA region, encryption with keys under your own control (and not accessible to the provider), and a352 register of sub-processors with their location. A provider being certified does not exempt you from knowing353 **where your data is and who can access it**.354- What legal/DPO decides: the applicable transfer basis (adequacy, SCCs, BCRs, derogations) and355 the transfer impact assessment. Engineering provides the real technical map.356357### Personal data and AI systems358359- **Training on personal data is processing** and needs its own lawful basis; the basis of the360 original service **does not extend** to training by default. Status Aug 2026: the *Digital Omnibus*361 proposal that would introduce an explicit legitimate interest for AI development (new362 art. 88c) and would narrow the definition of pseudonymised personal data **is still a proposal,363 not law in force**, with express opposition from the EDPB and the EDPS (Joint Opinion 2/2026,364 10 Feb 2026). **Do not design assuming it will be adopted.**365- **A model is not anonymous just by being a model**: the EDPB (Opinion 28/2024, 17 Dec 2024) establishes that a366 model's anonymity must be demonstrated case by case and that the threshold is high — the likelihood of extracting367 personal data, directly or through queries, must be insignificant for **each**368 data subject. Practical consequence: memorisation and extraction are privacy risks that get369 **tested** (membership inference and extraction attacks before publishing the model), not370 assumed solved.371- **Erasure and models**: retraining can be disproportionate, and *machine unlearning* is not a372 mature technique. Defensible routes: training with DP from the start, excluding the data from the next373 training cycle with a verifiable procedure, filtering at the output, and **documenting the374 limitation honestly**. Promising a model erasure you cannot execute is worse than375 explaining the limit.376- **Prompts, RAG and inference logs are personal data stores**: they enter the catalogue, the377 retention and the scope of erasure. A vector index built over documents with378 PII is a PII store.379- **AI Act — effective calendar verified as of Aug 2026** (after the *Digital Omnibus* on AI, adopted380 by Parliament on 16 Jun 2026 and by the Council on 29 Jun 2026, in force in July 2026):381 **2 Aug 2026** the transparency obligations of art. 50 apply (with the exception of art. 50(2)382 for systems already on the market on that date); **2 Dec 2026**, art. 50(2) (marking/watermarking)383 for legacy systems and the new prohibited practices added; **2 Dec 2027**, the384 high-risk obligations of Annex III (standalone); **2 Aug 2028**, those of Annex I385 (embedded). **The high-risk postponement does not change the GDPR**: privacy obligations386 still apply today, in full, with or without the AI Act. **Declared gap**: the dates of the387 obligations already applicable before 2026 (prohibitions, AI literacy, GPAI) have not been388 cross-checked in this review (§8).389390### Personal data breach391392The process, the roles and the deadlines belong to `incident-management-standards` and393`incident-response-forensics-standards`; **the criterion for notifying belongs to legal/DPO**. What this394skill demands is that engineering can answer **in hours, not weeks**:395396- **Which categories of data** were in the affected system → it comes from the catalogue (§3.1). Without a397 catalogue, the answer is "we do not know", which is the worst of all.398- **Approximately how many data subjects**, and from which groups (children, patients, employees).399- **Whether the data was readable**: encryption with a non-compromised key radically changes the risk400 assessment for the data subject — and therefore the obligation to communicate to those affected. This is decided401 the day the encryption is designed, not the day of the breach.402- **What an attacker can do with it**: the assessment is of the risk **to the person**403 (impersonation, discrimination, physical harm, financial loss), not to the company.404- **Document every breach**, whether notified or not. The AEPD publishes guidance and an assessment tool:405 use them as a reference, verifying that they are current (§8).406407## 6. Operability408409- **Internal rights SLA**: measure the time from the request to full execution, with a410 target **well below** the legal deadline (which is verified in §8) — the legal deadline is the limit,411 not the target. Alert on requests close to expiring.412- **Metrics that matter**: number of personal data fields per service (**target: going down**);413 % of fields with automated and executed retention; age of the oldest record per table414 against its declared retention; rights requests by type and time to serve; PII findings415 in logs and in pre-production; accesses to sensitive data per person and their review; ε budget416 consumed per published dataset.417- **Cost as an argument**: every personal field costs encryption, retention, erasure, auditing, breach418 risk and rights work. Minimising is the most profitable optimisation in the system and the only419 argument that usually convinces whoever asks to "keep it just in case".420- **Access review** to sensitive data on a cadence and with consequences; bulk exports421 with approval and an audit trail (exfiltration control).422- **Purging as a first-class operation**: the retention job has an owner, a runbook, an alert and a423 metric, just like a backup. And like any destructive operation, it is tested in an environment with424 representative data before being let loose on production.425426## 7. Sustainability and prohibitions427428**Cadence**: the data catalogue reviewed quarterly (new fields, new destinations,429new providers); the DPIA reviewed on any material change of the processing; a **quarterly430regulatory radar** — this domain moves by quarters and §8 is what stops you asserting something431expired —; an annual review of the consent texts and of the privacy policy against432what the system **actually** does.433434**Privacy debt**: every exception (a field that cannot be erased, a store without erasure435coverage, a third party without a verified procedure) is recorded with an owner, a risk and an **expiry436date**. Without a date, it is an undocumented architecture decision.437438**FORBIDDEN**439- ❌ Copying production data to development, QA or demo. No "temporary" exceptions.440- ❌ Calling a pseudonymised set "anonymised", in the code, in the DPIA or in a contract.441- ❌ Publishing or sharing "anonymised" data without a documented re-identification assessment.442- ❌ Collecting a field "just in case", or keeping more precision than is needed.443- ❌ Retention written in a policy and not implemented as verified automatic deletion.444- ❌ An eternal *soft delete* as the answer to the right to erasure.445- ❌ An erasure that does not reach replicas, caches, indexes, queues, the lake, logs and processors.446- ❌ Restoring a backup without reapplying the pending erasures.447- ❌ Promising the data subject an immediate erasure the architecture cannot execute.448- ❌ PII in logs, traces, metrics, error messages, URLs or cache keys.449- ❌ Personal identifiers (email, phone, national ID) as a correlation key or as `user_id`.450- ❌ Consent as a boolean with no version, no text and no history; bundled consents;451 withdrawal harder than granting.452- ❌ Processing data for a purpose other than the declared one because "we already have it".453- ❌ Training models on personal data without their own lawful basis and without a memorisation assessment.454- ❌ Assuming that a model trained on personal data is anonymous.455- ❌ Special categories in the same schema, event or index as ordinary data.456- ❌ A DPIA written after building the system, or never reviewed.457- ❌ Resting the whole design on a specific adequacy decision without a proven ability to change458 region or provider.459- ❌ Applying differential privacy without ε budget accounting.460- ❌ Introducing `smartnoise-core` (deprecated) or Presidio images from `mcr.microsoft.com` (no longer461 updated) into anything new.462- ❌ Relying on an automatic PII detector alone as a compliance control.463- ❌ Fixing legal deadlines, standard names or regulatory status **from memory** (§8).464465## 8. Mandatory web verification466467Before pinning any standard, deadline, version or status, **look it up — do not remember it**. Here468inventing is the worst possible error:4694701. **EU-US Data Privacy Framework**: whether the adequacy decision is still in force; the status of appeal471 **C-703/25 P** before the CJEU; the consequences of *Trump v. Slaughter* (29 Jun 2026) on the472 independence of the FTC and on the position of the Commission and the EDPB; the status of the PCLOB. It is the473 fact most often cited from memory and the most likely to be expired.4742. **AI Act**: the effective calendar after the *Digital Omnibus* on AI (adopted Jun 2026, in force475 Jul 2026). Verified: 2 Aug 2026 art. 50; 2 Dec 2026 art. 50(2) legacy + new prohibitions;476 2 Dec 2027 high risk Annex III; 2 Aug 2028 Annex I. **Declared gap**: the dates of the477 obligations prior to 2026 (initial prohibited practices, AI literacy, GPAI) have not been478 cross-checked.4793. **Digital Omnibus — the GDPR/ePrivacy track**: as of Aug 2026 it was still at **proposal stage** (the definition480 of pseudonymised personal data, art. 88c on legitimate interest for AI, processing of special481 categories for bias detection), with opposition from the EDPB/EDPS (Joint Opinion 2/2026).482 **Verify whether it has been adopted and in what terms before basing a design on it.**4834. **NIST Privacy Framework**: whether the final **v1.1** has been published (as of Aug 2026 it was not confirmed;484 IPD Apr 2025, new section 1.2.2 on AI and privacy, alignment with CSF 2.0). Cite the verified485 edition.4865. **LINDDUN**: the current variants (GO/PRO/MAESTRO) and the current breakdown of the acronym on487 `linddun.org`. **Declared gap**: the site does not publish a version number; there is an488 "Enhanced LINDDUN GO" revision of the cards with no date located.4896. **EDPB**: the **final** status of the *Guidelines 01/2025 on Pseudonymisation* (adopted for490 consultation on 16 Jan 2025; **the final version not confirmed** as of Aug 2026) and of the CJEU491 judgment in **C-413/23 P** (*EDPS v SRB*), whose conclusion on pseudonymised data in the hands of a492 third party may change the criterion. Opinion 28/2024 on AI models, and any new493 guidance on anonymisation, *scraping* or erasure.4947. **Crypto-shredding**: **a declared gap and a source conflict** — it has not been possible to confirm whether the495 EDPB (Guidelines 5/2019 on the right to be forgotten) expressly recognises cryptographic496 erasure as erasure under Article 17, nor the AEPD's current position. Verify it against a primary497 source before relying on it alone.4988. **AEPD**: whether the guidance *"Orientaciones y garantías en los procedimientos de anonimización"*499 and the *Guía básica de anonimización* are current; the guidance and assessment tool for **personal data500 breaches** and its notification channel; the **list of processing operations requiring a DPIA**; its criterion501 on real data in test environments. **Declared gap**: it has not been verified whether a later502 edition of those guides exists, nor the exact response deadline for rights currently in force — do not cite it503 from memory.5049. **Deadlines**: breach notification (Articles 33/34 GDPR) and response to rights — cross-check them with the505 incident skills and with the primary source; the legal criterion belongs to legal/DPO.50610. **Tools** before recommending them: **Presidio** (a community project under the *Data Privacy Stack*,507 2.2.363 of Jun 2026, `presidio-analyzer` on PyPI Jul 2026, images at508 `ghcr.io/data-privacy-stack`), the **OpenDP Librar509510…(truncated)