Add purpose and demand model extension

This commit is contained in:
2026-05-23 04:59:16 +02:00
parent cf8ff12608
commit 82424cc6f4
39 changed files with 1597 additions and 86 deletions

View File

@@ -74,3 +74,11 @@ Agent-facing retrieval assets live under `infospace/agent/`:
- per-artifact briefs in `agent/briefs/`
- consumer brief templates in `agent/consumer-briefs/`
- Canon Interface Card template in `agent/templates/`
## Purpose And Demand
The PURPOSES candidate model is registered as a governance extension at
`infospace/models/governance/InfoTechCanonPurposeDemandExtension.md`. It defines
consumer purposes, demand signals, purpose fit, scope pressure, and evolution
requests so consumer demand can inform repo governance without silently changing
producer scope.

View File

@@ -0,0 +1,31 @@
---
id: agent-brief/concept-catalog-purpose-demand
artifact_id: concept-catalog/purpose-demand
source_path: concepts/purpose-demand.yaml
source_kind: concept-catalog
generated: true
---
<!-- GENERATED by info_tech_canon; do not edit by hand. -->
# Agent Brief: Purpose And Consumer Demand Concept Catalog
- Artifact ID: `concept-catalog/purpose-demand`
- Kind: `concept-catalog`
- Canonical path: `concepts/purpose-demand.yaml`
- Full source: `concepts/purpose-demand.yaml`
- Summary: Structured candidate concept catalog: Purpose And Consumer Demand Concept Catalog.
## Retrieval Hints
Imports and anchors:
- `kernel/itc-core`
- `model/governance`
## Owned Concepts
- `Purpose And Consumer Demand Concept Catalog`
## Related Distinctions
No common distinction is anchored directly on this artifact.

View File

@@ -0,0 +1,30 @@
---
id: agent-brief/example-consumer-purpose-portfolio
artifact_id: example/consumer-purpose-portfolio
source_path: examples/consumer-purpose-portfolio.yaml
source_kind: example
generated: true
---
<!-- GENERATED by info_tech_canon; do not edit by hand. -->
# Agent Brief: Canon-Side Consumer Purpose Portfolio
- Artifact ID: `example/consumer-purpose-portfolio`
- Kind: `example`
- Canonical path: `examples/consumer-purpose-portfolio.yaml`
- Full source: `examples/consumer-purpose-portfolio.yaml`
- Summary: Canon-side example artifact: Canon-Side Consumer Purpose Portfolio.
## Retrieval Hints
Imports and anchors:
- `profile/small-saas`
## Owned Concepts
- `Canon-Side Consumer Purpose Portfolio`
## Related Distinctions
No common distinction is anchored directly on this artifact.

View File

@@ -26,4 +26,4 @@ No imports or anchors recorded.
## Related Distinctions
- **Intent vs Scope vs Purpose**: Intent captures why an actor wants something, scope bounds what is included, and purpose captures consumer demand or use case pressure on the repo.
- **Intent vs Scope vs Purpose**: Intent captures why a producer or consumer exists, scope bounds producer ownership and promises, and purpose captures consumer demand anchored in consumer intent.

View File

@@ -0,0 +1,30 @@
---
id: agent-brief/mapping-purpose-demand-governance-candidates
artifact_id: mapping/purpose-demand-governance-candidates
source_path: mappings/purpose-demand-governance-candidates.yaml
source_kind: mapping
generated: true
---
<!-- GENERATED by info_tech_canon; do not edit by hand. -->
# Agent Brief: Purpose Demand Governance Extension Candidates
- Artifact ID: `mapping/purpose-demand-governance-candidates`
- Kind: `mapping`
- Canonical path: `mappings/purpose-demand-governance-candidates.yaml`
- Full source: `mappings/purpose-demand-governance-candidates.yaml`
- Summary: Mapping artifact connecting canon surfaces: Purpose Demand Governance Extension Candidates.
## Retrieval Hints
Imports and anchors:
- `model/task`
## Owned Concepts
- `Purpose Demand Governance Extension Candidates`
## Related Distinctions
No common distinction is anchored directly on this artifact.

View File

@@ -28,4 +28,3 @@ Imports and anchors:
## Related Distinctions
- **Policy vs Control vs Evidence**: Policy states intent or rule, control implements or enforces that rule, and evidence records why the claim should be trusted.
- **Intent vs Scope vs Purpose**: Intent captures why an actor wants something, scope bounds what is included, and purpose captures consumer demand or use case pressure on the repo.

View File

@@ -0,0 +1,41 @@
---
id: agent-brief/model-purpose-demand-extension
artifact_id: model/purpose-demand-extension
source_path: models/governance/InfoTechCanonPurposeDemandExtension.md
source_kind: model-extension
generated: true
---
<!-- GENERATED by info_tech_canon; do not edit by hand. -->
# Agent Brief: InfoTechCanon Purpose And Demand Model Extension
- Artifact ID: `model/purpose-demand-extension`
- Kind: `model-extension`
- Canonical path: `models/governance/InfoTechCanonPurposeDemandExtension.md`
- Full source: `models/governance/InfoTechCanonPurposeDemandExtension.md`
- Summary: Candidate extension to an existing canon model: InfoTechCanon Purpose And Demand Model Extension.
## Retrieval Hints
Imports and anchors:
- `kernel/itc-core`
- `model/information-space`
- `model/task`
## Owned Concepts
- `ConsumerNeed`
- `ConsumerPurpose`
- `DemandSignal`
- `EvolutionRequest`
- `InfoTechCanon Purpose And Demand Model Extension`
- `ProducerCapability`
- `Purpose`
- `PurposeFit`
- `ScopePressure`
- `UseCase`
## Related Distinctions
- **Intent vs Scope vs Purpose**: Intent captures why a producer or consumer exists, scope bounds producer ownership and promises, and purpose captures consumer demand anchored in consumer intent.

View File

@@ -0,0 +1,32 @@
---
id: agent-brief/pattern-intent-scope-purposes
artifact_id: pattern/intent-scope-purposes
source_path: patterns/intent-scope-purposes.md
source_kind: pattern
generated: true
---
<!-- GENERATED by info_tech_canon; do not edit by hand. -->
# Agent Brief: Intent Scope Purposes Pattern
- Artifact ID: `pattern/intent-scope-purposes`
- Kind: `pattern`
- Canonical path: `patterns/intent-scope-purposes.md`
- Full source: `patterns/intent-scope-purposes.md`
- Summary: Reusable canon pattern: Intent Scope Purposes Pattern.
## Retrieval Hints
Imports and anchors:
- `model/governance`
- `model/task`
## Owned Concepts
- `Intent Scope Purposes Pattern`
- `IntentScopePurposePattern`
## Related Distinctions
- **Intent vs Scope vs Purpose**: Intent captures why a producer or consumer exists, scope bounds producer ownership and promises, and purpose captures consumer demand anchored in consumer intent.

View File

@@ -39,4 +39,4 @@ Imports and anchors:
## Related Distinctions
- **Intent vs Scope vs Purpose**: Intent captures why an actor wants something, scope bounds what is included, and purpose captures consumer demand or use case pressure on the repo.
- **Intent vs Scope vs Purpose**: Intent captures why a producer or consumer exists, scope bounds producer ownership and promises, and purpose captures consumer demand anchored in consumer intent.

View File

@@ -16,6 +16,9 @@ Use the canon to make captured entities and edges cleaner for conformance and vi
- `agent/retrieval-index.md`
- `agent/templates/canon-interface-card.template.yaml`
- `models/governance/InfoTechCanonPurposeDemandExtension.md`
- `patterns/intent-scope-purposes.md`
- `examples/consumer-purpose-portfolio.yaml`
- `profiles/small-saas/profile.yaml`
- `views/by-concept.md`

View File

@@ -16,6 +16,9 @@ Compare repo-scoping concepts with canon INTENT, SCOPE, PURPOSES, and interface-
- `agent/retrieval-index.md`
- `agent/templates/canon-interface-card.template.yaml`
- `models/governance/InfoTechCanonPurposeDemandExtension.md`
- `patterns/intent-scope-purposes.md`
- `examples/consumer-purpose-portfolio.yaml`
- `profiles/small-saas/profile.yaml`
- `views/by-concept.md`

View File

@@ -16,6 +16,9 @@ Evaluate user-management concepts, roles, access traces, profile claims, and gov
- `agent/retrieval-index.md`
- `agent/templates/canon-interface-card.template.yaml`
- `models/governance/InfoTechCanonPurposeDemandExtension.md`
- `patterns/intent-scope-purposes.md`
- `examples/consumer-purpose-portfolio.yaml`
- `profiles/small-saas/profile.yaml`
- `views/by-concept.md`

View File

@@ -5,8 +5,8 @@
This brief summarizes the current canon service surface for agents.
- Infospace slug: `canon`
- Artifact count: 29
- Retrieval index items: 29
- Artifact count: 34
- Retrieval index items: 34
- Primary confidence command: `make validate`
- Refresh generated indexes and views with: `make index`
- Refresh agent briefs and interface templates with: `make agent-briefs`
@@ -32,7 +32,7 @@ This brief summarizes the current canon service surface for agents.
- **Actor vs Subject vs Principal**: Use actor for the acting entity in a context, subject for the entity a policy evaluates, and principal for the authenticated identity bound to access decisions.
- **Organization Role vs AccessRole vs CARING role**: Organization roles describe responsibility or position; access roles describe permissions; CARING roles classify access-governance needs and analysis.
- **Policy vs Control vs Evidence**: Policy states intent or rule, control implements or enforces that rule, and evidence records why the claim should be trusted.
- **Intent vs Scope vs Purpose**: Intent captures why an actor wants something, scope bounds what is included, and purpose captures consumer demand or use case pressure on the repo.
- **Intent vs Scope vs Purpose**: Intent captures why a producer or consumer exists, scope bounds producer ownership and promises, and purpose captures consumer demand anchored in consumer intent.
## Consumption Notes

