@zanii/minimization
v0.1.1
Published
Prove data minimization (GDPR Art. 5(1)(c)) - unprovable today, only assertable. Commit the declared MINIMUM field set, then prove every field an agent accessed was inside it; any access outside the declared minimum is a flagged violation. Composes @zanii
Readme
@zanii/minimization
Did you only take what you needed? GDPR Art. 5(1)(c) data minimization is unprovable today — you can only assert it. This makes it a proof: commit the declared minimum field set, then prove every field an agent accessed was inside it.
npm install @zanii/minimization @zanii/coreimport { commitFieldSet, buildAccessProof, verifyMinimization } from '@zanii/minimization';
const { commitment } = commitFieldSet(['name', 'email', 'account_id']); // the declared minimum
await zanii.record(buildAccessProof({ fieldSetCommitment: commitment, accessed: ['name', 'email'], ts: now }));
const r = verifyMinimization(proof, ['name', 'email', 'account_id']);
r.ok; r.excess; // excess = fields accessed OUTSIDE the declared minimum — provable over-collectionPython: from zanii.minimization import commit_field_set, build_access_proof, verify_minimization
— byte-identical field-set commitments across languages.
Why it can't be gamed after the fact
The declared minimum is committed (minfields:v1:…) and referenced on each access receipt.
If the operator later tries to justify an over-collection by claiming the field was always
declared, verifyMinimization catches it — the widened set doesn't match the committed
commitment. Composes @zanii/redact field commitments + purpose-bound delegation.
The limit, stated up front
Proves declared-vs-accessed — that the agent stayed inside the minimum it declared. It does NOT prove the minimum was well-chosen (a judgement, not a fact), and it proves the recorded accesses only.
