A Proof Template is a reusable circuit / protocol definition.

Templates are:

3.1 Template Object

{
  "id": "age_over_18",
  "version": 1,
  "title": "Proof of Majority (18+)",
  "description": "Proves that the user is at least 18 years old without revealing exact birthdate.",
  "inputs": {
    "identity_commitment": "bytes32",
    "attributes_root": "bytes32",
    "attribute_descriptor": "identity.birthdate",
    "threshold": 18
  },
  "statement": "age >= threshold",
  "proof_system": "zk_snark_v1",   // or "gc_mpc_v1", etc.
  "verification_key_ref": "kv:vk_age_over_18_v1"
}

This is stored in a Template Registry, referenced by template_id.