View File

@@ -34,16 +34,72 @@
"id": "intent-scope-purpose",
"source_artifacts": [
"kernel/itc-core",
"model/governance",
"model/purpose-demand-extension",
"pattern/intent-scope-purposes",
"profile/small-saas"
],
"summary": "Intent captures why an actor wants something, scope bounds what is included, and purpose captures consumer demand or use case pressure on the repo.",
"summary": "Intent captures why a producer or consumer exists, scope bounds producer ownership and promises, and purpose captures consumer demand anchored in consumer intent.",
"title": "Intent vs Scope vs Purpose"
}
],
"infospace": "canon",
"item_count": 29,
"item_count": 34,
"items": [
{
"canonical_path": "concepts/purpose-demand.yaml",
"id": "concept-catalog/purpose-demand",
"imports": [
"kernel/itc-core",
"model/governance"
],
"kind": "concept-catalog",
"owned_concepts": [
"Purpose And Consumer Demand Concept Catalog"
],
"relationships": [
{
"target": "kernel/itc-core",
"type": "conforms_to"
},
{
"target": "model/governance",
"type": "uses"
}
],
"source_path": "infospace/concepts/purpose-demand.yaml",
"summary": "Structured candidate concept catalog: Purpose And Consumer Demand Concept Catalog.",
"title": "Purpose And Consumer Demand Concept Catalog",
"warnings": []
},
{
"canonical_path": "examples/consumer-purpose-portfolio.yaml",
"id": "example/consumer-purpose-portfolio",
"imports": [
"profile/small-saas"
],
"kind": "example",
"owned_concepts": [
"Canon-Side Consumer Purpose Portfolio"
],
"relationships": [
{
"target": "model/purpose-demand-extension",
"type": "illustrates"
},
{
"target": "pattern/intent-scope-purposes",
"type": "illustrates"
},
{
"target": "profile/small-saas",
"type": "uses"
}
],
"source_path": "infospace/examples/consumer-purpose-portfolio.yaml",
"summary": "Canon-side example artifact: Canon-Side Consumer Purpose Portfolio.",
"title": "Canon-Side Consumer Purpose Portfolio",
"warnings": []
},
{
"canonical_path": "kernel/InfoTechCanonCore.md",
"id": "kernel/itc-core",
@@ -129,6 +185,35 @@
"title": "InfoTechCanon Kernel Map",
"warnings": []
},
{
"canonical_path": "mappings/purpose-demand-governance-candidates.yaml",
"id": "mapping/purpose-demand-governance-candidates",
"imports": [
"model/task"
],
"kind": "mapping",
"owned_concepts": [
"Purpose Demand Governance Extension Candidates"
],
"relationships": [
{
"target": "model/purpose-demand-extension",
"type": "maps"
},
{
"target": "model/governance",
"type": "maps"
},
{
"target": "model/task",
"type": "uses"
}
],
"source_path": "infospace/mappings/purpose-demand-governance-candidates.yaml",
"summary": "Mapping artifact connecting canon surfaces: Purpose Demand Governance Extension Candidates.",
"title": "Purpose Demand Governance Extension Candidates",
"warnings": []
},
{
"canonical_path": "models/access-control/InfoTechCanonAccessControlModel.md",
"id": "model/access-control",
@@ -348,6 +433,54 @@
"title": "InfoTechCanon Organization Model",
"warnings": []
},
{
"canonical_path": "models/governance/InfoTechCanonPurposeDemandExtension.md",
"id": "model/purpose-demand-extension",
"imports": [
"kernel/itc-core",
"model/information-space",
"model/task"
],
"kind": "model-extension",
"owned_concepts": [
"ConsumerNeed",
"ConsumerPurpose",
"DemandSignal",
"EvolutionRequest",
"InfoTechCanon Purpose And Demand Model Extension",
"ProducerCapability",
"Purpose",
"PurposeFit",
"ScopePressure",
"UseCase"
],
"relationships": [
{
"target": "kernel/itc-core",
"type": "conforms_to"
},
{
"target": "model/governance",
"type": "extends"
},
{
"target": "model/information-space",
"type": "uses"
},
{
"target": "model/task",
"type": "uses"
},
{
"target": "concept-catalog/purpose-demand",
"type": "introduces"
}
],
"source_path": "infospace/models/governance/InfoTechCanonPurposeDemandExtension.md",
"summary": "Candidate extension to an existing canon model: InfoTechCanon Purpose And Demand Model Extension.",
"title": "InfoTechCanon Purpose And Demand Model Extension",
"warnings": []
},
{
"canonical_path": "models/security/InfoTechCanonSecurityModel.md",
"id": "model/security",
@@ -395,6 +528,37 @@
"title": "InfoTechCanon Task Model",
"warnings": []
},
{
"canonical_path": "patterns/intent-scope-purposes.md",
"id": "pattern/intent-scope-purposes",
"imports": [
"model/governance",
"model/task"
],
"kind": "pattern",
"owned_concepts": [
"Intent Scope Purposes Pattern",
"IntentScopePurposePattern"
],
"relationships": [
{
"target": "model/purpose-demand-extension",
"type": "implements"
},
{
"target": "model/governance",
"type": "uses"
},
{
"target": "model/task",
"type": "uses"
}
],
"source_path": "infospace/patterns/intent-scope-purposes.md",
"summary": "Reusable canon pattern: Intent Scope Purposes Pattern.",
"title": "Intent Scope Purposes Pattern",
"warnings": []
},
{
"canonical_path": "profiles/small-saas/profile.yaml",
"id": "profile/small-saas",

View File

@@ -4,17 +4,37 @@
Schema: `info-tech-canon.retrieval-index.v1`
Infospace: `canon`
Items: **29**
Items: **34**
## Common Distinctions
- **Actor vs Subject vs Principal**: Use actor for the acting entity in a context, subject for the entity a policy evaluates, and principal for the authenticated identity bound to access decisions. Sources: `model/organization`, `model/access-control`, `standard/caring`
- **Organization Role vs AccessRole vs CARING role**: Organization roles describe responsibility or position; access roles describe permissions; CARING roles classify access-governance needs and analysis. Sources: `model/organization`, `model/access-control`, `standard/caring`
- **Policy vs Control vs Evidence**: Policy states intent or rule, control implements or enforces that rule, and evidence records why the claim should be trusted. Sources: `model/governance`, `model/security`, `model/observability`
- **Intent vs Scope vs Purpose**: Intent captures why an actor wants something, scope bounds what is included, and purpose captures consumer demand or use case pressure on the repo. Sources: `kernel/itc-core`, `model/governance`, `profile/small-saas`
- **Intent vs Scope vs Purpose**: Intent captures why a producer or consumer exists, scope bounds producer ownership and promises, and purpose captures consumer demand anchored in consumer intent. Sources: `kernel/itc-core`, `model/purpose-demand-extension`, `pattern/intent-scope-purposes`, `profile/small-saas`
## Items
### Purpose And Consumer Demand Concept Catalog
- ID: `concept-catalog/purpose-demand`
- Kind: `concept-catalog`
- Canonical path: `concepts/purpose-demand.yaml`
- Source path: `infospace/concepts/purpose-demand.yaml`
- Summary: Structured candidate concept catalog: Purpose And Consumer Demand Concept Catalog.
- Imports and anchors: `kernel/itc-core`, `model/governance`
- Owned concepts: `Purpose And Consumer Demand Concept Catalog`
### Canon-Side Consumer Purpose Portfolio
- ID: `example/consumer-purpose-portfolio`
- Kind: `example`
- Canonical path: `examples/consumer-purpose-portfolio.yaml`
- Source path: `infospace/examples/consumer-purpose-portfolio.yaml`
- Summary: Canon-side example artifact: Canon-Side Consumer Purpose Portfolio.
- Imports and anchors: `profile/small-saas`
- Owned concepts: `Canon-Side Consumer Purpose Portfolio`
### InfoTechCanon Core
- ID: `kernel/itc-core`
@@ -35,6 +55,16 @@ Items: **29**
- Imports and anchors: none
- Owned concepts: `InfoTechCanon Kernel Map`
### Purpose Demand Governance Extension Candidates
- ID: `mapping/purpose-demand-governance-candidates`
- Kind: `mapping`
- Canonical path: `mappings/purpose-demand-governance-candidates.yaml`
- Source path: `infospace/mappings/purpose-demand-governance-candidates.yaml`
- Summary: Mapping artifact connecting canon surfaces: Purpose Demand Governance Extension Candidates.
- Imports and anchors: `model/task`
- Owned concepts: `Purpose Demand Governance Extension Candidates`
### InfoTechCanon Access Control Model
- ID: `model/access-control`
@@ -125,6 +155,16 @@ Items: **29**
- Imports and anchors: `kernel/itc-core`
- Owned concepts: `InfoTechCanon Organization Model`
### InfoTechCanon Purpose And Demand Model Extension
- ID: `model/purpose-demand-extension`
- Kind: `model-extension`
- Canonical path: `models/governance/InfoTechCanonPurposeDemandExtension.md`
- Source path: `infospace/models/governance/InfoTechCanonPurposeDemandExtension.md`
- Summary: Candidate extension to an existing canon model: InfoTechCanon Purpose And Demand Model Extension.
- Imports and anchors: `kernel/itc-core`, `model/information-space`, `model/task`
- Owned concepts: `ConsumerNeed`, `ConsumerPurpose`, `DemandSignal`, `EvolutionRequest`, `InfoTechCanon Purpose And Demand Model Extension`, `ProducerCapability`, `Purpose`, `PurposeFit`, `ScopePressure`, `UseCase`
### InfoTechCanon Security Model
- ID: `model/security`
@@ -145,6 +185,16 @@ Items: **29**
- Imports and anchors: `kernel/itc-core`
- Owned concepts: `InfoTechCanon Task Model`
### Intent Scope Purposes Pattern
- ID: `pattern/intent-scope-purposes`
- Kind: `pattern`
- Canonical path: `patterns/intent-scope-purposes.md`
- Source path: `infospace/patterns/intent-scope-purposes.md`
- Summary: Reusable canon pattern: Intent Scope Purposes Pattern.
- Imports and anchors: `model/governance`, `model/task`
- Owned concepts: `Intent Scope Purposes Pattern`, `IntentScopePurposePattern`
### Small SaaS System Profile
- ID: `profile/small-saas`

View File

@@ -1,7 +1,43 @@
schema: info-tech-canon.retrieval-index.v1
infospace: canon
item_count: 29
item_count: 34
items:
- id: concept-catalog/purpose-demand
kind: concept-catalog
title: Purpose And Consumer Demand Concept Catalog
canonical_path: concepts/purpose-demand.yaml
source_path: infospace/concepts/purpose-demand.yaml
summary: 'Structured candidate concept catalog: Purpose And Consumer Demand Concept
Catalog.'
owned_concepts:
- Purpose And Consumer Demand Concept Catalog
imports:
- kernel/itc-core
- model/governance
relationships:
- type: conforms_to
target: kernel/itc-core
- type: uses
target: model/governance
warnings: []
- id: example/consumer-purpose-portfolio
kind: example
title: Canon-Side Consumer Purpose Portfolio
canonical_path: examples/consumer-purpose-portfolio.yaml
source_path: infospace/examples/consumer-purpose-portfolio.yaml
summary: 'Canon-side example artifact: Canon-Side Consumer Purpose Portfolio.'
owned_concepts:
- Canon-Side Consumer Purpose Portfolio
imports:
- profile/small-saas
relationships:
- type: illustrates
target: model/purpose-demand-extension
- type: illustrates
target: pattern/intent-scope-purposes
- type: uses
target: profile/small-saas
warnings: []
- id: kernel/itc-core
kind: kernel
title: InfoTechCanon Core
@@ -54,6 +90,25 @@ items:
- type: maps
target: standard/caring
warnings: []
- id: mapping/purpose-demand-governance-candidates
kind: mapping
title: Purpose Demand Governance Extension Candidates
canonical_path: mappings/purpose-demand-governance-candidates.yaml
source_path: infospace/mappings/purpose-demand-governance-candidates.yaml
summary: 'Mapping artifact connecting canon surfaces: Purpose Demand Governance
Extension Candidates.'
owned_concepts:
- Purpose Demand Governance Extension Candidates
imports:
- model/task
relationships:
- type: maps
target: model/purpose-demand-extension
- type: maps
target: model/governance
- type: uses
target: model/task
warnings: []
- id: model/access-control
kind: model
title: InfoTechCanon Access Control Model
@@ -207,6 +262,40 @@ items:
- type: conforms_to
target: kernel/itc-core
warnings: []
- id: model/purpose-demand-extension
kind: model-extension
title: InfoTechCanon Purpose And Demand Model Extension
canonical_path: models/governance/InfoTechCanonPurposeDemandExtension.md
source_path: infospace/models/governance/InfoTechCanonPurposeDemandExtension.md
summary: 'Candidate extension to an existing canon model: InfoTechCanon Purpose
And Demand Model Extension.'
owned_concepts:
- ConsumerNeed
- ConsumerPurpose
- DemandSignal
- EvolutionRequest
- InfoTechCanon Purpose And Demand Model Extension
- ProducerCapability
- Purpose
- PurposeFit
- ScopePressure
- UseCase
imports:
- kernel/itc-core
- model/information-space
- model/task
relationships:
- type: conforms_to
target: kernel/itc-core
- type: extends
target: model/governance
- type: uses
target: model/information-space
- type: uses
target: model/task
- type: introduces
target: concept-catalog/purpose-demand
warnings: []
- id: model/security
kind: model
title: InfoTechCanon Security Model
@@ -240,6 +329,26 @@ items:
- type: conforms_to
target: kernel/itc-core
warnings: []
- id: pattern/intent-scope-purposes
kind: pattern
title: Intent Scope Purposes Pattern
canonical_path: patterns/intent-scope-purposes.md
source_path: infospace/patterns/intent-scope-purposes.md
summary: 'Reusable canon pattern: Intent Scope Purposes Pattern.'
owned_concepts:
- Intent Scope Purposes Pattern
- IntentScopePurposePattern
imports:
- model/governance
- model/task
relationships:
- type: implements
target: model/purpose-demand-extension
- type: uses
target: model/governance
- type: uses
target: model/task
warnings: []
- id: profile/small-saas
kind: profile
title: Small SaaS System Profile
@@ -665,9 +774,11 @@ common_distinctions:
- model/observability
- id: intent-scope-purpose
title: Intent vs Scope vs Purpose
summary: Intent captures why an actor wants something, scope bounds what is included,
and purpose captures consumer demand or use case pressure on the repo.
summary: Intent captures why a producer or consumer exists, scope bounds producer
ownership and promises, and purpose captures consumer demand anchored in consumer
intent.
source_artifacts:
- kernel/itc-core
- model/governance
- model/purpose-demand-extension
- pattern/intent-scope-purposes
- profile/small-saas

View File

@@ -7,7 +7,11 @@ consumer:
owner: ''
intent: ''
scope: ''
purposes: []
purposes:
- id: ''
use_case: ''
consumer_need: ''
demand_signals: []
canon_surfaces:
implemented_profiles: []
consumed_artifacts: []
@@ -19,6 +23,11 @@ validation_expectations:
commands: []
evidence_required: []
known_gaps: []
purpose_fit:
state: ''
matched_capabilities: []
scope_pressure: ''
recommended_disposition: ''
consumer_needs:
current: []
requested_extensions: []

View File

@@ -13,6 +13,8 @@ generated: true
- Intent:
- Scope:
- Purposes:
- Use cases:
- Demand signals:
## Canon Surfaces
@@ -26,3 +28,10 @@ generated: true
- Commands:
- Evidence:
- Known gaps:
## Purpose Fit
- State:
- Matched producer capabilities:
- Scope pressure:
- Requested evolution:

View File

@@ -89,6 +89,24 @@ artifacts:
relationships:
- type: conforms_to
target: kernel/itc-core
- id: model/purpose-demand-extension
path: models/governance/InfoTechCanonPurposeDemandExtension.md
kind: model-extension
title: InfoTechCanon Purpose And Demand Model Extension
provenance:
source_path: infospace/models/governance/InfoTechCanonPurposeDemandExtension.md
placement_workplan: ITC-WP-0006
relationships:
- type: conforms_to
target: kernel/itc-core
- type: extends
target: model/governance
- type: uses
target: model/information-space
- type: uses
target: model/task
- type: introduces
target: concept-catalog/purpose-demand
- id: model/task
path: models/task/InfoTechCanonTaskModel.md
kind: model
@@ -259,6 +277,60 @@ artifacts:
target: standard/tagging
- type: requires
target: standard/caring
- id: concept-catalog/purpose-demand
path: concepts/purpose-demand.yaml
kind: concept-catalog
title: Purpose And Consumer Demand Concept Catalog
provenance:
source_path: infospace/concepts/purpose-demand.yaml
placement_workplan: ITC-WP-0006
relationships:
- type: conforms_to
target: kernel/itc-core
- type: uses
target: model/governance
- id: pattern/intent-scope-purposes
path: patterns/intent-scope-purposes.md
kind: pattern
title: Intent Scope Purposes Pattern
provenance:
source_path: infospace/patterns/intent-scope-purposes.md
placement_workplan: ITC-WP-0006
relationships:
- type: implements
target: model/purpose-demand-extension
- type: uses
target: model/governance
- type: uses
target: model/task
- id: mapping/purpose-demand-governance-candidates
path: mappings/purpose-demand-governance-candidates.yaml
kind: mapping
title: Purpose Demand Governance Extension Candidates
provenance:
source_path: infospace/mappings/purpose-demand-governance-candidates.yaml
placement_workplan: ITC-WP-0006
relationships:
- type: maps
target: model/purpose-demand-extension
- type: maps
target: model/governance
- type: uses
target: model/task
- id: example/consumer-purpose-portfolio
path: examples/consumer-purpose-portfolio.yaml
kind: example
title: Canon-Side Consumer Purpose Portfolio
provenance:
source_path: infospace/examples/consumer-purpose-portfolio.yaml
placement_workplan: ITC-WP-0006
relationships:
- type: illustrates
target: model/purpose-demand-extension
- type: illustrates
target: pattern/intent-scope-purposes
- type: uses
target: profile/small-saas
- id: small-saas/service/billing-portal
path: profiles/small-saas/artifacts/service.billing-portal.yaml
kind: profile-artifact

View File

@@ -0,0 +1,67 @@
id: concept-catalog/purpose-demand
title: Purpose And Consumer Demand Concept Catalog
owner: model/purpose-demand-extension
status: candidate
version: "0.1"
concepts:
- id: purpose
title: Purpose
proposed_owner: kernel/itc-core
definition: Generic reason or use-value orientation for an actor, artifact, capability, or repo in a context.
- id: consumer-purpose
title: ConsumerPurpose
proposed_owner: model/information-space
definition: Declared purpose from a consumer of a producer repo, artifact, profile, service, or canon surface.
- id: use-case
title: UseCase
proposed_owner: model/information-space
definition: Bounded scenario in which a consumer applies a producer capability to satisfy a purpose.
- id: demand-signal
title: DemandSignal
proposed_owner: model/information-space
definition: Traceable observation indicating consumer need, use, friction, request, value, or preference.
- id: consumer-need
title: ConsumerNeed
proposed_owner: model/information-space
definition: Need expressed or inferred from a consumer purpose and demand signals.
- id: producer-capability
title: ProducerCapability
proposed_owner: model/governance
definition: Capability, profile, interface, artifact, or service the producer can intentionally provide or promise.
- id: purpose-fit
title: PurposeFit
proposed_owner: model/governance
definition: Evaluation of how well producer scope and capabilities satisfy a consumer purpose.
- id: scope-pressure
title: ScopePressure
proposed_owner: model/governance
definition: Pressure on producer scope caused by unmet, repeated, high-value, or strategically aligned consumer purposes.
- id: evolution-request
title: EvolutionRequest
proposed_owner: model/task
definition: Proposed change to producer artifacts, interfaces, profiles, standards, or scope created in response to purpose pressure.
relationships:
- source: ConsumerPurpose
type: anchored_in
target: ConsumerIntent
- source: ConsumerPurpose
type: expresses
target: UseCase
- source: UseCase
type: creates
target: DemandSignal
- source: DemandSignal
type: indicates
target: ConsumerNeed
- source: ProducerCapability
type: satisfies
target: ConsumerNeed
- source: PurposeFit
type: evaluates
target: ConsumerPurpose
- source: ScopePressure
type: arises_from
target: PurposeFit
- source: EvolutionRequest
type: responds_to
target: ScopePressure

View File

@@ -0,0 +1,67 @@
id: example/consumer-purpose-portfolio
title: Canon-Side Consumer Purpose Portfolio
status: candidate
model: model/purpose-demand-extension
pattern: pattern/intent-scope-purposes
consumers:
- id: user-engine
title: User Engine Evaluation
consumer_intent: Evaluate user-management capabilities against the canon before integrating user management as a producer capability.
consumer_scope: User identity, account lifecycle, roles, access decisions, tenancy boundaries, and 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 distinctions among Actor, Subject, Principal, Organization Role, AccessRole, policy, control, and evidence.
demand_signals:
- Needs conformance questions before integration starts.
- Needs source-linked concepts for user, role, tenant, access, and evidence records.
producer_capabilities_used:
- profile/small-saas
- model/organization
- model/access-control
- model/governance
- standard/caring
purpose_fit: fits_with_profile
scope_pressure: Add evaluation pack and conformance questions after PURPOSES vocabulary is accepted.
evolution_requests:
- Create canon-side user-management evaluation pack.
- id: railiance-fabric
title: Railiance Fabric Refactoring Support
consumer_intent: Refactor captured entities and edges so the fabric conforms to and informs the canon.
consumer_scope: Entity capture, edge semantics, provenance, visualization utility, and governance of extracted relationships.
purposes:
- id: railiance-fabric/entity-edge-cleanliness
use_case: Use canon concepts to classify fabric nodes and edges for cleaner visualization and better practical meaning.
consumer_need: Stable concept ownership, relationship semantics, and examples for entity and edge capture.
demand_signals:
- Needs cleaner capture of entities and edges for visualization.
- Needs relationship types that can be traced to canon models.
producer_capabilities_used:
- model/information-space
- model/governance
- model/task
- standard/tagging
purpose_fit: partial_fit
scope_pressure: Add mapping examples and relationship expectations for visualization-oriented captures.
evolution_requests:
- Create fabric entity and edge capture criteria.
- id: repo-scoping
title: Repo Scoping Comparison
consumer_intent: Compare repo-scoping concepts with the canon and identify extensions that maximize scoping utility.
consumer_scope: Repository intent, scope, domain, consumer demand, governance, and interface-card semantics.
purposes:
- id: repo-scoping/intent-scope-purposes-alignment
use_case: Use INTENT, SCOPE, and PURPOSES to improve repo scoping and feed canon extension candidates back to InfoTechCanon.
consumer_need: Explicit fit between repo intent, current scope, consumer purposes, and governance decisions.
demand_signals:
- Needs canon vocabulary for PURPOSES as consumer demand.
- Needs interface card fields that repo-scoping can produce or consume.
producer_capabilities_used:
- kernel/itc-core
- model/purpose-demand-extension
- pattern/intent-scope-purposes
- agent/templates/canon-interface-card.template.yaml
purpose_fit: gap
scope_pressure: Extend interface cards and governance vocabulary around PURPOSES.
evolution_requests:
- Compare repo-scoping with canon purpose and demand model.

View File

@@ -1,5 +1,5 @@
root: infospace
file_count: 91
file_count: 101
files:
- path: README.md
directory: .
@@ -7,12 +7,21 @@ files:
- path: agent/README.md
directory: agent
name: README.md
- path: agent/briefs/concept-catalog-purpose-demand.md
directory: agent/briefs
name: concept-catalog-purpose-demand.md
- path: agent/briefs/example-consumer-purpose-portfolio.md
directory: agent/briefs
name: example-consumer-purpose-portfolio.md
- path: agent/briefs/kernel-itc-core.md
directory: agent/briefs
name: kernel-itc-core.md
- path: agent/briefs/kernel-itc-kernel-map.md
directory: agent/briefs
name: kernel-itc-kernel-map.md
- path: agent/briefs/mapping-purpose-demand-governance-candidates.md
directory: agent/briefs
name: mapping-purpose-demand-governance-candidates.md
- path: agent/briefs/model-access-control.md
directory: agent/briefs
name: model-access-control.md
@@ -40,12 +49,18 @@ files:
- path: agent/briefs/model-organization.md
directory: agent/briefs
name: model-organization.md
- path: agent/briefs/model-purpose-demand-extension.md
directory: agent/briefs
name: model-purpose-demand-extension.md
- path: agent/briefs/model-security.md
directory: agent/briefs
name: model-security.md
- path: agent/briefs/model-task.md
directory: agent/briefs
name: model-task.md
- path: agent/briefs/pattern-intent-scope-purposes.md
directory: agent/briefs
name: pattern-intent-scope-purposes.md
- path: agent/briefs/profile-small-saas.md
directory: agent/briefs
name: profile-small-saas.md
@@ -88,9 +103,15 @@ files:
- path: assimilation/README.md
directory: assimilation
name: README.md
- path: concepts/purpose-demand.yaml
directory: concepts
name: purpose-demand.yaml
- path: examples/README.md
directory: examples
name: README.md
- path: examples/consumer-purpose-portfolio.yaml
directory: examples
name: consumer-purpose-portfolio.yaml
- path: examples/small-saas/README.md
directory: examples/small-saas
name: README.md
@@ -121,6 +142,9 @@ files:
- path: mappings/README.md
directory: mappings
name: README.md
- path: mappings/purpose-demand-governance-candidates.yaml
directory: mappings
name: purpose-demand-governance-candidates.yaml
- path: models/access-control/InfoTechCanonAccessControlModel.md
directory: models/access-control
name: InfoTechCanonAccessControlModel.md
@@ -133,6 +157,9 @@ files:
- path: models/governance/InfoTechCanonGovernanceModel.md
directory: models/governance
name: InfoTechCanonGovernanceModel.md
- path: models/governance/InfoTechCanonPurposeDemandExtension.md
directory: models/governance
name: InfoTechCanonPurposeDemandExtension.md
- path: models/information-space/InfoTechCanonInformationSpaceModel.md
directory: models/information-space
name: InfoTechCanonInformationSpaceModel.md
@@ -157,6 +184,9 @@ files:
- path: patterns/README.md
directory: patterns
name: README.md
- path: patterns/intent-scope-purposes.md
directory: patterns
name: intent-scope-purposes.md
- path: profiles/README.md
directory: profiles
name: README.md

View File

@@ -1,5 +1,13 @@
concept_count: 44
concept_count: 59
concepts:
- concept: Purpose And Consumer Demand Concept Catalog
owner: concept-catalog/purpose-demand
path: concepts/purpose-demand.yaml
source: artifact_title
- concept: Canon-Side Consumer Purpose Portfolio
owner: example/consumer-purpose-portfolio
path: examples/consumer-purpose-portfolio.yaml
source: artifact_title
- concept: InfoTechCanon Core
owner: kernel/itc-core
path: kernel/InfoTechCanonCore.md
@@ -8,6 +16,10 @@ concepts:
owner: kernel/itc-kernel-map
path: kernel/InfoTechCanonKernelMap.md
source: artifact_title
- concept: Purpose Demand Governance Extension Candidates
owner: mapping/purpose-demand-governance-candidates
path: mappings/purpose-demand-governance-candidates.yaml
source: artifact_title
- concept: InfoTechCanon Access Control Model
owner: model/access-control
path: models/access-control/InfoTechCanonAccessControlModel.md
@@ -44,6 +56,46 @@ concepts:
owner: model/organization
path: models/organization/InfoTechCanonOrganizationModel.md
source: artifact_title
- concept: InfoTechCanon Purpose And Demand Model Extension
owner: model/purpose-demand-extension
path: models/governance/InfoTechCanonPurposeDemandExtension.md
source: artifact_title
- concept: Purpose
owner: model/purpose-demand-extension
path: models/governance/InfoTechCanonPurposeDemandExtension.md
source: frontmatter.owned_concepts
- concept: ConsumerPurpose
owner: model/purpose-demand-extension
path: models/governance/InfoTechCanonPurposeDemandExtension.md
source: frontmatter.owned_concepts
- concept: UseCase
owner: model/purpose-demand-extension
path: models/governance/InfoTechCanonPurposeDemandExtension.md
source: frontmatter.owned_concepts
- concept: DemandSignal
owner: model/purpose-demand-extension
path: models/governance/InfoTechCanonPurposeDemandExtension.md
source: frontmatter.owned_concepts
- concept: ConsumerNeed
owner: model/purpose-demand-extension
path: models/governance/InfoTechCanonPurposeDemandExtension.md
source: frontmatter.owned_concepts
- concept: ProducerCapability
owner: model/purpose-demand-extension
path: models/governance/InfoTechCanonPurposeDemandExtension.md
source: frontmatter.owned_concepts
- concept: PurposeFit
owner: model/purpose-demand-extension
path: models/governance/InfoTechCanonPurposeDemandExtension.md
source: frontmatter.owned_concepts
- concept: ScopePressure
owner: model/purpose-demand-extension
path: models/governance/InfoTechCanonPurposeDemandExtension.md
source: frontmatter.owned_concepts
- concept: EvolutionRequest
owner: model/purpose-demand-extension
path: models/governance/InfoTechCanonPurposeDemandExtension.md
source: frontmatter.owned_concepts
- concept: InfoTechCanon Security Model
owner: model/security
path: models/security/InfoTechCanonSecurityModel.md
@@ -52,6 +104,14 @@ concepts:
owner: model/task
path: models/task/InfoTechCanonTaskModel.md
source: artifact_title
- concept: Intent Scope Purposes Pattern
owner: pattern/intent-scope-purposes
path: patterns/intent-scope-purposes.md
source: artifact_title
- concept: IntentScopePurposePattern
owner: pattern/intent-scope-purposes
path: patterns/intent-scope-purposes.md
source: frontmatter.owned_concepts
- concept: Small SaaS System Profile
owner: profile/small-saas
path: profiles/small-saas/profile.yaml

View File

@@ -1,6 +1,9 @@
artifacts:
- 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
@@ -10,8 +13,10 @@ artifacts:
- 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
@@ -29,6 +34,20 @@ artifacts:
- standard/caring
- standard/tagging
rows:
- artifact: concept-catalog/purpose-demand
targets:
kernel/itc-core:
- conforms_to
model/governance:
- uses
- artifact: example/consumer-purpose-portfolio
targets:
model/purpose-demand-extension:
- illustrates
pattern/intent-scope-purposes:
- illustrates
profile/small-saas:
- uses
- artifact: kernel/itc-core
targets: {}
- artifact: kernel/itc-kernel-map
@@ -61,6 +80,14 @@ rows:
- maps
standard/tagging:
- maps
- artifact: mapping/purpose-demand-governance-candidates
targets:
model/governance:
- maps
model/purpose-demand-extension:
- maps
model/task:
- uses
- artifact: model/access-control
targets:
kernel/itc-core:
@@ -109,6 +136,18 @@ rows:
targets:
kernel/itc-core:
- conforms_to
- artifact: model/purpose-demand-extension
targets:
concept-catalog/purpose-demand:
- introduces
kernel/itc-core:
- conforms_to
model/governance:
- extends
model/information-space:
- uses
model/task:
- uses
- artifact: model/security
targets:
kernel/itc-core:
@@ -119,6 +158,14 @@ rows:
targets:
kernel/itc-core:
- conforms_to
- artifact: pattern/intent-scope-purposes
targets:
model/governance:
- uses
model/purpose-demand-extension:
- implements
model/task:
- uses
- artifact: profile/small-saas
targets:
kernel/itc-core:

View File

@@ -0,0 +1,76 @@
id: mapping/purpose-demand-governance-candidates
title: Purpose Demand Governance Extension Candidates
source: model/purpose-demand-extension
target: model/governance
mapping_type: model-extension-candidates
confidence: candidate
concept_mappings:
- concept: PurposeFit
governance_surface: Review
decision_need: Decide whether a consumer purpose fits current scope, needs mapping, creates a gap, conflicts, or is out of scope.
evidence_required:
- consumer purpose
- matched canon artifacts
- matched concepts
- gap or conflict statement
- concept: ScopePressure
governance_surface: Decision
decision_need: Decide whether demand pressure should extend scope, adapt a profile, create a mapping, add an interface field, defer, or reject.
evidence_required:
- purpose fit result
- demand signal strength
- producer intent alignment
- expected consumer value
- owner and review date
- concept: ProducerCapability
governance_surface: Policy
decision_need: Decide whether a capability is promised, experimental, deprecated, unsupported, or intentionally excluded.
evidence_required:
- scope statement
- capability owner
- supporting artifacts
- validation expectations
- concept: EvolutionRequest
governance_surface: ChangeControl
decision_need: Decide whether pressure becomes task work, profile change, interface change, mapping, standard candidate, or explicit rejection.
evidence_required:
- requested change
- affected artifacts
- intended consumer outcome
- decision authority
- acceptance criteria
decision_states:
purpose_triage:
- accepted_for_analysis
- needs_clarification
- out_of_scope
- duplicate
- parked
- rejected
purpose_fit:
- fits_current_scope
- fits_with_mapping
- fits_with_profile
- partial_fit
- gap
- conflict
- out_of_scope
- unknown
scope_pressure:
- extend_scope
- adapt_profile
- add_mapping
- add_interface_field
- add_standard_candidate
- create_task
- defer
- reject
task_bridge:
accepted_pressure_creates: EvolutionRequest
evolution_request_may_create:
- Task
- BacklogItem
- ReviewTask
- ChangeTask
- MappingTask
- ProfileChangeTask

View File

@@ -0,0 +1,218 @@
---
id: model/purpose-demand-extension
title: InfoTechCanon Purpose And Demand Model Extension
type: model-extension
status: candidate
version: "0.1"
extends:
- model/governance
uses:
- kernel/itc-core
- model/information-space
- model/task
owned_concepts:
- Purpose
- ConsumerPurpose
- UseCase
- DemandSignal
- ConsumerNeed
- ProducerCapability
- PurposeFit
- ScopePressure
- EvolutionRequest
---
# InfoTechCanon Purpose And Demand Model Extension
## 1. Purpose
This candidate extension defines the PURPOSES concept family for repos and
infospaces that need to learn what consumers use, need, want, and value from
the producer.
The extension keeps three ideas distinct:
```text
INTENT
Why a producer or consumer exists and what it is trying to become.
SCOPE
What the producer currently includes, excludes, owns, and promises.
PURPOSES
What consumers use, need, want, or value from the producer, anchored in the
consumers' own intent.
```
PURPOSES are not a replacement for producer intent or scope. They are a
consumer demand surface that can inform governance, profiles, interfaces, and
roadmap work.
## 2. Position in InfoTechCanon
Purpose and demand currently cross several existing model boundaries:
```text
Core
Owns generic canon primitives such as Concept, Standard, Profile, Mapping,
Conformance, and canonical ownership.
Governance
Owns decisions, decision rights, evidence, acceptance, deferral, rejection,
change control, and the evaluation of scope pressure.
Information Space
Owns how consumer purposes, interface cards, briefs, mappings, evidence
references, and retrieval assets are captured and reused.
Task
Owns work items created from accepted evolution requests, including backlog,
readiness, commitment, progress, and completion evidence.
```
This extension is intentionally registered as a candidate model extension until
the concepts are exercised by the first consumer evaluations.
## 3. Concept Proposal
| Concept | Proposed permanent owner | Definition | Notes |
| --- | --- | --- | --- |
| Purpose | Core | A reason or use-value orientation that explains why an actor, artifact, capability, or repo matters in a context. | Generic enough to become a core concept, but introduced here as a candidate. |
| ConsumerPurpose | Information Space | A declared purpose from a consumer of a producer repo, artifact, profile, service, or canon surface. | Captured through interface cards, consumer briefs, mappings, and evidence references. |
| UseCase | Information Space | A bounded scenario in which a consumer applies a producer capability to satisfy a purpose. | Should remain distinct from Task; tasks implement changes, use cases describe demand. |
| DemandSignal | Information Space | A traceable observation that indicates consumer need, use, friction, request, value, or preference. | Examples include evaluation gaps, repeated questions, integration attempts, issues, and usage evidence. |
| ConsumerNeed | Information Space | A need expressed or inferred from a consumer purpose and one or more demand signals. | Needs may be current, anticipated, or exploratory. |
| ProducerCapability | Governance | A capability, profile, interface, artifact, or service the producer can intentionally provide or promise. | Governance decides whether it is promised, experimental, deprecated, or out of scope. |
| PurposeFit | Governance | An evaluation of how well producer scope and capabilities satisfy a consumer purpose. | Requires rationale and evidence because it can drive scope change. |
| ScopePressure | Governance | Pressure on producer scope caused by unmet, repeated, high-value, or strategically aligned consumer purposes. | Should not automatically expand scope; it triggers governance review. |
| EvolutionRequest | Task | A proposed change to producer artifacts, interfaces, profiles, standards, or scope created in response to purpose pressure. | Becomes Task work only after triage and commitment. |
## 4. Core Relationships
```text
ConsumerPurpose anchored_in ConsumerIntent
ConsumerPurpose expresses UseCase
UseCase creates DemandSignal
DemandSignal indicates ConsumerNeed
ProducerCapability satisfies ConsumerNeed
PurposeFit evaluates ConsumerPurpose against ProducerCapability and Scope
ScopePressure arises_from PurposeFit or DemandSignal
EvolutionRequest responds_to ScopePressure
Decision accepts / rejects / defers EvolutionRequest
Task implements accepted EvolutionRequest
Evidence supports PurposeFit and Decision
```
## 5. Governance Extension Candidates
Governance should gain three reviewable decision surfaces.
### 5.1 Consumer Purpose Triage
Purpose triage decides whether a declared consumer purpose is:
```text
accepted_for_analysis
needs_clarification
out_of_scope
duplicate
parked
rejected
```
Required evidence:
```text
consumer identity
consumer intent
declared purpose
use case
scope touched
source artifact or interface card
date captured
owner for follow-up
```
### 5.2 Purpose Fit Review
Purpose fit review evaluates whether the canon currently satisfies the
consumer purpose.
Fit states:
```text
fits_current_scope
fits_with_mapping
fits_with_profile
partial_fit
gap
conflict
out_of_scope
unknown
```
Required evidence:
```text
matched canon artifacts
matched concepts
gaps or ambiguity
consumer impact
producer impact
recommended disposition
```
### 5.3 Scope Pressure Decision
Scope pressure decision decides whether repeated or high-value purposes should
change the producer.
Outcomes:
```text
extend_scope
adapt_profile
add_mapping
add_interface_field
add_standard_candidate
create_task
defer
reject
```
Required evidence:
```text
purpose fit result
demand signal strength
alignment with producer intent
cost or complexity
affected owner
decision authority
review date
```
## 6. Boundaries
Purpose is not Policy. A purpose can inform policy, but policy remains a
governance directive.
Purpose is not Scope. Purpose can pressure scope, but scope remains the
producer's current boundary and promise.
Purpose is not Task. Purpose can create work, but task semantics begin when
work is captured, triaged, committed, assigned, and executed.
Purpose is not Capability. A consumer may need something the producer does not
yet provide, does not want to provide, or should explicitly reject.
## 7. First Consumer Evaluation Use
The first evaluations should use the purpose model to capture:
- what user-engine needs from the canon before user-management integration,
- what railiance-fabric needs for clean entity and edge capture,
- what repo-scoping needs from INTENT, SCOPE, PURPOSES, and interface cards.
Those evaluations should create consumer-side workplans in the consumer repos.
This repo owns the canon-side model, examples, and acceptance vocabulary.

View File

@@ -0,0 +1,118 @@
---
id: pattern/intent-scope-purposes
title: Intent Scope Purposes Pattern
type: pattern
status: candidate
version: "0.1"
uses:
- model/purpose-demand-extension
- model/governance
- model/task
owned_concepts:
- IntentScopePurposePattern
---
# Intent Scope Purposes Pattern
## Context
A producer repo or infospace has its own reason to exist and a current boundary
of ownership. Consumers arrive with their own intents and use cases. Without a
purpose layer, the producer either ignores consumer demand or silently expands
scope through accidental commitments.
## Problem
Intent, scope, and purpose are often collapsed:
```text
consumer asks for something
producer treats it as a requirement
scope expands without governance
tasks appear without a decision trail
```
This makes repos less clean over time and hides why interfaces or standards are
evolving.
## Solution
Keep the three planes explicit.
```text
ProducerIntent
explains why the producer exists.
ProducerScope
declares what the producer currently owns, excludes, and promises.
ConsumerPurpose
declares what a consumer wants to use, need, or value from the producer,
anchored in the consumer's own intent.
```
Then connect them through reviewable fit and change decisions.
```text
ConsumerIntent
-> ConsumerPurpose
-> UseCase
-> DemandSignal
-> PurposeFit
-> ScopePressure
-> EvolutionRequest
-> GovernanceDecision
-> Task / ProfileChange / InterfaceChange / Mapping
```
## Pattern Rules
1. A ConsumerPurpose MUST identify the consumer and the consumer intent it is
anchored in.
2. A ConsumerPurpose SHOULD identify one or more use cases and demand signals.
3. A PurposeFit MUST distinguish current fit, fit through mapping, partial fit,
gap, conflict, and out-of-scope demand.
4. ScopePressure MUST NOT change producer scope by itself.
5. An EvolutionRequest SHOULD identify whether it proposes a task, mapping,
profile change, interface change, standard candidate, or explicit rejection.
6. Governance decisions SHOULD carry rationale and evidence.
## Resulting Moves
The pattern supports four clean moves:
```text
Learn
Capture consumer purpose and demand signals.
Evaluate
Compare purpose with producer scope and capabilities.
Govern
Accept, reject, defer, map, or convert pressure into an evolution request.
Implement
Create task work, profile changes, interface changes, mappings, or standards
only after the governance decision is explicit.
```
## Practical Interface
Consumer-facing interface cards should carry:
```text
consumer intent
consumer scope
consumer purposes
use cases
demand signals
needed concepts
producer capabilities used
purpose fit result
scope pressure
requested extensions
evidence references
```
This gives the producer a memory of why consumers use it and what they ask it
to become.

View File

@@ -1,30 +1,18 @@
{
"details": {
"artifact_count": 29,
"relationship_count": 113
"artifact_count": 34,
"relationship_count": 129
},
"errors": [],
"metrics": {
"coherence_components": 1.0,
"consistency_cycles": 0.0,
"coverage_ratio": 1.0,
"granularity_entropy": 1.7490339557881076,
"granularity_entropy": 2.4357138959313844,
"redundancy_ratio": 0.0
},
"ok": true,
"warnings": [
{
"code": "missing_optional_concepts_dir",
"path": "infospace/concepts"
},
{
"code": "empty_optional_collection",
"path": "infospace/patterns"
},
{
"code": "empty_optional_collection",
"path": "infospace/mappings"
},
{
"code": "empty_optional_collection",
"path": "infospace/assimilation"

View File

@@ -2,12 +2,15 @@
# By Concept
Concept count: **44**
Concept count: **59**
| Concept | Owner | Source |
| --- | --- | --- |
| Purpose And Consumer Demand Concept Catalog | `concept-catalog/purpose-demand` | `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` |
| Purpose Demand Governance Extension Candidates | `mapping/purpose-demand-governance-candidates` | `artifact_title` |
| InfoTechCanon Access Control Model | `model/access-control` | `artifact_title` |
| InfoTechCanon Data Model | `model/data` | `artifact_title` |
| InfoTechCanon DevSecOps Model | `model/devsecops` | `artifact_title` |
@@ -17,8 +20,20 @@ Concept count: **44**
| InfoTechCanon Network Model | `model/network` | `artifact_title` |
| InfoTechCanon Observability Model | `model/observability` | `artifact_title` |
| InfoTechCanon Organization Model | `model/organization` | `artifact_title` |
| InfoTechCanon Purpose And Demand Model Extension | `model/purpose-demand-extension` | `artifact_title` |
| Purpose | `model/purpose-demand-extension` | `frontmatter.owned_concepts` |
| ConsumerPurpose | `model/purpose-demand-extension` | `frontmatter.owned_concepts` |
| UseCase | `model/purpose-demand-extension` | `frontmatter.owned_concepts` |
| DemandSignal | `model/purpose-demand-extension` | `frontmatter.owned_concepts` |
| ConsumerNeed | `model/purpose-demand-extension` | `frontmatter.owned_concepts` |
| ProducerCapability | `model/purpose-demand-extension` | `frontmatter.owned_concepts` |
| PurposeFit | `model/purpose-demand-extension` | `frontmatter.owned_concepts` |
| ScopePressure | `model/purpose-demand-extension` | `frontmatter.owned_concepts` |
| EvolutionRequest | `model/purpose-demand-extension` | `frontmatter.owned_concepts` |
| InfoTechCanon Security Model | `model/security` | `artifact_title` |
| InfoTechCanon Task Model | `model/task` | `artifact_title` |
| Intent Scope Purposes Pattern | `pattern/intent-scope-purposes` | `artifact_title` |
| IntentScopePurposePattern | `pattern/intent-scope-purposes` | `frontmatter.owned_concepts` |
| Small SaaS System Profile | `profile/small-saas` | `artifact_title` |
| Namespace Per Tenant Control | `small-saas/control/namespace-per-tenant` | `artifact_title` |
| Subscription Ledger Dataset | `small-saas/dataset/subscription-ledger` | `artifact_title` |

View File

@@ -2,8 +2,13 @@
# By Mapping Target
## `concept-catalog/purpose-demand`
- `model/purpose-demand-extension` via `introduces`
## `kernel/itc-core`
- `concept-catalog/purpose-demand` via `conforms_to`
- `kernel/itc-kernel-map` via `maps`
- `model/access-control` via `conforms_to`
- `model/data` via `conforms_to`
@@ -14,6 +19,7 @@
- `model/network` via `conforms_to`
- `model/observability` via `conforms_to`
- `model/organization` via `conforms_to`
- `model/purpose-demand-extension` via `conforms_to`
- `model/security` via `conforms_to`
- `model/task` via `conforms_to`
- `profile/small-saas` via `conforms_to`
@@ -44,9 +50,13 @@
## `model/governance`
- `concept-catalog/purpose-demand` via `uses`
- `kernel/itc-kernel-map` via `maps`
- `mapping/purpose-demand-governance-candidates` via `maps`
- `model/access-control` via `uses`
- `model/data` via `uses`
- `model/purpose-demand-extension` via `extends`
- `pattern/intent-scope-purposes` via `uses`
- `profile/small-saas` via `requires`
- `small-saas/policy/tenant-isolation` via `uses`
- `standard/caring` via `imports`
@@ -54,6 +64,7 @@
## `model/information-space`
- `kernel/itc-kernel-map` via `maps`
- `model/purpose-demand-extension` via `uses`
## `model/landscape`
@@ -87,6 +98,12 @@
- `small-saas/user/ada-admin` via `uses`
- `standard/caring` via `imports`
## `model/purpose-demand-extension`
- `example/consumer-purpose-portfolio` via `illustrates`
- `mapping/purpose-demand-governance-candidates` via `maps`
- `pattern/intent-scope-purposes` via `implements`
## `model/security`
- `kernel/itc-kernel-map` via `maps`
@@ -100,14 +117,22 @@
## `model/task`
- `kernel/itc-kernel-map` via `maps`
- `mapping/purpose-demand-governance-candidates` via `uses`
- `model/observability` via `uses`
- `model/purpose-demand-extension` via `uses`
- `pattern/intent-scope-purposes` via `uses`
- `profile/small-saas` via `requires`
- `small-saas/task/onboard-tenant` via `uses`
- `standard/caring` via `imports`
- `standard/tagging` via `imports`
## `pattern/intent-scope-purposes`
- `example/consumer-purpose-portfolio` via `illustrates`
## `profile/small-saas`
- `example/consumer-purpose-portfolio` via `uses`
- `small-saas/control/namespace-per-tenant` via `instantiates`
- `small-saas/dataset/subscription-ledger` via `instantiates`
- `small-saas/deployment/production` via `instantiates`

View File

@@ -2,34 +2,39 @@
# Import Matrix
| Artifact | `kernel/itc-core` | `kernel/itc-kernel-map` | `model/access-control` | `model/data` | `model/devsecops` | `model/governance` | `model/information-space` | `model/landscape` | `model/network` | `model/observability` | `model/organization` | `model/security` | `model/task` | `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` |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| `kernel/itc-core` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `kernel/itc-kernel-map` | `maps` | | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | | | | | | | | | | | | | | | `maps` | `maps` |
| `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/security` | `conforms_to` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `model/task` | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `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` | `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` | | | | | | | | | | | | | | | | | |

View File

@@ -3,12 +3,17 @@
# Kernel Overview
- Infospace: `canon`
- Artifacts: 29
- Artifacts: 34
## Artifact Kinds
- `concept-catalog`: 1
- `example`: 1
- `kernel`: 2
- `mapping`: 1
- `model`: 11
- `model-extension`: 1
- `pattern`: 1
- `profile`: 1
- `profile-artifact`: 13
- `standard`: 2
@@ -17,17 +22,20 @@
- `access_evidenced_by`: 1
- `changes`: 1
- `conforms_to`: 14
- `conforms_to`: 16
- `constrained_by`: 1
- `deploys`: 1
- `evidenced_by`: 3
- `extends`: 1
- `governed_by`: 2
- `has_access_under`: 1
- `implements`: 1
- `illustrates`: 2
- `implements`: 2
- `imports`: 11
- `instantiates`: 13
- `introduces`: 1
- `isolated_by`: 2
- `maps`: 14
- `maps`: 16
- `member_of`: 1
- `owned_by`: 3
- `part_of`: 1
@@ -36,4 +44,4 @@
- `requires`: 13
- `separates`: 2
- `serves`: 2
- `uses`: 23
- `uses`: 30

View File

@@ -2,12 +2,15 @@
# Repository Tree
File count: **91**
File count: **101**
- `README.md`
- `agent/README.md`
- `agent/briefs/concept-catalog-purpose-demand.md`
- `agent/briefs/example-consumer-purpose-portfolio.md`
- `agent/briefs/kernel-itc-core.md`
- `agent/briefs/kernel-itc-kernel-map.md`
- `agent/briefs/mapping-purpose-demand-governance-candidates.md`
- `agent/briefs/model-access-control.md`
- `agent/briefs/model-data.md`
- `agent/briefs/model-devsecops.md`
@@ -17,8 +20,10 @@ File count: **91**
- `agent/briefs/model-network.md`
- `agent/briefs/model-observability.md`
- `agent/briefs/model-organization.md`
- `agent/briefs/model-purpose-demand-extension.md`
- `agent/briefs/model-security.md`
- `agent/briefs/model-task.md`
- `agent/briefs/pattern-intent-scope-purposes.md`
- `agent/briefs/profile-small-saas.md`
- `agent/briefs/standard-caring.md`
- `agent/briefs/standard-tagging.md`
@@ -33,7 +38,9 @@ File count: **91**
- `agent/templates/consumer-brief.template.md`
- `artifacts/index.yaml`
- `assimilation/README.md`
- `concepts/purpose-demand.yaml`
- `examples/README.md`
- `examples/consumer-purpose-portfolio.yaml`
- `examples/small-saas/README.md`
- `examples/small-saas/demo-commands.yaml`
- `indexes/README.md`
@@ -44,10 +51,12 @@ File count: **91**
- `kernel/InfoTechCanonCore.md`
- `kernel/InfoTechCanonKernelMap.md`
- `mappings/README.md`
- `mappings/purpose-demand-governance-candidates.yaml`
- `models/access-control/InfoTechCanonAccessControlModel.md`
- `models/data/InfoTechCanonDataModel.md`
- `models/devsecops/InfoTechCanonDevSecOpsModel.md`
- `models/governance/InfoTechCanonGovernanceModel.md`
- `models/governance/InfoTechCanonPurposeDemandExtension.md`
- `models/information-space/InfoTechCanonInformationSpaceModel.md`
- `models/landscape/InfoTechCanonLandscapeModel.md`
- `models/network/InfoTechCanonNetworkModel.md`
@@ -56,6 +65,7 @@ File count: **91**
- `models/security/InfoTechCanonSecurityModel.md`
- `models/task/InfoTechCanonTaskModel.md`
- `patterns/README.md`
- `patterns/intent-scope-purposes.md`
- `profiles/README.md`
- `profiles/small-saas/artifacts/control.namespace-per-tenant.yaml`
- `profiles/small-saas/artifacts/dataset.subscription-ledger.yaml`

View File

@@ -9,7 +9,17 @@ import yaml
GENERATED_NOTICE = "<!-- GENERATED by info_tech_canon; do not edit by hand. -->"
RETRIEVAL_ARTIFACT_KINDS = {"kernel", "model", "standard", "profile"}
RETRIEVAL_ARTIFACT_KINDS = {
"concept-catalog",
"example",
"kernel",
"mapping",
"model",
"model-extension",
"pattern",
"profile",
"standard",
}
CONSUMER_BRIEF_IDS = ("user-engine", "railiance-fabric", "repo-scoping")
COMMON_DISTINCTIONS = [
{
@@ -45,10 +55,11 @@ COMMON_DISTINCTIONS = [
{
"id": "intent-scope-purpose",
"title": "Intent vs Scope vs Purpose",
"summary": "Intent captures why an actor wants something, scope bounds what is included, and purpose captures consumer demand or use case pressure on the repo.",
"summary": "Intent captures why a producer or consumer exists, scope bounds producer ownership and promises, and purpose captures consumer demand anchored in consumer intent.",
"source_artifacts": [
"kernel/itc-core",
"model/governance",
"model/purpose-demand-extension",
"pattern/intent-scope-purposes",
"profile/small-saas",
],
},
@@ -634,7 +645,14 @@ def interface_card_template() -> dict[str, Any]:
"owner": "",
"intent": "",
"scope": "",
"purposes": [],
"purposes": [
{
"id": "",
"use_case": "",
"consumer_need": "",
"demand_signals": [],
}
],
},
"canon_surfaces": {
"implemented_profiles": [],
@@ -649,6 +667,12 @@ def interface_card_template() -> dict[str, Any]:
"evidence_required": [],
"known_gaps": [],
},
"purpose_fit": {
"state": "",
"matched_capabilities": [],
"scope_pressure": "",
"recommended_disposition": "",
},
"consumer_needs": {
"current": [],
"requested_extensions": [],
@@ -674,6 +698,8 @@ def _render_consumer_brief_template() -> str:
"- Intent:",
"- Scope:",
"- Purposes:",
"- Use cases:",
"- Demand signals:",
"",
"## Canon Surfaces",
"",
@@ -687,6 +713,13 @@ def _render_consumer_brief_template() -> str:
"- Commands:",
"- Evidence:",
"- Known gaps:",
"",
"## Purpose Fit",
"",
"- State:",
"- Matched producer capabilities:",
"- Scope pressure:",
"- Requested evolution:",
]
return "\n".join(lines).rstrip() + "\n"
@@ -721,6 +754,9 @@ def _render_consumer_brief(consumer_id: str) -> str:
"",
"- `agent/retrieval-index.md`",
"- `agent/templates/canon-interface-card.template.yaml`",
"- `models/governance/InfoTechCanonPurposeDemandExtension.md`",
"- `patterns/intent-scope-purposes.md`",
"- `examples/consumer-purpose-portfolio.yaml`",
"- `profiles/small-saas/profile.yaml`",
"- `views/by-concept.md`",
"",
@@ -788,6 +824,16 @@ def _safe_id(value: str) -> str:
def _summary_for_artifact(artifact: Any) -> str:
if artifact.kind == "profile-artifact":
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 == "example":
return f"Canon-side example artifact: {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":
return f"Profile that constrains canon artifacts for a practical implementation slice: {artifact.title}."
if artifact.kind == "kernel":

View File

@@ -52,6 +52,44 @@ REQUIRED_SCHEMAS = (
"workplan.schema.yaml",
)
RETRIEVAL_BRIEF_KINDS = {
"concept-catalog",
"example",
"kernel",
"mapping",
"model",
"model-extension",
"pattern",
"profile",
"standard",
}
PURPOSE_REQUIRED_ARTIFACT_IDS = {
"concept-catalog/purpose-demand",
"example/consumer-purpose-portfolio",
"mapping/purpose-demand-governance-candidates",
"model/purpose-demand-extension",
"pattern/intent-scope-purposes",
}
PURPOSE_REQUIRED_CONCEPTS = {
"Purpose",
"ConsumerPurpose",
"UseCase",
"DemandSignal",
"ConsumerNeed",
"ProducerCapability",
"PurposeFit",
"ScopePressure",
"EvolutionRequest",
}
PURPOSE_REQUIRED_CONSUMERS = {
"user-engine",
"railiance-fabric",
"repo-scoping",
}
def structural_checks(context: Any) -> dict[str, list[dict[str, Any]]]:
errors: list[dict[str, Any]] = []
@@ -63,6 +101,7 @@ def structural_checks(context: Any) -> dict[str, list[dict[str, Any]]]:
_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)
_check_purpose_demand_assets(context.infospace_root, context.infospace.artifacts, errors)
_check_optional_assets(context.infospace_root, warnings)
return {"errors": errors, "warnings": warnings}
@@ -370,7 +409,7 @@ def _check_agent_assets(
required_brief_artifacts = [
artifact
for artifact in artifacts
if artifact.kind in {"kernel", "model", "standard", "profile"}
if artifact.kind in RETRIEVAL_BRIEF_KINDS
]
for artifact in required_brief_artifacts:
relative = Path("agent") / "briefs" / f"{_safe_id(artifact.id)}.md"
@@ -406,6 +445,83 @@ def _check_agent_assets(
)
def _check_purpose_demand_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(PURPOSE_REQUIRED_ARTIFACT_IDS - artifact_ids):
errors.append(
{
"code": "missing_purpose_demand_artifact",
"artifact_id": artifact_id,
}
)
extension_path = (
infospace_root
/ "models"
/ "governance"
/ "InfoTechCanonPurposeDemandExtension.md"
)
frontmatter = _read_markdown_frontmatter(extension_path, errors)
owned_concepts = set(frontmatter.get("owned_concepts") or [])
for concept in sorted(PURPOSE_REQUIRED_CONCEPTS - owned_concepts):
errors.append(
{
"code": "missing_purpose_demand_owned_concept",
"concept": concept,
"path": str(extension_path),
}
)
concept_catalog = _read_yaml(infospace_root / "concepts" / "purpose-demand.yaml", errors)
if isinstance(concept_catalog, dict):
concepts = concept_catalog.get("concepts") or []
catalog_titles = {
str(concept.get("title"))
for concept in concepts
if isinstance(concept, dict) and concept.get("title")
}
for concept in sorted(PURPOSE_REQUIRED_CONCEPTS - catalog_titles):
errors.append(
{
"code": "missing_purpose_demand_catalog_concept",
"concept": concept,
"path": "infospace/concepts/purpose-demand.yaml",
}
)
examples = _read_yaml(infospace_root / "examples" / "consumer-purpose-portfolio.yaml", errors)
if isinstance(examples, dict):
consumers = examples.get("consumers") or []
consumer_ids = {
str(consumer.get("id"))
for consumer in consumers
if isinstance(consumer, dict) and consumer.get("id")
}
for consumer_id in sorted(PURPOSE_REQUIRED_CONSUMERS - consumer_ids):
errors.append(
{
"code": "missing_consumer_purpose_example",
"consumer": consumer_id,
"path": "infospace/examples/consumer-purpose-portfolio.yaml",
}
)
for consumer in consumers:
if not isinstance(consumer, dict):
continue
if not consumer.get("purposes"):
errors.append(
{
"code": "consumer_purpose_example_without_purposes",
"consumer": consumer.get("id"),
"path": "infospace/examples/consumer-purpose-portfolio.yaml",
}
)
def _artifact_paths_by_path(
infospace_root: Path,
errors: list[dict[str, Any]],

View File

@@ -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"] == 29
assert payload["infospace"]["artifact_count"] == 34
def test_cli_missing_profile_uses_structured_error(capsys) -> None:

View File

@@ -19,10 +19,15 @@ def test_inspect_canon_counts_artifact_kinds() -> None:
assert payload["ok"] is True
assert payload["infospace"]["slug"] == "canon"
assert payload["infospace"]["artifact_count"] == 29
assert payload["infospace"]["artifact_count"] == 34
assert payload["infospace"]["kinds"] == {
"concept-catalog": 1,
"example": 1,
"kernel": 2,
"mapping": 1,
"model": 11,
"model-extension": 1,
"pattern": 1,
"profile": 1,
"profile-artifact": 13,
"standard": 2,
@@ -40,14 +45,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"] == 29
assert payload["details"]["artifact_count"] == 34
def test_graph_exports_relationship_summary() -> None:
payload = artifact_graph()
assert payload["ok"] is True
assert payload["graph"]["node_count"] == 29
assert payload["graph"]["node_count"] == 34
assert payload["graph"]["edge_count"] > 15
@@ -87,6 +92,10 @@ def test_generators_write_expected_assets(tmp_path) -> None:
assert (root / "agent" / "retrieval-index.yaml").is_file()
assert (root / "agent" / "retrieval-index.json").is_file()
assert (root / "agent" / "briefs" / "model-access-control.md").is_file()
assert (
root / "agent" / "briefs" / "model-purpose-demand-extension.md"
).is_file()
assert (root / "agent" / "briefs" / "pattern-intent-scope-purposes.md").is_file()
assert (
root / "agent" / "templates" / "canon-interface-card.template.yaml"
).is_file()

View File

@@ -4,7 +4,7 @@ type: workplan
title: "Purpose And Demand Model Extension"
domain: canon
repo: info-tech-canon
status: proposed
status: finished
priority: high
created: "2026-05-23"
updated: "2026-05-23"
@@ -47,7 +47,7 @@ PURPOSES
```task
id: ITC-WP-0006-T01
status: todo
status: done
priority: high
state_hub_task_id: "654ce87f-2967-4998-8528-3ec6db31ff1c"
```
@@ -68,7 +68,7 @@ state_hub_task_id: "654ce87f-2967-4998-8528-3ec6db31ff1c"
```task
id: ITC-WP-0006-T02
status: todo
status: done
priority: high
state_hub_task_id: "9fb752da-3daa-4f7b-96d4-3887673e68c2"
```
@@ -82,7 +82,7 @@ state_hub_task_id: "9fb752da-3daa-4f7b-96d4-3887673e68c2"
```task
id: ITC-WP-0006-T03
status: todo
status: done
priority: high
state_hub_task_id: "f2ec2951-fe90-48c6-acf2-35e0b7183513"
```
@@ -96,7 +96,7 @@ state_hub_task_id: "f2ec2951-fe90-48c6-acf2-35e0b7183513"
```task
id: ITC-WP-0006-T04
status: todo
status: done
priority: medium
state_hub_task_id: "5cfd80ee-3b04-4389-862b-d7913e953076"
```
@@ -110,3 +110,14 @@ state_hub_task_id: "5cfd80ee-3b04-4389-862b-d7913e953076"
- PURPOSES is defined enough to use in the first consumer evaluations.
- The relation between INTENT, SCOPE, and PURPOSES is explicit.
- Governance model extension candidates are documented for review.
## Implementation Notes
- Added a candidate Purpose and Demand model extension under Governance.
- Added a structured concept catalog for Purpose, ConsumerPurpose, UseCase,
DemandSignal, ConsumerNeed, ProducerCapability, PurposeFit, ScopePressure,
and EvolutionRequest.
- Added the INTENT/SCOPE/PURPOSES pattern and governance extension mapping.
- Added canon-side examples for user-engine, railiance-fabric, and repo-scoping.
- Extended validation and retrieval generation so the new PURPOSES assets are
indexed, briefed, and checked.

View File

@@ -83,7 +83,7 @@ workplans:
- id: ITC-WP-0006
title: Purpose And Demand Model Extension
status: proposed
status: finished
priority: high
path: workplans/ITC-WP-0006-purpose-and-demand-model.md
depends_on: