Supersedes 0046: the global invariants
of 0046 are kept, and its per-model opt-ins are replaced by classification, retention and a delete
policy.
Context
0046 set global invariants and per-model opt-ins. The owner’s intent-map item P4, the delete answers DA7 and DA8 (mem L534), and the audit answer AU7 (mem L652) add classification, retention and a delete policy, and they say what audit diffs may contain.Decision
- The global invariants stand: UUIDv7 keys and
tenant_idwith row-level security on every tenant table. @Classifytakespublic,internal,pii,financial,secretorregulated. Fields default tointernal. Each class has fixed effects on logs, audit, events, search, the agent audience and export or erasure (P4).@RetentiondrivesPrunablejobs. A tenant legal hold suspends purge (P4).- The delete policy is one of three: archive, soft delete (kept 30 days) or hard delete (DA7).
- In audit diffs, PII is encrypted with the tenant key. Secrets are never stored. An erasure leaves a hashed subject id (AU7).
Consequences
- Each model declares a classification for its fields. An unclassified field is
internal, so it is not public by accident. - Erasure and export depend on classification, so the compliance flow reads these tags.
Enforcement
planned — the validator or gen checks that every field has a classification after@Classify defaults are applied, and the
Prunable job reads @Retention. The pipeline audit step (0136) closes the audit half.
Alternatives
- Per-model opt-ins only (0046): replaced, because classification must apply to every field.