Canon 0.6.0 freeze: ITC-CAP draft, AVT catalog, joinable review
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s

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:
tegwick 2026-08-15 19:42:30 +02:00
parent 7805560a60
commit d453e17952
44 changed files with 1485 additions and 137 deletions

View file

@ -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")