A provision can name which other provision satisfies a catalog dependency. Relation vocabulary is depends_on / may_use only. Quoted sits below the invoiced/measured peer pair for propagation.
4.9 KiB
Demand: Provision-to-provision relationships — which provision satisfies a dependency
Status: accepted (canon 0.5.0 / ITC-CAP 0.4.0)
Date: 2026-08-15
Source: resource-control (consumer), domain financials
Owner: ITC-CAP (§4.7 CapabilityProvision, §7 Relationships, CAP-R11)
Requested by: info-tech-canon, in reply to the ITC-CAP restatement, 2026-08-15
Consumer evidence: resource-control/data/capability/platform-audit-storage.json
Workplan: ADHOC-2026-08-15 T03
Demand signal
ITC-CAP §7 declares relationships at two levels:
- capability to capability —
depends_on,may_use,composes; - landscape or consumer to capability —
requires,provides,implements,consumes.
There is no relationship between provisions. The catalog can say that
data.backup depends_on data.object, but a provision cannot say which
provision of data.object satisfies that dependency for it.
That matters because the dependency is where the operational and economic facts
live. data.backup depends_on data.object is a statement about abilities.
"This backup provision depends on the Scaleway bucket in nl-ams, and would be a
different risk and a different cost against a different one" is a statement
about the world, and it is the one a consumer needs.
How the gap surfaced
info-tech-canon found it while reviewing the consumer's restatement, and named it precisely:
The
Prow for credential custody is the wrong kind.Pis purchased platform. What you needed is a provision naming that it usessecurity.secrets/ depends on another provision.depends_on_provisionis the right idea for the object-store layering; stuffing secrets intoconsumes:Pis the leftover.
That is an accurate diagnosis of a consumer error. The backup provision uses
security.secrets — an OpenBao ClusterSecretStore and a synced
ExternalSecret — and the consumer recorded it as one unit of class P
consumption. Nothing is purchased there. Using another capability is not
consuming platform capacity, and the record said it was because the model
offered no other place to put it.
The consumer has removed that row. The relationship is currently held in a field marked explicitly as not canon, pending this demand.
Why it will recur
The mis-recording is the predictable result of the gap, not a one-off slip. Any
provision that uses another capability without buying capacity — secrets,
scheduling, observability, identity — has the same problem, and consumes is
the only structured list available. Left unaddressed, P slowly becomes a
dumping ground for "depends on something", and the class that finding C just
narrowed to purchased platform services widens again by usage.
Proposed shape
A provision may declare which provisions it relies on:
provision:
provider: backup.barman.prod
capability: data.backup
uses_provisions:
- capability: data.object
provider: object.scaleway.nl-ams
relation: depends_on
- capability: security.secrets
provider: openbao.reef-railiance
relation: uses
relationreuses the existing capability-to-capability vocabulary —depends_onandmay_use(orusesas its provision-level spelling). No new relationship semantics are introduced.- A
depends_onentry SHOULD correspond to adepends_ondeclared between the two capabilities in the catalog; amay_use/usesentry SHOULD correspond to a declaredmay_use. This makes the provision graph checkable against the capability graph rather than free-form. - Naming the provider makes maturity traversable: a provision cannot honestly claim reliability above that of a provision it depends on, which is a rule the canon may or may not want to state.
What it is not
It is not consumption. consumes records resource classes drawn in native
units; uses_provisions records which other provision supplies an ability. The
distinction is exactly the one that CAP-R8 and finding C established for classes,
applied one level up.
Success criteria
- A provision can name the provisions it depends on or uses, with a relation drawn from the existing capability-to-capability vocabulary.
- The provision graph is checkable against the capability graph.
- Using another capability is expressible without a consumption row, so
Pstays purchased platform capacity. resource-controlcan drop theproposed_extensionsmarker fromdata/capability/platform-audit-storage.jsonand record both the object-store dependency and the secrets usage in canon terms.
Non-goals
- Provider or service identity semantics — ITC-LAND owns those; this names them by reference.
- A deployment or topology model.
- Automatic maturity derivation across a dependency chain. Whether a provision's maturity is capped by its dependencies is a separate question, raised here only because this relationship is what would make it askable.