From 4e4cec655550cce4ba1ad077b12277cde547a132 Mon Sep 17 00:00:00 2001 From: tegwick Date: Sat, 23 May 2026 05:18:54 +0200 Subject: [PATCH] Add user-engine evaluation readiness pack --- README.md | 7 + ...ion-user-engine-consumer-workplan-brief.md | 30 +++ ...user-engine-interface-card-expectations.md | 31 +++ .../evaluation-user-engine-questions.md | 36 +++ ...uation-user-engine-small-saas-alignment.md | 32 +++ .../agent/briefs/evaluation-user-engine.md | 37 +++ .../agent/consumer-briefs/railiance-fabric.md | 1 + .../agent/consumer-briefs/repo-scoping.md | 1 + .../agent/consumer-briefs/user-engine.md | 1 + infospace/agent/global-agent-brief.md | 4 +- infospace/agent/retrieval-index.json | 211 +++++++++++++++++- infospace/agent/retrieval-index.md | 52 ++++- infospace/agent/retrieval-index.yaml | 136 ++++++++++- infospace/artifacts/index.yaml | 94 ++++++++ .../user-engine/consumer-workplan-brief.md | 61 +++++ .../user-engine/evaluation-pack.yaml | 65 ++++++ .../interface-card-expectations.yaml | 148 ++++++++++++ .../evaluations/user-engine/questions.yaml | 135 +++++++++++ .../user-engine/small-saas-alignment.yaml | 58 +++++ infospace/indexes/artifact-tree.yaml | 32 ++- infospace/indexes/concept-ownership.yaml | 22 +- infospace/indexes/import-matrix.yaml | 69 ++++++ infospace/validation/latest.json | 6 +- infospace/views/by-concept.md | 7 +- infospace/views/by-mapping-target.md | 30 +++ infospace/views/import-matrix.md | 77 ++++--- infospace/views/kernel-overview.md | 12 +- infospace/views/repository-tree.md | 12 +- src/info_tech_canon/generation.py | 16 ++ src/info_tech_canon/validation.py | 197 ++++++++++++++++ tests/test_cli.py | 2 +- tests/test_service.py | 12 +- ...P-0007-user-engine-evaluation-readiness.md | 22 +- workplans/index.yaml | 2 +- 34 files changed, 1597 insertions(+), 61 deletions(-) create mode 100644 infospace/agent/briefs/evaluation-user-engine-consumer-workplan-brief.md create mode 100644 infospace/agent/briefs/evaluation-user-engine-interface-card-expectations.md create mode 100644 infospace/agent/briefs/evaluation-user-engine-questions.md create mode 100644 infospace/agent/briefs/evaluation-user-engine-small-saas-alignment.md create mode 100644 infospace/agent/briefs/evaluation-user-engine.md create mode 100644 infospace/evaluations/user-engine/consumer-workplan-brief.md create mode 100644 infospace/evaluations/user-engine/evaluation-pack.yaml create mode 100644 infospace/evaluations/user-engine/interface-card-expectations.yaml create mode 100644 infospace/evaluations/user-engine/questions.yaml create mode 100644 infospace/evaluations/user-engine/small-saas-alignment.yaml diff --git a/README.md b/README.md index 2a495d8..bc09950 100644 --- a/README.md +++ b/README.md @@ -82,3 +82,10 @@ The PURPOSES candidate model is registered as a governance extension at consumer purposes, demand signals, purpose fit, scope pressure, and evolution requests so consumer demand can inform repo governance without silently changing producer scope. + +## Evaluations + +Canon-side evaluation packs live under `infospace/evaluations/`. The first pack +is `user-engine`, which prepares pre-integration assessment of a user-management +capability against Organization, Access Control, Governance, Data, Security, +Task, PURPOSES, CARING, and the `small-saas` profile. diff --git a/infospace/agent/briefs/evaluation-user-engine-consumer-workplan-brief.md b/infospace/agent/briefs/evaluation-user-engine-consumer-workplan-brief.md new file mode 100644 index 0000000..d59e62a --- /dev/null +++ b/infospace/agent/briefs/evaluation-user-engine-consumer-workplan-brief.md @@ -0,0 +1,30 @@ +--- +id: agent-brief/evaluation-user-engine-consumer-workplan-brief +artifact_id: evaluation/user-engine/consumer-workplan-brief +source_path: evaluations/user-engine/consumer-workplan-brief.md +source_kind: consumer-workplan-brief +generated: true +--- + + + +# Agent Brief: User Engine Consumer Workplan Brief + +- Artifact ID: `evaluation/user-engine/consumer-workplan-brief` +- Kind: `consumer-workplan-brief` +- Canonical path: `evaluations/user-engine/consumer-workplan-brief.md` +- Full source: `evaluations/user-engine/consumer-workplan-brief.md` +- Summary: Consumer repo workplan seed brief: User Engine Consumer Workplan Brief. + +## Retrieval Hints + +Imports and anchors: +- `model/purpose-demand-extension` + +## Owned Concepts + +- `User Engine Consumer Workplan Brief` + +## Related Distinctions + +No common distinction is anchored directly on this artifact. diff --git a/infospace/agent/briefs/evaluation-user-engine-interface-card-expectations.md b/infospace/agent/briefs/evaluation-user-engine-interface-card-expectations.md new file mode 100644 index 0000000..c289bdc --- /dev/null +++ b/infospace/agent/briefs/evaluation-user-engine-interface-card-expectations.md @@ -0,0 +1,31 @@ +--- +id: agent-brief/evaluation-user-engine-interface-card-expectations +artifact_id: evaluation/user-engine/interface-card-expectations +source_path: evaluations/user-engine/interface-card-expectations.yaml +source_kind: interface-card-expectation +generated: true +--- + + + +# Agent Brief: User Engine Canon Interface Card Expectations + +- Artifact ID: `evaluation/user-engine/interface-card-expectations` +- Kind: `interface-card-expectation` +- Canonical path: `evaluations/user-engine/interface-card-expectations.yaml` +- Full source: `evaluations/user-engine/interface-card-expectations.yaml` +- Summary: Expected Canon Interface Card fields and mappings: User Engine Canon Interface Card Expectations. + +## Retrieval Hints + +Imports and anchors: +- `model/purpose-demand-extension` +- `standard/caring` + +## Owned Concepts + +- `User Engine Canon Interface Card Expectations` + +## Related Distinctions + +No common distinction is anchored directly on this artifact. diff --git a/infospace/agent/briefs/evaluation-user-engine-questions.md b/infospace/agent/briefs/evaluation-user-engine-questions.md new file mode 100644 index 0000000..cf350de --- /dev/null +++ b/infospace/agent/briefs/evaluation-user-engine-questions.md @@ -0,0 +1,36 @@ +--- +id: agent-brief/evaluation-user-engine-questions +artifact_id: evaluation/user-engine/questions +source_path: evaluations/user-engine/questions.yaml +source_kind: evaluation-question-set +generated: true +--- + + + +# Agent Brief: User Engine Canon Evaluation Questions + +- Artifact ID: `evaluation/user-engine/questions` +- Kind: `evaluation-question-set` +- Canonical path: `evaluations/user-engine/questions.yaml` +- Full source: `evaluations/user-engine/questions.yaml` +- Summary: Structured canon evaluation question set: User Engine Canon Evaluation Questions. + +## Retrieval Hints + +Imports and anchors: +- `model/access-control` +- `model/data` +- `model/governance` +- `model/organization` +- `model/purpose-demand-extension` +- `model/security` +- `model/task` + +## Owned Concepts + +- `User Engine Canon Evaluation Questions` + +## Related Distinctions + +No common distinction is anchored directly on this artifact. diff --git a/infospace/agent/briefs/evaluation-user-engine-small-saas-alignment.md b/infospace/agent/briefs/evaluation-user-engine-small-saas-alignment.md new file mode 100644 index 0000000..053fc81 --- /dev/null +++ b/infospace/agent/briefs/evaluation-user-engine-small-saas-alignment.md @@ -0,0 +1,32 @@ +--- +id: agent-brief/evaluation-user-engine-small-saas-alignment +artifact_id: evaluation/user-engine/small-saas-alignment +source_path: evaluations/user-engine/small-saas-alignment.yaml +source_kind: profile-alignment +generated: true +--- + + + +# Agent Brief: User Engine Small SaaS Alignment Lens + +- Artifact ID: `evaluation/user-engine/small-saas-alignment` +- Kind: `profile-alignment` +- Canonical path: `evaluations/user-engine/small-saas-alignment.yaml` +- Full source: `evaluations/user-engine/small-saas-alignment.yaml` +- Summary: Profile-specific evaluation alignment artifact: User Engine Small SaaS Alignment Lens. + +## Retrieval Hints + +Imports and anchors: +- `model/access-control` +- `model/governance` +- `model/organization` + +## Owned Concepts + +- `User Engine Small SaaS Alignment Lens` + +## Related Distinctions + +No common distinction is anchored directly on this artifact. diff --git a/infospace/agent/briefs/evaluation-user-engine.md b/infospace/agent/briefs/evaluation-user-engine.md new file mode 100644 index 0000000..7630a9a --- /dev/null +++ b/infospace/agent/briefs/evaluation-user-engine.md @@ -0,0 +1,37 @@ +--- +id: agent-brief/evaluation-user-engine +artifact_id: evaluation/user-engine +source_path: evaluations/user-engine/evaluation-pack.yaml +source_kind: evaluation-pack +generated: true +--- + + + +# Agent Brief: User Engine Canon Evaluation Pack + +- Artifact ID: `evaluation/user-engine` +- Kind: `evaluation-pack` +- Canonical path: `evaluations/user-engine/evaluation-pack.yaml` +- Full source: `evaluations/user-engine/evaluation-pack.yaml` +- Summary: Machine-readable canon-side evaluation pack: User Engine Canon Evaluation Pack. + +## Retrieval Hints + +Imports and anchors: +- `model/access-control` +- `model/data` +- `model/governance` +- `model/organization` +- `model/purpose-demand-extension` +- `model/security` +- `model/task` +- `standard/caring` + +## Owned Concepts + +- `User Engine Canon Evaluation Pack` + +## Related Distinctions + +No common distinction is anchored directly on this artifact. diff --git a/infospace/agent/consumer-briefs/railiance-fabric.md b/infospace/agent/consumer-briefs/railiance-fabric.md index cc5afbf..7e3c9a8 100644 --- a/infospace/agent/consumer-briefs/railiance-fabric.md +++ b/infospace/agent/consumer-briefs/railiance-fabric.md @@ -18,6 +18,7 @@ Use the canon to make captured entities and edges cleaner for conformance and vi - `agent/templates/canon-interface-card.template.yaml` - `models/governance/InfoTechCanonPurposeDemandExtension.md` - `patterns/intent-scope-purposes.md` +- `evaluations/user-engine/evaluation-pack.yaml` - `examples/consumer-purpose-portfolio.yaml` - `profiles/small-saas/profile.yaml` - `views/by-concept.md` diff --git a/infospace/agent/consumer-briefs/repo-scoping.md b/infospace/agent/consumer-briefs/repo-scoping.md index e3cd9d8..8585c37 100644 --- a/infospace/agent/consumer-briefs/repo-scoping.md +++ b/infospace/agent/consumer-briefs/repo-scoping.md @@ -18,6 +18,7 @@ Compare repo-scoping concepts with canon INTENT, SCOPE, PURPOSES, and interface- - `agent/templates/canon-interface-card.template.yaml` - `models/governance/InfoTechCanonPurposeDemandExtension.md` - `patterns/intent-scope-purposes.md` +- `evaluations/user-engine/evaluation-pack.yaml` - `examples/consumer-purpose-portfolio.yaml` - `profiles/small-saas/profile.yaml` - `views/by-concept.md` diff --git a/infospace/agent/consumer-briefs/user-engine.md b/infospace/agent/consumer-briefs/user-engine.md index 8df149b..4806b06 100644 --- a/infospace/agent/consumer-briefs/user-engine.md +++ b/infospace/agent/consumer-briefs/user-engine.md @@ -18,6 +18,7 @@ Evaluate user-management concepts, roles, access traces, profile claims, and gov - `agent/templates/canon-interface-card.template.yaml` - `models/governance/InfoTechCanonPurposeDemandExtension.md` - `patterns/intent-scope-purposes.md` +- `evaluations/user-engine/evaluation-pack.yaml` - `examples/consumer-purpose-portfolio.yaml` - `profiles/small-saas/profile.yaml` - `views/by-concept.md` diff --git a/infospace/agent/global-agent-brief.md b/infospace/agent/global-agent-brief.md index bcc5edf..3a6cec8 100644 --- a/infospace/agent/global-agent-brief.md +++ b/infospace/agent/global-agent-brief.md @@ -5,8 +5,8 @@ This brief summarizes the current canon service surface for agents. - Infospace slug: `canon` -- Artifact count: 34 -- Retrieval index items: 34 +- Artifact count: 39 +- Retrieval index items: 39 - Primary confidence command: `make validate` - Refresh generated indexes and views with: `make index` - Refresh agent briefs and interface templates with: `make agent-briefs` diff --git a/infospace/agent/retrieval-index.json b/infospace/agent/retrieval-index.json index 8a3e0c4..72c5409 100644 --- a/infospace/agent/retrieval-index.json +++ b/infospace/agent/retrieval-index.json @@ -43,7 +43,7 @@ } ], "infospace": "canon", - "item_count": 34, + "item_count": 39, "items": [ { "canonical_path": "concepts/purpose-demand.yaml", @@ -71,6 +71,215 @@ "title": "Purpose And Consumer Demand Concept Catalog", "warnings": [] }, + { + "canonical_path": "evaluations/user-engine/evaluation-pack.yaml", + "id": "evaluation/user-engine", + "imports": [ + "model/access-control", + "model/data", + "model/governance", + "model/organization", + "model/purpose-demand-extension", + "model/security", + "model/task", + "standard/caring" + ], + "kind": "evaluation-pack", + "owned_concepts": [ + "User Engine Canon Evaluation Pack" + ], + "relationships": [ + { + "target": "profile/small-saas", + "type": "evaluates" + }, + { + "target": "model/organization", + "type": "uses" + }, + { + "target": "model/access-control", + "type": "uses" + }, + { + "target": "model/governance", + "type": "uses" + }, + { + "target": "model/data", + "type": "uses" + }, + { + "target": "model/security", + "type": "uses" + }, + { + "target": "model/task", + "type": "uses" + }, + { + "target": "model/purpose-demand-extension", + "type": "uses" + }, + { + "target": "standard/caring", + "type": "uses" + } + ], + "source_path": "infospace/evaluations/user-engine/evaluation-pack.yaml", + "summary": "Machine-readable canon-side evaluation pack: User Engine Canon Evaluation Pack.", + "title": "User Engine Canon Evaluation Pack", + "warnings": [] + }, + { + "canonical_path": "evaluations/user-engine/consumer-workplan-brief.md", + "id": "evaluation/user-engine/consumer-workplan-brief", + "imports": [ + "model/purpose-demand-extension" + ], + "kind": "consumer-workplan-brief", + "owned_concepts": [ + "User Engine Consumer Workplan Brief" + ], + "relationships": [ + { + "target": "evaluation/user-engine", + "type": "part_of" + }, + { + "target": "model/purpose-demand-extension", + "type": "uses" + } + ], + "source_path": "infospace/evaluations/user-engine/consumer-workplan-brief.md", + "summary": "Consumer repo workplan seed brief: User Engine Consumer Workplan Brief.", + "title": "User Engine Consumer Workplan Brief", + "warnings": [] + }, + { + "canonical_path": "evaluations/user-engine/interface-card-expectations.yaml", + "id": "evaluation/user-engine/interface-card-expectations", + "imports": [ + "model/purpose-demand-extension", + "standard/caring" + ], + "kind": "interface-card-expectation", + "owned_concepts": [ + "User Engine Canon Interface Card Expectations" + ], + "relationships": [ + { + "target": "evaluation/user-engine", + "type": "part_of" + }, + { + "target": "model/purpose-demand-extension", + "type": "uses" + }, + { + "target": "standard/caring", + "type": "uses" + } + ], + "source_path": "infospace/evaluations/user-engine/interface-card-expectations.yaml", + "summary": "Expected Canon Interface Card fields and mappings: User Engine Canon Interface Card Expectations.", + "title": "User Engine Canon Interface Card Expectations", + "warnings": [] + }, + { + "canonical_path": "evaluations/user-engine/questions.yaml", + "id": "evaluation/user-engine/questions", + "imports": [ + "model/access-control", + "model/data", + "model/governance", + "model/organization", + "model/purpose-demand-extension", + "model/security", + "model/task" + ], + "kind": "evaluation-question-set", + "owned_concepts": [ + "User Engine Canon Evaluation Questions" + ], + "relationships": [ + { + "target": "evaluation/user-engine", + "type": "part_of" + }, + { + "target": "model/organization", + "type": "uses" + }, + { + "target": "model/access-control", + "type": "uses" + }, + { + "target": "model/governance", + "type": "uses" + }, + { + "target": "model/data", + "type": "uses" + }, + { + "target": "model/security", + "type": "uses" + }, + { + "target": "model/task", + "type": "uses" + }, + { + "target": "model/purpose-demand-extension", + "type": "uses" + } + ], + "source_path": "infospace/evaluations/user-engine/questions.yaml", + "summary": "Structured canon evaluation question set: User Engine Canon Evaluation Questions.", + "title": "User Engine Canon Evaluation Questions", + "warnings": [] + }, + { + "canonical_path": "evaluations/user-engine/small-saas-alignment.yaml", + "id": "evaluation/user-engine/small-saas-alignment", + "imports": [ + "model/access-control", + "model/governance", + "model/organization" + ], + "kind": "profile-alignment", + "owned_concepts": [ + "User Engine Small SaaS Alignment Lens" + ], + "relationships": [ + { + "target": "evaluation/user-engine", + "type": "part_of" + }, + { + "target": "profile/small-saas", + "type": "evaluates" + }, + { + "target": "model/organization", + "type": "uses" + }, + { + "target": "model/access-control", + "type": "uses" + }, + { + "target": "model/governance", + "type": "uses" + } + ], + "source_path": "infospace/evaluations/user-engine/small-saas-alignment.yaml", + "summary": "Profile-specific evaluation alignment artifact: User Engine Small SaaS Alignment Lens.", + "title": "User Engine Small SaaS Alignment Lens", + "warnings": [] + }, { "canonical_path": "examples/consumer-purpose-portfolio.yaml", "id": "example/consumer-purpose-portfolio", diff --git a/infospace/agent/retrieval-index.md b/infospace/agent/retrieval-index.md index a5c5893..14614ec 100644 --- a/infospace/agent/retrieval-index.md +++ b/infospace/agent/retrieval-index.md @@ -4,7 +4,7 @@ Schema: `info-tech-canon.retrieval-index.v1` Infospace: `canon` -Items: **34** +Items: **39** ## Common Distinctions @@ -25,6 +25,56 @@ Items: **34** - Imports and anchors: `kernel/itc-core`, `model/governance` - Owned concepts: `Purpose And Consumer Demand Concept Catalog` +### User Engine Canon Evaluation Pack + +- ID: `evaluation/user-engine` +- Kind: `evaluation-pack` +- Canonical path: `evaluations/user-engine/evaluation-pack.yaml` +- Source path: `infospace/evaluations/user-engine/evaluation-pack.yaml` +- Summary: Machine-readable canon-side evaluation pack: User Engine Canon Evaluation Pack. +- Imports and anchors: `model/access-control`, `model/data`, `model/governance`, `model/organization`, `model/purpose-demand-extension`, `model/security`, `model/task`, `standard/caring` +- Owned concepts: `User Engine Canon Evaluation Pack` + +### User Engine Consumer Workplan Brief + +- ID: `evaluation/user-engine/consumer-workplan-brief` +- Kind: `consumer-workplan-brief` +- Canonical path: `evaluations/user-engine/consumer-workplan-brief.md` +- Source path: `infospace/evaluations/user-engine/consumer-workplan-brief.md` +- Summary: Consumer repo workplan seed brief: User Engine Consumer Workplan Brief. +- Imports and anchors: `model/purpose-demand-extension` +- Owned concepts: `User Engine Consumer Workplan Brief` + +### User Engine Canon Interface Card Expectations + +- ID: `evaluation/user-engine/interface-card-expectations` +- Kind: `interface-card-expectation` +- Canonical path: `evaluations/user-engine/interface-card-expectations.yaml` +- Source path: `infospace/evaluations/user-engine/interface-card-expectations.yaml` +- Summary: Expected Canon Interface Card fields and mappings: User Engine Canon Interface Card Expectations. +- Imports and anchors: `model/purpose-demand-extension`, `standard/caring` +- Owned concepts: `User Engine Canon Interface Card Expectations` + +### User Engine Canon Evaluation Questions + +- ID: `evaluation/user-engine/questions` +- Kind: `evaluation-question-set` +- Canonical path: `evaluations/user-engine/questions.yaml` +- Source path: `infospace/evaluations/user-engine/questions.yaml` +- Summary: Structured canon evaluation question set: User Engine Canon Evaluation Questions. +- Imports and anchors: `model/access-control`, `model/data`, `model/governance`, `model/organization`, `model/purpose-demand-extension`, `model/security`, `model/task` +- Owned concepts: `User Engine Canon Evaluation Questions` + +### User Engine Small SaaS Alignment Lens + +- ID: `evaluation/user-engine/small-saas-alignment` +- Kind: `profile-alignment` +- Canonical path: `evaluations/user-engine/small-saas-alignment.yaml` +- Source path: `infospace/evaluations/user-engine/small-saas-alignment.yaml` +- Summary: Profile-specific evaluation alignment artifact: User Engine Small SaaS Alignment Lens. +- Imports and anchors: `model/access-control`, `model/governance`, `model/organization` +- Owned concepts: `User Engine Small SaaS Alignment Lens` + ### Canon-Side Consumer Purpose Portfolio - ID: `example/consumer-purpose-portfolio` diff --git a/infospace/agent/retrieval-index.yaml b/infospace/agent/retrieval-index.yaml index 8225856..5df5db5 100644 --- a/infospace/agent/retrieval-index.yaml +++ b/infospace/agent/retrieval-index.yaml @@ -1,6 +1,6 @@ schema: info-tech-canon.retrieval-index.v1 infospace: canon -item_count: 34 +item_count: 39 items: - id: concept-catalog/purpose-demand kind: concept-catalog @@ -20,6 +20,140 @@ items: - type: uses target: model/governance warnings: [] +- id: evaluation/user-engine + kind: evaluation-pack + title: User Engine Canon Evaluation Pack + canonical_path: evaluations/user-engine/evaluation-pack.yaml + source_path: infospace/evaluations/user-engine/evaluation-pack.yaml + summary: 'Machine-readable canon-side evaluation pack: User Engine Canon Evaluation + Pack.' + owned_concepts: + - User Engine Canon Evaluation Pack + imports: + - model/access-control + - model/data + - model/governance + - model/organization + - model/purpose-demand-extension + - model/security + - model/task + - standard/caring + relationships: + - type: evaluates + target: profile/small-saas + - type: uses + target: model/organization + - type: uses + target: model/access-control + - type: uses + target: model/governance + - type: uses + target: model/data + - type: uses + target: model/security + - type: uses + target: model/task + - type: uses + target: model/purpose-demand-extension + - type: uses + target: standard/caring + warnings: [] +- id: evaluation/user-engine/consumer-workplan-brief + kind: consumer-workplan-brief + title: User Engine Consumer Workplan Brief + canonical_path: evaluations/user-engine/consumer-workplan-brief.md + source_path: infospace/evaluations/user-engine/consumer-workplan-brief.md + summary: 'Consumer repo workplan seed brief: User Engine Consumer Workplan Brief.' + owned_concepts: + - User Engine Consumer Workplan Brief + imports: + - model/purpose-demand-extension + relationships: + - type: part_of + target: evaluation/user-engine + - type: uses + target: model/purpose-demand-extension + warnings: [] +- id: evaluation/user-engine/interface-card-expectations + kind: interface-card-expectation + title: User Engine Canon Interface Card Expectations + canonical_path: evaluations/user-engine/interface-card-expectations.yaml + source_path: infospace/evaluations/user-engine/interface-card-expectations.yaml + summary: 'Expected Canon Interface Card fields and mappings: User Engine Canon Interface + Card Expectations.' + owned_concepts: + - User Engine Canon Interface Card Expectations + imports: + - model/purpose-demand-extension + - standard/caring + relationships: + - type: part_of + target: evaluation/user-engine + - type: uses + target: model/purpose-demand-extension + - type: uses + target: standard/caring + warnings: [] +- id: evaluation/user-engine/questions + kind: evaluation-question-set + title: User Engine Canon Evaluation Questions + canonical_path: evaluations/user-engine/questions.yaml + source_path: infospace/evaluations/user-engine/questions.yaml + summary: 'Structured canon evaluation question set: User Engine Canon Evaluation + Questions.' + owned_concepts: + - User Engine Canon Evaluation Questions + imports: + - model/access-control + - model/data + - model/governance + - model/organization + - model/purpose-demand-extension + - model/security + - model/task + relationships: + - type: part_of + target: evaluation/user-engine + - type: uses + target: model/organization + - type: uses + target: model/access-control + - type: uses + target: model/governance + - type: uses + target: model/data + - type: uses + target: model/security + - type: uses + target: model/task + - type: uses + target: model/purpose-demand-extension + warnings: [] +- id: evaluation/user-engine/small-saas-alignment + kind: profile-alignment + title: User Engine Small SaaS Alignment Lens + canonical_path: evaluations/user-engine/small-saas-alignment.yaml + source_path: infospace/evaluations/user-engine/small-saas-alignment.yaml + summary: 'Profile-specific evaluation alignment artifact: User Engine Small SaaS + Alignment Lens.' + owned_concepts: + - User Engine Small SaaS Alignment Lens + imports: + - model/access-control + - model/governance + - model/organization + relationships: + - type: part_of + target: evaluation/user-engine + - type: evaluates + target: profile/small-saas + - type: uses + target: model/organization + - type: uses + target: model/access-control + - type: uses + target: model/governance + warnings: [] - id: example/consumer-purpose-portfolio kind: example title: Canon-Side Consumer Purpose Portfolio diff --git a/infospace/artifacts/index.yaml b/infospace/artifacts/index.yaml index 6c79746..2ad7b4a 100644 --- a/infospace/artifacts/index.yaml +++ b/infospace/artifacts/index.yaml @@ -331,6 +331,100 @@ artifacts: target: pattern/intent-scope-purposes - type: uses target: profile/small-saas + - id: evaluation/user-engine + path: evaluations/user-engine/evaluation-pack.yaml + kind: evaluation-pack + title: User Engine Canon Evaluation Pack + provenance: + source_path: infospace/evaluations/user-engine/evaluation-pack.yaml + placement_workplan: ITC-WP-0007 + relationships: + - type: evaluates + target: profile/small-saas + - type: uses + target: model/organization + - type: uses + target: model/access-control + - type: uses + target: model/governance + - type: uses + target: model/data + - type: uses + target: model/security + - type: uses + target: model/task + - type: uses + target: model/purpose-demand-extension + - type: uses + target: standard/caring + - id: evaluation/user-engine/questions + path: evaluations/user-engine/questions.yaml + kind: evaluation-question-set + title: User Engine Canon Evaluation Questions + provenance: + source_path: infospace/evaluations/user-engine/questions.yaml + placement_workplan: ITC-WP-0007 + relationships: + - type: part_of + target: evaluation/user-engine + - type: uses + target: model/organization + - type: uses + target: model/access-control + - type: uses + target: model/governance + - type: uses + target: model/data + - type: uses + target: model/security + - type: uses + target: model/task + - type: uses + target: model/purpose-demand-extension + - id: evaluation/user-engine/interface-card-expectations + path: evaluations/user-engine/interface-card-expectations.yaml + kind: interface-card-expectation + title: User Engine Canon Interface Card Expectations + provenance: + source_path: infospace/evaluations/user-engine/interface-card-expectations.yaml + placement_workplan: ITC-WP-0007 + relationships: + - type: part_of + target: evaluation/user-engine + - type: uses + target: model/purpose-demand-extension + - type: uses + target: standard/caring + - id: evaluation/user-engine/small-saas-alignment + path: evaluations/user-engine/small-saas-alignment.yaml + kind: profile-alignment + title: User Engine Small SaaS Alignment Lens + provenance: + source_path: infospace/evaluations/user-engine/small-saas-alignment.yaml + placement_workplan: ITC-WP-0007 + relationships: + - type: part_of + target: evaluation/user-engine + - type: evaluates + target: profile/small-saas + - type: uses + target: model/organization + - type: uses + target: model/access-control + - type: uses + target: model/governance + - id: evaluation/user-engine/consumer-workplan-brief + path: evaluations/user-engine/consumer-workplan-brief.md + kind: consumer-workplan-brief + title: User Engine Consumer Workplan Brief + provenance: + source_path: infospace/evaluations/user-engine/consumer-workplan-brief.md + placement_workplan: ITC-WP-0007 + relationships: + - type: part_of + target: evaluation/user-engine + - type: uses + target: model/purpose-demand-extension - id: small-saas/service/billing-portal path: profiles/small-saas/artifacts/service.billing-portal.yaml kind: profile-artifact diff --git a/infospace/evaluations/user-engine/consumer-workplan-brief.md b/infospace/evaluations/user-engine/consumer-workplan-brief.md new file mode 100644 index 0000000..e55805a --- /dev/null +++ b/infospace/evaluations/user-engine/consumer-workplan-brief.md @@ -0,0 +1,61 @@ +--- +id: evaluation/user-engine/consumer-workplan-brief +title: User Engine Consumer Workplan Brief +status: candidate +consumer: user-engine +evaluation_pack: evaluation/user-engine +--- + +# User Engine Consumer Workplan Brief + +## Purpose + +Use this brief as the seed for a user-engine repo workplan. The adoption and +implementation workplan belongs in the user-engine repository, not in +InfoTechCanon. + +## Goal + +Evaluate user-engine against InfoTechCanon before integration as the +user-management capability. + +## Canon Inputs + +- `infospace/evaluations/user-engine/evaluation-pack.yaml` +- `infospace/evaluations/user-engine/questions.yaml` +- `infospace/evaluations/user-engine/interface-card-expectations.yaml` +- `infospace/evaluations/user-engine/small-saas-alignment.yaml` +- `infospace/agent/templates/canon-interface-card.template.yaml` +- `infospace/examples/consumer-purpose-portfolio.yaml` + +## Workplan Tasks For User Engine + +1. Complete a Canon Interface Card for user-engine. +2. Export or describe entity mappings for user, account, actor, subject, + principal, tenant, team, role, access role, policy, control, evidence, and + lifecycle work. +3. Export or describe edge mappings for membership, tenant scope, + authentication, subject evaluation, role assignment, policy governance, + control implementation, evidence, and task creation. +4. Answer the canon evaluation question set by domain. +5. Evaluate small-saas alignment using Ada Admin, Acme, Globex, tenant + isolation policy, namespace-per-tenant control, and access review evidence. +6. Record purpose fit, gaps, scope pressure, and requested evolution. + +## Expected Outputs + +- completed interface card, +- answered question set, +- entity and edge mapping export, +- evidence bundle or explicit evidence gaps, +- small-saas alignment notes, +- list of user-engine changes, +- list of canon evolution requests. + +## Non-Goals + +- Do not change InfoTechCanon from the user-engine workplan without a canon-side + evolution request. +- Do not treat this evaluation as integration approval. +- Do not collapse implementation-specific names into canon concepts without a + mapping and rationale. diff --git a/infospace/evaluations/user-engine/evaluation-pack.yaml b/infospace/evaluations/user-engine/evaluation-pack.yaml new file mode 100644 index 0000000..047ccd1 --- /dev/null +++ b/infospace/evaluations/user-engine/evaluation-pack.yaml @@ -0,0 +1,65 @@ +id: evaluation/user-engine +title: User Engine Canon Evaluation Pack +status: candidate +consumer: user-engine +purpose: Evaluate user-engine against InfoTechCanon before integration as the user-management capability. +created_by_workplan: ITC-WP-0007 +evaluation_mode: pre-integration +canon_anchors: + - model/organization + - model/access-control + - model/governance + - model/data + - model/security + - model/task + - model/purpose-demand-extension + - profile/small-saas + - standard/caring +pack_components: + questions: evaluations/user-engine/questions.yaml + interface_card_expectations: evaluations/user-engine/interface-card-expectations.yaml + small_saas_alignment: evaluations/user-engine/small-saas-alignment.yaml + consumer_workplan_brief: evaluations/user-engine/consumer-workplan-brief.md +evaluation_surfaces: + - user identity and account lifecycle + - actor, subject, and principal distinctions + - organization roles and access roles + - tenant, team, and membership boundaries + - permission and entitlement traces + - policy, control, evidence, and access review traces + - data handled by user management + - security controls around credentials, sessions, and privileged access + - tasks created by onboarding, review, remediation, and deprovisioning + - consumer purpose, demand signal, purpose fit, and scope pressure +readiness_gates: + - id: gate/user-management-core + title: Core user-management concepts are mapped. + required: true + expects: + - User, Account, Actor, Subject, Principal, Team, Tenant, Role, AccessRole, Policy, Control, Evidence. + - id: gate/access-trace + title: Access grants are traceable to scope, policy, control, and evidence. + required: true + expects: + - Each privileged grant identifies role, subject or principal, resource scope, tenant boundary, governing policy, and evidence. + - id: gate/governance-evidence + title: Governance evidence exists before integration. + required: true + expects: + - Access review, exception, approval, and remediation records are available or explicitly marked as gaps. + - id: gate/purpose-fit + title: Consumer purpose and producer fit are explicit. + required: true + expects: + - user-engine declares intent, scope, purposes, demand signals, current fit, and requested evolution. +output_expectations: + - completed Canon Interface Card for user-engine + - answered evaluation question set + - entity and edge mapping export + - small-saas alignment notes + - evidence bundle or explicit evidence gaps + - consumer-side workplan created in the user-engine repo +non_goals: + - Refactor user-engine in this repo. + - Decide user-engine implementation details in this repo. + - Treat evaluation success as automatic integration approval. diff --git a/infospace/evaluations/user-engine/interface-card-expectations.yaml b/infospace/evaluations/user-engine/interface-card-expectations.yaml new file mode 100644 index 0000000..63c12bc --- /dev/null +++ b/infospace/evaluations/user-engine/interface-card-expectations.yaml @@ -0,0 +1,148 @@ +id: evaluation/user-engine/interface-card-expectations +title: User Engine Canon Interface Card Expectations +status: candidate +consumer: user-engine +evaluation_pack: evaluation/user-engine +expected_consumer_fields: + repo: user-engine + domain: user-management + intent: Evaluate and later integrate user-management capability against InfoTechCanon. + scope: + - user identity + - accounts + - tenants + - teams + - memberships + - roles + - access decisions + - access reviews + - governance evidence + purposes: + - id: user-engine/user-management-evaluation + use_case: Compare user-engine entities and access behavior with InfoTechCanon models and small-saas profile expectations. + consumer_need: Clear distinction among identities, actors, principals, subjects, roles, grants, policies, controls, evidence, and lifecycle work. + demand_signals: + - user-engine will be assessed before integration. + - user-engine needs a canon-side conformance question set. +expected_canon_surfaces: + implemented_profiles: + - profile/small-saas + consumed_artifacts: + - model/organization + - model/access-control + - model/governance + - model/data + - model/security + - model/task + - model/purpose-demand-extension + - standard/caring + consumed_concepts: + - Actor + - Subject + - Principal + - User + - Team + - Tenant + - Organization Role + - AccessRole + - Permission + - Entitlement + - ResourceScope + - Policy + - Control + - Evidence + - AccessReview + - ConsumerPurpose + - PurposeFit + - EvolutionRequest +expected_entities: + - id: user + canon_anchor: model/organization + expectation: Represents a human or service user without collapsing into authenticated principal. + - id: account + canon_anchor: model/access-control + expectation: Represents login or system account bound to a user, actor, or principal. + - id: principal + canon_anchor: model/access-control + expectation: Represents authenticated identity used in an authorization decision. + - id: subject + canon_anchor: model/access-control + expectation: Represents entity evaluated by policy, possibly a user, principal, group, or service account. + - id: tenant + canon_anchor: model/organization + expectation: Represents customer or organization boundary used for membership, data, and access scope. + - id: team + canon_anchor: model/organization + expectation: Represents operational group, not an access role. + - id: organization-role + canon_anchor: model/organization + expectation: Represents responsibility or position. + - id: access-role + canon_anchor: model/access-control + expectation: Represents permission bundle or access capability. + - id: policy + canon_anchor: model/governance + expectation: Governs access or lifecycle behavior. + - id: control + canon_anchor: model/security + expectation: Implements or enforces a policy or objective. + - id: evidence + canon_anchor: model/observability + expectation: Supports review, control, access, or integration claims. +expected_edges: + - type: member_of + source: user + target: team + expectation: User or actor belongs to team. + - type: belongs_to_tenant + source: user + target: tenant + expectation: User or account is scoped to a tenant when applicable. + - type: authenticates_as + source: account + target: principal + expectation: Account produces or binds authenticated principal. + - type: evaluated_as + source: principal + target: subject + expectation: Principal is evaluated as policy subject. + - type: assigned_role + source: subject + target: access-role + expectation: Subject receives access role within explicit scope. + - type: scoped_to + source: access-role + target: tenant + expectation: Access role or grant declares resource or tenant scope. + - type: governed_by + source: access-grant + target: policy + expectation: Grant traces to policy or rule. + - type: implemented_by + source: policy + target: control + expectation: Policy is enforced by a control. + - type: evidenced_by + source: access-grant + target: evidence + expectation: Grant, review, or control has evidence. + - type: creates_task + source: evaluation-gap + target: task + expectation: Gap creates work only after triage and commitment. +evidence_required: + - completed Canon Interface Card + - entity and edge mapping export + - access grant trace + - tenant-scoped role or permission example + - access review example + - policy/control/evidence trace + - data object inventory for user-management data + - user lifecycle task or request examples + - explicit integration gaps and requested evolution +validation_expectations: + commands: + - PYTHONPATH=src python3 -m info_tech_canon validate + - PYTHONPATH=src python3 -m info_tech_canon profile validate small-saas + known_gaps_allowed: true + gap_rule: A gap is acceptable only when recorded with purpose fit state, owner, and proposed disposition. diff --git a/infospace/evaluations/user-engine/questions.yaml b/infospace/evaluations/user-engine/questions.yaml new file mode 100644 index 0000000..7536099 --- /dev/null +++ b/infospace/evaluations/user-engine/questions.yaml @@ -0,0 +1,135 @@ +id: evaluation/user-engine/questions +title: User Engine Canon Evaluation Questions +status: candidate +consumer: user-engine +evaluation_pack: evaluation/user-engine +question_domains: + - id: organization + title: Organization + canon_anchors: + - model/organization + - profile/small-saas + questions: + - id: org-001 + question: Which user-engine records map to Person, User, Actor, Agent, Team, Tenant, Role, Membership, Assignment, Responsibility, Authority, and Accountability? + expected_evidence: + - entity mapping table + - examples for human users and service users + - id: org-002 + question: How does user-engine distinguish Actor, Subject, and Principal in authentication and authorization contexts? + expected_evidence: + - concept mapping + - access-decision trace + - id: org-003 + question: How are tenant membership, team membership, ownership, and delegated administration represented? + expected_evidence: + - tenant/team membership export + - owner or administrator assignment records + - id: access-control + title: Access Control + canon_anchors: + - model/access-control + - standard/caring + - profile/small-saas + questions: + - id: ac-001 + question: Which user-engine concepts map to AccessRole, Permission, Entitlement, ResourceScope, RoleBinding, AuthorizationDecision, and AccessPolicy? + expected_evidence: + - entity mapping table + - role and permission examples + - id: ac-002 + question: Can every privileged access grant identify subject or principal, access role, resource scope, tenant boundary, governing policy, and evidence? + expected_evidence: + - grant trace + - tenant-scoped role binding example + - id: ac-003 + question: How are Organization Role, AccessRole, and CARING canonical role kept distinct? + expected_evidence: + - distinction notes + - CARING role classification examples + - id: governance + title: Governance + canon_anchors: + - model/governance + - standard/caring + questions: + - id: gov-001 + question: Which user-engine records carry policy, control, review, approval, exception, waiver, evidence, and decision semantics? + expected_evidence: + - governance mapping table + - review and approval examples + - id: gov-002 + question: What evidence shows that access grants are reviewed, approved, remediated, or expired? + expected_evidence: + - access review records + - remediation or exception records + - id: gov-003 + question: Who has decision rights for accepting, rejecting, or deferring integration gaps? + expected_evidence: + - decision authority statement + - accountable owner + - id: data + title: Data + canon_anchors: + - model/data + - profile/small-saas + questions: + - id: data-001 + question: Which user-engine data objects contain identity, account, tenant, membership, role, permission, credential, or audit data? + expected_evidence: + - data object inventory + - processing purpose notes + - id: data-002 + question: How are tenant partitioning, retention, residency, lineage, and processing purpose represented for user-management data? + expected_evidence: + - data boundary description + - tenant partition example + - id: security + title: Security + canon_anchors: + - model/security + - model/access-control + - profile/small-saas + questions: + - id: sec-001 + question: How does user-engine represent credentials, sessions, privileged access, MFA or equivalent assurance, and secret handling boundaries? + expected_evidence: + - security concept mapping + - privileged access scenario + - id: sec-002 + question: Which incidents, findings, or alerts can be linked to users, principals, tenants, controls, and evidence? + expected_evidence: + - incident linkage example + - finding or alert export + - id: task + title: Task + canon_anchors: + - model/task + - profile/small-saas + questions: + - id: task-001 + question: Which onboarding, access request, review, remediation, deprovisioning, and integration-gap items map to WorkItem, Task, Request, ReviewTask, ApprovalTask, RemediationTask, or ChangeTask? + expected_evidence: + - lifecycle task examples + - task state mapping + - id: task-002 + question: How does user-engine distinguish captured requests from committed implementation or remediation tasks? + expected_evidence: + - task commitment mapping + - backlog or issue examples + - id: purposes + title: PURPOSES + canon_anchors: + - model/purpose-demand-extension + - pattern/intent-scope-purposes + questions: + - id: pur-001 + question: What consumer intent, scope, purposes, use cases, demand signals, and consumer needs does user-engine declare for canon integration? + expected_evidence: + - completed Canon Interface Card + - consumer purpose statement + - id: pur-002 + question: Which purpose fit state applies to user-engine now, and which gaps create scope pressure or evolution requests for InfoTechCanon? + expected_evidence: + - purpose fit review + - requested evolution list diff --git a/infospace/evaluations/user-engine/small-saas-alignment.yaml b/infospace/evaluations/user-engine/small-saas-alignment.yaml new file mode 100644 index 0000000..e52b661 --- /dev/null +++ b/infospace/evaluations/user-engine/small-saas-alignment.yaml @@ -0,0 +1,58 @@ +id: evaluation/user-engine/small-saas-alignment +title: User Engine Small SaaS Alignment Lens +status: candidate +consumer: user-engine +evaluation_pack: evaluation/user-engine +profile: profile/small-saas +alignment_goal: Use small-saas as the concrete tenant-aware SaaS lens for user-management evaluation. +profile_requirements: + - required_concept: tenant + small_saas_artifacts: + - small-saas/tenant/acme + - small-saas/tenant/globex + user_engine_expectation: User-engine can represent tenant boundaries and bind users, accounts, roles, and evidence to them. + - required_concept: user + small_saas_artifacts: + - small-saas/user/ada-admin + user_engine_expectation: User-engine can map users separately from accounts, principals, subjects, and access grants. + - required_concept: team + small_saas_artifacts: + - small-saas/team/platform + user_engine_expectation: User-engine can represent team membership without treating teams as permission bundles. + - required_concept: policy + small_saas_artifacts: + - small-saas/policy/tenant-isolation + user_engine_expectation: User-engine access behavior can trace to governing policy. + - required_concept: control + small_saas_artifacts: + - small-saas/control/namespace-per-tenant + user_engine_expectation: User-engine can show which controls enforce tenant isolation or access boundaries. + - required_concept: evidence + small_saas_artifacts: + - small-saas/evidence/access-review-2026-05 + user_engine_expectation: User-engine can provide or link evidence for access reviews and privileged grants. + - required_concept: task + small_saas_artifacts: + - small-saas/task/onboard-tenant + user_engine_expectation: User-engine can identify onboarding, access request, review, remediation, and deprovisioning work. + - required_concept: incident + small_saas_artifacts: + - small-saas/incident/cross-tenant-access-attempt + user_engine_expectation: User-engine can link access incidents or findings to users, principals, tenants, controls, and evidence. +conformance_questions: + - Can Ada Admin's tenant-admin grant for Acme be represented with user, subject, principal, role, tenant scope, policy, and evidence? + - Can Globex remain isolated from Ada Admin unless an explicit grant, scope, and evidence record exists? + - Can tenant isolation policy connect to control evidence and review records? + - Can onboarding a tenant create trackable work without implying that every request is already committed? + - Can any integration gap become an EvolutionRequest instead of an undocumented scope change? +pass_conditions: + - All required small-saas user-management artifacts have matching user-engine entities or explicit gaps. + - Access grants carry tenant scope, role, governing policy, and evidence. + - User, team, tenant, organization role, access role, subject, and principal are not collapsed into one concept. + - Evidence gaps are explicit and produce review or remediation work. + - PURPOSES fields identify current purpose fit and requested evolution. +failure_conditions: + - User-engine cannot distinguish organization roles from access roles. + - User-engine cannot trace privileged access to tenant scope and evidence. + - User-engine treats consumer demand as automatic producer scope. + - User-engine cannot produce a mapping export or completed interface card. diff --git a/infospace/indexes/artifact-tree.yaml b/infospace/indexes/artifact-tree.yaml index 58b396d..2f5f76e 100644 --- a/infospace/indexes/artifact-tree.yaml +++ b/infospace/indexes/artifact-tree.yaml @@ -1,5 +1,5 @@ root: infospace -file_count: 101 +file_count: 111 files: - path: README.md directory: . @@ -10,6 +10,21 @@ files: - path: agent/briefs/concept-catalog-purpose-demand.md directory: agent/briefs name: concept-catalog-purpose-demand.md +- path: agent/briefs/evaluation-user-engine-consumer-workplan-brief.md + directory: agent/briefs + name: evaluation-user-engine-consumer-workplan-brief.md +- path: agent/briefs/evaluation-user-engine-interface-card-expectations.md + directory: agent/briefs + name: evaluation-user-engine-interface-card-expectations.md +- path: agent/briefs/evaluation-user-engine-questions.md + directory: agent/briefs + name: evaluation-user-engine-questions.md +- path: agent/briefs/evaluation-user-engine-small-saas-alignment.md + directory: agent/briefs + name: evaluation-user-engine-small-saas-alignment.md +- path: agent/briefs/evaluation-user-engine.md + directory: agent/briefs + name: evaluation-user-engine.md - path: agent/briefs/example-consumer-purpose-portfolio.md directory: agent/briefs name: example-consumer-purpose-portfolio.md @@ -106,6 +121,21 @@ files: - path: concepts/purpose-demand.yaml directory: concepts name: purpose-demand.yaml +- path: evaluations/user-engine/consumer-workplan-brief.md + directory: evaluations/user-engine + name: consumer-workplan-brief.md +- path: evaluations/user-engine/evaluation-pack.yaml + directory: evaluations/user-engine + name: evaluation-pack.yaml +- path: evaluations/user-engine/interface-card-expectations.yaml + directory: evaluations/user-engine + name: interface-card-expectations.yaml +- path: evaluations/user-engine/questions.yaml + directory: evaluations/user-engine + name: questions.yaml +- path: evaluations/user-engine/small-saas-alignment.yaml + directory: evaluations/user-engine + name: small-saas-alignment.yaml - path: examples/README.md directory: examples name: README.md diff --git a/infospace/indexes/concept-ownership.yaml b/infospace/indexes/concept-ownership.yaml index 30ba4bd..cb39d07 100644 --- a/infospace/indexes/concept-ownership.yaml +++ b/infospace/indexes/concept-ownership.yaml @@ -1,9 +1,29 @@ -concept_count: 59 +concept_count: 64 concepts: - concept: Purpose And Consumer Demand Concept Catalog owner: concept-catalog/purpose-demand path: concepts/purpose-demand.yaml source: artifact_title +- concept: User Engine Canon Evaluation Pack + owner: evaluation/user-engine + path: evaluations/user-engine/evaluation-pack.yaml + source: artifact_title +- concept: User Engine Consumer Workplan Brief + owner: evaluation/user-engine/consumer-workplan-brief + path: evaluations/user-engine/consumer-workplan-brief.md + source: artifact_title +- concept: User Engine Canon Interface Card Expectations + owner: evaluation/user-engine/interface-card-expectations + path: evaluations/user-engine/interface-card-expectations.yaml + source: artifact_title +- concept: User Engine Canon Evaluation Questions + owner: evaluation/user-engine/questions + path: evaluations/user-engine/questions.yaml + source: artifact_title +- concept: User Engine Small SaaS Alignment Lens + owner: evaluation/user-engine/small-saas-alignment + path: evaluations/user-engine/small-saas-alignment.yaml + source: artifact_title - concept: Canon-Side Consumer Purpose Portfolio owner: example/consumer-purpose-portfolio path: examples/consumer-purpose-portfolio.yaml diff --git a/infospace/indexes/import-matrix.yaml b/infospace/indexes/import-matrix.yaml index c582579..e083c28 100644 --- a/infospace/indexes/import-matrix.yaml +++ b/infospace/indexes/import-matrix.yaml @@ -1,5 +1,10 @@ artifacts: - concept-catalog/purpose-demand +- 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 @@ -40,6 +45,70 @@ rows: - conforms_to model/governance: - uses +- artifact: evaluation/user-engine + targets: + model/access-control: + - uses + model/data: + - uses + model/governance: + - uses + model/organization: + - uses + model/purpose-demand-extension: + - uses + model/security: + - uses + model/task: + - uses + profile/small-saas: + - evaluates + standard/caring: + - uses +- artifact: evaluation/user-engine/consumer-workplan-brief + targets: + evaluation/user-engine: + - part_of + model/purpose-demand-extension: + - uses +- artifact: evaluation/user-engine/interface-card-expectations + targets: + evaluation/user-engine: + - part_of + model/purpose-demand-extension: + - uses + standard/caring: + - uses +- artifact: evaluation/user-engine/questions + targets: + evaluation/user-engine: + - part_of + model/access-control: + - uses + model/data: + - uses + model/governance: + - uses + model/organization: + - uses + model/purpose-demand-extension: + - uses + model/security: + - uses + model/task: + - uses +- artifact: evaluation/user-engine/small-saas-alignment + targets: + evaluation/user-engine: + - part_of + model/access-control: + - uses + model/governance: + - uses + model/organization: + - uses + profile/small-saas: + - evaluates - artifact: example/consumer-purpose-portfolio targets: model/purpose-demand-extension: diff --git a/infospace/validation/latest.json b/infospace/validation/latest.json index 512389f..3114f21 100644 --- a/infospace/validation/latest.json +++ b/infospace/validation/latest.json @@ -1,14 +1,14 @@ { "details": { - "artifact_count": 34, - "relationship_count": 129 + "artifact_count": 39, + "relationship_count": 156 }, "errors": [], "metrics": { "coherence_components": 1.0, "consistency_cycles": 0.0, "coverage_ratio": 1.0, - "granularity_entropy": 2.4357138959313844, + "granularity_entropy": 2.9736210870457236, "redundancy_ratio": 0.0 }, "ok": true, diff --git a/infospace/views/by-concept.md b/infospace/views/by-concept.md index bf922e9..182fcf8 100644 --- a/infospace/views/by-concept.md +++ b/infospace/views/by-concept.md @@ -2,11 +2,16 @@ # By Concept -Concept count: **59** +Concept count: **64** | Concept | Owner | Source | | --- | --- | --- | | Purpose And Consumer Demand Concept Catalog | `concept-catalog/purpose-demand` | `artifact_title` | +| User Engine Canon Evaluation Pack | `evaluation/user-engine` | `artifact_title` | +| User Engine Consumer Workplan Brief | `evaluation/user-engine/consumer-workplan-brief` | `artifact_title` | +| User Engine Canon Interface Card Expectations | `evaluation/user-engine/interface-card-expectations` | `artifact_title` | +| User Engine Canon Evaluation Questions | `evaluation/user-engine/questions` | `artifact_title` | +| User Engine Small SaaS Alignment Lens | `evaluation/user-engine/small-saas-alignment` | `artifact_title` | | 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` | diff --git a/infospace/views/by-mapping-target.md b/infospace/views/by-mapping-target.md index ff0b0f2..b4ff4f9 100644 --- a/infospace/views/by-mapping-target.md +++ b/infospace/views/by-mapping-target.md @@ -6,6 +6,13 @@ - `model/purpose-demand-extension` via `introduces` +## `evaluation/user-engine` + +- `evaluation/user-engine/consumer-workplan-brief` via `part_of` +- `evaluation/user-engine/interface-card-expectations` via `part_of` +- `evaluation/user-engine/questions` via `part_of` +- `evaluation/user-engine/small-saas-alignment` via `part_of` + ## `kernel/itc-core` - `concept-catalog/purpose-demand` via `conforms_to` @@ -28,6 +35,9 @@ ## `model/access-control` +- `evaluation/user-engine` via `uses` +- `evaluation/user-engine/questions` via `uses` +- `evaluation/user-engine/small-saas-alignment` via `uses` - `kernel/itc-kernel-map` via `maps` - `model/security` via `uses` - `profile/small-saas` via `requires` @@ -36,6 +46,8 @@ ## `model/data` +- `evaluation/user-engine` via `uses` +- `evaluation/user-engine/questions` via `uses` - `kernel/itc-kernel-map` via `maps` - `profile/small-saas` via `requires` - `small-saas/dataset/subscription-ledger` via `uses` @@ -51,6 +63,9 @@ ## `model/governance` - `concept-catalog/purpose-demand` via `uses` +- `evaluation/user-engine` via `uses` +- `evaluation/user-engine/questions` via `uses` +- `evaluation/user-engine/small-saas-alignment` via `uses` - `kernel/itc-kernel-map` via `maps` - `mapping/purpose-demand-governance-candidates` via `maps` - `model/access-control` via `uses` @@ -89,6 +104,9 @@ ## `model/organization` +- `evaluation/user-engine` via `uses` +- `evaluation/user-engine/questions` via `uses` +- `evaluation/user-engine/small-saas-alignment` via `uses` - `kernel/itc-kernel-map` via `maps` - `model/access-control` via `uses` - `profile/small-saas` via `requires` @@ -100,12 +118,18 @@ ## `model/purpose-demand-extension` +- `evaluation/user-engine` via `uses` +- `evaluation/user-engine/consumer-workplan-brief` via `uses` +- `evaluation/user-engine/interface-card-expectations` via `uses` +- `evaluation/user-engine/questions` via `uses` - `example/consumer-purpose-portfolio` via `illustrates` - `mapping/purpose-demand-governance-candidates` via `maps` - `pattern/intent-scope-purposes` via `implements` ## `model/security` +- `evaluation/user-engine` via `uses` +- `evaluation/user-engine/questions` via `uses` - `kernel/itc-kernel-map` via `maps` - `model/devsecops` via `uses` - `model/network` via `uses` @@ -116,6 +140,8 @@ ## `model/task` +- `evaluation/user-engine` via `uses` +- `evaluation/user-engine/questions` via `uses` - `kernel/itc-kernel-map` via `maps` - `mapping/purpose-demand-governance-candidates` via `uses` - `model/observability` via `uses` @@ -132,6 +158,8 @@ ## `profile/small-saas` +- `evaluation/user-engine` via `evaluates` +- `evaluation/user-engine/small-saas-alignment` via `evaluates` - `example/consumer-purpose-portfolio` via `uses` - `small-saas/control/namespace-per-tenant` via `instantiates` - `small-saas/dataset/subscription-ledger` via `instantiates` @@ -202,6 +230,8 @@ ## `standard/caring` +- `evaluation/user-engine` via `uses` +- `evaluation/user-engine/interface-card-expectations` via `uses` - `kernel/itc-kernel-map` via `maps` - `profile/small-saas` via `requires` - `small-saas/control/namespace-per-tenant` via `uses` diff --git a/infospace/views/import-matrix.md b/infospace/views/import-matrix.md index ac0e4ae..85c66e9 100644 --- a/infospace/views/import-matrix.md +++ b/infospace/views/import-matrix.md @@ -2,39 +2,44 @@ # Import Matrix -| Artifact | `concept-catalog/purpose-demand` | `example/consumer-purpose-portfolio` | `kernel/itc-core` | `kernel/itc-kernel-map` | `mapping/purpose-demand-governance-candidates` | `model/access-control` | `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` | `profile/small-saas` | `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/tagging` | -| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| `concept-catalog/purpose-demand` | | | `conforms_to` | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | -| `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/data` | | | `conforms_to` | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | -| `model/devsecops` | | | `conforms_to` | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | -| `model/governance` | | | `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` | | | | | | | | | | | | | | | | | | -| `profile/small-saas` | | | `conforms_to` | | | `requires` | `requires` | `requires` | `requires` | | `requires` | `requires` | `requires` | `requires` | | `requires` | `requires` | | | | | | | | | | | | | | | | `requires` | `requires` | -| `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/tagging` | | | `conforms_to` | | | | | | | | | | | | | | `imports` | | | | | | | | | | | | | | | | | | +| Artifact | `concept-catalog/purpose-demand` | `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/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` | `profile/small-saas` | `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/tagging` | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| `concept-catalog/purpose-demand` | | | | | | | | `conforms_to` | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | +| `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/data` | | | | | | | | `conforms_to` | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | +| `model/devsecops` | | | | | | | | `conforms_to` | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | +| `model/governance` | | | | | | | | `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` | | | | | | | | | | | | | | | | | | +| `profile/small-saas` | | | | | | | | `conforms_to` | | | `requires` | `requires` | `requires` | `requires` | | `requires` | `requires` | `requires` | `requires` | | `requires` | `requires` | | | | | | | | | | | | | | | | `requires` | `requires` | +| `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/tagging` | | | | | | | | `conforms_to` | | | | | | | | | | | | | | `imports` | | | | | | | | | | | | | | | | | | diff --git a/infospace/views/kernel-overview.md b/infospace/views/kernel-overview.md index 09f7502..2cc5784 100644 --- a/infospace/views/kernel-overview.md +++ b/infospace/views/kernel-overview.md @@ -3,18 +3,23 @@ # Kernel Overview - Infospace: `canon` -- Artifacts: 34 +- Artifacts: 39 ## Artifact Kinds - `concept-catalog`: 1 +- `consumer-workplan-brief`: 1 +- `evaluation-pack`: 1 +- `evaluation-question-set`: 1 - `example`: 1 +- `interface-card-expectation`: 1 - `kernel`: 2 - `mapping`: 1 - `model`: 11 - `model-extension`: 1 - `pattern`: 1 - `profile`: 1 +- `profile-alignment`: 1 - `profile-artifact`: 13 - `standard`: 2 @@ -25,6 +30,7 @@ - `conforms_to`: 16 - `constrained_by`: 1 - `deploys`: 1 +- `evaluates`: 2 - `evidenced_by`: 3 - `extends`: 1 - `governed_by`: 2 @@ -38,10 +44,10 @@ - `maps`: 16 - `member_of`: 1 - `owned_by`: 3 -- `part_of`: 1 +- `part_of`: 5 - `partitioned_for`: 2 - `represented_by`: 1 - `requires`: 13 - `separates`: 2 - `serves`: 2 -- `uses`: 30 +- `uses`: 51 diff --git a/infospace/views/repository-tree.md b/infospace/views/repository-tree.md index cf713ce..2b8774f 100644 --- a/infospace/views/repository-tree.md +++ b/infospace/views/repository-tree.md @@ -2,11 +2,16 @@ # Repository Tree -File count: **101** +File count: **111** - `README.md` - `agent/README.md` - `agent/briefs/concept-catalog-purpose-demand.md` +- `agent/briefs/evaluation-user-engine-consumer-workplan-brief.md` +- `agent/briefs/evaluation-user-engine-interface-card-expectations.md` +- `agent/briefs/evaluation-user-engine-questions.md` +- `agent/briefs/evaluation-user-engine-small-saas-alignment.md` +- `agent/briefs/evaluation-user-engine.md` - `agent/briefs/example-consumer-purpose-portfolio.md` - `agent/briefs/kernel-itc-core.md` - `agent/briefs/kernel-itc-kernel-map.md` @@ -39,6 +44,11 @@ File count: **101** - `artifacts/index.yaml` - `assimilation/README.md` - `concepts/purpose-demand.yaml` +- `evaluations/user-engine/consumer-workplan-brief.md` +- `evaluations/user-engine/evaluation-pack.yaml` +- `evaluations/user-engine/interface-card-expectations.yaml` +- `evaluations/user-engine/questions.yaml` +- `evaluations/user-engine/small-saas-alignment.yaml` - `examples/README.md` - `examples/consumer-purpose-portfolio.yaml` - `examples/small-saas/README.md` diff --git a/src/info_tech_canon/generation.py b/src/info_tech_canon/generation.py index 37c805e..e648eee 100644 --- a/src/info_tech_canon/generation.py +++ b/src/info_tech_canon/generation.py @@ -11,12 +11,17 @@ import yaml GENERATED_NOTICE = "" RETRIEVAL_ARTIFACT_KINDS = { "concept-catalog", + "consumer-workplan-brief", + "evaluation-pack", + "evaluation-question-set", "example", + "interface-card-expectation", "kernel", "mapping", "model", "model-extension", "pattern", + "profile-alignment", "profile", "standard", } @@ -756,6 +761,7 @@ def _render_consumer_brief(consumer_id: str) -> str: "- `agent/templates/canon-interface-card.template.yaml`", "- `models/governance/InfoTechCanonPurposeDemandExtension.md`", "- `patterns/intent-scope-purposes.md`", + "- `evaluations/user-engine/evaluation-pack.yaml`", "- `examples/consumer-purpose-portfolio.yaml`", "- `profiles/small-saas/profile.yaml`", "- `views/by-concept.md`", @@ -826,14 +832,24 @@ def _summary_for_artifact(artifact: Any) -> str: return f"Example artifact for the {artifact.provenance.get('profile', 'unknown')} profile: {artifact.title}." if artifact.kind == "concept-catalog": return f"Structured candidate concept catalog: {artifact.title}." + if artifact.kind == "consumer-workplan-brief": + return f"Consumer repo workplan seed brief: {artifact.title}." + if artifact.kind == "evaluation-pack": + return f"Machine-readable canon-side evaluation pack: {artifact.title}." + if artifact.kind == "evaluation-question-set": + return f"Structured canon evaluation question set: {artifact.title}." if artifact.kind == "example": return f"Canon-side example artifact: {artifact.title}." + if artifact.kind == "interface-card-expectation": + return f"Expected Canon Interface Card fields and mappings: {artifact.title}." if artifact.kind == "mapping": return f"Mapping artifact connecting canon surfaces: {artifact.title}." if artifact.kind == "model-extension": return f"Candidate extension to an existing canon model: {artifact.title}." if artifact.kind == "pattern": return f"Reusable canon pattern: {artifact.title}." + if artifact.kind == "profile-alignment": + return f"Profile-specific evaluation alignment artifact: {artifact.title}." if artifact.kind == "profile": return f"Profile that constrains canon artifacts for a practical implementation slice: {artifact.title}." if artifact.kind == "kernel": diff --git a/src/info_tech_canon/validation.py b/src/info_tech_canon/validation.py index a1980f1..a9a9c55 100644 --- a/src/info_tech_canon/validation.py +++ b/src/info_tech_canon/validation.py @@ -54,12 +54,17 @@ REQUIRED_SCHEMAS = ( RETRIEVAL_BRIEF_KINDS = { "concept-catalog", + "consumer-workplan-brief", + "evaluation-pack", + "evaluation-question-set", "example", + "interface-card-expectation", "kernel", "mapping", "model", "model-extension", "pattern", + "profile-alignment", "profile", "standard", } @@ -90,6 +95,50 @@ PURPOSE_REQUIRED_CONSUMERS = { "repo-scoping", } +USER_ENGINE_EVALUATION_ARTIFACT_IDS = { + "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", +} + +USER_ENGINE_QUESTION_DOMAINS = { + "access-control", + "data", + "governance", + "organization", + "purposes", + "security", + "task", +} + +USER_ENGINE_REQUIRED_ENTITY_IDS = { + "access-role", + "account", + "control", + "evidence", + "organization-role", + "policy", + "principal", + "subject", + "team", + "tenant", + "user", +} + +USER_ENGINE_REQUIRED_EDGE_TYPES = { + "assigned_role", + "authenticates_as", + "belongs_to_tenant", + "evidenced_by", + "evaluated_as", + "governed_by", + "implemented_by", + "member_of", + "scoped_to", +} + def structural_checks(context: Any) -> dict[str, list[dict[str, Any]]]: errors: list[dict[str, Any]] = [] @@ -102,6 +151,11 @@ def structural_checks(context: Any) -> dict[str, list[dict[str, Any]]]: _check_artifact_index(context.repo_root, context.infospace_root, errors) _check_agent_assets(context.infospace_root, context.infospace.artifacts, errors) _check_purpose_demand_assets(context.infospace_root, context.infospace.artifacts, errors) + _check_user_engine_evaluation_assets( + context.infospace_root, + context.infospace.artifacts, + errors, + ) _check_optional_assets(context.infospace_root, warnings) return {"errors": errors, "warnings": warnings} @@ -522,6 +576,149 @@ def _check_purpose_demand_assets( ) +def _check_user_engine_evaluation_assets( + infospace_root: Path, + artifacts: list[Any], + errors: list[dict[str, Any]], +) -> None: + artifact_ids = {artifact.id for artifact in artifacts} + for artifact_id in sorted(USER_ENGINE_EVALUATION_ARTIFACT_IDS - artifact_ids): + errors.append( + { + "code": "missing_user_engine_evaluation_artifact", + "artifact_id": artifact_id, + } + ) + + pack = _read_yaml( + infospace_root / "evaluations" / "user-engine" / "evaluation-pack.yaml", + errors, + ) + if isinstance(pack, dict): + components = pack.get("pack_components") or {} + if not isinstance(components, dict): + errors.append( + { + "code": "invalid_user_engine_pack_components", + "path": "infospace/evaluations/user-engine/evaluation-pack.yaml", + } + ) + else: + for component in ( + "questions", + "interface_card_expectations", + "small_saas_alignment", + "consumer_workplan_brief", + ): + if not components.get(component): + errors.append( + { + "code": "missing_user_engine_pack_component", + "component": component, + } + ) + + questions = _read_yaml( + infospace_root / "evaluations" / "user-engine" / "questions.yaml", + errors, + ) + if isinstance(questions, dict): + domains = questions.get("question_domains") or [] + domain_ids = { + str(domain.get("id")) + for domain in domains + if isinstance(domain, dict) and domain.get("id") + } + for domain_id in sorted(USER_ENGINE_QUESTION_DOMAINS - domain_ids): + errors.append( + { + "code": "missing_user_engine_question_domain", + "domain": domain_id, + } + ) + for domain in domains: + if isinstance(domain, dict) and not domain.get("questions"): + errors.append( + { + "code": "empty_user_engine_question_domain", + "domain": domain.get("id"), + } + ) + + expectations = _read_yaml( + infospace_root + / "evaluations" + / "user-engine" + / "interface-card-expectations.yaml", + errors, + ) + if isinstance(expectations, dict): + entity_ids = { + str(entity.get("id")) + for entity in expectations.get("expected_entities") or [] + if isinstance(entity, dict) and entity.get("id") + } + for entity_id in sorted(USER_ENGINE_REQUIRED_ENTITY_IDS - entity_ids): + errors.append( + { + "code": "missing_user_engine_expected_entity", + "entity": entity_id, + } + ) + edge_types = { + str(edge.get("type")) + for edge in expectations.get("expected_edges") or [] + if isinstance(edge, dict) and edge.get("type") + } + for edge_type in sorted(USER_ENGINE_REQUIRED_EDGE_TYPES - edge_types): + errors.append( + { + "code": "missing_user_engine_expected_edge", + "edge": edge_type, + } + ) + evidence = expectations.get("evidence_required") or [] + if not isinstance(evidence, list) or not evidence: + errors.append( + { + "code": "missing_user_engine_evidence_expectations", + "path": "infospace/evaluations/user-engine/interface-card-expectations.yaml", + } + ) + + alignment = _read_yaml( + infospace_root + / "evaluations" + / "user-engine" + / "small-saas-alignment.yaml", + errors, + ) + if isinstance(alignment, dict): + if alignment.get("profile") != "profile/small-saas": + errors.append( + { + "code": "invalid_user_engine_alignment_profile", + "value": alignment.get("profile"), + } + ) + if not alignment.get("profile_requirements"): + errors.append( + { + "code": "missing_user_engine_profile_requirements", + "path": "infospace/evaluations/user-engine/small-saas-alignment.yaml", + } + ) + + brief_path = infospace_root / "evaluations" / "user-engine" / "consumer-workplan-brief.md" + if not brief_path.is_file(): + errors.append( + { + "code": "missing_user_engine_consumer_workplan_brief", + "path": "infospace/evaluations/user-engine/consumer-workplan-brief.md", + } + ) + + def _artifact_paths_by_path( infospace_root: Path, errors: list[dict[str, Any]], diff --git a/tests/test_cli.py b/tests/test_cli.py index ccd8ba4..b668e4a 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -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"] == 34 + assert payload["infospace"]["artifact_count"] == 39 def test_cli_missing_profile_uses_structured_error(capsys) -> None: diff --git a/tests/test_service.py b/tests/test_service.py index 6d303bd..6f39d95 100644 --- a/tests/test_service.py +++ b/tests/test_service.py @@ -19,15 +19,20 @@ def test_inspect_canon_counts_artifact_kinds() -> None: assert payload["ok"] is True assert payload["infospace"]["slug"] == "canon" - assert payload["infospace"]["artifact_count"] == 34 + assert payload["infospace"]["artifact_count"] == 39 assert payload["infospace"]["kinds"] == { "concept-catalog": 1, + "consumer-workplan-brief": 1, + "evaluation-pack": 1, + "evaluation-question-set": 1, "example": 1, + "interface-card-expectation": 1, "kernel": 2, "mapping": 1, "model": 11, "model-extension": 1, "pattern": 1, + "profile-alignment": 1, "profile": 1, "profile-artifact": 13, "standard": 2, @@ -45,14 +50,14 @@ def test_validate_canon_passes_scaffold() -> None: assert payload["ok"] is True assert payload["errors"] == [] assert "warnings" in payload - assert payload["details"]["artifact_count"] == 34 + assert payload["details"]["artifact_count"] == 39 def test_graph_exports_relationship_summary() -> None: payload = artifact_graph() assert payload["ok"] is True - assert payload["graph"]["node_count"] == 34 + assert payload["graph"]["node_count"] == 39 assert payload["graph"]["edge_count"] > 15 @@ -95,6 +100,7 @@ def test_generators_write_expected_assets(tmp_path) -> None: assert ( root / "agent" / "briefs" / "model-purpose-demand-extension.md" ).is_file() + assert (root / "agent" / "briefs" / "evaluation-user-engine.md").is_file() assert (root / "agent" / "briefs" / "pattern-intent-scope-purposes.md").is_file() assert ( root / "agent" / "templates" / "canon-interface-card.template.yaml" diff --git a/workplans/ITC-WP-0007-user-engine-evaluation-readiness.md b/workplans/ITC-WP-0007-user-engine-evaluation-readiness.md index e457f12..1e538fe 100644 --- a/workplans/ITC-WP-0007-user-engine-evaluation-readiness.md +++ b/workplans/ITC-WP-0007-user-engine-evaluation-readiness.md @@ -4,7 +4,7 @@ type: workplan title: "User Engine Evaluation Readiness" domain: canon repo: info-tech-canon -status: proposed +status: finished priority: high created: "2026-05-23" updated: "2026-05-23" @@ -35,7 +35,7 @@ governance expectations, and integration boundaries. ```task id: ITC-WP-0007-T01 -status: todo +status: done priority: high state_hub_task_id: "17d5792f-7452-4179-b346-f8c976fbe2eb" ``` @@ -48,7 +48,7 @@ state_hub_task_id: "17d5792f-7452-4179-b346-f8c976fbe2eb" ```task id: ITC-WP-0007-T02 -status: todo +status: done priority: high state_hub_task_id: "d44c6608-14d8-44cc-80a8-9959296da286" ``` @@ -61,7 +61,7 @@ state_hub_task_id: "d44c6608-14d8-44cc-80a8-9959296da286" ```task id: ITC-WP-0007-T03 -status: todo +status: done priority: medium state_hub_task_id: "fa1e3da2-1990-4945-8d53-140ad4bedcbf" ``` @@ -73,7 +73,7 @@ state_hub_task_id: "fa1e3da2-1990-4945-8d53-140ad4bedcbf" ```task id: ITC-WP-0007-T04 -status: todo +status: done priority: medium state_hub_task_id: "ffcd728f-b5eb-4449-945b-1a3f8a9640de" ``` @@ -91,3 +91,15 @@ state_hub_task_id: "ffcd728f-b5eb-4449-945b-1a3f8a9640de" - InfoTechCanon can evaluate user-engine before integration work begins. - The evaluation pack is machine-readable enough for CLI/API use. - A consumer workplan brief exists for user-engine. + +## Implementation Notes + +- Added a machine-readable user-engine evaluation pack under + `infospace/evaluations/user-engine/`. +- Added domain question coverage for Organization, Access Control, Governance, + Data, Security, Task, and PURPOSES. +- Added Canon Interface Card expectations, required entity and edge mappings, + evidence expectations, and small-saas alignment checks. +- Added a consumer workplan brief for the user-engine repo. +- Extended validation and retrieval generation so user-engine evaluation assets + are indexed, briefed, and checked. diff --git a/workplans/index.yaml b/workplans/index.yaml index a1ab7d5..3bf5840 100644 --- a/workplans/index.yaml +++ b/workplans/index.yaml @@ -95,7 +95,7 @@ workplans: - id: ITC-WP-0007 title: User Engine Evaluation Readiness - status: proposed + status: finished priority: high path: workplans/ITC-WP-0007-user-engine-evaluation-readiness.md depends_on: