Attributes have natural flows:

4.1 Create Attribute

User stores a new private value in the Vault → new leaf commitment computed → new attributes_root.

4.2 Update Attribute

Updating a value (e.g., home address) recomputes:

4.3 Revoke Attribute

Issuer or user places a revocation policy:

4.4 Expiration

If valid_until < now, attribute becomes unusable in proofs automatically.

All logic enforced in the Proof Engine.