info-tech-canon/infospace/assimilation/it-capability-canon/ASSIMILATION.md
tegwick b69b048dcb
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Canon 0.3.0: capability provision economics (ITC-CAP 0.2.0)
Accept resource-control demand: move resource classes onto provisions,
let requirements carry targets and constraints, add human-effort class H
with native-unit consumption. Model stays proposed.
2026-08-15 18:19:30 +02:00

258 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Assimilation — Information Technology Capability Canon (ITCC) v0.1
**Record:** `assimilation/it-capability-canon`
**Source:** ITCC v0.1 (`source/ITCapabilityCanonV0.1.md`, `source/capabilities.yaml`)
**Disposition:** `adapt`
**Status:** decided
**Canon version produced:** `0.2.0`
**Date:** 2026-08-14
**Practice:** [`../intake-and-assimilation-practice.md`](../intake-and-assimilation-practice.md)
---
## 1. Intake
Both files arrived in `incoming/` and were moved unmodified into `source/` as the
frozen snapshot. The source document itself (§15) asks to be reconciled with and
incorporated into InfoTechCanon, so the request is explicit rather than inferred.
## 2. Scoping
**In scope:** the capability object model, inclusion rules, exclusions, the eight
navigation domains and 41-capability baseline, capability relationship types, the
D0D7 maturity scale, the C/S/N/I/P resource model, evidence hooks, and the
capability contract shape.
**Out of scope:** the proposed CILM landscape model (§15) — the canon Landscape
Model already owns that ground; and the FinOps cost formula (§13) beyond the
resource classification itself.
## 3. Concept extraction
18 concepts extracted — see [`extracted-concepts.yaml`](extracted-concepts.yaml).
## 4. Concept comparison
See [`comparison-matrix.md`](comparison-matrix.md). Summary:
- `missing_concept`: Capability, CapabilityDomain, Provision, MaturityLevel,
QualityDimension, EvidenceHook, CapabilityContract, ResourceClass, and the
capability relationship types
- `already_covered`: Implementation, Evidence, CILM, and four of the source's
design principles (all four restate existing Core principles)
- `covered_differently`: Profile (name collision with Core §8.6), Provider
- `narrower_than_existing`: Requirement (a typed DemandSignal), quality dimensions
- `viewpoint_difference`: the entire capability baseline against the domain models
— abilities versus the structures that realize them
- `conflicting_concept`: one naming conflict only (`governance.*` prefix, OQ-2)
## 5. Gap and conflict analysis
**Primary gap filled.** The canon models landscape, data, security, delivery,
network, observability, governance, organization, task, and access, but nowhere
states *what an information system must be able to do*. The Landscape Model
defers exactly this (§11.4). Consumers hit the gap in practice: repo-scoping
already needs `Ability` / `Capability` / `Feature` distinctions.
**No definitional conflicts.** Not one source concept redefines a concept an
existing model owns. The relationship is anchoring, not overlap — which is why
the disposition is `adapt` rather than `observe`.
**Conflicts found:** (1) `Profile` name collision, resolved by renaming to
`CapabilityProfile`; (2) inconsistent `governance.*` ID prefix, unresolved and
recorded as OQ-2, blocking promotion beyond `proposed`.
**Risk.** A capability catalog is the kind of artifact that quietly becomes a
second ontology. Mitigated by PC-3: every capability must name the canon model(s)
that own the concepts it exercises.
## 6. Canon impact proposal
Eight proposals — see [`proposed-changes.md`](proposed-changes.md). All eight were
accepted; PC-6 is an accepted *rejection* (CILM not adopted). Six further items
are deferred to `ITC-WP-0014`.
## 7. Mapping and publication
[`mappings.yaml`](mappings.yaml) records 26 concept-level mappings to canonical
owners. Formal per-pair mapping artifacts under `infospace/mappings/` are deferred
to ITC-WP-0014.
Published as:
- `infospace/models/capability/InfoTechCanonCapabilityModel.md`
- `infospace/models/capability/capabilities.yaml`
---
## Decision Record
**Context.** InfoTechCanon has no owner for abstract capability. A well-formed
draft vocabulary (41 capabilities, machine-readable, explicitly written for
reconciliation with InfoTechCanon) was submitted for absorption. The Landscape
Model has deferred this ground since RC1.
**Decision.** Disposition `adapt`. Adopt the vocabulary as a new domain model,
`InfoTechCanonCapabilityModel`, restructured to canon shape: canon frontmatter and
declared ownership, imports instead of redefinitions, per-capability anchors to
owning models, `Profile` renamed to `CapabilityProfile`, `Provision` made
explicit, CILM rejected. The artifact enters at status `proposed`.
**Options considered.**
1. *`observe`* — record and change nothing. Rejected: leaves a known gap open while
consumers work around it.
2. *`map` only* — map the source to existing models without a new artifact.
Rejected: there is no artifact to map *to*; capability has no owner.
3. *`adopt` as-is* — take the document in unchanged. Rejected: it carries a name
collision on `Profile`, a competing landscape model, an implicit provision
bearer, and no anchoring to canon owners.
4. *`adapt`* — chosen.
5. *Classify as a standard rather than a model.* Deferred as OQ-1; a capability
set is a broad domain structure, which is the definition of a model here.
**Rationale.** The source passes its own inclusion rules and the canon's:
implementation-independent, reusable, demandable, providable, testable,
profileable, stable. It conflicts with nothing the canon already owns. The two
genuinely new surfaces (`commerce.*`, `intelligence.*`) extend the canon into
areas no existing model reaches. Adapting rather than adopting preserves single
canonical ownership.
**Consequences.**
- Canon version `0.2.0`; the canon gains a twelfth model and 41 capability IDs
that are treated as durable interfaces from here on.
- The Landscape Model's deferred strategy/capability concepts
(`BusinessCapability`, `ProductCapability`) now have a destination; the
Landscape §11.4 note should be revised — deferred to ITC-WP-0014.
- Capability IDs must not be renamed without migration semantics, which makes
OQ-2 blocking for promotion.
- `commerce.*` and `intelligence.*` create canon surface with no anchoring model
(OQ-5), an accepted weakness at `proposed` status.
**Review trigger.** Promotion beyond `proposed` requires: OQ-2 resolved, the
contract schema published, and at least one profile expressing a real capability
requirement set with evidence.
**Supersession.** None. A later ITCC revision arrives as a new intake with a new
`source_version`, never as an edit to this frozen snapshot.
---
## Decision Record — OQ-2, capability identifier prefix
**Date:** 2026-08-15 · **Canon version:** 0.2.1
**Context.** Four capabilities in navigation domain `security` used the
`security.` prefix while two used `governance.` (`governance.evidence`,
`governance.lifecycle`). Capability ids are durable interfaces (CAP-R5), so the
inconsistency could not simply be corrected later without migration semantics.
This blocked promotion beyond `proposed`.
**Decision.** Split the "Security & Governance" navigation domain into two
domains, `security` (4 capabilities) and `governance` (2). Every capability id is
unchanged; each now sits in the domain its prefix names. The baseline becomes 41
capabilities across 9 navigation domains.
**Options considered.**
1. *Keep as-is.* Rejected: leaves a visible defect in the primary index of a model
whose whole value is stable, legible identifiers.
2. *Renumber `governance.*` to `security.*`.* Rejected: breaks two durable
interfaces to fix a cosmetic issue, and would require a canon major version
with migration semantics.
3. *Split the navigation domain.* Chosen.
**Rationale.** Domains are declared `navigation_only: true` and carry no
semantics (§4.2, Core §6.4 *Network Before Tree*), so splitting one costs nothing
structurally. It is the only option that removes the inconsistency without
touching an id.
**Consequences.**
- Canon `0.2.1` (patch: no concept added, removed, renamed, or reassigned).
- `security.policy` and `governance.evidence` now appear in different sections of
the catalog index despite being frequently co-used — an accepted navigation
cost, and the reason option 1 was defensible.
- OQ-2 no longer blocks promotion; `ITC-WP-0014` T01 is complete.
**Review trigger.** If a third capability group emerges that spans both domains,
revisit whether navigation domains should be replaced by tags.
---
## Decision Record — Capability provision economics (demand 2026-08-15)
**Date:** 2026-08-15 · **Canon version:** 0.3.0 · **Model version:** ITC-CAP 0.2.0
**Demand:** `demand/CapabilityProvisionEconomics.md` (resource-control)
**Context.** After a completed procurement-to-control cycle, resource-control
mapped a real backup provision onto ITC-CAP v0.1.0. The catalog, evidence hooks,
and D-scale worked. Three defects did not: `typical_resource_classes` contradicted
§4.11 and carried almost no information; a requirement could not express profile,
quality targets, or failure-domain constraints; the class set had no human-effort
class and treated Intelligence as one more purchased input, so labour-inverted
provider selection was inexpressible.
**Decision.** Refine the still-proposed model in place. Do not split ITC-CAP
into supply-side and demand-side canons. Do not open a separate workplan for
finding C: the LAND and commerce touches are boundary clarifications, not new
owning models.
1. **Finding A.** Remove `typical_resource_classes` from every capability
contract. Consumption is declared on `CapabilityProvision` only (CAP-R8).
No non-normative hint is kept — 29 of 41 entries were identical.
2. **Finding B.** Enrich `CapabilityRequirement` with optional `profile`,
`targets` against declared quality dimensions, and `constraints` with a
closed predicate set. Intended targets stay on the requirement; measurement
and observed SLOs stay with ITC-LAND / ITC-OBS. No new dimension vocabulary.
3. **Finding C.** Add class `H` (Human Effort, native unit `hour`, default
supply `internal`, default capacity `constrained`). Narrow `P` so it no
longer absorbs human time. Recharacterise `I` as the elastic purchased
substitute for `H`, native unit `token`. Declare `native_unit`, `supply`,
and `capacity_behaviour` on each class; a consumption record may override
the last two. Record unknown as `unknown`, never zero. Add quality dimension
`intelligence_intensity` on `intelligence.*`. Do not declare
`substitutes_for` or an exchange rate.
**Options considered.**
1. *Leave the proposed model unchanged until promotion.* Rejected: the defects
are cheapest to fix before `capability.schema.yaml` (ITC-WP-0014 T02) freezes
the contract shape, and before a consumer restates a real provision against it.
2. *Split ITC-CAP into demand-side and supply-side canons.* Rejected by the
consumer and accepted here: the two sides agree about what exists. Splitting
would replace CAP-R5's joinable id with a translation layer.
3. *Solve finding C only inside resource-control.* Rejected: a private class set
would diverge the moment a second repository reports provision economics.
4. *Name the new class `L` (Labour).* Rejected: `H`/`I` is the contrast the
class set exists to make observable; `L` also collides with Landscape in
casual speech.
5. *Fix A and B now, defer C to a new workplan.* Rejected for this revision:
publishing A+B without C would leave the class set still wrong and force an
immediate follow-up version. C does not require a LAND or commerce model
change.
**Rationale.** The capability layer is working. The demand is a refinement of a
model that independently converged on the same backup evidence hooks the
consumer had already produced. Native units preserve constraint and substitution
information that currency destroys. Observing H/I substitution from a time
series is cheaper and more defensible than asserting a rate the canon cannot
know.
**Consequences.**
- Canon `0.3.0` (minor: new concepts and backward-compatible extensions;
no capability id changed). ITC-CAP `0.1.0``0.2.0`. Status remains
`proposed`.
- New owned concept: `CapabilityConsumption`.
- New rules: CAP-R8, CAP-R9.
- `typical_resource_classes` removed from the catalog. Any consumer that read
that field must stop; it was never a durable interface.
- ITC-WP-0014 T02 will encode the refined contract, not the v0.1.0 one.
- Success criterion 6 of the demand (restate the backup case in canon terms)
remains a consumer contribution, now against this shape.
**Review trigger.** First provision that needs a native unit the class table
cannot host, or a constraint predicate outside `{not_in, in, equals, lte, gte}`.
A full intelligence domain model remains OQ-5.