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
|
||||
|
||||
### 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 alignment-template
|
||||
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 index
|
||||
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 /alignment-template`
|
||||
- `GET /validate`
|
||||
- `GET /capability-review?path=`
|
||||
- `GET /graph`
|
||||
- `GET /graph?format=mermaid`
|
||||
- `GET /views`
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
repository: info-tech-canon
|
||||
title: InfoTechCanon
|
||||
status: service-baseline
|
||||
version: 0.5.0
|
||||
version: 0.6.0
|
||||
description: >
|
||||
An evolving, markdown-first canon for building interoperable, adaptable,
|
||||
and extensible information-processing systems.
|
||||
|
|
@ -92,7 +92,7 @@ models:
|
|||
- id: itc-cap
|
||||
title: InfoTechCanonCapabilityModel
|
||||
path: infospace/models/capability/InfoTechCanonCapabilityModel.md
|
||||
status: proposed
|
||||
status: draft
|
||||
version: 0.4.0
|
||||
catalog: infospace/models/capability/capabilities.yaml
|
||||
provenance:
|
||||
|
|
@ -181,4 +181,5 @@ next_actions:
|
|||
- implement ITC-WP-0003 validation and generated views
|
||||
- implement ITC-WP-0004 small-saas profile proof
|
||||
- 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
|
||||
|
||||
**Status:** inbound demand (un-reviewed)
|
||||
**Status:** accepted (canon 0.6.0)
|
||||
**Date:** 2026-07-30
|
||||
**Source:** citation-evidence Capture UX (consumer)
|
||||
**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.
|
||||
|
||||
- Infospace slug: `canon`
|
||||
- Artifact count: 66
|
||||
- Retrieval index items: 66
|
||||
- Artifact count: 68
|
||||
- Retrieval index items: 68
|
||||
- Primary confidence command: `make validate`
|
||||
- Refresh generated indexes and views with: `make index`
|
||||
- Refresh agent briefs and interface templates with: `make agent-briefs`
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@
|
|||
}
|
||||
],
|
||||
"infospace": "canon",
|
||||
"item_count": 66,
|
||||
"item_count": 68,
|
||||
"items": [
|
||||
{
|
||||
"canonical_path": "assimilation/it-capability-canon/ASSIMILATION.md",
|
||||
|
|
@ -267,6 +267,20 @@
|
|||
"title": "InfoTechCanon Capability Catalog",
|
||||
"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",
|
||||
"id": "catalog/evidence-basis",
|
||||
|
|
@ -1024,6 +1038,10 @@
|
|||
"target": "model/observability",
|
||||
"type": "maps"
|
||||
},
|
||||
{
|
||||
"target": "model/capability",
|
||||
"type": "maps"
|
||||
},
|
||||
{
|
||||
"target": "standard/tagging",
|
||||
"type": "maps"
|
||||
|
|
@ -1038,6 +1056,20 @@
|
|||
"title": "InfoTechCanon Kernel Map",
|
||||
"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",
|
||||
"id": "mapping/purpose-demand-governance-candidates",
|
||||
|
|
@ -1158,6 +1190,10 @@
|
|||
{
|
||||
"target": "assimilation/it-capability-canon",
|
||||
"type": "derived_from"
|
||||
},
|
||||
{
|
||||
"target": "mapping/capability-anchors",
|
||||
"type": "introduces"
|
||||
}
|
||||
],
|
||||
"source_path": "infospace/assimilation/it-capability-canon/source/ITCapabilityCanonV0.1.md",
|
||||
|
|
@ -1184,6 +1220,10 @@
|
|||
{
|
||||
"target": "model/governance",
|
||||
"type": "uses"
|
||||
},
|
||||
{
|
||||
"target": "catalog/attribute-value-types",
|
||||
"type": "introduces"
|
||||
}
|
||||
],
|
||||
"source_path": "seeds/InfoTechCanonDataModel_RC1_seed.md",
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
Schema: `info-tech-canon.retrieval-index.v1`
|
||||
Infospace: `canon`
|
||||
Items: **66**
|
||||
Items: **68**
|
||||
|
||||
## Common Distinctions
|
||||
|
||||
|
|
@ -85,6 +85,16 @@ Items: **66**
|
|||
- Imports and anchors: none
|
||||
- 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
|
||||
|
||||
- ID: `catalog/evidence-basis`
|
||||
|
|
@ -285,6 +295,16 @@ Items: **66**
|
|||
- Imports and anchors: none
|
||||
- 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
|
||||
|
||||
- ID: `mapping/purpose-demand-governance-candidates`
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
schema: info-tech-canon.retrieval-index.v1
|
||||
infospace: canon
|
||||
item_count: 66
|
||||
item_count: 68
|
||||
items:
|
||||
- id: assimilation/it-capability-canon
|
||||
kind: assimilation
|
||||
|
|
@ -144,6 +144,18 @@ items:
|
|||
imports: []
|
||||
relationships: []
|
||||
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
|
||||
kind: concept-catalog
|
||||
title: InfoTechCanon Evidence Basis Catalog
|
||||
|
|
@ -630,11 +642,25 @@ items:
|
|||
target: model/network
|
||||
- type: maps
|
||||
target: model/observability
|
||||
- type: maps
|
||||
target: model/capability
|
||||
- type: maps
|
||||
target: standard/tagging
|
||||
- type: maps
|
||||
target: standard/caring
|
||||
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
|
||||
kind: mapping
|
||||
title: Purpose Demand Governance Extension Candidates
|
||||
|
|
@ -721,6 +747,8 @@ items:
|
|||
target: capability-catalog/itc-cap
|
||||
- type: derived_from
|
||||
target: assimilation/it-capability-canon
|
||||
- type: introduces
|
||||
target: mapping/capability-anchors
|
||||
warnings: []
|
||||
- id: model/data
|
||||
kind: model
|
||||
|
|
@ -739,6 +767,8 @@ items:
|
|||
target: kernel/itc-core
|
||||
- type: uses
|
||||
target: model/governance
|
||||
- type: introduces
|
||||
target: catalog/attribute-value-types
|
||||
warnings: []
|
||||
- id: model/devsecops
|
||||
kind: model
|
||||
|
|
|
|||
|
|
@ -41,6 +41,8 @@ artifacts:
|
|||
target: model/network
|
||||
- type: maps
|
||||
target: model/observability
|
||||
- type: maps
|
||||
target: model/capability
|
||||
- type: maps
|
||||
target: standard/tagging
|
||||
- type: maps
|
||||
|
|
@ -135,6 +137,8 @@ artifacts:
|
|||
target: capability-catalog/itc-cap
|
||||
- type: derived_from
|
||||
target: assimilation/it-capability-canon
|
||||
- type: introduces
|
||||
target: mapping/capability-anchors
|
||||
- id: catalog/evidence-basis
|
||||
path: models/governance/evidence-basis.yaml
|
||||
kind: concept-catalog
|
||||
|
|
@ -224,6 +228,16 @@ artifacts:
|
|||
target: kernel/itc-core
|
||||
- type: uses
|
||||
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
|
||||
path: models/devsecops/InfoTechCanonDevSecOpsModel.md
|
||||
kind: model
|
||||
|
|
@ -609,6 +623,14 @@ artifacts:
|
|||
target: model/governance
|
||||
- type: uses
|
||||
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
|
||||
path: examples/consumer-purpose-portfolio.yaml
|
||||
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
|
||||
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`
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
root: infospace
|
||||
file_count: 176
|
||||
file_count: 183
|
||||
files:
|
||||
- path: README.md
|
||||
directory: .
|
||||
|
|
@ -22,6 +22,9 @@ files:
|
|||
- path: agent/briefs/benchmark-caring-kubernetes-rbac.md
|
||||
directory: agent/briefs
|
||||
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
|
||||
directory: agent/briefs
|
||||
name: comparison-repo-scoping-canon-benefit-analysis.md
|
||||
|
|
@ -334,6 +337,9 @@ files:
|
|||
- path: mappings/README.md
|
||||
directory: mappings
|
||||
name: README.md
|
||||
- path: mappings/capability-anchors.yaml
|
||||
directory: mappings
|
||||
name: capability-anchors.yaml
|
||||
- path: mappings/purpose-demand-governance-candidates.yaml
|
||||
directory: mappings
|
||||
name: purpose-demand-governance-candidates.yaml
|
||||
|
|
@ -349,6 +355,12 @@ files:
|
|||
- path: models/data/InfoTechCanonDataModel.md
|
||||
directory: models/data
|
||||
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
|
||||
directory: models/devsecops
|
||||
name: InfoTechCanonDevSecOpsModel.md
|
||||
|
|
@ -451,6 +463,15 @@ files:
|
|||
- path: schemas/assimilation.schema.yaml
|
||||
directory: schemas
|
||||
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
|
||||
directory: schemas
|
||||
name: concept.schema.yaml
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
concept_count: 108
|
||||
concept_count: 110
|
||||
concepts:
|
||||
- concept: "Assimilation \u2014 IT Capability Canon (ITCC) v0.1"
|
||||
owner: assimilation/it-capability-canon
|
||||
|
|
@ -28,6 +28,10 @@ concepts:
|
|||
owner: capability-catalog/itc-cap
|
||||
path: models/capability/capabilities.yaml
|
||||
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
|
||||
owner: catalog/evidence-basis
|
||||
path: models/governance/evidence-basis.yaml
|
||||
|
|
@ -108,6 +112,10 @@ concepts:
|
|||
owner: kernel/itc-kernel-map
|
||||
path: kernel/InfoTechCanonKernelMap.md
|
||||
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
|
||||
owner: mapping/purpose-demand-governance-candidates
|
||||
path: mappings/purpose-demand-governance-candidates.yaml
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ artifacts:
|
|||
- 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
|
||||
|
|
@ -26,6 +27,7 @@ artifacts:
|
|||
- example/consumer-purpose-portfolio
|
||||
- kernel/itc-core
|
||||
- kernel/itc-kernel-map
|
||||
- mapping/capability-anchors
|
||||
- mapping/purpose-demand-governance-candidates
|
||||
- model/access-control
|
||||
- model/capability
|
||||
|
|
@ -134,6 +136,8 @@ rows:
|
|||
- maps
|
||||
- artifact: capability-catalog/itc-cap
|
||||
targets: {}
|
||||
- artifact: catalog/attribute-value-types
|
||||
targets: {}
|
||||
- artifact: catalog/evidence-basis
|
||||
targets: {}
|
||||
- artifact: comparison/repo-scoping/canon-benefit-analysis
|
||||
|
|
@ -354,6 +358,8 @@ rows:
|
|||
- maps
|
||||
model/access-control:
|
||||
- maps
|
||||
model/capability:
|
||||
- maps
|
||||
model/data:
|
||||
- maps
|
||||
model/devsecops:
|
||||
|
|
@ -378,6 +384,8 @@ rows:
|
|||
- maps
|
||||
standard/tagging:
|
||||
- maps
|
||||
- artifact: mapping/capability-anchors
|
||||
targets: {}
|
||||
- artifact: mapping/purpose-demand-governance-candidates
|
||||
targets:
|
||||
model/governance:
|
||||
|
|
@ -404,6 +412,8 @@ rows:
|
|||
- uses
|
||||
kernel/itc-core:
|
||||
- conforms_to
|
||||
mapping/capability-anchors:
|
||||
- introduces
|
||||
model/governance:
|
||||
- uses
|
||||
model/landscape:
|
||||
|
|
@ -414,6 +424,8 @@ rows:
|
|||
- uses
|
||||
- artifact: model/data
|
||||
targets:
|
||||
catalog/attribute-value-types:
|
||||
- introduces
|
||||
kernel/itc-core:
|
||||
- conforms_to
|
||||
model/governance:
|
||||
|
|
|
|||
|
|
@ -48,6 +48,9 @@ schemas:
|
|||
interface-card: schemas/interface-card.schema.yaml
|
||||
agent-brief: schemas/agent-brief.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: []
|
||||
viability:
|
||||
redundancy_ratio:
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@ InfoTechCanonDataModel
|
|||
InfoTechCanonDevSecOpsModel
|
||||
InfoTechCanonNetworkModel
|
||||
InfoTechCanonObservabilityModel
|
||||
InfoTechCanonCapabilityModel
|
||||
```
|
||||
|
||||
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.
|
||||
Network = addressing, topology, routing, policy, reachability, flow, exposure, and state.
|
||||
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 |
|
||||
| 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
|
||||
|
|
|
|||
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
|
||||
repository_context: info-tech-canon
|
||||
recommended_path: models/capability/InfoTechCanonCapabilityModel.md
|
||||
status: proposed
|
||||
status: draft
|
||||
version: 0.4.0
|
||||
source_version: "0.1"
|
||||
source_body: Information Technology Capability Canon (ITCC)
|
||||
|
|
@ -54,7 +54,7 @@ updated_at: 2026-08-15
|
|||
# InfoTechCanon Capability Model
|
||||
|
||||
**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
|
||||
**Document Type:** InfoTechCanon Domain Model
|
||||
**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
|
||||
|
||||
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
|
||||
0.2.1**: the Security & Governance navigation domain was split into `security`
|
||||
|
|
|
|||
|
|
@ -13,8 +13,8 @@ canon:
|
|||
short_name: ITC-CAP
|
||||
artifact_id: model/capability
|
||||
version: 0.4.0
|
||||
status: proposed
|
||||
canon_version: 0.5.0
|
||||
status: draft
|
||||
canon_version: 0.6.0
|
||||
purpose: Canonical, implementation-independent catalog of the abilities an information system may require
|
||||
or provide.
|
||||
normative_document: models/capability/InfoTechCanonCapabilityModel.md
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ This standard provides a canonical vocabulary for:
|
|||
- fields,
|
||||
- schemas,
|
||||
- data elements,
|
||||
- attribute value types,
|
||||
- code lists,
|
||||
- data stores as references,
|
||||
- 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
|
||||
|
||||
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,
|
||||
- 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
|
||||
- id: alignment-review
|
||||
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": {
|
||||
"artifact_count": 66,
|
||||
"relationship_count": 288
|
||||
"artifact_count": 68,
|
||||
"relationship_count": 291
|
||||
},
|
||||
"errors": [],
|
||||
"metrics": {
|
||||
"coherence_components": 1.0,
|
||||
"consistency_cycles": 0.0,
|
||||
"coverage_ratio": 1.0,
|
||||
"granularity_entropy": 4.459014704982469,
|
||||
"granularity_entropy": 4.478787416971244,
|
||||
"redundancy_ratio": 0.0
|
||||
},
|
||||
"ok": true,
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
# By Concept
|
||||
|
||||
Concept count: **108**
|
||||
Concept count: **110**
|
||||
|
||||
| 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 Native Concept Map | `benchmark/caring/kubernetes-rbac/native-concepts` | `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` |
|
||||
| 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` |
|
||||
|
|
@ -33,6 +34,7 @@ Concept count: **108**
|
|||
| Canon-Side Consumer Purpose Portfolio | `example/consumer-purpose-portfolio` | `artifact_title` |
|
||||
| InfoTechCanon Core | `kernel/itc-core` | `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` |
|
||||
| InfoTechCanon Access Control Model | `model/access-control` | `artifact_title` |
|
||||
| InfoTechCanon Capability Model | `model/capability` | `artifact_title` |
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
|
||||
- `model/capability` via `introduces`
|
||||
|
||||
## `catalog/attribute-value-types`
|
||||
|
||||
- `model/data` via `introduces`
|
||||
|
||||
## `catalog/evidence-basis`
|
||||
|
||||
- `model/capability` via `uses`
|
||||
|
|
@ -82,6 +86,10 @@
|
|||
- `standard/repository-layout` via `conforms_to`
|
||||
- `standard/tagging` via `conforms_to`
|
||||
|
||||
## `mapping/capability-anchors`
|
||||
|
||||
- `model/capability` via `introduces`
|
||||
|
||||
## `model/access-control`
|
||||
|
||||
- `benchmark/caring/kubernetes-rbac` via `stress_tests`
|
||||
|
|
@ -98,6 +106,10 @@
|
|||
- `small-saas/user/ada-admin` via `uses`
|
||||
- `standard/caring` via `imports`
|
||||
|
||||
## `model/capability`
|
||||
|
||||
- `kernel/itc-kernel-map` via `maps`
|
||||
|
||||
## `model/data`
|
||||
|
||||
- `conformance/railiance-fabric` via `uses`
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
- ID: `kernel/itc-kernel-map`
|
||||
- Kind: `kernel`
|
||||
- Path: `kernel/InfoTechCanonKernelMap.md`
|
||||
- Relationships: 14
|
||||
- Relationships: 15
|
||||
|
||||
## InfoTechCanon CARING Access Governance Standard
|
||||
|
||||
|
|
|
|||
|
|
@ -2,71 +2,73 @@
|
|||
|
||||
# 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` |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| `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/access-descriptors` | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | `uses` | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | |
|
||||
| `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/native-concepts` | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | | | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | |
|
||||
| `capability-catalog/itc-cap` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `catalog/evidence-basis` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `comparison/repo-scoping/canon-benefit-analysis` | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | `maps` | `maps` | | | | | `maps` | | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | `maps` |
|
||||
| `comparison/repo-scoping/consumer-workplan-brief` | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `comparison/repo-scoping/extension-candidates` | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | `proposes` | `proposes` | | | | | `proposes` | | `proposes` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `comparison/repo-scoping/frame` | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `uses` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `comparison/repo-scoping/report` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | `uses` | | | | | `compares` | | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `concept-catalog/purpose-demand` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `conformance/railiance-fabric` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | `uses` |
|
||||
| `conformance/railiance-fabric/consumer-workplan-brief` | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `conformance/railiance-fabric/entity-edge-capture-criteria` | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `conformance/railiance-fabric/mapping-expectations` | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | `maps` | `maps` | `maps` | | `maps` | `maps` | `maps` | | `maps` | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `conformance/railiance-fabric/visualization-examples` | | | | | | | | | | | | | | | `part_of` | | `illustrates` | `illustrates` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `evaluation/user-engine` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | `uses` | | `uses` | | | | | `uses` | `uses` | `uses` | `uses` | | | `evaluates` | | | | | | | | | | | | | | | | | | | | `uses` | | |
|
||||
| `evaluation/user-engine/consumer-workplan-brief` | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `evaluation/user-engine/interface-card-expectations` | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | |
|
||||
| `evaluation/user-engine/questions` | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | `uses` | | `uses` | | `uses` | | | | | `uses` | `uses` | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `evaluation/user-engine/small-saas-alignment` | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | `uses` | | | | `uses` | | | | | `uses` | | | | | | `evaluates` | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `example/consumer-purpose-portfolio` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `illustrates` | | | `illustrates` | | `uses` | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `kernel/itc-core` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `kernel/itc-kernel-map` | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | `maps` | | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | | `maps` | `maps` | | | | | | | | | | | | | | | | | | | | | | | `maps` | | `maps` |
|
||||
| `mapping/purpose-demand-governance-candidates` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | | | `maps` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/access-control` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | `uses` | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/capability` | `derived_from` | | | | | | `introduces` | `uses` | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | `uses` | | `uses` | | `uses` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/data` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/devsecops` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/governance` | | | | | | | | `introduces` | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/information-space` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/landscape` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/network` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/observability` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/organization` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/purpose-demand-extension` | | | | | | | | | | | | | | `introduces` | | | | | | | | | | | | `conforms_to` | | | | | | | `extends` | `uses` | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/security` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/task` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `pattern/intent-scope-purposes` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `implements` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `practice/intake-and-assimilation` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `profile/small-saas` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | `requires` | | `requires` | `requires` | `requires` | | `requires` | `requires` | `requires` | `requires` | | `requires` | `requires` | | | | | | | | | | | | | | | | | | | | | | | `requires` | | `requires` |
|
||||
| `review-kit/alignment` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | `uses` | | | | | | `uses` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | `uses` | | |
|
||||
| `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/schema` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `uses` | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `review-kit/alignment/scorecard` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `uses` | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `review-kit/alignment/workflow` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `uses` | | `uses` | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `review-kit/alignment/workplan-template` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | `uses` | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `small-saas/control/namespace-per-tenant` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | `instantiates` | | | | | | | | | | `evidenced_by` | | | | | | | | | | `uses` | | |
|
||||
| `small-saas/dataset/subscription-ledger` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | `instantiates` | | | | | | | | | | | | `governed_by` | `owned_by` | | | | `partitioned_for` | `partitioned_for` | | | | |
|
||||
| `small-saas/deployment/production` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | `uses` | | | | | | | | `instantiates` | | | | | | | `implements` | | | | | | `deploys` | | | | `separates` | `separates` | | | | |
|
||||
| `small-saas/evidence/access-review-2026-05` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | `instantiates` | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `small-saas/incident/cross-tenant-access-attempt` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | `instantiates` | | | | | | | `constrained_by` | | | `evidenced_by` | | | | | | | | | | | | |
|
||||
| `small-saas/policy/tenant-isolation` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | `instantiates` | | | | | | | `requires` | | | `evidenced_by` | | | | | | | | | | | | |
|
||||
| `small-saas/service/billing-portal` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | `instantiates` | | | | | | | | | | | | | | `part_of` | | `owned_by` | | | | | | |
|
||||
| `small-saas/system/billing-system` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | `instantiates` | | | | | | | | | | | | | | | | | `serves` | `serves` | | | | |
|
||||
| `small-saas/task/onboard-tenant` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | `instantiates` | | | | | | | | | | | | `governed_by` | | | | `owned_by` | `changes` | | | | | |
|
||||
| `small-saas/team/platform` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `instantiates` | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `small-saas/tenant/acme` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `instantiates` | | | | | | | `isolated_by` | | | | | | | | | | | | `represented_by` | | | |
|
||||
| `small-saas/tenant/globex` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `instantiates` | | | | | | | `isolated_by` | | | | | | | | | | | | | | | |
|
||||
| `small-saas/user/ada-admin` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | `uses` | | | | | | `instantiates` | | | | | | | | | | `access_evidenced_by` | | `has_access_under` | | | | `member_of` | | | | | | |
|
||||
| `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` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| 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` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `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/caring-mapping` | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | `maps` | | | | | | | `maps` | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | |
|
||||
| `benchmark/caring/kubernetes-rbac/findings` | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `proposes` | | | | | | | `proposes` | | | | | | | | | | | | | | | | | | | | | | | | `proposes` | | |
|
||||
| `benchmark/caring/kubernetes-rbac/native-concepts` | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | | | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | |
|
||||
| `capability-catalog/itc-cap` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `catalog/attribute-value-types` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `catalog/evidence-basis` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `comparison/repo-scoping/canon-benefit-analysis` | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | `maps` | `maps` | | | | | `maps` | | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | `maps` |
|
||||
| `comparison/repo-scoping/consumer-workplan-brief` | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `comparison/repo-scoping/extension-candidates` | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | `proposes` | `proposes` | | | | | `proposes` | | `proposes` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `comparison/repo-scoping/frame` | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `uses` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `comparison/repo-scoping/report` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | `uses` | | | | | `compares` | | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `concept-catalog/purpose-demand` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `conformance/railiance-fabric` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | `uses` |
|
||||
| `conformance/railiance-fabric/consumer-workplan-brief` | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `conformance/railiance-fabric/entity-edge-capture-criteria` | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `conformance/railiance-fabric/mapping-expectations` | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | `maps` | `maps` | `maps` | | `maps` | `maps` | `maps` | | `maps` | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `conformance/railiance-fabric/visualization-examples` | | | | | | | | | | | | | | | | `part_of` | | `illustrates` | `illustrates` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `evaluation/user-engine` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | `uses` | | `uses` | | | | | `uses` | `uses` | `uses` | `uses` | | | `evaluates` | | | | | | | | | | | | | | | | | | | | `uses` | | |
|
||||
| `evaluation/user-engine/consumer-workplan-brief` | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `evaluation/user-engine/interface-card-expectations` | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | |
|
||||
| `evaluation/user-engine/questions` | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | `uses` | | `uses` | | `uses` | | | | | `uses` | `uses` | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `evaluation/user-engine/small-saas-alignment` | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | `uses` | | | | `uses` | | | | | `uses` | | | | | | `evaluates` | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `example/consumer-purpose-portfolio` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `illustrates` | | | `illustrates` | | `uses` | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `kernel/itc-core` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `kernel/itc-kernel-map` | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | | `maps` | `maps` | | | | | | | | | | | | | | | | | | | | | | | `maps` | | `maps` |
|
||||
| `mapping/capability-anchors` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `mapping/purpose-demand-governance-candidates` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | | | `maps` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/access-control` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | `uses` | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/capability` | `derived_from` | | | | | | `introduces` | | `uses` | | | | | | | | | | | | | | | | | | `conforms_to` | | `introduces` | | | | | | `uses` | | `uses` | | `uses` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/data` | | | | | | | | `introduces` | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/devsecops` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/governance` | | | | | | | | | `introduces` | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/information-space` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/landscape` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/network` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/observability` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/organization` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/purpose-demand-extension` | | | | | | | | | | | | | | | `introduces` | | | | | | | | | | | | `conforms_to` | | | | | | | | `extends` | `uses` | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/security` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/task` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `pattern/intent-scope-purposes` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `implements` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `practice/intake-and-assimilation` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `profile/small-saas` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | `requires` | | `requires` | `requires` | `requires` | | `requires` | `requires` | `requires` | `requires` | | `requires` | `requires` | | | | | | | | | | | | | | | | | | | | | | | `requires` | | `requires` |
|
||||
| `review-kit/alignment` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | `uses` | | | | | | `uses` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | `uses` | | |
|
||||
| `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/schema` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `uses` | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `review-kit/alignment/scorecard` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `uses` | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `review-kit/alignment/workflow` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `uses` | | `uses` | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `review-kit/alignment/workplan-template` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | `uses` | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `small-saas/control/namespace-per-tenant` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | `instantiates` | | | | | | | | | | `evidenced_by` | | | | | | | | | | `uses` | | |
|
||||
| `small-saas/dataset/subscription-ledger` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | `instantiates` | | | | | | | | | | | | `governed_by` | `owned_by` | | | | `partitioned_for` | `partitioned_for` | | | | |
|
||||
| `small-saas/deployment/production` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | `uses` | | | | | | | | `instantiates` | | | | | | | `implements` | | | | | | `deploys` | | | | `separates` | `separates` | | | | |
|
||||
| `small-saas/evidence/access-review-2026-05` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | `instantiates` | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `small-saas/incident/cross-tenant-access-attempt` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | `instantiates` | | | | | | | `constrained_by` | | | `evidenced_by` | | | | | | | | | | | | |
|
||||
| `small-saas/policy/tenant-isolation` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | `instantiates` | | | | | | | `requires` | | | `evidenced_by` | | | | | | | | | | | | |
|
||||
| `small-saas/service/billing-portal` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | `instantiates` | | | | | | | | | | | | | | `part_of` | | `owned_by` | | | | | | |
|
||||
| `small-saas/system/billing-system` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | `instantiates` | | | | | | | | | | | | | | | | | `serves` | `serves` | | | | |
|
||||
| `small-saas/task/onboard-tenant` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | `instantiates` | | | | | | | | | | | | `governed_by` | | | | `owned_by` | `changes` | | | | | |
|
||||
| `small-saas/team/platform` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `instantiates` | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `small-saas/tenant/acme` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `instantiates` | | | | | | | `isolated_by` | | | | | | | | | | | | `represented_by` | | | |
|
||||
| `small-saas/tenant/globex` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `instantiates` | | | | | | | `isolated_by` | | | | | | | | | | | | | | | |
|
||||
| `small-saas/user/ada-admin` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | `uses` | | | | | | `instantiates` | | | | | | | | | | `access_evidenced_by` | | `has_access_under` | | | | `member_of` | | | | | | |
|
||||
| `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
|
||||
|
||||
- Infospace: `canon`
|
||||
- Artifacts: 66
|
||||
- Artifacts: 68
|
||||
|
||||
## Artifact Kinds
|
||||
|
||||
|
|
@ -21,7 +21,7 @@
|
|||
- `caring-mapping`: 1
|
||||
- `comparison-frame`: 1
|
||||
- `comparison-report`: 1
|
||||
- `concept-catalog`: 2
|
||||
- `concept-catalog`: 3
|
||||
- `conformance-pack`: 1
|
||||
- `consumer-workplan-brief`: 3
|
||||
- `consumer-workplan-template`: 1
|
||||
|
|
@ -31,7 +31,7 @@
|
|||
- `extension-candidate-set`: 1
|
||||
- `interface-card-expectation`: 1
|
||||
- `kernel`: 2
|
||||
- `mapping`: 1
|
||||
- `mapping`: 2
|
||||
- `mapping-expectation`: 1
|
||||
- `model`: 12
|
||||
- `model-extension`: 1
|
||||
|
|
@ -63,9 +63,9 @@
|
|||
- `implements`: 2
|
||||
- `imports`: 14
|
||||
- `instantiates`: 13
|
||||
- `introduces`: 3
|
||||
- `introduces`: 5
|
||||
- `isolated_by`: 2
|
||||
- `maps`: 36
|
||||
- `maps`: 37
|
||||
- `member_of`: 1
|
||||
- `owned_by`: 3
|
||||
- `part_of`: 22
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ from .service import (
|
|||
profile_inspect,
|
||||
profile_validate,
|
||||
read_view,
|
||||
review_capability_record,
|
||||
review_kit,
|
||||
validate_canon,
|
||||
)
|
||||
|
|
@ -108,6 +109,18 @@ def _route(
|
|||
profile = path.removeprefix("/profiles/").removesuffix("/validate").strip("/")
|
||||
payload = profile_validate(profile, root)
|
||||
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"):
|
||||
profile = path.removeprefix("/profiles/").removesuffix("/graph").strip("/")
|
||||
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_validate,
|
||||
read_view,
|
||||
review_capability_record,
|
||||
review_kit,
|
||||
validate_canon,
|
||||
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.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.add_argument("--host", default="127.0.0.1")
|
||||
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)
|
||||
|
||||
|
||||
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]:
|
||||
return profile_inspect(args.profile, _root(args))
|
||||
|
||||
|
|
|
|||
|
|
@ -328,6 +328,18 @@ def profile_graph(
|
|||
) 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]:
|
||||
return generation.generate_indexes(load_context(root))
|
||||
|
||||
|
|
|
|||
|
|
@ -51,6 +51,9 @@ REQUIRED_SCHEMAS = (
|
|||
"agent-brief.schema.yaml",
|
||||
"workplan.schema.yaml",
|
||||
"alignment-review.schema.yaml",
|
||||
"capability.schema.yaml",
|
||||
"capability-record.schema.yaml",
|
||||
"attribute-value-type.schema.yaml",
|
||||
)
|
||||
|
||||
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_infospace_dirs(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_artifact_index(context.repo_root, context.infospace_root, 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(
|
||||
infospace_root: Path,
|
||||
errors: list[dict[str, Any]],
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ def test_cli_inspect_emits_json(capsys) -> None:
|
|||
assert exit_code == 0
|
||||
payload = json.loads(capsys.readouterr().out)
|
||||
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:
|
||||
|
|
|
|||
|
|
@ -9,10 +9,13 @@ from info_tech_canon.service import (
|
|||
list_standards,
|
||||
profile_graph,
|
||||
profile_validate,
|
||||
review_capability_record,
|
||||
review_kit,
|
||||
validate_canon,
|
||||
)
|
||||
from info_tech_canon.service import DEFAULT_INFOSPACE_ROOT
|
||||
from pathlib import Path
|
||||
import json
|
||||
import shutil
|
||||
|
||||
|
||||
|
|
@ -21,7 +24,7 @@ def test_inspect_canon_counts_artifact_kinds() -> None:
|
|||
|
||||
assert payload["ok"] is True
|
||||
assert payload["infospace"]["slug"] == "canon"
|
||||
assert payload["infospace"]["artifact_count"] == 66
|
||||
assert payload["infospace"]["artifact_count"] == 68
|
||||
assert payload["infospace"]["kinds"] == {
|
||||
"access-descriptor-set": 1,
|
||||
"alignment-review-kit": 1,
|
||||
|
|
@ -37,7 +40,7 @@ def test_inspect_canon_counts_artifact_kinds() -> None:
|
|||
"caring-mapping": 1,
|
||||
"comparison-frame": 1,
|
||||
"comparison-report": 1,
|
||||
"concept-catalog": 2,
|
||||
"concept-catalog": 3,
|
||||
"conformance-pack": 1,
|
||||
"consumer-workplan-brief": 3,
|
||||
"consumer-workplan-template": 1,
|
||||
|
|
@ -47,7 +50,7 @@ def test_inspect_canon_counts_artifact_kinds() -> None:
|
|||
"extension-candidate-set": 1,
|
||||
"interface-card-expectation": 1,
|
||||
"kernel": 2,
|
||||
"mapping": 1,
|
||||
"mapping": 2,
|
||||
"mapping-expectation": 1,
|
||||
"model": 12,
|
||||
"model-extension": 1,
|
||||
|
|
@ -93,17 +96,58 @@ def test_validate_canon_passes_scaffold() -> None:
|
|||
assert payload["ok"] is True
|
||||
assert payload["errors"] == []
|
||||
assert "warnings" in payload
|
||||
assert payload["details"]["artifact_count"] == 66
|
||||
assert payload["details"]["artifact_count"] == 68
|
||||
|
||||
|
||||
def test_graph_exports_relationship_summary() -> None:
|
||||
payload = artifact_graph()
|
||||
|
||||
assert payload["ok"] is True
|
||||
assert payload["graph"]["node_count"] == 66
|
||||
assert payload["graph"]["node_count"] == 68
|
||||
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:
|
||||
payload = profile_validate("small-saas")
|
||||
|
||||
|
|
|
|||
|
|
@ -4,17 +4,17 @@ type: workplan
|
|||
title: "Attribute Value Type catalog (Data Model extension)"
|
||||
domain: infotech
|
||||
repo: info-tech-canon
|
||||
status: proposed
|
||||
status: finished
|
||||
priority: high
|
||||
created: "2026-07-30"
|
||||
updated: "2026-07-30"
|
||||
updated: "2026-08-15"
|
||||
depends_on_workplans:
|
||||
- ITC-WP-0006
|
||||
owner: codex
|
||||
owner: grok
|
||||
spec_refs:
|
||||
- demand/AttributeValueTypes.md
|
||||
- seeds/InfoTechCanonDataModel_RC1_seed.md
|
||||
- ../citation-evidence/wiki/AttributeValueTypes-proposal.md
|
||||
- infospace/models/data/InfoTechCanonDataModel.md
|
||||
- infospace/models/data/attribute-value-types.yaml
|
||||
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,
|
||||
machine-readable catalog of attribute value types** under the Data Model
|
||||
(or a tightly coupled standard), so consumers such as citation-evidence share
|
||||
stable type ids, encodings, and CodeList cardinality rules.
|
||||
so consumers such as citation-evidence share stable type ids, encodings,
|
||||
and CodeList cardinality rules.
|
||||
|
||||
## Intent
|
||||
|
||||
ITC-DATA already owns Attribute / Field / DataType / Representation / CodeList
|
||||
but does not close the set of practical value types for structured capture.
|
||||
This workplan fills that gap without inventing a parallel “form field”
|
||||
universe.
|
||||
but did not close the set of practical value types for structured capture.
|
||||
This workplan fills that gap without inventing a parallel form-field universe.
|
||||
Owner is ITC-DATA, not a sibling standard.
|
||||
|
||||
## Tasks
|
||||
|
||||
|
|
@ -40,58 +40,61 @@ universe.
|
|||
|
||||
```task
|
||||
id: ITC-WP-0013-T01
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "d865f73c-7ff0-4b9c-9905-678ce3da964a"
|
||||
```
|
||||
|
||||
Process `demand/AttributeValueTypes.md` under Purpose/Demand (ITC-WP-0006)
|
||||
if still required for kernel-adjacent standards; record decision to extend
|
||||
ITC-DATA vs new sibling standard.
|
||||
Process `demand/AttributeValueTypes.md`. Decision: extend ITC-DATA (new
|
||||
`AttributeValueType` as a closed Representation profile), not a sibling
|
||||
standard. Matches the consumer's accepted default of 2026-07-30.
|
||||
|
||||
**Done 2026-08-15.**
|
||||
|
||||
### T02 — Draft catalog standard
|
||||
|
||||
```task
|
||||
id: ITC-WP-0013-T02
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
depends_on: [T01]
|
||||
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)
|
||||
- wire encoding rules
|
||||
- mapping to Representation / CodeList / Constraint
|
||||
- out-of-scope rules (email-as-type, etc.)
|
||||
**Done 2026-08-15.**
|
||||
|
||||
### T03 — Machine-readable catalog
|
||||
|
||||
```task
|
||||
id: ITC-WP-0013-T03
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
depends_on: [T02]
|
||||
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
|
||||
|
||||
```task
|
||||
id: ITC-WP-0013-T04
|
||||
status: todo
|
||||
status: done
|
||||
priority: medium
|
||||
depends_on: [T03]
|
||||
state_hub_task_id: "78e0d31f-afcd-459b-9d01-e6fbc801bb50"
|
||||
```
|
||||
|
||||
Publish short alignment note for citation-evidence (and future form UIs);
|
||||
link from Data Model kernel map.
|
||||
`infospace/models/data/attribute-value-types-alignment.md` for
|
||||
citation-evidence. Linked from §11.15a.
|
||||
|
||||
---
|
||||
**Done 2026-08-15.**
|
||||
|
||||
## Out of scope
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ title: "Capability Model consolidation (post-ITCC assimilation)"
|
|||
domain: infotech
|
||||
topic_slug: canon
|
||||
repo: info-tech-canon
|
||||
status: active
|
||||
status: finished
|
||||
priority: medium
|
||||
created: "2026-08-14"
|
||||
updated: "2026-08-15"
|
||||
|
|
@ -62,7 +62,7 @@ and `governance` (2); no capability id changed. Decision record in
|
|||
|
||||
```task
|
||||
id: ITC-WP-0014-T02
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
depends_on: [T01]
|
||||
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
|
||||
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
|
||||
|
||||
```task
|
||||
id: ITC-WP-0014-T03
|
||||
status: todo
|
||||
status: done
|
||||
priority: medium
|
||||
depends_on: [T02]
|
||||
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
|
||||
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
|
||||
|
||||
```task
|
||||
|
|
@ -109,7 +117,7 @@ validates against the live catalog (T11).
|
|||
|
||||
```task
|
||||
id: ITC-WP-0014-T05
|
||||
status: todo
|
||||
status: done
|
||||
priority: medium
|
||||
depends_on: [T01]
|
||||
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
|
||||
`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
|
||||
|
||||
```task
|
||||
id: ITC-WP-0014-T06
|
||||
status: todo
|
||||
status: done
|
||||
priority: low
|
||||
depends_on: [T02]
|
||||
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
|
||||
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
|
||||
|
||||
```task
|
||||
id: ITC-WP-0014-T07
|
||||
status: todo
|
||||
status: done
|
||||
priority: medium
|
||||
depends_on: [T01, T02, T03, T11]
|
||||
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)
|
||||
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
|
||||
|
||||
```task
|
||||
|
|
|
|||
|
|
@ -182,7 +182,7 @@ workplans:
|
|||
|
||||
- id: ITC-WP-0013
|
||||
title: Attribute Value Type catalog (Data Model extension)
|
||||
status: proposed
|
||||
status: finished
|
||||
priority: high
|
||||
path: workplans/ITC-WP-0013-attribute-value-type-catalog.md
|
||||
depends_on:
|
||||
|
|
@ -195,7 +195,7 @@ workplans:
|
|||
|
||||
- id: ITC-WP-0014
|
||||
title: Capability Model consolidation (post-ITCC assimilation)
|
||||
status: active
|
||||
status: finished
|
||||
priority: medium
|
||||
path: workplans/ITC-WP-0014-capability-model-consolidation.md
|
||||
depends_on:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue