Why the registry exists
The operation registry is the machine-readable index of CALI operations. It gives SDK generators, policy tools, conformance runners and provider adapters one stable vocabulary without claiming that every deployment supports every entry.
Record shape
{
"name": "TransformKey",
"family": "key-evolution",
"maturity": "specified",
"requestType": "TransformKeyRequest",
"responseType": "TransformKeyResponse",
"idempotency": "required",
"evidence": "required"
}
Maturity values are explicit:
implemented: present in the checked-in reference service;specified: contract defined but not executed by the minimal service;planned: reserved roadmap work whose final shape may change.
Consuming the catalog
Tools should load the checked-in JSON, validate it against the registry schema, reject duplicate operation names and bind to the registry version they understand. Runtime support must still be determined using scoped capability discovery.
const registry = await fetch('/path/to/operation-registry.json').then((r) =>
r.json(),
);
const transform = registry.operations.find(
(item) => item.name === 'TransformKey',
);
if (!transform || transform.maturity === 'planned') {
throw new Error('This client cannot depend on TransformKey yet');
}
What the catalog does not do
The registry does not authorize operations, select providers or guarantee algorithm availability. It is a versioned vocabulary. Policy and live capability state make the deployment-specific decision.