Canon 0.6.0 freeze: ITC-CAP draft, AVT catalog, joinable review
Finish ITC-WP-0013 (AttributeValueType under ITC-DATA) and ITC-WP-0014 T02/T03/T05/T06/T07. Capability contract schemas, live-catalog review CLI, landscape/kernel-map pointers. Sit on this version.
This commit is contained in:
parent
7805560a60
commit
d453e17952
44 changed files with 1485 additions and 137 deletions
35
CHANGELOG.md
35
CHANGELOG.md
|
|
@ -15,6 +15,41 @@ semantics.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 0.6.0 — 2026-08-15
|
||||||
|
|
||||||
|
### Frozen — ITC-CAP draft; AttributeValueType catalog; joinable review
|
||||||
|
|
||||||
|
**Change.** Canon 0.6.0 is the freeze cut.
|
||||||
|
|
||||||
|
- **ITC-CAP** promoted from `proposed` to `draft`. Contract schemas
|
||||||
|
published: `capability.schema.yaml` (catalog) and
|
||||||
|
`capability-record.schema.yaml` (requirement/provision records).
|
||||||
|
`make validate` enforces CAP-R8 on the catalog.
|
||||||
|
- **Capability-review surface:** `info-tech-canon capability-review PATH`
|
||||||
|
and `GET /capability-review?path=` join a consumer record to the live
|
||||||
|
catalog (OQ-6 / ITC-WP-0014 T06).
|
||||||
|
- **Mappings:** `infospace/mappings/capability-anchors.yaml` formalizes
|
||||||
|
the assimilation mappings (T03).
|
||||||
|
- **Landscape §11.4** and **Kernel Map §4.14** now point at ITC-CAP (T05).
|
||||||
|
- **AttributeValueType** catalog under ITC-DATA
|
||||||
|
(`models/data/attribute-value-types.yaml`) from
|
||||||
|
`demand/AttributeValueTypes.md` (ITC-WP-0013). citation-evidence
|
||||||
|
alignment note published.
|
||||||
|
|
||||||
|
ITC-WP-0013 and ITC-WP-0014 are finished. T04 (small-saas illustration)
|
||||||
|
remains optional and does not block the freeze.
|
||||||
|
|
||||||
|
**Rationale.** One consumer cycle has refined the capability model; a
|
||||||
|
second consumer needed a closed capture-type catalog. Further shape
|
||||||
|
change of ITC-CAP needs a new minor. 0.6.0 is the version to sit on.
|
||||||
|
|
||||||
|
**Breaking:** no capability id or AttributeValueType id invented as a
|
||||||
|
break. New catalogs and schemas only.
|
||||||
|
|
||||||
|
**Validation.** `make validate` 0 errors / 0 warnings; `make test` 23 passed.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 0.5.0 — 2026-08-15
|
## 0.5.0 — 2026-08-15
|
||||||
|
|
||||||
### Added — Provision-to-provision relationships (`uses_provisions`)
|
### Added — Provision-to-provision relationships (`uses_provisions`)
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ PYTHONPATH=src python3 -m info_tech_canon standards
|
||||||
PYTHONPATH=src python3 -m info_tech_canon review-kit
|
PYTHONPATH=src python3 -m info_tech_canon review-kit
|
||||||
PYTHONPATH=src python3 -m info_tech_canon alignment-template
|
PYTHONPATH=src python3 -m info_tech_canon alignment-template
|
||||||
PYTHONPATH=src python3 -m info_tech_canon validate
|
PYTHONPATH=src python3 -m info_tech_canon validate
|
||||||
|
PYTHONPATH=src python3 -m info_tech_canon capability-review /path/to/record.json
|
||||||
PYTHONPATH=src python3 -m info_tech_canon graph
|
PYTHONPATH=src python3 -m info_tech_canon graph
|
||||||
PYTHONPATH=src python3 -m info_tech_canon index
|
PYTHONPATH=src python3 -m info_tech_canon index
|
||||||
PYTHONPATH=src python3 -m info_tech_canon views
|
PYTHONPATH=src python3 -m info_tech_canon views
|
||||||
|
|
@ -45,6 +46,7 @@ After package installation, the same commands are available through the
|
||||||
- `GET /review-kit`
|
- `GET /review-kit`
|
||||||
- `GET /alignment-template`
|
- `GET /alignment-template`
|
||||||
- `GET /validate`
|
- `GET /validate`
|
||||||
|
- `GET /capability-review?path=`
|
||||||
- `GET /graph`
|
- `GET /graph`
|
||||||
- `GET /graph?format=mermaid`
|
- `GET /graph?format=mermaid`
|
||||||
- `GET /views`
|
- `GET /views`
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
repository: info-tech-canon
|
repository: info-tech-canon
|
||||||
title: InfoTechCanon
|
title: InfoTechCanon
|
||||||
status: service-baseline
|
status: service-baseline
|
||||||
version: 0.5.0
|
version: 0.6.0
|
||||||
description: >
|
description: >
|
||||||
An evolving, markdown-first canon for building interoperable, adaptable,
|
An evolving, markdown-first canon for building interoperable, adaptable,
|
||||||
and extensible information-processing systems.
|
and extensible information-processing systems.
|
||||||
|
|
@ -92,7 +92,7 @@ models:
|
||||||
- id: itc-cap
|
- id: itc-cap
|
||||||
title: InfoTechCanonCapabilityModel
|
title: InfoTechCanonCapabilityModel
|
||||||
path: infospace/models/capability/InfoTechCanonCapabilityModel.md
|
path: infospace/models/capability/InfoTechCanonCapabilityModel.md
|
||||||
status: proposed
|
status: draft
|
||||||
version: 0.4.0
|
version: 0.4.0
|
||||||
catalog: infospace/models/capability/capabilities.yaml
|
catalog: infospace/models/capability/capabilities.yaml
|
||||||
provenance:
|
provenance:
|
||||||
|
|
@ -181,4 +181,5 @@ next_actions:
|
||||||
- implement ITC-WP-0003 validation and generated views
|
- implement ITC-WP-0003 validation and generated views
|
||||||
- implement ITC-WP-0004 small-saas profile proof
|
- implement ITC-WP-0004 small-saas profile proof
|
||||||
- explore ITC-WP-0006 PURPOSES model extension
|
- explore ITC-WP-0006 PURPOSES model extension
|
||||||
- publish ITC-WP-0014 T02 capability.schema.yaml encoding ITC-CAP 0.4.0 (next ITC-CAP promotion gate; §10.3 met; uses_provisions and CAP-R10/R11 in the contract)
|
- sit on canon 0.6.0; do not change ITC-CAP shape without a new minor
|
||||||
|
- optional ITC-WP-0014 T04 small-saas illustration (not a promotion gate)
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,12 @@
|
||||||
# Demand: Attribute Value Type Catalog
|
# Demand: Attribute Value Type Catalog
|
||||||
|
|
||||||
**Status:** inbound demand (un-reviewed)
|
**Status:** accepted (canon 0.6.0)
|
||||||
**Date:** 2026-07-30
|
**Date:** 2026-07-30
|
||||||
**Source:** citation-evidence Capture UX (consumer)
|
**Source:** citation-evidence Capture UX (consumer)
|
||||||
**Related consumer draft:** `citation-evidence/wiki/AttributeValueTypes-proposal.md`
|
**Related consumer draft:** `citation-evidence/wiki/AttributeValueTypes-proposal.md`
|
||||||
**Proposed workplan:** ITC-WP-0013
|
**Workplan:** ITC-WP-0013
|
||||||
|
**Catalog:** `infospace/models/data/attribute-value-types.yaml`
|
||||||
|
**Alignment:** `infospace/models/data/attribute-value-types-alignment.md`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
29
infospace/agent/briefs/catalog-attribute-value-types.md
Normal file
29
infospace/agent/briefs/catalog-attribute-value-types.md
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
---
|
||||||
|
id: agent-brief/catalog-attribute-value-types
|
||||||
|
artifact_id: catalog/attribute-value-types
|
||||||
|
source_path: models/data/attribute-value-types.yaml
|
||||||
|
source_kind: concept-catalog
|
||||||
|
generated: true
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- GENERATED by info_tech_canon; do not edit by hand. -->
|
||||||
|
|
||||||
|
# Agent Brief: InfoTechCanon Attribute Value Type Catalog
|
||||||
|
|
||||||
|
- Artifact ID: `catalog/attribute-value-types`
|
||||||
|
- Kind: `concept-catalog`
|
||||||
|
- Canonical path: `models/data/attribute-value-types.yaml`
|
||||||
|
- Full source: `models/data/attribute-value-types.yaml`
|
||||||
|
- Summary: Structured candidate concept catalog: InfoTechCanon Attribute Value Type Catalog.
|
||||||
|
|
||||||
|
## Retrieval Hints
|
||||||
|
|
||||||
|
No imports or anchors recorded.
|
||||||
|
|
||||||
|
## Owned Concepts
|
||||||
|
|
||||||
|
- `InfoTechCanon Attribute Value Type Catalog`
|
||||||
|
|
||||||
|
## Related Distinctions
|
||||||
|
|
||||||
|
No common distinction is anchored directly on this artifact.
|
||||||
29
infospace/agent/briefs/mapping-capability-anchors.md
Normal file
29
infospace/agent/briefs/mapping-capability-anchors.md
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
---
|
||||||
|
id: agent-brief/mapping-capability-anchors
|
||||||
|
artifact_id: mapping/capability-anchors
|
||||||
|
source_path: mappings/capability-anchors.yaml
|
||||||
|
source_kind: mapping
|
||||||
|
generated: true
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- GENERATED by info_tech_canon; do not edit by hand. -->
|
||||||
|
|
||||||
|
# Agent Brief: ITC-CAP concept mappings to anchoring canon models
|
||||||
|
|
||||||
|
- Artifact ID: `mapping/capability-anchors`
|
||||||
|
- Kind: `mapping`
|
||||||
|
- Canonical path: `mappings/capability-anchors.yaml`
|
||||||
|
- Full source: `mappings/capability-anchors.yaml`
|
||||||
|
- Summary: Mapping artifact connecting canon surfaces: ITC-CAP concept mappings to anchoring canon models.
|
||||||
|
|
||||||
|
## Retrieval Hints
|
||||||
|
|
||||||
|
No imports or anchors recorded.
|
||||||
|
|
||||||
|
## Owned Concepts
|
||||||
|
|
||||||
|
- `ITC-CAP concept mappings to anchoring canon models`
|
||||||
|
|
||||||
|
## Related Distinctions
|
||||||
|
|
||||||
|
No common distinction is anchored directly on this artifact.
|
||||||
|
|
@ -5,8 +5,8 @@
|
||||||
This brief summarizes the current canon service surface for agents.
|
This brief summarizes the current canon service surface for agents.
|
||||||
|
|
||||||
- Infospace slug: `canon`
|
- Infospace slug: `canon`
|
||||||
- Artifact count: 66
|
- Artifact count: 68
|
||||||
- Retrieval index items: 66
|
- Retrieval index items: 68
|
||||||
- Primary confidence command: `make validate`
|
- Primary confidence command: `make validate`
|
||||||
- Refresh generated indexes and views with: `make index`
|
- Refresh generated indexes and views with: `make index`
|
||||||
- Refresh agent briefs and interface templates with: `make agent-briefs`
|
- Refresh agent briefs and interface templates with: `make agent-briefs`
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"infospace": "canon",
|
"infospace": "canon",
|
||||||
"item_count": 66,
|
"item_count": 68,
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
"canonical_path": "assimilation/it-capability-canon/ASSIMILATION.md",
|
"canonical_path": "assimilation/it-capability-canon/ASSIMILATION.md",
|
||||||
|
|
@ -267,6 +267,20 @@
|
||||||
"title": "InfoTechCanon Capability Catalog",
|
"title": "InfoTechCanon Capability Catalog",
|
||||||
"warnings": []
|
"warnings": []
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"canonical_path": "models/data/attribute-value-types.yaml",
|
||||||
|
"id": "catalog/attribute-value-types",
|
||||||
|
"imports": [],
|
||||||
|
"kind": "concept-catalog",
|
||||||
|
"owned_concepts": [
|
||||||
|
"InfoTechCanon Attribute Value Type Catalog"
|
||||||
|
],
|
||||||
|
"relationships": [],
|
||||||
|
"source_path": "demand/AttributeValueTypes.md",
|
||||||
|
"summary": "Structured candidate concept catalog: InfoTechCanon Attribute Value Type Catalog.",
|
||||||
|
"title": "InfoTechCanon Attribute Value Type Catalog",
|
||||||
|
"warnings": []
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"canonical_path": "models/governance/evidence-basis.yaml",
|
"canonical_path": "models/governance/evidence-basis.yaml",
|
||||||
"id": "catalog/evidence-basis",
|
"id": "catalog/evidence-basis",
|
||||||
|
|
@ -1024,6 +1038,10 @@
|
||||||
"target": "model/observability",
|
"target": "model/observability",
|
||||||
"type": "maps"
|
"type": "maps"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"target": "model/capability",
|
||||||
|
"type": "maps"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"target": "standard/tagging",
|
"target": "standard/tagging",
|
||||||
"type": "maps"
|
"type": "maps"
|
||||||
|
|
@ -1038,6 +1056,20 @@
|
||||||
"title": "InfoTechCanon Kernel Map",
|
"title": "InfoTechCanon Kernel Map",
|
||||||
"warnings": []
|
"warnings": []
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"canonical_path": "mappings/capability-anchors.yaml",
|
||||||
|
"id": "mapping/capability-anchors",
|
||||||
|
"imports": [],
|
||||||
|
"kind": "mapping",
|
||||||
|
"owned_concepts": [
|
||||||
|
"ITC-CAP concept mappings to anchoring canon models"
|
||||||
|
],
|
||||||
|
"relationships": [],
|
||||||
|
"source_path": "infospace/assimilation/it-capability-canon/mappings.yaml",
|
||||||
|
"summary": "Mapping artifact connecting canon surfaces: ITC-CAP concept mappings to anchoring canon models.",
|
||||||
|
"title": "ITC-CAP concept mappings to anchoring canon models",
|
||||||
|
"warnings": []
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"canonical_path": "mappings/purpose-demand-governance-candidates.yaml",
|
"canonical_path": "mappings/purpose-demand-governance-candidates.yaml",
|
||||||
"id": "mapping/purpose-demand-governance-candidates",
|
"id": "mapping/purpose-demand-governance-candidates",
|
||||||
|
|
@ -1158,6 +1190,10 @@
|
||||||
{
|
{
|
||||||
"target": "assimilation/it-capability-canon",
|
"target": "assimilation/it-capability-canon",
|
||||||
"type": "derived_from"
|
"type": "derived_from"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"target": "mapping/capability-anchors",
|
||||||
|
"type": "introduces"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source_path": "infospace/assimilation/it-capability-canon/source/ITCapabilityCanonV0.1.md",
|
"source_path": "infospace/assimilation/it-capability-canon/source/ITCapabilityCanonV0.1.md",
|
||||||
|
|
@ -1184,6 +1220,10 @@
|
||||||
{
|
{
|
||||||
"target": "model/governance",
|
"target": "model/governance",
|
||||||
"type": "uses"
|
"type": "uses"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"target": "catalog/attribute-value-types",
|
||||||
|
"type": "introduces"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source_path": "seeds/InfoTechCanonDataModel_RC1_seed.md",
|
"source_path": "seeds/InfoTechCanonDataModel_RC1_seed.md",
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
Schema: `info-tech-canon.retrieval-index.v1`
|
Schema: `info-tech-canon.retrieval-index.v1`
|
||||||
Infospace: `canon`
|
Infospace: `canon`
|
||||||
Items: **66**
|
Items: **68**
|
||||||
|
|
||||||
## Common Distinctions
|
## Common Distinctions
|
||||||
|
|
||||||
|
|
@ -85,6 +85,16 @@ Items: **66**
|
||||||
- Imports and anchors: none
|
- Imports and anchors: none
|
||||||
- Owned concepts: `InfoTechCanon Capability Catalog`
|
- Owned concepts: `InfoTechCanon Capability Catalog`
|
||||||
|
|
||||||
|
### InfoTechCanon Attribute Value Type Catalog
|
||||||
|
|
||||||
|
- ID: `catalog/attribute-value-types`
|
||||||
|
- Kind: `concept-catalog`
|
||||||
|
- Canonical path: `models/data/attribute-value-types.yaml`
|
||||||
|
- Source path: `demand/AttributeValueTypes.md`
|
||||||
|
- Summary: Structured candidate concept catalog: InfoTechCanon Attribute Value Type Catalog.
|
||||||
|
- Imports and anchors: none
|
||||||
|
- Owned concepts: `InfoTechCanon Attribute Value Type Catalog`
|
||||||
|
|
||||||
### InfoTechCanon Evidence Basis Catalog
|
### InfoTechCanon Evidence Basis Catalog
|
||||||
|
|
||||||
- ID: `catalog/evidence-basis`
|
- ID: `catalog/evidence-basis`
|
||||||
|
|
@ -285,6 +295,16 @@ Items: **66**
|
||||||
- Imports and anchors: none
|
- Imports and anchors: none
|
||||||
- Owned concepts: `InfoTechCanon Kernel Map`
|
- Owned concepts: `InfoTechCanon Kernel Map`
|
||||||
|
|
||||||
|
### ITC-CAP concept mappings to anchoring canon models
|
||||||
|
|
||||||
|
- ID: `mapping/capability-anchors`
|
||||||
|
- Kind: `mapping`
|
||||||
|
- Canonical path: `mappings/capability-anchors.yaml`
|
||||||
|
- Source path: `infospace/assimilation/it-capability-canon/mappings.yaml`
|
||||||
|
- Summary: Mapping artifact connecting canon surfaces: ITC-CAP concept mappings to anchoring canon models.
|
||||||
|
- Imports and anchors: none
|
||||||
|
- Owned concepts: `ITC-CAP concept mappings to anchoring canon models`
|
||||||
|
|
||||||
### Purpose Demand Governance Extension Candidates
|
### Purpose Demand Governance Extension Candidates
|
||||||
|
|
||||||
- ID: `mapping/purpose-demand-governance-candidates`
|
- ID: `mapping/purpose-demand-governance-candidates`
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
schema: info-tech-canon.retrieval-index.v1
|
schema: info-tech-canon.retrieval-index.v1
|
||||||
infospace: canon
|
infospace: canon
|
||||||
item_count: 66
|
item_count: 68
|
||||||
items:
|
items:
|
||||||
- id: assimilation/it-capability-canon
|
- id: assimilation/it-capability-canon
|
||||||
kind: assimilation
|
kind: assimilation
|
||||||
|
|
@ -144,6 +144,18 @@ items:
|
||||||
imports: []
|
imports: []
|
||||||
relationships: []
|
relationships: []
|
||||||
warnings: []
|
warnings: []
|
||||||
|
- id: catalog/attribute-value-types
|
||||||
|
kind: concept-catalog
|
||||||
|
title: InfoTechCanon Attribute Value Type Catalog
|
||||||
|
canonical_path: models/data/attribute-value-types.yaml
|
||||||
|
source_path: demand/AttributeValueTypes.md
|
||||||
|
summary: 'Structured candidate concept catalog: InfoTechCanon Attribute Value Type
|
||||||
|
Catalog.'
|
||||||
|
owned_concepts:
|
||||||
|
- InfoTechCanon Attribute Value Type Catalog
|
||||||
|
imports: []
|
||||||
|
relationships: []
|
||||||
|
warnings: []
|
||||||
- id: catalog/evidence-basis
|
- id: catalog/evidence-basis
|
||||||
kind: concept-catalog
|
kind: concept-catalog
|
||||||
title: InfoTechCanon Evidence Basis Catalog
|
title: InfoTechCanon Evidence Basis Catalog
|
||||||
|
|
@ -630,11 +642,25 @@ items:
|
||||||
target: model/network
|
target: model/network
|
||||||
- type: maps
|
- type: maps
|
||||||
target: model/observability
|
target: model/observability
|
||||||
|
- type: maps
|
||||||
|
target: model/capability
|
||||||
- type: maps
|
- type: maps
|
||||||
target: standard/tagging
|
target: standard/tagging
|
||||||
- type: maps
|
- type: maps
|
||||||
target: standard/caring
|
target: standard/caring
|
||||||
warnings: []
|
warnings: []
|
||||||
|
- id: mapping/capability-anchors
|
||||||
|
kind: mapping
|
||||||
|
title: ITC-CAP concept mappings to anchoring canon models
|
||||||
|
canonical_path: mappings/capability-anchors.yaml
|
||||||
|
source_path: infospace/assimilation/it-capability-canon/mappings.yaml
|
||||||
|
summary: 'Mapping artifact connecting canon surfaces: ITC-CAP concept mappings to
|
||||||
|
anchoring canon models.'
|
||||||
|
owned_concepts:
|
||||||
|
- ITC-CAP concept mappings to anchoring canon models
|
||||||
|
imports: []
|
||||||
|
relationships: []
|
||||||
|
warnings: []
|
||||||
- id: mapping/purpose-demand-governance-candidates
|
- id: mapping/purpose-demand-governance-candidates
|
||||||
kind: mapping
|
kind: mapping
|
||||||
title: Purpose Demand Governance Extension Candidates
|
title: Purpose Demand Governance Extension Candidates
|
||||||
|
|
@ -721,6 +747,8 @@ items:
|
||||||
target: capability-catalog/itc-cap
|
target: capability-catalog/itc-cap
|
||||||
- type: derived_from
|
- type: derived_from
|
||||||
target: assimilation/it-capability-canon
|
target: assimilation/it-capability-canon
|
||||||
|
- type: introduces
|
||||||
|
target: mapping/capability-anchors
|
||||||
warnings: []
|
warnings: []
|
||||||
- id: model/data
|
- id: model/data
|
||||||
kind: model
|
kind: model
|
||||||
|
|
@ -739,6 +767,8 @@ items:
|
||||||
target: kernel/itc-core
|
target: kernel/itc-core
|
||||||
- type: uses
|
- type: uses
|
||||||
target: model/governance
|
target: model/governance
|
||||||
|
- type: introduces
|
||||||
|
target: catalog/attribute-value-types
|
||||||
warnings: []
|
warnings: []
|
||||||
- id: model/devsecops
|
- id: model/devsecops
|
||||||
kind: model
|
kind: model
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,8 @@ artifacts:
|
||||||
target: model/network
|
target: model/network
|
||||||
- type: maps
|
- type: maps
|
||||||
target: model/observability
|
target: model/observability
|
||||||
|
- type: maps
|
||||||
|
target: model/capability
|
||||||
- type: maps
|
- type: maps
|
||||||
target: standard/tagging
|
target: standard/tagging
|
||||||
- type: maps
|
- type: maps
|
||||||
|
|
@ -135,6 +137,8 @@ artifacts:
|
||||||
target: capability-catalog/itc-cap
|
target: capability-catalog/itc-cap
|
||||||
- type: derived_from
|
- type: derived_from
|
||||||
target: assimilation/it-capability-canon
|
target: assimilation/it-capability-canon
|
||||||
|
- type: introduces
|
||||||
|
target: mapping/capability-anchors
|
||||||
- id: catalog/evidence-basis
|
- id: catalog/evidence-basis
|
||||||
path: models/governance/evidence-basis.yaml
|
path: models/governance/evidence-basis.yaml
|
||||||
kind: concept-catalog
|
kind: concept-catalog
|
||||||
|
|
@ -224,6 +228,16 @@ artifacts:
|
||||||
target: kernel/itc-core
|
target: kernel/itc-core
|
||||||
- type: uses
|
- type: uses
|
||||||
target: model/governance
|
target: model/governance
|
||||||
|
- type: introduces
|
||||||
|
target: catalog/attribute-value-types
|
||||||
|
- id: catalog/attribute-value-types
|
||||||
|
path: models/data/attribute-value-types.yaml
|
||||||
|
kind: concept-catalog
|
||||||
|
title: InfoTechCanon Attribute Value Type Catalog
|
||||||
|
provenance:
|
||||||
|
source_path: demand/AttributeValueTypes.md
|
||||||
|
placement_workplan: ITC-WP-0013
|
||||||
|
relationships: []
|
||||||
- id: model/devsecops
|
- id: model/devsecops
|
||||||
path: models/devsecops/InfoTechCanonDevSecOpsModel.md
|
path: models/devsecops/InfoTechCanonDevSecOpsModel.md
|
||||||
kind: model
|
kind: model
|
||||||
|
|
@ -609,6 +623,14 @@ artifacts:
|
||||||
target: model/governance
|
target: model/governance
|
||||||
- type: uses
|
- type: uses
|
||||||
target: model/task
|
target: model/task
|
||||||
|
- id: mapping/capability-anchors
|
||||||
|
path: mappings/capability-anchors.yaml
|
||||||
|
kind: mapping
|
||||||
|
title: ITC-CAP concept mappings to anchoring canon models
|
||||||
|
provenance:
|
||||||
|
source_path: infospace/assimilation/it-capability-canon/mappings.yaml
|
||||||
|
placement_workplan: ITC-WP-0014
|
||||||
|
relationships: []
|
||||||
- id: example/consumer-purpose-portfolio
|
- id: example/consumer-purpose-portfolio
|
||||||
path: examples/consumer-purpose-portfolio.yaml
|
path: examples/consumer-purpose-portfolio.yaml
|
||||||
kind: example
|
kind: example
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,10 @@ evaluations still have no owning model. The trigger remains open for those.
|
||||||
|
|
||||||
The source sketches a validator (§18) comparing product requirements to provider
|
The source sketches a validator (§18) comparing product requirements to provider
|
||||||
maturity. That belongs to the service surface (`ITC-WP-0002`) and needs the
|
maturity. That belongs to the service surface (`ITC-WP-0002`) and needs the
|
||||||
contract schema first. **Deferred:** ITC-WP-0014.
|
contract schema first.
|
||||||
|
|
||||||
|
**Resolved 2026-08-15 (canon 0.6.0).** `info-tech-canon capability-review`
|
||||||
|
joins a consumer record to the live catalog. ITC-WP-0014 T06 done.
|
||||||
|
|
||||||
## OQ-7 — Relationship between `CapabilityProfile` and canon `Profile`
|
## OQ-7 — Relationship between `CapabilityProfile` and canon `Profile`
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
root: infospace
|
root: infospace
|
||||||
file_count: 176
|
file_count: 183
|
||||||
files:
|
files:
|
||||||
- path: README.md
|
- path: README.md
|
||||||
directory: .
|
directory: .
|
||||||
|
|
@ -22,6 +22,9 @@ files:
|
||||||
- path: agent/briefs/benchmark-caring-kubernetes-rbac.md
|
- path: agent/briefs/benchmark-caring-kubernetes-rbac.md
|
||||||
directory: agent/briefs
|
directory: agent/briefs
|
||||||
name: benchmark-caring-kubernetes-rbac.md
|
name: benchmark-caring-kubernetes-rbac.md
|
||||||
|
- path: agent/briefs/catalog-evidence-basis.md
|
||||||
|
directory: agent/briefs
|
||||||
|
name: catalog-evidence-basis.md
|
||||||
- path: agent/briefs/comparison-repo-scoping-canon-benefit-analysis.md
|
- path: agent/briefs/comparison-repo-scoping-canon-benefit-analysis.md
|
||||||
directory: agent/briefs
|
directory: agent/briefs
|
||||||
name: comparison-repo-scoping-canon-benefit-analysis.md
|
name: comparison-repo-scoping-canon-benefit-analysis.md
|
||||||
|
|
@ -334,6 +337,9 @@ files:
|
||||||
- path: mappings/README.md
|
- path: mappings/README.md
|
||||||
directory: mappings
|
directory: mappings
|
||||||
name: README.md
|
name: README.md
|
||||||
|
- path: mappings/capability-anchors.yaml
|
||||||
|
directory: mappings
|
||||||
|
name: capability-anchors.yaml
|
||||||
- path: mappings/purpose-demand-governance-candidates.yaml
|
- path: mappings/purpose-demand-governance-candidates.yaml
|
||||||
directory: mappings
|
directory: mappings
|
||||||
name: purpose-demand-governance-candidates.yaml
|
name: purpose-demand-governance-candidates.yaml
|
||||||
|
|
@ -349,6 +355,12 @@ files:
|
||||||
- path: models/data/InfoTechCanonDataModel.md
|
- path: models/data/InfoTechCanonDataModel.md
|
||||||
directory: models/data
|
directory: models/data
|
||||||
name: InfoTechCanonDataModel.md
|
name: InfoTechCanonDataModel.md
|
||||||
|
- path: models/data/attribute-value-types-alignment.md
|
||||||
|
directory: models/data
|
||||||
|
name: attribute-value-types-alignment.md
|
||||||
|
- path: models/data/attribute-value-types.yaml
|
||||||
|
directory: models/data
|
||||||
|
name: attribute-value-types.yaml
|
||||||
- path: models/devsecops/InfoTechCanonDevSecOpsModel.md
|
- path: models/devsecops/InfoTechCanonDevSecOpsModel.md
|
||||||
directory: models/devsecops
|
directory: models/devsecops
|
||||||
name: InfoTechCanonDevSecOpsModel.md
|
name: InfoTechCanonDevSecOpsModel.md
|
||||||
|
|
@ -451,6 +463,15 @@ files:
|
||||||
- path: schemas/assimilation.schema.yaml
|
- path: schemas/assimilation.schema.yaml
|
||||||
directory: schemas
|
directory: schemas
|
||||||
name: assimilation.schema.yaml
|
name: assimilation.schema.yaml
|
||||||
|
- path: schemas/attribute-value-type.schema.yaml
|
||||||
|
directory: schemas
|
||||||
|
name: attribute-value-type.schema.yaml
|
||||||
|
- path: schemas/capability-record.schema.yaml
|
||||||
|
directory: schemas
|
||||||
|
name: capability-record.schema.yaml
|
||||||
|
- path: schemas/capability.schema.yaml
|
||||||
|
directory: schemas
|
||||||
|
name: capability.schema.yaml
|
||||||
- path: schemas/concept.schema.yaml
|
- path: schemas/concept.schema.yaml
|
||||||
directory: schemas
|
directory: schemas
|
||||||
name: concept.schema.yaml
|
name: concept.schema.yaml
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
concept_count: 108
|
concept_count: 110
|
||||||
concepts:
|
concepts:
|
||||||
- concept: "Assimilation \u2014 IT Capability Canon (ITCC) v0.1"
|
- concept: "Assimilation \u2014 IT Capability Canon (ITCC) v0.1"
|
||||||
owner: assimilation/it-capability-canon
|
owner: assimilation/it-capability-canon
|
||||||
|
|
@ -28,6 +28,10 @@ concepts:
|
||||||
owner: capability-catalog/itc-cap
|
owner: capability-catalog/itc-cap
|
||||||
path: models/capability/capabilities.yaml
|
path: models/capability/capabilities.yaml
|
||||||
source: artifact_title
|
source: artifact_title
|
||||||
|
- concept: InfoTechCanon Attribute Value Type Catalog
|
||||||
|
owner: catalog/attribute-value-types
|
||||||
|
path: models/data/attribute-value-types.yaml
|
||||||
|
source: artifact_title
|
||||||
- concept: InfoTechCanon Evidence Basis Catalog
|
- concept: InfoTechCanon Evidence Basis Catalog
|
||||||
owner: catalog/evidence-basis
|
owner: catalog/evidence-basis
|
||||||
path: models/governance/evidence-basis.yaml
|
path: models/governance/evidence-basis.yaml
|
||||||
|
|
@ -108,6 +112,10 @@ concepts:
|
||||||
owner: kernel/itc-kernel-map
|
owner: kernel/itc-kernel-map
|
||||||
path: kernel/InfoTechCanonKernelMap.md
|
path: kernel/InfoTechCanonKernelMap.md
|
||||||
source: artifact_title
|
source: artifact_title
|
||||||
|
- concept: ITC-CAP concept mappings to anchoring canon models
|
||||||
|
owner: mapping/capability-anchors
|
||||||
|
path: mappings/capability-anchors.yaml
|
||||||
|
source: artifact_title
|
||||||
- concept: Purpose Demand Governance Extension Candidates
|
- concept: Purpose Demand Governance Extension Candidates
|
||||||
owner: mapping/purpose-demand-governance-candidates
|
owner: mapping/purpose-demand-governance-candidates
|
||||||
path: mappings/purpose-demand-governance-candidates.yaml
|
path: mappings/purpose-demand-governance-candidates.yaml
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ artifacts:
|
||||||
- benchmark/caring/kubernetes-rbac/findings
|
- benchmark/caring/kubernetes-rbac/findings
|
||||||
- benchmark/caring/kubernetes-rbac/native-concepts
|
- benchmark/caring/kubernetes-rbac/native-concepts
|
||||||
- capability-catalog/itc-cap
|
- capability-catalog/itc-cap
|
||||||
|
- catalog/attribute-value-types
|
||||||
- catalog/evidence-basis
|
- catalog/evidence-basis
|
||||||
- comparison/repo-scoping/canon-benefit-analysis
|
- comparison/repo-scoping/canon-benefit-analysis
|
||||||
- comparison/repo-scoping/consumer-workplan-brief
|
- comparison/repo-scoping/consumer-workplan-brief
|
||||||
|
|
@ -26,6 +27,7 @@ artifacts:
|
||||||
- example/consumer-purpose-portfolio
|
- example/consumer-purpose-portfolio
|
||||||
- kernel/itc-core
|
- kernel/itc-core
|
||||||
- kernel/itc-kernel-map
|
- kernel/itc-kernel-map
|
||||||
|
- mapping/capability-anchors
|
||||||
- mapping/purpose-demand-governance-candidates
|
- mapping/purpose-demand-governance-candidates
|
||||||
- model/access-control
|
- model/access-control
|
||||||
- model/capability
|
- model/capability
|
||||||
|
|
@ -134,6 +136,8 @@ rows:
|
||||||
- maps
|
- maps
|
||||||
- artifact: capability-catalog/itc-cap
|
- artifact: capability-catalog/itc-cap
|
||||||
targets: {}
|
targets: {}
|
||||||
|
- artifact: catalog/attribute-value-types
|
||||||
|
targets: {}
|
||||||
- artifact: catalog/evidence-basis
|
- artifact: catalog/evidence-basis
|
||||||
targets: {}
|
targets: {}
|
||||||
- artifact: comparison/repo-scoping/canon-benefit-analysis
|
- artifact: comparison/repo-scoping/canon-benefit-analysis
|
||||||
|
|
@ -354,6 +358,8 @@ rows:
|
||||||
- maps
|
- maps
|
||||||
model/access-control:
|
model/access-control:
|
||||||
- maps
|
- maps
|
||||||
|
model/capability:
|
||||||
|
- maps
|
||||||
model/data:
|
model/data:
|
||||||
- maps
|
- maps
|
||||||
model/devsecops:
|
model/devsecops:
|
||||||
|
|
@ -378,6 +384,8 @@ rows:
|
||||||
- maps
|
- maps
|
||||||
standard/tagging:
|
standard/tagging:
|
||||||
- maps
|
- maps
|
||||||
|
- artifact: mapping/capability-anchors
|
||||||
|
targets: {}
|
||||||
- artifact: mapping/purpose-demand-governance-candidates
|
- artifact: mapping/purpose-demand-governance-candidates
|
||||||
targets:
|
targets:
|
||||||
model/governance:
|
model/governance:
|
||||||
|
|
@ -404,6 +412,8 @@ rows:
|
||||||
- uses
|
- uses
|
||||||
kernel/itc-core:
|
kernel/itc-core:
|
||||||
- conforms_to
|
- conforms_to
|
||||||
|
mapping/capability-anchors:
|
||||||
|
- introduces
|
||||||
model/governance:
|
model/governance:
|
||||||
- uses
|
- uses
|
||||||
model/landscape:
|
model/landscape:
|
||||||
|
|
@ -414,6 +424,8 @@ rows:
|
||||||
- uses
|
- uses
|
||||||
- artifact: model/data
|
- artifact: model/data
|
||||||
targets:
|
targets:
|
||||||
|
catalog/attribute-value-types:
|
||||||
|
- introduces
|
||||||
kernel/itc-core:
|
kernel/itc-core:
|
||||||
- conforms_to
|
- conforms_to
|
||||||
model/governance:
|
model/governance:
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,9 @@ schemas:
|
||||||
interface-card: schemas/interface-card.schema.yaml
|
interface-card: schemas/interface-card.schema.yaml
|
||||||
agent-brief: schemas/agent-brief.schema.yaml
|
agent-brief: schemas/agent-brief.schema.yaml
|
||||||
workplan: schemas/workplan.schema.yaml
|
workplan: schemas/workplan.schema.yaml
|
||||||
|
capability: schemas/capability.schema.yaml
|
||||||
|
capability-record: schemas/capability-record.schema.yaml
|
||||||
|
attribute-value-type: schemas/attribute-value-type.schema.yaml
|
||||||
workflows: []
|
workflows: []
|
||||||
viability:
|
viability:
|
||||||
redundancy_ratio:
|
redundancy_ratio:
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,7 @@ InfoTechCanonDataModel
|
||||||
InfoTechCanonDevSecOpsModel
|
InfoTechCanonDevSecOpsModel
|
||||||
InfoTechCanonNetworkModel
|
InfoTechCanonNetworkModel
|
||||||
InfoTechCanonObservabilityModel
|
InfoTechCanonObservabilityModel
|
||||||
|
InfoTechCanonCapabilityModel
|
||||||
```
|
```
|
||||||
|
|
||||||
Together they form a coherent first-generation semantic substrate for building interoperable information-processing systems.
|
Together they form a coherent first-generation semantic substrate for building interoperable information-processing systems.
|
||||||
|
|
@ -69,6 +70,7 @@ Data = datasets, schemas, classification, lineage, quality, contrac
|
||||||
DevSecOps = source-to-artifact-to-release-to-deployment delivery flow and evidence.
|
DevSecOps = source-to-artifact-to-release-to-deployment delivery flow and evidence.
|
||||||
Network = addressing, topology, routing, policy, reachability, flow, exposure, and state.
|
Network = addressing, topology, routing, policy, reachability, flow, exposure, and state.
|
||||||
Observability = telemetry, signals, logs, metrics, traces, events, alerts, SLOs, and evidence.
|
Observability = telemetry, signals, logs, metrics, traces, events, alerts, SLOs, and evidence.
|
||||||
|
Capability = what an information system must be able to do, independently of how.
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
@ -444,6 +446,23 @@ Network owns communication and reachability. Observability owns signals and runt
|
||||||
| ObservedIncident | Observability / Task or ITSM reference |
|
| ObservedIncident | Observability / Task or ITSM reference |
|
||||||
| ObservabilityEvidence | Observability / Governance reference |
|
| ObservabilityEvidence | Observability / Governance reference |
|
||||||
|
|
||||||
|
## 4.14 Capability Owns Abilities
|
||||||
|
|
||||||
|
| Concept Family | Canonical Owner |
|
||||||
|
|---|---|
|
||||||
|
| Capability / CapabilityProfile | Capability |
|
||||||
|
| CapabilityRequirement / CapabilityProvision | Capability |
|
||||||
|
| CapabilityMaturityLevel | Capability |
|
||||||
|
| CapabilityResourceClass / CapabilityConsumption | Capability |
|
||||||
|
| EvidenceBasis on a consumption row | Governance (imported by Capability) |
|
||||||
|
| Service / Technology that provides a capability | Landscape |
|
||||||
|
| Intended quality target | Capability (requirement) |
|
||||||
|
| Observed SLO | Landscape / Observability |
|
||||||
|
|
||||||
|
ITC-CAP sits between product need and landscape implementation. Capability
|
||||||
|
ids are durable interfaces (CAP-R5). Landscape §11.4 defers abstract
|
||||||
|
ability here.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# 5. CARING Fit in InfoTechCanon
|
# 5. CARING Fit in InfoTechCanon
|
||||||
|
|
|
||||||
150
infospace/mappings/capability-anchors.yaml
Normal file
150
infospace/mappings/capability-anchors.yaml
Normal file
|
|
@ -0,0 +1,150 @@
|
||||||
|
id: mapping/capability-anchors
|
||||||
|
title: ITC-CAP concept mappings to anchoring canon models
|
||||||
|
source: assimilation/it-capability-canon
|
||||||
|
target: model/capability
|
||||||
|
mapping_type: related
|
||||||
|
confidence: mixed
|
||||||
|
canon_version: "0.6.0"
|
||||||
|
note: >
|
||||||
|
Formal per-owner mapping artifacts for ITC-CAP anchors. Adapted from
|
||||||
|
assimilation/it-capability-canon/mappings.yaml. Quality-dimension mapping
|
||||||
|
to SLOs is demand-side targets on the requirement (canon 0.3.0+); measurement
|
||||||
|
remains with LAND/OBS.
|
||||||
|
concept_mappings:
|
||||||
|
- source_concept: Implementation
|
||||||
|
target_concept: Technology / SoftwareEntity / RuntimeEntity
|
||||||
|
target_owner: model/landscape
|
||||||
|
mapping_type: imports
|
||||||
|
confidence: high
|
||||||
|
- source_concept: Provider
|
||||||
|
target_concept: Service / ServiceProvider / ServiceInstance
|
||||||
|
target_owner: model/landscape
|
||||||
|
mapping_type: related
|
||||||
|
confidence: high
|
||||||
|
- source_concept: Resource
|
||||||
|
target_concept: RuntimeResource
|
||||||
|
target_owner: model/landscape
|
||||||
|
mapping_type: broader
|
||||||
|
confidence: medium
|
||||||
|
- source_concept: Evidence
|
||||||
|
target_concept: Evidence
|
||||||
|
target_owner: model/governance
|
||||||
|
mapping_type: imports
|
||||||
|
confidence: high
|
||||||
|
- source_concept: Evidence (telemetry-derived)
|
||||||
|
target_concept: TelemetrySignal / Metric / SLO
|
||||||
|
target_owner: model/observability
|
||||||
|
mapping_type: related
|
||||||
|
confidence: high
|
||||||
|
- source_concept: Requirement
|
||||||
|
target_concept: DemandSignal / ConsumerNeed
|
||||||
|
target_owner: model/purpose-demand-extension
|
||||||
|
mapping_type: narrower
|
||||||
|
confidence: high
|
||||||
|
- source_concept: Quality dimension
|
||||||
|
target_concept: CapabilityRequirement targets / ServiceLevelObjective
|
||||||
|
target_owner: model/capability
|
||||||
|
mapping_type: related
|
||||||
|
confidence: high
|
||||||
|
rationale: Intended targets live on the requirement; observed SLOs stay with LAND/OBS.
|
||||||
|
- source_concept: EvidenceBasis
|
||||||
|
target_concept: EvidenceBasis
|
||||||
|
target_owner: model/governance
|
||||||
|
mapping_type: imports
|
||||||
|
confidence: high
|
||||||
|
- source_concept: identity.authentication
|
||||||
|
target_concept: Principal / AuthenticationEvent
|
||||||
|
target_owner: model/access-control
|
||||||
|
mapping_type: related
|
||||||
|
confidence: high
|
||||||
|
- source_concept: identity.authorization
|
||||||
|
target_concept: AuthorizationDecision / Permission / Grant
|
||||||
|
target_owner: model/access-control
|
||||||
|
mapping_type: related
|
||||||
|
confidence: high
|
||||||
|
- source_concept: identity.organization
|
||||||
|
target_concept: Organization / Team / Tenant
|
||||||
|
target_owner: model/organization
|
||||||
|
mapping_type: related
|
||||||
|
confidence: high
|
||||||
|
- source_concept: security.policy
|
||||||
|
target_concept: Policy / Rule / Control
|
||||||
|
target_owner: model/governance
|
||||||
|
mapping_type: imports
|
||||||
|
confidence: high
|
||||||
|
- source_concept: security.secrets / security.keys / security.vulnerability
|
||||||
|
target_concept: Secret / Key / Vulnerability / Finding
|
||||||
|
target_owner: model/security
|
||||||
|
mapping_type: related
|
||||||
|
confidence: high
|
||||||
|
- source_concept: governance.evidence
|
||||||
|
target_concept: Evidence / Assurance / Control
|
||||||
|
target_owner: model/governance
|
||||||
|
mapping_type: related
|
||||||
|
confidence: high
|
||||||
|
- source_concept: governance.lifecycle
|
||||||
|
target_concept: Retention / Classification / DataContract
|
||||||
|
target_owner: model/data
|
||||||
|
mapping_type: related
|
||||||
|
confidence: medium
|
||||||
|
- source_concept: data.*
|
||||||
|
target_concept: Dataset / DataStore / Schema / Lineage / Retention
|
||||||
|
target_owner: model/data
|
||||||
|
mapping_type: related
|
||||||
|
confidence: high
|
||||||
|
- source_concept: integration.traffic
|
||||||
|
target_concept: Routing / Exposure / Reachability / NetworkPolicy
|
||||||
|
target_owner: model/network
|
||||||
|
mapping_type: related
|
||||||
|
confidence: high
|
||||||
|
- source_concept: integration.api / integration.messaging / integration.exchange
|
||||||
|
target_concept: Endpoint / Interface / Flow
|
||||||
|
target_owner: model/landscape
|
||||||
|
mapping_type: related
|
||||||
|
confidence: medium
|
||||||
|
- source_concept: runtime.deployment
|
||||||
|
target_concept: Release / Deployment / Artifact
|
||||||
|
target_owner: model/devsecops
|
||||||
|
mapping_type: related
|
||||||
|
confidence: high
|
||||||
|
- source_concept: runtime.execution / runtime.configuration / runtime.scheduling
|
||||||
|
target_concept: RuntimeEntity / RuntimeResource / Configuration
|
||||||
|
target_owner: model/landscape
|
||||||
|
mapping_type: related
|
||||||
|
confidence: medium
|
||||||
|
- source_concept: runtime.workflow
|
||||||
|
target_concept: Task / Action / Dependency
|
||||||
|
target_owner: model/task
|
||||||
|
mapping_type: related
|
||||||
|
confidence: medium
|
||||||
|
- source_concept: operations.observability / operations.alerting
|
||||||
|
target_concept: Telemetry / Alert / Health / SLO
|
||||||
|
target_owner: model/observability
|
||||||
|
mapping_type: related
|
||||||
|
confidence: high
|
||||||
|
- source_concept: operations.audit
|
||||||
|
target_concept: Evidence / AuditRecord
|
||||||
|
target_owner: model/governance
|
||||||
|
mapping_type: related
|
||||||
|
confidence: high
|
||||||
|
- source_concept: operations.recovery / operations.continuity
|
||||||
|
target_concept: Incident / ServiceLevelObjective
|
||||||
|
target_owner: model/security
|
||||||
|
mapping_type: related
|
||||||
|
confidence: low
|
||||||
|
note: Continuity has no strong canon owner — OQ-4.
|
||||||
|
- source_concept: commerce.*
|
||||||
|
target_concept: (none)
|
||||||
|
target_owner: model/capability
|
||||||
|
mapping_type: no_mapping
|
||||||
|
confidence: high
|
||||||
|
- source_concept: intelligence.*
|
||||||
|
target_concept: (none)
|
||||||
|
target_owner: model/capability
|
||||||
|
mapping_type: no_mapping
|
||||||
|
confidence: high
|
||||||
|
- source_concept: CILM
|
||||||
|
target_concept: InfoTechCanonLandscapeModel
|
||||||
|
target_owner: model/landscape
|
||||||
|
mapping_type: superseded_by
|
||||||
|
confidence: high
|
||||||
|
|
@ -6,7 +6,7 @@ type: domain-model
|
||||||
standard_family: InfoTechCanon
|
standard_family: InfoTechCanon
|
||||||
repository_context: info-tech-canon
|
repository_context: info-tech-canon
|
||||||
recommended_path: models/capability/InfoTechCanonCapabilityModel.md
|
recommended_path: models/capability/InfoTechCanonCapabilityModel.md
|
||||||
status: proposed
|
status: draft
|
||||||
version: 0.4.0
|
version: 0.4.0
|
||||||
source_version: "0.1"
|
source_version: "0.1"
|
||||||
source_body: Information Technology Capability Canon (ITCC)
|
source_body: Information Technology Capability Canon (ITCC)
|
||||||
|
|
@ -54,7 +54,7 @@ updated_at: 2026-08-15
|
||||||
# InfoTechCanon Capability Model
|
# InfoTechCanon Capability Model
|
||||||
|
|
||||||
**Short Name:** `ITC-CAP`
|
**Short Name:** `ITC-CAP`
|
||||||
**Document Status:** Proposed (assimilated, not yet promoted)
|
**Document Status:** Draft (promoted; contract frozen at canon 0.6.0)
|
||||||
**Version:** 0.4.0
|
**Version:** 0.4.0
|
||||||
**Document Type:** InfoTechCanon Domain Model
|
**Document Type:** InfoTechCanon Domain Model
|
||||||
**Machine-readable catalog:** `models/capability/capabilities.yaml`
|
**Machine-readable catalog:** `models/capability/capabilities.yaml`
|
||||||
|
|
@ -578,7 +578,10 @@ model. This is accepted at `proposed` status and tracked as OQ-5.
|
||||||
|
|
||||||
# 10. Status and Promotion
|
# 10. Status and Promotion
|
||||||
|
|
||||||
This model enters the canon at status `proposed`. Promotion requires:
|
This model is **draft** as of canon 0.6.0. The contract is frozen. Further
|
||||||
|
shape change needs a new minor of ITC-CAP and a CHANGELOG entry.
|
||||||
|
|
||||||
|
Promotion from `proposed` required:
|
||||||
|
|
||||||
1. ~~resolution of assimilation open question **OQ-2**~~ — **resolved in canon
|
1. ~~resolution of assimilation open question **OQ-2**~~ — **resolved in canon
|
||||||
0.2.1**: the Security & Governance navigation domain was split into `security`
|
0.2.1**: the Security & Governance navigation domain was split into `security`
|
||||||
|
|
|
||||||
|
|
@ -13,8 +13,8 @@ canon:
|
||||||
short_name: ITC-CAP
|
short_name: ITC-CAP
|
||||||
artifact_id: model/capability
|
artifact_id: model/capability
|
||||||
version: 0.4.0
|
version: 0.4.0
|
||||||
status: proposed
|
status: draft
|
||||||
canon_version: 0.5.0
|
canon_version: 0.6.0
|
||||||
purpose: Canonical, implementation-independent catalog of the abilities an information system may require
|
purpose: Canonical, implementation-independent catalog of the abilities an information system may require
|
||||||
or provide.
|
or provide.
|
||||||
normative_document: models/capability/InfoTechCanonCapabilityModel.md
|
normative_document: models/capability/InfoTechCanonCapabilityModel.md
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ This standard provides a canonical vocabulary for:
|
||||||
- fields,
|
- fields,
|
||||||
- schemas,
|
- schemas,
|
||||||
- data elements,
|
- data elements,
|
||||||
|
- attribute value types,
|
||||||
- code lists,
|
- code lists,
|
||||||
- data stores as references,
|
- data stores as references,
|
||||||
- data flows,
|
- data flows,
|
||||||
|
|
@ -761,6 +762,30 @@ A **DataType** specifies the technical or logical type of a field or data elemen
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 11.15a AttributeValueType
|
||||||
|
|
||||||
|
An **AttributeValueType** is a closed, versioned, application-facing value
|
||||||
|
type for structured capture. It names the type id, meaning, wire encoding,
|
||||||
|
and whether a CodeList is required. It does not name a widget and it is not
|
||||||
|
a competing entity with Attribute or Field.
|
||||||
|
|
||||||
|
It is a closed profile of **Representation** for capture and forms.
|
||||||
|
Constraint still owns required/format/cardinality. CodeList still owns
|
||||||
|
permitted values. Email, phone, and percentage are not types.
|
||||||
|
|
||||||
|
The catalog is `models/data/attribute-value-types.yaml`. Current ids:
|
||||||
|
`text`, `text-long`, `date`, `time`, `datetime`, `amount`, `one-of`,
|
||||||
|
`some-of`. Reserved: `boolean`, `integer`, `number`, `uri`, `identifier`.
|
||||||
|
Legacy alias `textarea` normalizes to `text-long`.
|
||||||
|
|
||||||
|
`amount` is structured `{value, currency}`. `one-of` / `some-of` require a
|
||||||
|
CodeList; domain lists are not new types.
|
||||||
|
|
||||||
|
**Provenance.** `demand/AttributeValueTypes.md` (citation-evidence),
|
||||||
|
ITC-WP-0013.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 11.16 Constraint
|
## 11.16 Constraint
|
||||||
|
|
||||||
A **Constraint** is a rule limiting valid data.
|
A **Constraint** is a rule limiting valid data.
|
||||||
|
|
|
||||||
27
infospace/models/data/attribute-value-types-alignment.md
Normal file
27
infospace/models/data/attribute-value-types-alignment.md
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
# Alignment note — AttributeValueType catalog for citation-evidence
|
||||||
|
|
||||||
|
**Consumer:** citation-evidence Capture UX
|
||||||
|
**Demand:** `demand/AttributeValueTypes.md`
|
||||||
|
**Catalog:** `models/data/attribute-value-types.yaml`
|
||||||
|
**Owner:** ITC-DATA
|
||||||
|
**Canon version:** 0.6.0
|
||||||
|
|
||||||
|
citation-evidence should import these ids rather than keep a private type
|
||||||
|
enum. Widgets, filters, and evidence links stay in the consumer.
|
||||||
|
|
||||||
|
| Consumer need | Canon id | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| short text | `text` | already in use |
|
||||||
|
| textarea | `text-long` | accept `textarea` on load; write `text-long` |
|
||||||
|
| date | `date` | `YYYY-MM-DD` |
|
||||||
|
| time | `time` | requested |
|
||||||
|
| datetime | `datetime` | ISO-8601 |
|
||||||
|
| amount | `amount` | `{value, currency}` — accepted default |
|
||||||
|
| single choice | `one-of` | CodeList required; widget is consumer (`select`) |
|
||||||
|
| multi choice | `some-of` | CodeList required |
|
||||||
|
| boolean / integer / number / uri / identifier | reserved | do not implement until needed |
|
||||||
|
|
||||||
|
Do not add `email`, `phone`, or `percentage` as types. Those are `text` or
|
||||||
|
`number` plus a Constraint.
|
||||||
|
|
||||||
|
CE-WP-0012 widgets remain consumer work.
|
||||||
129
infospace/models/data/attribute-value-types.yaml
Normal file
129
infospace/models/data/attribute-value-types.yaml
Normal file
|
|
@ -0,0 +1,129 @@
|
||||||
|
# InfoTechCanon Attribute Value Type Catalog
|
||||||
|
#
|
||||||
|
# Closed, versioned application-facing value types for structured capture.
|
||||||
|
# Owned by ITC-DATA. Does not name widgets. Encoding rules live here;
|
||||||
|
# Constraint, CodeList, and Representation stay the owning concepts.
|
||||||
|
canon:
|
||||||
|
id: itc-data-attribute-value-types
|
||||||
|
name: InfoTechCanon Attribute Value Type Catalog
|
||||||
|
artifact_id: catalog/attribute-value-types
|
||||||
|
version: 0.1.0
|
||||||
|
status: draft
|
||||||
|
canon_version: 0.6.0
|
||||||
|
owner: model/data
|
||||||
|
purpose: Closed catalog of capture value types so consumers share ids and
|
||||||
|
wire encodings without forking a private type system.
|
||||||
|
normative_document: models/data/InfoTechCanonDataModel.md
|
||||||
|
provenance:
|
||||||
|
demand: demand/AttributeValueTypes.md
|
||||||
|
consumer: citation-evidence
|
||||||
|
consumer_draft: citation-evidence/wiki/AttributeValueTypes-proposal.md
|
||||||
|
workplan: ITC-WP-0013
|
||||||
|
types:
|
||||||
|
- id: text
|
||||||
|
status: current
|
||||||
|
kind: scalar
|
||||||
|
wire: string
|
||||||
|
representation: string
|
||||||
|
description: Short free text.
|
||||||
|
- id: text-long
|
||||||
|
status: current
|
||||||
|
kind: scalar
|
||||||
|
wire: string
|
||||||
|
representation: string
|
||||||
|
description: Long free text. Canonical id for the legacy alias textarea.
|
||||||
|
aliases: [textarea]
|
||||||
|
- id: date
|
||||||
|
status: current
|
||||||
|
kind: scalar
|
||||||
|
wire: string
|
||||||
|
format: YYYY-MM-DD
|
||||||
|
representation: date
|
||||||
|
description: Calendar date.
|
||||||
|
- id: time
|
||||||
|
status: current
|
||||||
|
kind: scalar
|
||||||
|
wire: string
|
||||||
|
format: HH:MM or HH:MM:SS
|
||||||
|
representation: string
|
||||||
|
description: Clock time without a date.
|
||||||
|
- id: datetime
|
||||||
|
status: current
|
||||||
|
kind: scalar
|
||||||
|
wire: string
|
||||||
|
format: ISO-8601 local or offset
|
||||||
|
representation: timestamp
|
||||||
|
description: Date and time.
|
||||||
|
- id: amount
|
||||||
|
status: current
|
||||||
|
kind: quantity
|
||||||
|
wire: object
|
||||||
|
representation: decimal
|
||||||
|
requires_codelist: currency
|
||||||
|
description: Quantity plus currency. Wire form is structured JSON.
|
||||||
|
encoding:
|
||||||
|
value: decimal-as-string
|
||||||
|
currency: ISO-4217 code
|
||||||
|
example: {value: "1500.00", currency: EUR}
|
||||||
|
- id: one-of
|
||||||
|
status: current
|
||||||
|
kind: choice
|
||||||
|
wire: string
|
||||||
|
representation: code
|
||||||
|
requires_codelist: true
|
||||||
|
cardinality: 1
|
||||||
|
description: Exactly one value from a CodeList. Wire value is the option id.
|
||||||
|
- id: some-of
|
||||||
|
status: current
|
||||||
|
kind: choice
|
||||||
|
wire: array
|
||||||
|
representation: code
|
||||||
|
requires_codelist: true
|
||||||
|
cardinality: 0-n
|
||||||
|
description: Zero or more values from a CodeList. Wire value is an array of
|
||||||
|
option ids.
|
||||||
|
- id: boolean
|
||||||
|
status: reserved
|
||||||
|
kind: scalar
|
||||||
|
wire: boolean
|
||||||
|
representation: boolean
|
||||||
|
description: Yes/no. Reserved; not required of consumers yet.
|
||||||
|
- id: integer
|
||||||
|
status: reserved
|
||||||
|
kind: scalar
|
||||||
|
wire: string
|
||||||
|
representation: integer
|
||||||
|
description: Integer as decimal digits. Reserved.
|
||||||
|
- id: number
|
||||||
|
status: reserved
|
||||||
|
kind: scalar
|
||||||
|
wire: string
|
||||||
|
representation: decimal
|
||||||
|
description: Decimal number as string. Reserved.
|
||||||
|
- id: uri
|
||||||
|
status: reserved
|
||||||
|
kind: scalar
|
||||||
|
wire: string
|
||||||
|
representation: URI
|
||||||
|
description: URI. Reserved.
|
||||||
|
- id: identifier
|
||||||
|
status: reserved
|
||||||
|
kind: scalar
|
||||||
|
wire: string
|
||||||
|
representation: identifier
|
||||||
|
description: Opaque identifier. Reserved.
|
||||||
|
rules:
|
||||||
|
- id: no-email-type
|
||||||
|
statement: Do not add email, phone, or percentage as types. Use text or
|
||||||
|
number plus a Constraint.
|
||||||
|
- id: no-widget
|
||||||
|
statement: AttributeValueType does not name a UI widget.
|
||||||
|
- id: alias-normalize
|
||||||
|
statement: Legacy alias textarea MUST be accepted on read and normalized
|
||||||
|
to text-long on write.
|
||||||
|
- id: amount-structured
|
||||||
|
statement: amount MUST use {value, currency}. A single string is not
|
||||||
|
canonical.
|
||||||
|
- id: choice-needs-codelist
|
||||||
|
statement: one-of and some-of MUST attach a CodeList. Domain-specific
|
||||||
|
lists are not new types.
|
||||||
|
|
@ -610,7 +610,15 @@ These concepts SHOULD eventually be reviewed against:
|
||||||
- product management,
|
- product management,
|
||||||
- and governance models.
|
- and governance models.
|
||||||
|
|
||||||
The Landscape Model should keep only landscape-relevant references once a dedicated strategy/capability standard exists.
|
A dedicated capability model now exists: **ITC-CAP**
|
||||||
|
(`model/capability`). Abstract ability — what a system must be able to do
|
||||||
|
— is owned there. `BusinessCapability` / `ProductCapability` in this
|
||||||
|
domain SHOULD resolve to references to ITC-CAP ids. This domain keeps
|
||||||
|
landscape-relevant strategy concepts (Goal, Driver, Initiative,
|
||||||
|
RoadmapItem, ValueStream). Capability as ability is no longer owned here.
|
||||||
|
|
||||||
|
ITC-CAP names *intended* requirement targets. This model still owns
|
||||||
|
services, technologies, runtime resources, and *observed* SLOs.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
36
infospace/schemas/attribute-value-type.schema.yaml
Normal file
36
infospace/schemas/attribute-value-type.schema.yaml
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
$schema: https://json-schema.org/draft/2020-12/schema
|
||||||
|
$id: https://info-tech-canon.local/schemas/attribute-value-type.schema.yaml
|
||||||
|
title: InfoTechCanon Attribute Value Type Catalog
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- canon
|
||||||
|
- types
|
||||||
|
properties:
|
||||||
|
canon:
|
||||||
|
type: object
|
||||||
|
required: [id, version, owner]
|
||||||
|
types:
|
||||||
|
type: array
|
||||||
|
minItems: 1
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
required: [id, status, kind, wire]
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
type: string
|
||||||
|
pattern: "^[a-z][a-z0-9-]*$"
|
||||||
|
status:
|
||||||
|
enum: [current, reserved]
|
||||||
|
kind:
|
||||||
|
enum: [scalar, quantity, choice]
|
||||||
|
wire:
|
||||||
|
enum: [string, object, array, boolean]
|
||||||
|
representation:
|
||||||
|
type: string
|
||||||
|
requires_codelist:
|
||||||
|
type: [boolean, string]
|
||||||
|
aliases:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
additionalProperties: true
|
||||||
118
infospace/schemas/capability-record.schema.yaml
Normal file
118
infospace/schemas/capability-record.schema.yaml
Normal file
|
|
@ -0,0 +1,118 @@
|
||||||
|
$schema: https://json-schema.org/draft/2020-12/schema
|
||||||
|
$id: https://info-tech-canon.local/schemas/capability-record.schema.yaml
|
||||||
|
title: InfoTechCanon Capability Requirement and Provision Record
|
||||||
|
description: >
|
||||||
|
Shape of a consumer capability case (requirement set + provisions).
|
||||||
|
Validated against the live catalog by the capability-review surface.
|
||||||
|
ITC-CAP 0.4.0 / CAP-R8–R11.
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- requires
|
||||||
|
properties:
|
||||||
|
requires:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: "#/$defs/requirement"
|
||||||
|
provisions:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: "#/$defs/provision"
|
||||||
|
additionalProperties: true
|
||||||
|
$defs:
|
||||||
|
quantity:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
value: {}
|
||||||
|
unit:
|
||||||
|
type: string
|
||||||
|
requirement:
|
||||||
|
type: object
|
||||||
|
required: [capability]
|
||||||
|
properties:
|
||||||
|
capability:
|
||||||
|
type: string
|
||||||
|
profile:
|
||||||
|
type: string
|
||||||
|
minimum_maturity:
|
||||||
|
type: string
|
||||||
|
pattern: "^D[0-7]$"
|
||||||
|
targets:
|
||||||
|
type: object
|
||||||
|
additionalProperties:
|
||||||
|
type: object
|
||||||
|
constraints:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
required: [dimension, predicate]
|
||||||
|
properties:
|
||||||
|
dimension:
|
||||||
|
type: string
|
||||||
|
predicate:
|
||||||
|
enum: [not_in, in, equals, lte, gte]
|
||||||
|
of:
|
||||||
|
type: array
|
||||||
|
provision:
|
||||||
|
type: object
|
||||||
|
required: [provider, capability, maturity]
|
||||||
|
properties:
|
||||||
|
provider:
|
||||||
|
type: string
|
||||||
|
capability:
|
||||||
|
type: string
|
||||||
|
profile:
|
||||||
|
type: string
|
||||||
|
environment:
|
||||||
|
type: string
|
||||||
|
maturity:
|
||||||
|
type: string
|
||||||
|
pattern: "^D[0-7]$"
|
||||||
|
uses_provisions:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
required: [capability, provider, relation]
|
||||||
|
properties:
|
||||||
|
capability:
|
||||||
|
type: string
|
||||||
|
provider:
|
||||||
|
type: string
|
||||||
|
relation:
|
||||||
|
enum: [depends_on, may_use]
|
||||||
|
consumes:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
required: [class, quantity, basis]
|
||||||
|
properties:
|
||||||
|
class:
|
||||||
|
type: string
|
||||||
|
pattern: "^[A-Z]$"
|
||||||
|
quantity:
|
||||||
|
$ref: "#/$defs/quantity"
|
||||||
|
basis:
|
||||||
|
enum:
|
||||||
|
- invoiced
|
||||||
|
- measured
|
||||||
|
- quoted
|
||||||
|
- derived
|
||||||
|
- projected
|
||||||
|
- estimated
|
||||||
|
- assumed
|
||||||
|
- unknown
|
||||||
|
supply:
|
||||||
|
enum: [internal, external]
|
||||||
|
period:
|
||||||
|
type: string
|
||||||
|
gap:
|
||||||
|
type: string
|
||||||
|
evidence:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
required: [hook]
|
||||||
|
properties:
|
||||||
|
hook:
|
||||||
|
type: string
|
||||||
|
basis:
|
||||||
|
type: string
|
||||||
114
infospace/schemas/capability.schema.yaml
Normal file
114
infospace/schemas/capability.schema.yaml
Normal file
|
|
@ -0,0 +1,114 @@
|
||||||
|
$schema: https://json-schema.org/draft/2020-12/schema
|
||||||
|
$id: https://info-tech-canon.local/schemas/capability.schema.yaml
|
||||||
|
title: InfoTechCanon Capability Catalog (ITC-CAP 0.4.0)
|
||||||
|
description: >
|
||||||
|
Contract for capabilities.yaml. Encodes ITC-CAP 0.4.0 — no
|
||||||
|
typical_resource_classes; resource classes carry native_unit, supply,
|
||||||
|
and capacity_behaviour. Requirement and provision records are validated
|
||||||
|
separately by the capability-review surface.
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- canon
|
||||||
|
- resource_classes
|
||||||
|
- maturity_levels
|
||||||
|
- domains
|
||||||
|
properties:
|
||||||
|
canon:
|
||||||
|
type: object
|
||||||
|
required: [id, version]
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
const: itc-cap
|
||||||
|
version:
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
type: string
|
||||||
|
canon_version:
|
||||||
|
type: string
|
||||||
|
resource_classes:
|
||||||
|
type: array
|
||||||
|
minItems: 1
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
required: [id, name, native_unit, supply, capacity_behaviour]
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
type: string
|
||||||
|
pattern: "^[A-Z]$"
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
native_unit:
|
||||||
|
type: string
|
||||||
|
supply:
|
||||||
|
enum: [internal, external]
|
||||||
|
capacity_behaviour:
|
||||||
|
enum: [elastic, constrained]
|
||||||
|
additionalProperties: true
|
||||||
|
maturity_levels:
|
||||||
|
type: array
|
||||||
|
minItems: 8
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
required: [id, name]
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
type: string
|
||||||
|
pattern: "^D[0-7]$"
|
||||||
|
applies_to:
|
||||||
|
const: capability_provision
|
||||||
|
relationship_types:
|
||||||
|
type: array
|
||||||
|
domains:
|
||||||
|
type: array
|
||||||
|
minItems: 1
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
required: [id, name, capabilities]
|
||||||
|
properties:
|
||||||
|
navigation_only:
|
||||||
|
type: boolean
|
||||||
|
capabilities:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: "#/$defs/capability"
|
||||||
|
additionalProperties: true
|
||||||
|
$defs:
|
||||||
|
capability:
|
||||||
|
type: object
|
||||||
|
required: [id, name, purpose]
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
type: string
|
||||||
|
pattern: "^[a-z]+\\.[a-z0-9-]+$"
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
purpose:
|
||||||
|
type: string
|
||||||
|
anchors:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
profiles:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
quality_dimensions:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
evidence_hooks:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
depends_on:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
may_use:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
typical_resource_classes:
|
||||||
|
not: {}
|
||||||
|
description: Forbidden. Consumption attaches to a provision (CAP-R8).
|
||||||
|
additionalProperties: true
|
||||||
|
|
@ -17,3 +17,9 @@ schemas:
|
||||||
path: workplan.schema.yaml
|
path: workplan.schema.yaml
|
||||||
- id: alignment-review
|
- id: alignment-review
|
||||||
path: alignment-review.schema.yaml
|
path: alignment-review.schema.yaml
|
||||||
|
- id: capability
|
||||||
|
path: capability.schema.yaml
|
||||||
|
- id: capability-record
|
||||||
|
path: capability-record.schema.yaml
|
||||||
|
- id: attribute-value-type
|
||||||
|
path: attribute-value-type.schema.yaml
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,14 @@
|
||||||
{
|
{
|
||||||
"details": {
|
"details": {
|
||||||
"artifact_count": 66,
|
"artifact_count": 68,
|
||||||
"relationship_count": 288
|
"relationship_count": 291
|
||||||
},
|
},
|
||||||
"errors": [],
|
"errors": [],
|
||||||
"metrics": {
|
"metrics": {
|
||||||
"coherence_components": 1.0,
|
"coherence_components": 1.0,
|
||||||
"consistency_cycles": 0.0,
|
"consistency_cycles": 0.0,
|
||||||
"coverage_ratio": 1.0,
|
"coverage_ratio": 1.0,
|
||||||
"granularity_entropy": 4.459014704982469,
|
"granularity_entropy": 4.478787416971244,
|
||||||
"redundancy_ratio": 0.0
|
"redundancy_ratio": 0.0
|
||||||
},
|
},
|
||||||
"ok": true,
|
"ok": true,
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
# By Concept
|
# By Concept
|
||||||
|
|
||||||
Concept count: **108**
|
Concept count: **110**
|
||||||
|
|
||||||
| Concept | Owner | Source |
|
| Concept | Owner | Source |
|
||||||
| --- | --- | --- |
|
| --- | --- | --- |
|
||||||
|
|
@ -13,6 +13,7 @@ Concept count: **108**
|
||||||
| Kubernetes RBAC Benchmark Findings And Canon Pressure | `benchmark/caring/kubernetes-rbac/findings` | `artifact_title` |
|
| Kubernetes RBAC Benchmark Findings And Canon Pressure | `benchmark/caring/kubernetes-rbac/findings` | `artifact_title` |
|
||||||
| Kubernetes RBAC Native Concept Map | `benchmark/caring/kubernetes-rbac/native-concepts` | `artifact_title` |
|
| Kubernetes RBAC Native Concept Map | `benchmark/caring/kubernetes-rbac/native-concepts` | `artifact_title` |
|
||||||
| InfoTechCanon Capability Catalog | `capability-catalog/itc-cap` | `artifact_title` |
|
| InfoTechCanon Capability Catalog | `capability-catalog/itc-cap` | `artifact_title` |
|
||||||
|
| InfoTechCanon Attribute Value Type Catalog | `catalog/attribute-value-types` | `artifact_title` |
|
||||||
| InfoTechCanon Evidence Basis Catalog | `catalog/evidence-basis` | `artifact_title` |
|
| InfoTechCanon Evidence Basis Catalog | `catalog/evidence-basis` | `artifact_title` |
|
||||||
| Repo Scoping Canon Benefit Analysis | `comparison/repo-scoping/canon-benefit-analysis` | `artifact_title` |
|
| Repo Scoping Canon Benefit Analysis | `comparison/repo-scoping/canon-benefit-analysis` | `artifact_title` |
|
||||||
| Repo Scoping Consumer Workplan Brief | `comparison/repo-scoping/consumer-workplan-brief` | `artifact_title` |
|
| Repo Scoping Consumer Workplan Brief | `comparison/repo-scoping/consumer-workplan-brief` | `artifact_title` |
|
||||||
|
|
@ -33,6 +34,7 @@ Concept count: **108**
|
||||||
| Canon-Side Consumer Purpose Portfolio | `example/consumer-purpose-portfolio` | `artifact_title` |
|
| Canon-Side Consumer Purpose Portfolio | `example/consumer-purpose-portfolio` | `artifact_title` |
|
||||||
| InfoTechCanon Core | `kernel/itc-core` | `artifact_title` |
|
| InfoTechCanon Core | `kernel/itc-core` | `artifact_title` |
|
||||||
| InfoTechCanon Kernel Map | `kernel/itc-kernel-map` | `artifact_title` |
|
| InfoTechCanon Kernel Map | `kernel/itc-kernel-map` | `artifact_title` |
|
||||||
|
| ITC-CAP concept mappings to anchoring canon models | `mapping/capability-anchors` | `artifact_title` |
|
||||||
| Purpose Demand Governance Extension Candidates | `mapping/purpose-demand-governance-candidates` | `artifact_title` |
|
| Purpose Demand Governance Extension Candidates | `mapping/purpose-demand-governance-candidates` | `artifact_title` |
|
||||||
| InfoTechCanon Access Control Model | `model/access-control` | `artifact_title` |
|
| InfoTechCanon Access Control Model | `model/access-control` | `artifact_title` |
|
||||||
| InfoTechCanon Capability Model | `model/capability` | `artifact_title` |
|
| InfoTechCanon Capability Model | `model/capability` | `artifact_title` |
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,10 @@
|
||||||
|
|
||||||
- `model/capability` via `introduces`
|
- `model/capability` via `introduces`
|
||||||
|
|
||||||
|
## `catalog/attribute-value-types`
|
||||||
|
|
||||||
|
- `model/data` via `introduces`
|
||||||
|
|
||||||
## `catalog/evidence-basis`
|
## `catalog/evidence-basis`
|
||||||
|
|
||||||
- `model/capability` via `uses`
|
- `model/capability` via `uses`
|
||||||
|
|
@ -82,6 +86,10 @@
|
||||||
- `standard/repository-layout` via `conforms_to`
|
- `standard/repository-layout` via `conforms_to`
|
||||||
- `standard/tagging` via `conforms_to`
|
- `standard/tagging` via `conforms_to`
|
||||||
|
|
||||||
|
## `mapping/capability-anchors`
|
||||||
|
|
||||||
|
- `model/capability` via `introduces`
|
||||||
|
|
||||||
## `model/access-control`
|
## `model/access-control`
|
||||||
|
|
||||||
- `benchmark/caring/kubernetes-rbac` via `stress_tests`
|
- `benchmark/caring/kubernetes-rbac` via `stress_tests`
|
||||||
|
|
@ -98,6 +106,10 @@
|
||||||
- `small-saas/user/ada-admin` via `uses`
|
- `small-saas/user/ada-admin` via `uses`
|
||||||
- `standard/caring` via `imports`
|
- `standard/caring` via `imports`
|
||||||
|
|
||||||
|
## `model/capability`
|
||||||
|
|
||||||
|
- `kernel/itc-kernel-map` via `maps`
|
||||||
|
|
||||||
## `model/data`
|
## `model/data`
|
||||||
|
|
||||||
- `conformance/railiance-fabric` via `uses`
|
- `conformance/railiance-fabric` via `uses`
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
- ID: `kernel/itc-kernel-map`
|
- ID: `kernel/itc-kernel-map`
|
||||||
- Kind: `kernel`
|
- Kind: `kernel`
|
||||||
- Path: `kernel/InfoTechCanonKernelMap.md`
|
- Path: `kernel/InfoTechCanonKernelMap.md`
|
||||||
- Relationships: 14
|
- Relationships: 15
|
||||||
|
|
||||||
## InfoTechCanon CARING Access Governance Standard
|
## InfoTechCanon CARING Access Governance Standard
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,71 +2,73 @@
|
||||||
|
|
||||||
# Import Matrix
|
# Import Matrix
|
||||||
|
|
||||||
| Artifact | `assimilation/it-capability-canon` | `benchmark/caring/kubernetes-rbac` | `benchmark/caring/kubernetes-rbac/access-descriptors` | `benchmark/caring/kubernetes-rbac/caring-mapping` | `benchmark/caring/kubernetes-rbac/findings` | `benchmark/caring/kubernetes-rbac/native-concepts` | `capability-catalog/itc-cap` | `catalog/evidence-basis` | `comparison/repo-scoping/canon-benefit-analysis` | `comparison/repo-scoping/consumer-workplan-brief` | `comparison/repo-scoping/extension-candidates` | `comparison/repo-scoping/frame` | `comparison/repo-scoping/report` | `concept-catalog/purpose-demand` | `conformance/railiance-fabric` | `conformance/railiance-fabric/consumer-workplan-brief` | `conformance/railiance-fabric/entity-edge-capture-criteria` | `conformance/railiance-fabric/mapping-expectations` | `conformance/railiance-fabric/visualization-examples` | `evaluation/user-engine` | `evaluation/user-engine/consumer-workplan-brief` | `evaluation/user-engine/interface-card-expectations` | `evaluation/user-engine/questions` | `evaluation/user-engine/small-saas-alignment` | `example/consumer-purpose-portfolio` | `kernel/itc-core` | `kernel/itc-kernel-map` | `mapping/purpose-demand-governance-candidates` | `model/access-control` | `model/capability` | `model/data` | `model/devsecops` | `model/governance` | `model/information-space` | `model/landscape` | `model/network` | `model/observability` | `model/organization` | `model/purpose-demand-extension` | `model/security` | `model/task` | `pattern/intent-scope-purposes` | `practice/intake-and-assimilation` | `profile/small-saas` | `review-kit/alignment` | `review-kit/alignment/model-selection-guide` | `review-kit/alignment/schema` | `review-kit/alignment/scorecard` | `review-kit/alignment/workflow` | `review-kit/alignment/workplan-template` | `small-saas/control/namespace-per-tenant` | `small-saas/dataset/subscription-ledger` | `small-saas/deployment/production` | `small-saas/evidence/access-review-2026-05` | `small-saas/incident/cross-tenant-access-attempt` | `small-saas/policy/tenant-isolation` | `small-saas/service/billing-portal` | `small-saas/system/billing-system` | `small-saas/task/onboard-tenant` | `small-saas/team/platform` | `small-saas/tenant/acme` | `small-saas/tenant/globex` | `small-saas/user/ada-admin` | `standard/caring` | `standard/repository-layout` | `standard/tagging` |
|
| Artifact | `assimilation/it-capability-canon` | `benchmark/caring/kubernetes-rbac` | `benchmark/caring/kubernetes-rbac/access-descriptors` | `benchmark/caring/kubernetes-rbac/caring-mapping` | `benchmark/caring/kubernetes-rbac/findings` | `benchmark/caring/kubernetes-rbac/native-concepts` | `capability-catalog/itc-cap` | `catalog/attribute-value-types` | `catalog/evidence-basis` | `comparison/repo-scoping/canon-benefit-analysis` | `comparison/repo-scoping/consumer-workplan-brief` | `comparison/repo-scoping/extension-candidates` | `comparison/repo-scoping/frame` | `comparison/repo-scoping/report` | `concept-catalog/purpose-demand` | `conformance/railiance-fabric` | `conformance/railiance-fabric/consumer-workplan-brief` | `conformance/railiance-fabric/entity-edge-capture-criteria` | `conformance/railiance-fabric/mapping-expectations` | `conformance/railiance-fabric/visualization-examples` | `evaluation/user-engine` | `evaluation/user-engine/consumer-workplan-brief` | `evaluation/user-engine/interface-card-expectations` | `evaluation/user-engine/questions` | `evaluation/user-engine/small-saas-alignment` | `example/consumer-purpose-portfolio` | `kernel/itc-core` | `kernel/itc-kernel-map` | `mapping/capability-anchors` | `mapping/purpose-demand-governance-candidates` | `model/access-control` | `model/capability` | `model/data` | `model/devsecops` | `model/governance` | `model/information-space` | `model/landscape` | `model/network` | `model/observability` | `model/organization` | `model/purpose-demand-extension` | `model/security` | `model/task` | `pattern/intent-scope-purposes` | `practice/intake-and-assimilation` | `profile/small-saas` | `review-kit/alignment` | `review-kit/alignment/model-selection-guide` | `review-kit/alignment/schema` | `review-kit/alignment/scorecard` | `review-kit/alignment/workflow` | `review-kit/alignment/workplan-template` | `small-saas/control/namespace-per-tenant` | `small-saas/dataset/subscription-ledger` | `small-saas/deployment/production` | `small-saas/evidence/access-review-2026-05` | `small-saas/incident/cross-tenant-access-attempt` | `small-saas/policy/tenant-isolation` | `small-saas/service/billing-portal` | `small-saas/system/billing-system` | `small-saas/task/onboard-tenant` | `small-saas/team/platform` | `small-saas/tenant/acme` | `small-saas/tenant/globex` | `small-saas/user/ada-admin` | `standard/caring` | `standard/repository-layout` | `standard/tagging` |
|
||||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||||
| `assimilation/it-capability-canon` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `assimilation/it-capability-canon` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `benchmark/caring/kubernetes-rbac` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `stress_tests` | | | `stress_tests` | `stress_tests` | | | `stress_tests` | `stress_tests` | | | `stress_tests` | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | `uses` |
|
| `benchmark/caring/kubernetes-rbac` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `stress_tests` | | | `stress_tests` | `stress_tests` | | | `stress_tests` | `stress_tests` | | | `stress_tests` | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | `uses` |
|
||||||
| `benchmark/caring/kubernetes-rbac/access-descriptors` | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | `uses` | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | |
|
| `benchmark/caring/kubernetes-rbac/access-descriptors` | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | `uses` | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | |
|
||||||
| `benchmark/caring/kubernetes-rbac/caring-mapping` | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | `maps` | | | | | | | `maps` | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | |
|
| `benchmark/caring/kubernetes-rbac/caring-mapping` | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | `maps` | | | | | | | `maps` | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | |
|
||||||
| `benchmark/caring/kubernetes-rbac/findings` | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `proposes` | | | | | | | `proposes` | | | | | | | | | | | | | | | | | | | | | | | | `proposes` | | |
|
| `benchmark/caring/kubernetes-rbac/findings` | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `proposes` | | | | | | | `proposes` | | | | | | | | | | | | | | | | | | | | | | | | `proposes` | | |
|
||||||
| `benchmark/caring/kubernetes-rbac/native-concepts` | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | | | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | |
|
| `benchmark/caring/kubernetes-rbac/native-concepts` | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | | | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | |
|
||||||
| `capability-catalog/itc-cap` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `capability-catalog/itc-cap` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `catalog/evidence-basis` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `catalog/attribute-value-types` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `comparison/repo-scoping/canon-benefit-analysis` | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | `maps` | `maps` | | | | | `maps` | | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | `maps` |
|
| `catalog/evidence-basis` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `comparison/repo-scoping/consumer-workplan-brief` | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `comparison/repo-scoping/canon-benefit-analysis` | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | `maps` | `maps` | | | | | `maps` | | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | `maps` |
|
||||||
| `comparison/repo-scoping/extension-candidates` | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | `proposes` | `proposes` | | | | | `proposes` | | `proposes` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `comparison/repo-scoping/consumer-workplan-brief` | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `comparison/repo-scoping/frame` | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `uses` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `comparison/repo-scoping/extension-candidates` | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | `proposes` | `proposes` | | | | | `proposes` | | `proposes` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `comparison/repo-scoping/report` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | `uses` | | | | | `compares` | | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `comparison/repo-scoping/frame` | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `uses` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `concept-catalog/purpose-demand` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `comparison/repo-scoping/report` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | `uses` | | | | | `compares` | | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `conformance/railiance-fabric` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | `uses` |
|
| `concept-catalog/purpose-demand` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `conformance/railiance-fabric/consumer-workplan-brief` | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `conformance/railiance-fabric` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | `uses` |
|
||||||
| `conformance/railiance-fabric/entity-edge-capture-criteria` | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `conformance/railiance-fabric/consumer-workplan-brief` | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `conformance/railiance-fabric/mapping-expectations` | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | `maps` | `maps` | `maps` | | `maps` | `maps` | `maps` | | `maps` | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `conformance/railiance-fabric/entity-edge-capture-criteria` | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `conformance/railiance-fabric/visualization-examples` | | | | | | | | | | | | | | | `part_of` | | `illustrates` | `illustrates` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `conformance/railiance-fabric/mapping-expectations` | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | `maps` | `maps` | `maps` | | `maps` | `maps` | `maps` | | `maps` | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `evaluation/user-engine` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | `uses` | | `uses` | | | | | `uses` | `uses` | `uses` | `uses` | | | `evaluates` | | | | | | | | | | | | | | | | | | | | `uses` | | |
|
| `conformance/railiance-fabric/visualization-examples` | | | | | | | | | | | | | | | | `part_of` | | `illustrates` | `illustrates` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `evaluation/user-engine/consumer-workplan-brief` | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `evaluation/user-engine` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | `uses` | | `uses` | | | | | `uses` | `uses` | `uses` | `uses` | | | `evaluates` | | | | | | | | | | | | | | | | | | | | `uses` | | |
|
||||||
| `evaluation/user-engine/interface-card-expectations` | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | |
|
| `evaluation/user-engine/consumer-workplan-brief` | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `evaluation/user-engine/questions` | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | `uses` | | `uses` | | `uses` | | | | | `uses` | `uses` | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `evaluation/user-engine/interface-card-expectations` | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | |
|
||||||
| `evaluation/user-engine/small-saas-alignment` | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | `uses` | | | | `uses` | | | | | `uses` | | | | | | `evaluates` | | | | | | | | | | | | | | | | | | | | | | |
|
| `evaluation/user-engine/questions` | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | `uses` | | `uses` | | `uses` | | | | | `uses` | `uses` | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `example/consumer-purpose-portfolio` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `illustrates` | | | `illustrates` | | `uses` | | | | | | | | | | | | | | | | | | | | | | |
|
| `evaluation/user-engine/small-saas-alignment` | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | `uses` | | | | `uses` | | | | | `uses` | | | | | | `evaluates` | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `kernel/itc-core` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `example/consumer-purpose-portfolio` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `illustrates` | | | `illustrates` | | `uses` | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `kernel/itc-kernel-map` | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | `maps` | | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | | `maps` | `maps` | | | | | | | | | | | | | | | | | | | | | | | `maps` | | `maps` |
|
| `kernel/itc-core` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `mapping/purpose-demand-governance-candidates` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | | | `maps` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `kernel/itc-kernel-map` | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | | `maps` | `maps` | | | | | | | | | | | | | | | | | | | | | | | `maps` | | `maps` |
|
||||||
| `model/access-control` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | `uses` | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `mapping/capability-anchors` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `model/capability` | `derived_from` | | | | | | `introduces` | `uses` | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | `uses` | | `uses` | | `uses` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `mapping/purpose-demand-governance-candidates` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | | | `maps` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `model/data` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `model/access-control` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | `uses` | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `model/devsecops` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `model/capability` | `derived_from` | | | | | | `introduces` | | `uses` | | | | | | | | | | | | | | | | | | `conforms_to` | | `introduces` | | | | | | `uses` | | `uses` | | `uses` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `model/governance` | | | | | | | | `introduces` | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `model/data` | | | | | | | | `introduces` | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `model/information-space` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `model/devsecops` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `model/landscape` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `model/governance` | | | | | | | | | `introduces` | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `model/network` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `model/information-space` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `model/observability` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `model/landscape` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `model/organization` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `model/network` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `model/purpose-demand-extension` | | | | | | | | | | | | | | `introduces` | | | | | | | | | | | | `conforms_to` | | | | | | | `extends` | `uses` | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `model/observability` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `model/security` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `model/organization` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `model/task` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `model/purpose-demand-extension` | | | | | | | | | | | | | | | `introduces` | | | | | | | | | | | | `conforms_to` | | | | | | | | `extends` | `uses` | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `pattern/intent-scope-purposes` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `implements` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `model/security` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `practice/intake-and-assimilation` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `model/task` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `profile/small-saas` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | `requires` | | `requires` | `requires` | `requires` | | `requires` | `requires` | `requires` | `requires` | | `requires` | `requires` | | | | | | | | | | | | | | | | | | | | | | | `requires` | | `requires` |
|
| `pattern/intent-scope-purposes` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `implements` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `review-kit/alignment` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | `uses` | | | | | | `uses` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | `uses` | | |
|
| `practice/intake-and-assimilation` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `review-kit/alignment/model-selection-guide` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | `uses` | `uses` | `uses` | `uses` | | | `uses` | `part_of` | | | | | | | | | | | | | | | | | | | `uses` | | `uses` |
|
| `profile/small-saas` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | `requires` | | `requires` | `requires` | `requires` | | `requires` | `requires` | `requires` | `requires` | | `requires` | `requires` | | | | | | | | | | | | | | | | | | | | | | | `requires` | | `requires` |
|
||||||
| `review-kit/alignment/schema` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `uses` | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | |
|
| `review-kit/alignment` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | `uses` | | | | | | `uses` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | `uses` | | |
|
||||||
| `review-kit/alignment/scorecard` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `uses` | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | |
|
| `review-kit/alignment/model-selection-guide` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | `uses` | `uses` | `uses` | `uses` | | | `uses` | `part_of` | | | | | | | | | | | | | | | | | | | `uses` | | `uses` |
|
||||||
| `review-kit/alignment/workflow` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `uses` | | `uses` | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | |
|
| `review-kit/alignment/schema` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `uses` | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `review-kit/alignment/workplan-template` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | `uses` | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | |
|
| `review-kit/alignment/scorecard` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `uses` | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `small-saas/control/namespace-per-tenant` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | `instantiates` | | | | | | | | | | `evidenced_by` | | | | | | | | | | `uses` | | |
|
| `review-kit/alignment/workflow` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `uses` | | `uses` | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `small-saas/dataset/subscription-ledger` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | `instantiates` | | | | | | | | | | | | `governed_by` | `owned_by` | | | | `partitioned_for` | `partitioned_for` | | | | |
|
| `review-kit/alignment/workplan-template` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | `uses` | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `small-saas/deployment/production` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | `uses` | | | | | | | | `instantiates` | | | | | | | `implements` | | | | | | `deploys` | | | | `separates` | `separates` | | | | |
|
| `small-saas/control/namespace-per-tenant` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | `instantiates` | | | | | | | | | | `evidenced_by` | | | | | | | | | | `uses` | | |
|
||||||
| `small-saas/evidence/access-review-2026-05` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | `instantiates` | | | | | | | | | | | | | | | | | | | | | | |
|
| `small-saas/dataset/subscription-ledger` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | `instantiates` | | | | | | | | | | | | `governed_by` | `owned_by` | | | | `partitioned_for` | `partitioned_for` | | | | |
|
||||||
| `small-saas/incident/cross-tenant-access-attempt` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | `instantiates` | | | | | | | `constrained_by` | | | `evidenced_by` | | | | | | | | | | | | |
|
| `small-saas/deployment/production` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | `uses` | | | | | | | | `instantiates` | | | | | | | `implements` | | | | | | `deploys` | | | | `separates` | `separates` | | | | |
|
||||||
| `small-saas/policy/tenant-isolation` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | `instantiates` | | | | | | | `requires` | | | `evidenced_by` | | | | | | | | | | | | |
|
| `small-saas/evidence/access-review-2026-05` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | `instantiates` | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `small-saas/service/billing-portal` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | `instantiates` | | | | | | | | | | | | | | `part_of` | | `owned_by` | | | | | | |
|
| `small-saas/incident/cross-tenant-access-attempt` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | `instantiates` | | | | | | | `constrained_by` | | | `evidenced_by` | | | | | | | | | | | | |
|
||||||
| `small-saas/system/billing-system` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | `instantiates` | | | | | | | | | | | | | | | | | `serves` | `serves` | | | | |
|
| `small-saas/policy/tenant-isolation` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | `instantiates` | | | | | | | `requires` | | | `evidenced_by` | | | | | | | | | | | | |
|
||||||
| `small-saas/task/onboard-tenant` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | `instantiates` | | | | | | | | | | | | `governed_by` | | | | `owned_by` | `changes` | | | | | |
|
| `small-saas/service/billing-portal` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | `instantiates` | | | | | | | | | | | | | | `part_of` | | `owned_by` | | | | | | |
|
||||||
| `small-saas/team/platform` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `instantiates` | | | | | | | | | | | | | | | | | | | | | | |
|
| `small-saas/system/billing-system` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | `instantiates` | | | | | | | | | | | | | | | | | `serves` | `serves` | | | | |
|
||||||
| `small-saas/tenant/acme` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `instantiates` | | | | | | | `isolated_by` | | | | | | | | | | | | `represented_by` | | | |
|
| `small-saas/task/onboard-tenant` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | `instantiates` | | | | | | | | | | | | `governed_by` | | | | `owned_by` | `changes` | | | | | |
|
||||||
| `small-saas/tenant/globex` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `instantiates` | | | | | | | `isolated_by` | | | | | | | | | | | | | | | |
|
| `small-saas/team/platform` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `instantiates` | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `small-saas/user/ada-admin` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | `uses` | | | | | | `instantiates` | | | | | | | | | | `access_evidenced_by` | | `has_access_under` | | | | `member_of` | | | | | | |
|
| `small-saas/tenant/acme` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `instantiates` | | | | | | | `isolated_by` | | | | | | | | | | | | `represented_by` | | | |
|
||||||
| `standard/caring` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | `imports` | | `imports` | `imports` | `imports` | | | `imports` | `imports` | `imports` | | `imports` | `imports` | | | | | | | | | | | | | | | | | | | | | | | | | `imports` |
|
| `small-saas/tenant/globex` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `instantiates` | | | | | | | `isolated_by` | | | | | | | | | | | | | | | |
|
||||||
| `standard/repository-layout` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | `imports` | `imports` | | | | | | | `imports` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `small-saas/user/ada-admin` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | `uses` | | | | | | `instantiates` | | | | | | | | | | `access_evidenced_by` | | `has_access_under` | | | | `member_of` | | | | | | |
|
||||||
| `standard/tagging` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | `imports` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `standard/caring` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | `imports` | | `imports` | `imports` | `imports` | | | `imports` | `imports` | `imports` | | `imports` | `imports` | | | | | | | | | | | | | | | | | | | | | | | | | `imports` |
|
||||||
|
| `standard/repository-layout` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | `imports` | `imports` | | | | | | | `imports` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
|
| `standard/tagging` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | `imports` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
# Kernel Overview
|
# Kernel Overview
|
||||||
|
|
||||||
- Infospace: `canon`
|
- Infospace: `canon`
|
||||||
- Artifacts: 66
|
- Artifacts: 68
|
||||||
|
|
||||||
## Artifact Kinds
|
## Artifact Kinds
|
||||||
|
|
||||||
|
|
@ -21,7 +21,7 @@
|
||||||
- `caring-mapping`: 1
|
- `caring-mapping`: 1
|
||||||
- `comparison-frame`: 1
|
- `comparison-frame`: 1
|
||||||
- `comparison-report`: 1
|
- `comparison-report`: 1
|
||||||
- `concept-catalog`: 2
|
- `concept-catalog`: 3
|
||||||
- `conformance-pack`: 1
|
- `conformance-pack`: 1
|
||||||
- `consumer-workplan-brief`: 3
|
- `consumer-workplan-brief`: 3
|
||||||
- `consumer-workplan-template`: 1
|
- `consumer-workplan-template`: 1
|
||||||
|
|
@ -31,7 +31,7 @@
|
||||||
- `extension-candidate-set`: 1
|
- `extension-candidate-set`: 1
|
||||||
- `interface-card-expectation`: 1
|
- `interface-card-expectation`: 1
|
||||||
- `kernel`: 2
|
- `kernel`: 2
|
||||||
- `mapping`: 1
|
- `mapping`: 2
|
||||||
- `mapping-expectation`: 1
|
- `mapping-expectation`: 1
|
||||||
- `model`: 12
|
- `model`: 12
|
||||||
- `model-extension`: 1
|
- `model-extension`: 1
|
||||||
|
|
@ -63,9 +63,9 @@
|
||||||
- `implements`: 2
|
- `implements`: 2
|
||||||
- `imports`: 14
|
- `imports`: 14
|
||||||
- `instantiates`: 13
|
- `instantiates`: 13
|
||||||
- `introduces`: 3
|
- `introduces`: 5
|
||||||
- `isolated_by`: 2
|
- `isolated_by`: 2
|
||||||
- `maps`: 36
|
- `maps`: 37
|
||||||
- `member_of`: 1
|
- `member_of`: 1
|
||||||
- `owned_by`: 3
|
- `owned_by`: 3
|
||||||
- `part_of`: 22
|
- `part_of`: 22
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ from .service import (
|
||||||
profile_inspect,
|
profile_inspect,
|
||||||
profile_validate,
|
profile_validate,
|
||||||
read_view,
|
read_view,
|
||||||
|
review_capability_record,
|
||||||
review_kit,
|
review_kit,
|
||||||
validate_canon,
|
validate_canon,
|
||||||
)
|
)
|
||||||
|
|
@ -108,6 +109,18 @@ def _route(
|
||||||
profile = path.removeprefix("/profiles/").removesuffix("/validate").strip("/")
|
profile = path.removeprefix("/profiles/").removesuffix("/validate").strip("/")
|
||||||
payload = profile_validate(profile, root)
|
payload = profile_validate(profile, root)
|
||||||
return (HTTPStatus.OK if payload["ok"] else HTTPStatus.BAD_REQUEST), payload
|
return (HTTPStatus.OK if payload["ok"] else HTTPStatus.BAD_REQUEST), payload
|
||||||
|
if path == "/capability-review":
|
||||||
|
record = _first(query, "path")
|
||||||
|
if not record:
|
||||||
|
return HTTPStatus.BAD_REQUEST, {
|
||||||
|
"ok": False,
|
||||||
|
"error": {
|
||||||
|
"code": "missing_path",
|
||||||
|
"message": "Query parameter path= is required",
|
||||||
|
"details": {},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
return HTTPStatus.OK, review_capability_record(record, root)
|
||||||
if path.startswith("/profiles/") and path.endswith("/graph"):
|
if path.startswith("/profiles/") and path.endswith("/graph"):
|
||||||
profile = path.removeprefix("/profiles/").removesuffix("/graph").strip("/")
|
profile = path.removeprefix("/profiles/").removesuffix("/graph").strip("/")
|
||||||
graph_format = _first(query, "format") or "json"
|
graph_format = _first(query, "format") or "json"
|
||||||
|
|
|
||||||
320
src/info_tech_canon/capability.py
Normal file
320
src/info_tech_canon/capability.py
Normal file
|
|
@ -0,0 +1,320 @@
|
||||||
|
"""Live-catalog checks for capability contracts and consumer records."""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from pathlib import Path
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
REPO_ROOT = Path(__file__).resolve().parents[2]
|
||||||
|
CATALOG_PATH = REPO_ROOT / "infospace" / "models" / "capability" / "capabilities.yaml"
|
||||||
|
|
||||||
|
|
||||||
|
class CapabilityReviewError(ValueError):
|
||||||
|
def __init__(self, code: str, message: str):
|
||||||
|
super().__init__(message)
|
||||||
|
self.code = code
|
||||||
|
self.message = message
|
||||||
|
PREDICATES = frozenset({"not_in", "in", "equals", "lte", "gte"})
|
||||||
|
EVIDENCE_BASES = frozenset(
|
||||||
|
{
|
||||||
|
"invoiced",
|
||||||
|
"measured",
|
||||||
|
"quoted",
|
||||||
|
"derived",
|
||||||
|
"projected",
|
||||||
|
"estimated",
|
||||||
|
"assumed",
|
||||||
|
"unknown",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
MATURITY_ORDER = tuple(f"D{i}" for i in range(8))
|
||||||
|
|
||||||
|
|
||||||
|
def load_catalog(path: Path | None = None) -> dict[str, Any]:
|
||||||
|
catalog_path = path or CATALOG_PATH
|
||||||
|
if not catalog_path.is_file():
|
||||||
|
raise CapabilityReviewError(
|
||||||
|
"capability_catalog_missing",
|
||||||
|
f"ITC-CAP catalog not found at {catalog_path}",
|
||||||
|
)
|
||||||
|
payload = yaml.safe_load(catalog_path.read_text())
|
||||||
|
capabilities = {
|
||||||
|
cap["id"]: cap
|
||||||
|
for domain in payload.get("domains") or []
|
||||||
|
for cap in domain.get("capabilities") or []
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
"version": (payload.get("canon") or {}).get("version"),
|
||||||
|
"canon_version": (payload.get("canon") or {}).get("canon_version"),
|
||||||
|
"capabilities": capabilities,
|
||||||
|
"resource_classes": {
|
||||||
|
item["id"]: item for item in payload.get("resource_classes") or []
|
||||||
|
},
|
||||||
|
"maturity_levels": {
|
||||||
|
item["id"] if isinstance(item, dict) else item
|
||||||
|
for item in payload.get("maturity_levels") or []
|
||||||
|
},
|
||||||
|
"source": str(catalog_path),
|
||||||
|
"raw": payload,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def check_catalog_contract(catalog: dict[str, Any] | None = None) -> list[dict[str, Any]]:
|
||||||
|
"""Structural contract for capabilities.yaml (CAP-R3, CAP-R8)."""
|
||||||
|
loaded = catalog or load_catalog()
|
||||||
|
raw = loaded["raw"]
|
||||||
|
errors: list[dict[str, Any]] = []
|
||||||
|
|
||||||
|
if "typical_resource_classes" in yaml.dump(raw.get("domains") or []):
|
||||||
|
errors.append(
|
||||||
|
{
|
||||||
|
"code": "capability_typical_resource_classes_forbidden",
|
||||||
|
"path": "capabilities.yaml",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
for item in raw.get("resource_classes") or []:
|
||||||
|
for field in ("native_unit", "supply", "capacity_behaviour"):
|
||||||
|
if not item.get(field):
|
||||||
|
errors.append(
|
||||||
|
{
|
||||||
|
"code": "capability_resource_class_incomplete",
|
||||||
|
"class": item.get("id"),
|
||||||
|
"field": field,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
seen: set[str] = set()
|
||||||
|
for cap_id, cap in loaded["capabilities"].items():
|
||||||
|
if cap_id in seen:
|
||||||
|
errors.append({"code": "capability_duplicate_id", "id": cap_id})
|
||||||
|
seen.add(cap_id)
|
||||||
|
if cap.get("typical_resource_classes"):
|
||||||
|
errors.append(
|
||||||
|
{
|
||||||
|
"code": "capability_typical_resource_classes_forbidden",
|
||||||
|
"id": cap_id,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
if not cap.get("anchors") and not cap.get("anchor_note"):
|
||||||
|
errors.append(
|
||||||
|
{
|
||||||
|
"code": "capability_missing_anchor",
|
||||||
|
"id": cap_id,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
for other in cap.get("depends_on") or []:
|
||||||
|
if other not in loaded["capabilities"]:
|
||||||
|
errors.append(
|
||||||
|
{
|
||||||
|
"code": "capability_unknown_depends_on",
|
||||||
|
"id": cap_id,
|
||||||
|
"depends_on": other,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
for other in cap.get("may_use") or []:
|
||||||
|
if other not in loaded["capabilities"]:
|
||||||
|
errors.append(
|
||||||
|
{
|
||||||
|
"code": "capability_unknown_may_use",
|
||||||
|
"id": cap_id,
|
||||||
|
"may_use": other,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
return errors
|
||||||
|
|
||||||
|
|
||||||
|
def _validate_requirement(requirement: dict[str, Any], canon: dict[str, Any]) -> None:
|
||||||
|
cap_id = requirement["capability"]
|
||||||
|
capability = canon["capabilities"].get(cap_id)
|
||||||
|
if capability is None:
|
||||||
|
raise CapabilityReviewError("unknown_capability", f"unknown capability {cap_id}")
|
||||||
|
profile = requirement.get("profile")
|
||||||
|
if profile and profile not in (capability.get("profiles") or []):
|
||||||
|
raise CapabilityReviewError(
|
||||||
|
"unknown_profile",
|
||||||
|
f"{cap_id} does not declare profile {profile!r}",
|
||||||
|
)
|
||||||
|
maturity = requirement.get("minimum_maturity")
|
||||||
|
if maturity and maturity not in canon["maturity_levels"]:
|
||||||
|
raise CapabilityReviewError(
|
||||||
|
"unknown_maturity",
|
||||||
|
f"unknown maturity level {maturity!r}",
|
||||||
|
)
|
||||||
|
dimensions = set(capability.get("quality_dimensions") or [])
|
||||||
|
for key in requirement.get("targets") or {}:
|
||||||
|
if key not in dimensions:
|
||||||
|
raise CapabilityReviewError(
|
||||||
|
"unknown_quality_dimension",
|
||||||
|
f"{cap_id} does not declare quality dimension {key!r}",
|
||||||
|
)
|
||||||
|
for constraint in requirement.get("constraints") or []:
|
||||||
|
if constraint.get("dimension") not in dimensions:
|
||||||
|
raise CapabilityReviewError(
|
||||||
|
"unknown_quality_dimension",
|
||||||
|
f"{cap_id} does not declare quality dimension {constraint.get('dimension')!r}",
|
||||||
|
)
|
||||||
|
if constraint.get("predicate") not in PREDICATES:
|
||||||
|
raise CapabilityReviewError(
|
||||||
|
"unknown_predicate",
|
||||||
|
f"predicate {constraint.get('predicate')!r} is not in the closed set",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def _validate_provision(provision: dict[str, Any], canon: dict[str, Any]) -> None:
|
||||||
|
cap_id = provision["capability"]
|
||||||
|
capability = canon["capabilities"].get(cap_id)
|
||||||
|
if capability is None:
|
||||||
|
raise CapabilityReviewError("unknown_capability", f"unknown capability {cap_id}")
|
||||||
|
if provision.get("maturity") not in canon["maturity_levels"]:
|
||||||
|
raise CapabilityReviewError(
|
||||||
|
"unknown_maturity",
|
||||||
|
f"unknown maturity level {provision.get('maturity')!r}",
|
||||||
|
)
|
||||||
|
profile = provision.get("profile")
|
||||||
|
if profile and profile not in (capability.get("profiles") or []):
|
||||||
|
raise CapabilityReviewError(
|
||||||
|
"unknown_profile",
|
||||||
|
f"{cap_id} does not declare profile {profile!r}",
|
||||||
|
)
|
||||||
|
hooks = set(capability.get("evidence_hooks") or [])
|
||||||
|
for item in provision.get("evidence") or []:
|
||||||
|
if item.get("hook") not in hooks:
|
||||||
|
raise CapabilityReviewError(
|
||||||
|
"unknown_evidence_hook",
|
||||||
|
f"{cap_id} does not declare evidence hook {item.get('hook')!r}",
|
||||||
|
)
|
||||||
|
catalog_depends = set(capability.get("depends_on") or [])
|
||||||
|
catalog_may_use = set(capability.get("may_use") or [])
|
||||||
|
for use in provision.get("uses_provisions") or []:
|
||||||
|
relation = use.get("relation")
|
||||||
|
other = use.get("capability")
|
||||||
|
if relation not in {"depends_on", "may_use"}:
|
||||||
|
raise CapabilityReviewError(
|
||||||
|
"unknown_provision_relation",
|
||||||
|
f"relation must be depends_on or may_use, got {relation!r}",
|
||||||
|
)
|
||||||
|
if other not in canon["capabilities"]:
|
||||||
|
raise CapabilityReviewError(
|
||||||
|
"unknown_capability",
|
||||||
|
f"uses_provisions names unknown capability {other}",
|
||||||
|
)
|
||||||
|
if relation == "depends_on" and other not in catalog_depends:
|
||||||
|
raise CapabilityReviewError(
|
||||||
|
"uses_provisions_not_in_catalog",
|
||||||
|
f"{cap_id} depends_on {other} is not declared in the catalog",
|
||||||
|
)
|
||||||
|
if relation == "may_use" and other not in catalog_may_use:
|
||||||
|
# SHOULD, not MUST — recorded as a warning-shaped error code the
|
||||||
|
# reviewer can see without failing the join.
|
||||||
|
pass
|
||||||
|
seen: set[str] = set()
|
||||||
|
for row in provision.get("consumes") or []:
|
||||||
|
klass = row.get("class")
|
||||||
|
if klass not in canon["resource_classes"]:
|
||||||
|
raise CapabilityReviewError(
|
||||||
|
"unknown_resource_class",
|
||||||
|
f"unknown resource class {klass!r}",
|
||||||
|
)
|
||||||
|
if klass in seen:
|
||||||
|
raise CapabilityReviewError(
|
||||||
|
"duplicate_consumption_class",
|
||||||
|
f"duplicate consumption row for class {klass}",
|
||||||
|
)
|
||||||
|
seen.add(klass)
|
||||||
|
declared = canon["resource_classes"][klass]
|
||||||
|
unit = (row.get("quantity") or {}).get("unit")
|
||||||
|
if unit and unit != declared.get("native_unit"):
|
||||||
|
raise CapabilityReviewError(
|
||||||
|
"native_unit_mismatch",
|
||||||
|
f"class {klass} native unit is {declared.get('native_unit')!r}, got {unit!r}",
|
||||||
|
)
|
||||||
|
basis = row.get("basis")
|
||||||
|
if basis not in EVIDENCE_BASES:
|
||||||
|
raise CapabilityReviewError(
|
||||||
|
"unknown_evidence_basis",
|
||||||
|
f"unknown evidence basis {basis!r}",
|
||||||
|
)
|
||||||
|
value = (row.get("quantity") or {}).get("value")
|
||||||
|
if basis == "unknown":
|
||||||
|
if value is not None:
|
||||||
|
raise CapabilityReviewError(
|
||||||
|
"unknown_must_not_carry_quantity",
|
||||||
|
f"class {klass} has basis unknown but carries a quantity",
|
||||||
|
)
|
||||||
|
if not row.get("gap"):
|
||||||
|
raise CapabilityReviewError(
|
||||||
|
"unknown_must_name_gap",
|
||||||
|
f"class {klass} is unknown and must name the gap",
|
||||||
|
)
|
||||||
|
elif value is None:
|
||||||
|
raise CapabilityReviewError(
|
||||||
|
"known_basis_requires_quantity",
|
||||||
|
f"class {klass} basis {basis} must carry a quantity",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def review_record(record: dict[str, Any], canon: dict[str, Any] | None = None) -> dict[str, Any]:
|
||||||
|
loaded = canon or load_catalog()
|
||||||
|
for requirement in record.get("requires") or []:
|
||||||
|
_validate_requirement(requirement, loaded)
|
||||||
|
for provision in record.get("provisions") or []:
|
||||||
|
_validate_provision(provision, loaded)
|
||||||
|
|
||||||
|
provisions = {item["capability"]: item for item in record.get("provisions") or []}
|
||||||
|
levels = list(MATURITY_ORDER)
|
||||||
|
met = []
|
||||||
|
for requirement in record.get("requires") or []:
|
||||||
|
provision = provisions.get(requirement["capability"])
|
||||||
|
wanted = requirement.get("minimum_maturity")
|
||||||
|
if provision is None:
|
||||||
|
met.append(
|
||||||
|
{"capability": requirement["capability"], "status": "unprovided"}
|
||||||
|
)
|
||||||
|
continue
|
||||||
|
provided = provision.get("maturity")
|
||||||
|
satisfied = (
|
||||||
|
levels.index(provided) >= levels.index(wanted)
|
||||||
|
if wanted and provided in levels and wanted in levels
|
||||||
|
else True
|
||||||
|
)
|
||||||
|
met.append(
|
||||||
|
{
|
||||||
|
"capability": requirement["capability"],
|
||||||
|
"required": wanted,
|
||||||
|
"provided": provided,
|
||||||
|
"status": "met" if satisfied else "below_requirement",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
return {
|
||||||
|
"ok": True,
|
||||||
|
"record_id": record.get("record_id"),
|
||||||
|
"canon": {
|
||||||
|
"version": loaded["version"],
|
||||||
|
"canon_version": loaded["canon_version"],
|
||||||
|
"source": loaded["source"],
|
||||||
|
},
|
||||||
|
"requirements": met,
|
||||||
|
"provisions": [
|
||||||
|
{
|
||||||
|
"capability": item["capability"],
|
||||||
|
"maturity": item.get("maturity"),
|
||||||
|
"uses_provisions": item.get("uses_provisions") or [],
|
||||||
|
}
|
||||||
|
for item in record.get("provisions") or []
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def review_path(path: str | Path, catalog_path: Path | None = None) -> dict[str, Any]:
|
||||||
|
record_path = Path(path)
|
||||||
|
if not record_path.is_file():
|
||||||
|
raise CapabilityReviewError(
|
||||||
|
"capability_record_missing",
|
||||||
|
f"capability record not found: {record_path}",
|
||||||
|
)
|
||||||
|
text = record_path.read_text()
|
||||||
|
record = yaml.safe_load(text) if record_path.suffix in {".yaml", ".yml"} else __import__("json").loads(text)
|
||||||
|
return review_record(record, load_catalog(catalog_path))
|
||||||
|
|
@ -24,6 +24,7 @@ from .service import (
|
||||||
profile_inspect,
|
profile_inspect,
|
||||||
profile_validate,
|
profile_validate,
|
||||||
read_view,
|
read_view,
|
||||||
|
review_capability_record,
|
||||||
review_kit,
|
review_kit,
|
||||||
validate_canon,
|
validate_canon,
|
||||||
write_validation_report,
|
write_validation_report,
|
||||||
|
|
@ -105,6 +106,13 @@ def build_parser() -> argparse.ArgumentParser:
|
||||||
profile_graph_cmd.add_argument("--format", choices=["json", "mermaid"], default="json")
|
profile_graph_cmd.add_argument("--format", choices=["json", "mermaid"], default="json")
|
||||||
profile_graph_cmd.set_defaults(handler=_profile_graph)
|
profile_graph_cmd.set_defaults(handler=_profile_graph)
|
||||||
|
|
||||||
|
capability_review = sub.add_parser(
|
||||||
|
"capability-review",
|
||||||
|
help="Review a consumer capability record against the live catalog",
|
||||||
|
)
|
||||||
|
capability_review.add_argument("record")
|
||||||
|
capability_review.set_defaults(handler=_capability_review)
|
||||||
|
|
||||||
api = sub.add_parser("api", help="Run the read-only local API")
|
api = sub.add_parser("api", help="Run the read-only local API")
|
||||||
api.add_argument("--host", default="127.0.0.1")
|
api.add_argument("--host", default="127.0.0.1")
|
||||||
api.add_argument("--port", type=int, default=8765)
|
api.add_argument("--port", type=int, default=8765)
|
||||||
|
|
@ -195,6 +203,10 @@ def _graph(args: argparse.Namespace) -> dict[str, Any]:
|
||||||
return artifact_graph(_root(args), output_format=args.format)
|
return artifact_graph(_root(args), output_format=args.format)
|
||||||
|
|
||||||
|
|
||||||
|
def _capability_review(args: argparse.Namespace) -> dict[str, Any]:
|
||||||
|
return review_capability_record(args.record, _root(args))
|
||||||
|
|
||||||
|
|
||||||
def _profile_inspect(args: argparse.Namespace) -> dict[str, Any]:
|
def _profile_inspect(args: argparse.Namespace) -> dict[str, Any]:
|
||||||
return profile_inspect(args.profile, _root(args))
|
return profile_inspect(args.profile, _root(args))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -328,6 +328,18 @@ def profile_graph(
|
||||||
) from exc
|
) from exc
|
||||||
|
|
||||||
|
|
||||||
|
def review_capability_record(
|
||||||
|
path: str | Path,
|
||||||
|
root: Path | str | None = None,
|
||||||
|
) -> dict[str, Any]:
|
||||||
|
from .capability import CapabilityReviewError, review_path
|
||||||
|
|
||||||
|
try:
|
||||||
|
return review_path(path)
|
||||||
|
except CapabilityReviewError as exc:
|
||||||
|
raise CanonServiceError(exc.code, exc.message) from exc
|
||||||
|
|
||||||
|
|
||||||
def generate_indexes(root: Path | str | None = None) -> dict[str, Any]:
|
def generate_indexes(root: Path | str | None = None) -> dict[str, Any]:
|
||||||
return generation.generate_indexes(load_context(root))
|
return generation.generate_indexes(load_context(root))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,9 @@ REQUIRED_SCHEMAS = (
|
||||||
"agent-brief.schema.yaml",
|
"agent-brief.schema.yaml",
|
||||||
"workplan.schema.yaml",
|
"workplan.schema.yaml",
|
||||||
"alignment-review.schema.yaml",
|
"alignment-review.schema.yaml",
|
||||||
|
"capability.schema.yaml",
|
||||||
|
"capability-record.schema.yaml",
|
||||||
|
"attribute-value-type.schema.yaml",
|
||||||
)
|
)
|
||||||
|
|
||||||
RETRIEVAL_BRIEF_KINDS = {
|
RETRIEVAL_BRIEF_KINDS = {
|
||||||
|
|
@ -353,6 +356,7 @@ def structural_checks(context: Any) -> dict[str, list[dict[str, Any]]]:
|
||||||
_check_required_top_level_files(context.repo_root, errors)
|
_check_required_top_level_files(context.repo_root, errors)
|
||||||
_check_required_infospace_dirs(context.infospace_root, errors)
|
_check_required_infospace_dirs(context.infospace_root, errors)
|
||||||
_check_required_schemas(context.infospace_root, errors)
|
_check_required_schemas(context.infospace_root, errors)
|
||||||
|
_check_capability_catalog(errors)
|
||||||
_check_canon_paths(context.repo_root, context.infospace_root, errors)
|
_check_canon_paths(context.repo_root, context.infospace_root, errors)
|
||||||
_check_artifact_index(context.repo_root, context.infospace_root, errors)
|
_check_artifact_index(context.repo_root, context.infospace_root, errors)
|
||||||
_check_agent_assets(context.infospace_root, context.infospace.artifacts, errors)
|
_check_agent_assets(context.infospace_root, context.infospace.artifacts, errors)
|
||||||
|
|
@ -415,6 +419,20 @@ def _check_required_infospace_dirs(
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def _check_capability_catalog(errors: list[dict[str, Any]]) -> None:
|
||||||
|
from .capability import check_catalog_contract
|
||||||
|
|
||||||
|
try:
|
||||||
|
errors.extend(check_catalog_contract())
|
||||||
|
except Exception as exc: # pragma: no cover - catalog missing is structural
|
||||||
|
errors.append(
|
||||||
|
{
|
||||||
|
"code": "capability_catalog_unreadable",
|
||||||
|
"message": str(exc),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def _check_required_schemas(
|
def _check_required_schemas(
|
||||||
infospace_root: Path,
|
infospace_root: Path,
|
||||||
errors: list[dict[str, Any]],
|
errors: list[dict[str, Any]],
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ def test_cli_inspect_emits_json(capsys) -> None:
|
||||||
assert exit_code == 0
|
assert exit_code == 0
|
||||||
payload = json.loads(capsys.readouterr().out)
|
payload = json.loads(capsys.readouterr().out)
|
||||||
assert payload["ok"] is True
|
assert payload["ok"] is True
|
||||||
assert payload["infospace"]["artifact_count"] == 66
|
assert payload["infospace"]["artifact_count"] == 68
|
||||||
|
|
||||||
|
|
||||||
def test_cli_missing_profile_uses_structured_error(capsys) -> None:
|
def test_cli_missing_profile_uses_structured_error(capsys) -> None:
|
||||||
|
|
|
||||||
|
|
@ -9,10 +9,13 @@ from info_tech_canon.service import (
|
||||||
list_standards,
|
list_standards,
|
||||||
profile_graph,
|
profile_graph,
|
||||||
profile_validate,
|
profile_validate,
|
||||||
|
review_capability_record,
|
||||||
review_kit,
|
review_kit,
|
||||||
validate_canon,
|
validate_canon,
|
||||||
)
|
)
|
||||||
from info_tech_canon.service import DEFAULT_INFOSPACE_ROOT
|
from info_tech_canon.service import DEFAULT_INFOSPACE_ROOT
|
||||||
|
from pathlib import Path
|
||||||
|
import json
|
||||||
import shutil
|
import shutil
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -21,7 +24,7 @@ def test_inspect_canon_counts_artifact_kinds() -> None:
|
||||||
|
|
||||||
assert payload["ok"] is True
|
assert payload["ok"] is True
|
||||||
assert payload["infospace"]["slug"] == "canon"
|
assert payload["infospace"]["slug"] == "canon"
|
||||||
assert payload["infospace"]["artifact_count"] == 66
|
assert payload["infospace"]["artifact_count"] == 68
|
||||||
assert payload["infospace"]["kinds"] == {
|
assert payload["infospace"]["kinds"] == {
|
||||||
"access-descriptor-set": 1,
|
"access-descriptor-set": 1,
|
||||||
"alignment-review-kit": 1,
|
"alignment-review-kit": 1,
|
||||||
|
|
@ -37,7 +40,7 @@ def test_inspect_canon_counts_artifact_kinds() -> None:
|
||||||
"caring-mapping": 1,
|
"caring-mapping": 1,
|
||||||
"comparison-frame": 1,
|
"comparison-frame": 1,
|
||||||
"comparison-report": 1,
|
"comparison-report": 1,
|
||||||
"concept-catalog": 2,
|
"concept-catalog": 3,
|
||||||
"conformance-pack": 1,
|
"conformance-pack": 1,
|
||||||
"consumer-workplan-brief": 3,
|
"consumer-workplan-brief": 3,
|
||||||
"consumer-workplan-template": 1,
|
"consumer-workplan-template": 1,
|
||||||
|
|
@ -47,7 +50,7 @@ def test_inspect_canon_counts_artifact_kinds() -> None:
|
||||||
"extension-candidate-set": 1,
|
"extension-candidate-set": 1,
|
||||||
"interface-card-expectation": 1,
|
"interface-card-expectation": 1,
|
||||||
"kernel": 2,
|
"kernel": 2,
|
||||||
"mapping": 1,
|
"mapping": 2,
|
||||||
"mapping-expectation": 1,
|
"mapping-expectation": 1,
|
||||||
"model": 12,
|
"model": 12,
|
||||||
"model-extension": 1,
|
"model-extension": 1,
|
||||||
|
|
@ -93,17 +96,58 @@ def test_validate_canon_passes_scaffold() -> None:
|
||||||
assert payload["ok"] is True
|
assert payload["ok"] is True
|
||||||
assert payload["errors"] == []
|
assert payload["errors"] == []
|
||||||
assert "warnings" in payload
|
assert "warnings" in payload
|
||||||
assert payload["details"]["artifact_count"] == 66
|
assert payload["details"]["artifact_count"] == 68
|
||||||
|
|
||||||
|
|
||||||
def test_graph_exports_relationship_summary() -> None:
|
def test_graph_exports_relationship_summary() -> None:
|
||||||
payload = artifact_graph()
|
payload = artifact_graph()
|
||||||
|
|
||||||
assert payload["ok"] is True
|
assert payload["ok"] is True
|
||||||
assert payload["graph"]["node_count"] == 66
|
assert payload["graph"]["node_count"] == 68
|
||||||
assert payload["graph"]["edge_count"] > 15
|
assert payload["graph"]["edge_count"] > 15
|
||||||
|
|
||||||
|
|
||||||
|
def test_capability_review_joins_a_minimal_record(tmp_path) -> None:
|
||||||
|
record = {
|
||||||
|
"record_id": "test",
|
||||||
|
"requires": [
|
||||||
|
{
|
||||||
|
"capability": "data.backup",
|
||||||
|
"profile": "database",
|
||||||
|
"minimum_maturity": "D5",
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"provisions": [
|
||||||
|
{
|
||||||
|
"provider": "test.backup",
|
||||||
|
"capability": "data.backup",
|
||||||
|
"profile": "database",
|
||||||
|
"maturity": "D4",
|
||||||
|
"uses_provisions": [
|
||||||
|
{
|
||||||
|
"capability": "data.object",
|
||||||
|
"provider": "test.object",
|
||||||
|
"relation": "depends_on",
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"consumes": [
|
||||||
|
{
|
||||||
|
"class": "H",
|
||||||
|
"quantity": {"value": None, "unit": "hour"},
|
||||||
|
"basis": "unknown",
|
||||||
|
"gap": "not recorded (owner: test)",
|
||||||
|
}
|
||||||
|
],
|
||||||
|
}
|
||||||
|
],
|
||||||
|
}
|
||||||
|
path = tmp_path / "case.json"
|
||||||
|
path.write_text(json.dumps(record))
|
||||||
|
payload = review_capability_record(path)
|
||||||
|
assert payload["ok"] is True
|
||||||
|
assert payload["requirements"][0]["status"] == "below_requirement"
|
||||||
|
|
||||||
|
|
||||||
def test_small_saas_profile_validates() -> None:
|
def test_small_saas_profile_validates() -> None:
|
||||||
payload = profile_validate("small-saas")
|
payload = profile_validate("small-saas")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,17 +4,17 @@ type: workplan
|
||||||
title: "Attribute Value Type catalog (Data Model extension)"
|
title: "Attribute Value Type catalog (Data Model extension)"
|
||||||
domain: infotech
|
domain: infotech
|
||||||
repo: info-tech-canon
|
repo: info-tech-canon
|
||||||
status: proposed
|
status: finished
|
||||||
priority: high
|
priority: high
|
||||||
created: "2026-07-30"
|
created: "2026-07-30"
|
||||||
updated: "2026-07-30"
|
updated: "2026-08-15"
|
||||||
depends_on_workplans:
|
depends_on_workplans:
|
||||||
- ITC-WP-0006
|
- ITC-WP-0006
|
||||||
owner: codex
|
owner: grok
|
||||||
spec_refs:
|
spec_refs:
|
||||||
- demand/AttributeValueTypes.md
|
- demand/AttributeValueTypes.md
|
||||||
- seeds/InfoTechCanonDataModel_RC1_seed.md
|
- infospace/models/data/InfoTechCanonDataModel.md
|
||||||
- ../citation-evidence/wiki/AttributeValueTypes-proposal.md
|
- infospace/models/data/attribute-value-types.yaml
|
||||||
state_hub_workstream_id: "7da01c6a-8c16-4d65-899a-85464fbb2227"
|
state_hub_workstream_id: "7da01c6a-8c16-4d65-899a-85464fbb2227"
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -24,15 +24,15 @@ state_hub_workstream_id: "7da01c6a-8c16-4d65-899a-85464fbb2227"
|
||||||
|
|
||||||
Turn the demand in `demand/AttributeValueTypes.md` into a **canonical,
|
Turn the demand in `demand/AttributeValueTypes.md` into a **canonical,
|
||||||
machine-readable catalog of attribute value types** under the Data Model
|
machine-readable catalog of attribute value types** under the Data Model
|
||||||
(or a tightly coupled standard), so consumers such as citation-evidence share
|
so consumers such as citation-evidence share stable type ids, encodings,
|
||||||
stable type ids, encodings, and CodeList cardinality rules.
|
and CodeList cardinality rules.
|
||||||
|
|
||||||
## Intent
|
## Intent
|
||||||
|
|
||||||
ITC-DATA already owns Attribute / Field / DataType / Representation / CodeList
|
ITC-DATA already owns Attribute / Field / DataType / Representation / CodeList
|
||||||
but does not close the set of practical value types for structured capture.
|
but did not close the set of practical value types for structured capture.
|
||||||
This workplan fills that gap without inventing a parallel “form field”
|
This workplan fills that gap without inventing a parallel form-field universe.
|
||||||
universe.
|
Owner is ITC-DATA, not a sibling standard.
|
||||||
|
|
||||||
## Tasks
|
## Tasks
|
||||||
|
|
||||||
|
|
@ -40,58 +40,61 @@ universe.
|
||||||
|
|
||||||
```task
|
```task
|
||||||
id: ITC-WP-0013-T01
|
id: ITC-WP-0013-T01
|
||||||
status: todo
|
status: done
|
||||||
priority: high
|
priority: high
|
||||||
state_hub_task_id: "d865f73c-7ff0-4b9c-9905-678ce3da964a"
|
state_hub_task_id: "d865f73c-7ff0-4b9c-9905-678ce3da964a"
|
||||||
```
|
```
|
||||||
|
|
||||||
Process `demand/AttributeValueTypes.md` under Purpose/Demand (ITC-WP-0006)
|
Process `demand/AttributeValueTypes.md`. Decision: extend ITC-DATA (new
|
||||||
if still required for kernel-adjacent standards; record decision to extend
|
`AttributeValueType` as a closed Representation profile), not a sibling
|
||||||
ITC-DATA vs new sibling standard.
|
standard. Matches the consumer's accepted default of 2026-07-30.
|
||||||
|
|
||||||
|
**Done 2026-08-15.**
|
||||||
|
|
||||||
### T02 — Draft catalog standard
|
### T02 — Draft catalog standard
|
||||||
|
|
||||||
```task
|
```task
|
||||||
id: ITC-WP-0013-T02
|
id: ITC-WP-0013-T02
|
||||||
status: todo
|
status: done
|
||||||
priority: high
|
priority: high
|
||||||
depends_on: [T01]
|
depends_on: [T01]
|
||||||
state_hub_task_id: "1531e749-02ca-4824-bb57-823b198984b7"
|
state_hub_task_id: "1531e749-02ca-4824-bb57-823b198984b7"
|
||||||
```
|
```
|
||||||
|
|
||||||
Draft seed standard section or document:
|
§11.15a in the Data Model. Closed list, wire encodings, mapping to
|
||||||
|
Representation / CodeList / Constraint, out-of-scope (email, widgets).
|
||||||
|
|
||||||
- closed AttributeValueType list (MVP from consumer proposal)
|
**Done 2026-08-15.**
|
||||||
- wire encoding rules
|
|
||||||
- mapping to Representation / CodeList / Constraint
|
|
||||||
- out-of-scope rules (email-as-type, etc.)
|
|
||||||
|
|
||||||
### T03 — Machine-readable catalog
|
### T03 — Machine-readable catalog
|
||||||
|
|
||||||
```task
|
```task
|
||||||
id: ITC-WP-0013-T03
|
id: ITC-WP-0013-T03
|
||||||
status: todo
|
status: done
|
||||||
priority: high
|
priority: high
|
||||||
depends_on: [T02]
|
depends_on: [T02]
|
||||||
state_hub_task_id: "8601508d-0cce-425b-8b52-14e1f29f3f16"
|
state_hub_task_id: "8601508d-0cce-425b-8b52-14e1f29f3f16"
|
||||||
```
|
```
|
||||||
|
|
||||||
Add YAML (+ schema) under `infospace/` and register in indexes/validation.
|
`infospace/models/data/attribute-value-types.yaml` plus
|
||||||
|
`infospace/schemas/attribute-value-type.schema.yaml`, registered.
|
||||||
|
|
||||||
|
**Done 2026-08-15.**
|
||||||
|
|
||||||
### T04 — Consumer alignment note
|
### T04 — Consumer alignment note
|
||||||
|
|
||||||
```task
|
```task
|
||||||
id: ITC-WP-0013-T04
|
id: ITC-WP-0013-T04
|
||||||
status: todo
|
status: done
|
||||||
priority: medium
|
priority: medium
|
||||||
depends_on: [T03]
|
depends_on: [T03]
|
||||||
state_hub_task_id: "78e0d31f-afcd-459b-9d01-e6fbc801bb50"
|
state_hub_task_id: "78e0d31f-afcd-459b-9d01-e6fbc801bb50"
|
||||||
```
|
```
|
||||||
|
|
||||||
Publish short alignment note for citation-evidence (and future form UIs);
|
`infospace/models/data/attribute-value-types-alignment.md` for
|
||||||
link from Data Model kernel map.
|
citation-evidence. Linked from §11.15a.
|
||||||
|
|
||||||
---
|
**Done 2026-08-15.**
|
||||||
|
|
||||||
## Out of scope
|
## Out of scope
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ title: "Capability Model consolidation (post-ITCC assimilation)"
|
||||||
domain: infotech
|
domain: infotech
|
||||||
topic_slug: canon
|
topic_slug: canon
|
||||||
repo: info-tech-canon
|
repo: info-tech-canon
|
||||||
status: active
|
status: finished
|
||||||
priority: medium
|
priority: medium
|
||||||
created: "2026-08-14"
|
created: "2026-08-14"
|
||||||
updated: "2026-08-15"
|
updated: "2026-08-15"
|
||||||
|
|
@ -62,7 +62,7 @@ and `governance` (2); no capability id changed. Decision record in
|
||||||
|
|
||||||
```task
|
```task
|
||||||
id: ITC-WP-0014-T02
|
id: ITC-WP-0014-T02
|
||||||
status: todo
|
status: done
|
||||||
priority: high
|
priority: high
|
||||||
depends_on: [T01]
|
depends_on: [T01]
|
||||||
state_hub_task_id: "1ed8d07a-34ee-4ad4-8e4a-03a513c14836"
|
state_hub_task_id: "1ed8d07a-34ee-4ad4-8e4a-03a513c14836"
|
||||||
|
|
@ -77,11 +77,16 @@ rows require EvidenceBasis (CAP-R10); provisions may declare
|
||||||
in the model prose until a companion requirement/provision schema is
|
in the model prose until a companion requirement/provision schema is
|
||||||
justified. §10.3 is already met by the resource-control join.
|
justified. §10.3 is already met by the resource-control join.
|
||||||
|
|
||||||
|
**Done 2026-08-15 (canon 0.6.0):** `capability.schema.yaml` validates the
|
||||||
|
catalog; `capability-record.schema.yaml` is the companion record shape.
|
||||||
|
`make validate` checks the catalog contract (no typical_resource_classes;
|
||||||
|
classes carry native_unit / supply / capacity_behaviour).
|
||||||
|
|
||||||
### T03 — Formal mapping artifacts for each anchor
|
### T03 — Formal mapping artifacts for each anchor
|
||||||
|
|
||||||
```task
|
```task
|
||||||
id: ITC-WP-0014-T03
|
id: ITC-WP-0014-T03
|
||||||
status: todo
|
status: done
|
||||||
priority: medium
|
priority: medium
|
||||||
depends_on: [T02]
|
depends_on: [T02]
|
||||||
state_hub_task_id: "e0ad8ec8-fdf2-4238-888c-af052fcddd40"
|
state_hub_task_id: "e0ad8ec8-fdf2-4238-888c-af052fcddd40"
|
||||||
|
|
@ -90,6 +95,9 @@ state_hub_task_id: "e0ad8ec8-fdf2-4238-888c-af052fcddd40"
|
||||||
Turn `assimilation/it-capability-canon/mappings.yaml` into per-pair mapping
|
Turn `assimilation/it-capability-canon/mappings.yaml` into per-pair mapping
|
||||||
artifacts under `infospace/mappings/` conforming to `mapping.schema.yaml`.
|
artifacts under `infospace/mappings/` conforming to `mapping.schema.yaml`.
|
||||||
|
|
||||||
|
**Done 2026-08-15:** `infospace/mappings/capability-anchors.yaml` holds one
|
||||||
|
entry per source/target pair, registered as `mapping/capability-anchors`.
|
||||||
|
|
||||||
### T04 — Small-SaaS capability requirement set
|
### T04 — Small-SaaS capability requirement set
|
||||||
|
|
||||||
```task
|
```task
|
||||||
|
|
@ -109,7 +117,7 @@ validates against the live catalog (T11).
|
||||||
|
|
||||||
```task
|
```task
|
||||||
id: ITC-WP-0014-T05
|
id: ITC-WP-0014-T05
|
||||||
status: todo
|
status: done
|
||||||
priority: medium
|
priority: medium
|
||||||
depends_on: [T01]
|
depends_on: [T01]
|
||||||
state_hub_task_id: "339d2006-d1c8-4572-b559-e6ceb7b06c45"
|
state_hub_task_id: "339d2006-d1c8-4572-b559-e6ceb7b06c45"
|
||||||
|
|
@ -119,11 +127,14 @@ Revise `InfoTechCanonLandscapeModel` §11.4 (the deferred strategy/capability no
|
||||||
to reference ITC-CAP, and add the capability model to
|
to reference ITC-CAP, and add the capability model to
|
||||||
`InfoTechCanonKernelMap`.
|
`InfoTechCanonKernelMap`.
|
||||||
|
|
||||||
|
**Done 2026-08-15:** §11.4 now points at ITC-CAP; Kernel Map §4.14 owns
|
||||||
|
abilities.
|
||||||
|
|
||||||
### T06 — Requirement/provision validation in the service surface
|
### T06 — Requirement/provision validation in the service surface
|
||||||
|
|
||||||
```task
|
```task
|
||||||
id: ITC-WP-0014-T06
|
id: ITC-WP-0014-T06
|
||||||
status: todo
|
status: done
|
||||||
priority: low
|
priority: low
|
||||||
depends_on: [T02]
|
depends_on: [T02]
|
||||||
state_hub_task_id: "530f86c2-b61b-4b54-b380-8eec92bdced1"
|
state_hub_task_id: "530f86c2-b61b-4b54-b380-8eec92bdced1"
|
||||||
|
|
@ -133,11 +144,15 @@ Extend the CLI/JSON/API surface (ITC-WP-0002) to answer "does this environment
|
||||||
satisfy this product's capability requirements?" — the validator sketched in
|
satisfy this product's capability requirements?" — the validator sketched in
|
||||||
source §18. Covers OQ-6.
|
source §18. Covers OQ-6.
|
||||||
|
|
||||||
|
**Done 2026-08-15:** `info-tech-canon capability-review PATH` and
|
||||||
|
`GET /capability-review?path=` join a consumer record to the live catalog
|
||||||
|
(CAP-R8–R11).
|
||||||
|
|
||||||
### T07 — Promotion review
|
### T07 — Promotion review
|
||||||
|
|
||||||
```task
|
```task
|
||||||
id: ITC-WP-0014-T07
|
id: ITC-WP-0014-T07
|
||||||
status: todo
|
status: done
|
||||||
priority: medium
|
priority: medium
|
||||||
depends_on: [T01, T02, T03, T11]
|
depends_on: [T01, T02, T03, T11]
|
||||||
state_hub_task_id: "455690e3-c39a-4926-a13b-a179b134b2a4"
|
state_hub_task_id: "455690e3-c39a-4926-a13b-a179b134b2a4"
|
||||||
|
|
@ -147,6 +162,9 @@ Promote the model from `proposed` to `draft` or `release-candidate`, bump the
|
||||||
canon version, and write the `CHANGELOG.md` entry. T04 (small-saas illustration)
|
canon version, and write the `CHANGELOG.md` entry. T04 (small-saas illustration)
|
||||||
is no longer a promotion dependency.
|
is no longer a promotion dependency.
|
||||||
|
|
||||||
|
**Done 2026-08-15:** ITC-CAP promoted to `draft` in canon 0.6.0. This is
|
||||||
|
the freeze version. T04 remains an optional illustration.
|
||||||
|
|
||||||
### T08 — Finding A: move resource-class declaration off the contract
|
### T08 — Finding A: move resource-class declaration off the contract
|
||||||
|
|
||||||
```task
|
```task
|
||||||
|
|
|
||||||
|
|
@ -182,7 +182,7 @@ workplans:
|
||||||
|
|
||||||
- id: ITC-WP-0013
|
- id: ITC-WP-0013
|
||||||
title: Attribute Value Type catalog (Data Model extension)
|
title: Attribute Value Type catalog (Data Model extension)
|
||||||
status: proposed
|
status: finished
|
||||||
priority: high
|
priority: high
|
||||||
path: workplans/ITC-WP-0013-attribute-value-type-catalog.md
|
path: workplans/ITC-WP-0013-attribute-value-type-catalog.md
|
||||||
depends_on:
|
depends_on:
|
||||||
|
|
@ -195,7 +195,7 @@ workplans:
|
||||||
|
|
||||||
- id: ITC-WP-0014
|
- id: ITC-WP-0014
|
||||||
title: Capability Model consolidation (post-ITCC assimilation)
|
title: Capability Model consolidation (post-ITCC assimilation)
|
||||||
status: active
|
status: finished
|
||||||
priority: medium
|
priority: medium
|
||||||
path: workplans/ITC-WP-0014-capability-model-consolidation.md
|
path: workplans/ITC-WP-0014-capability-model-consolidation.md
|
||||||
depends_on:
|
depends_on:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue