Attributes don’t get exposed — they get turned into proofs.

Each descriptor specifies:

Example descriptor entry:

{
  "id": "identity.birthdate",
  "proofable_as": ["age_check"],
  "transformations": ["greater_equal", "less_equal"],
  "datatype": "date"
}

The Proof Engine uses:

To generate a statement like:

“User is over 18”

(without revealing birthdate)