feat(ITC-WP-0016): establish PracticePattern language
Assistant: codex Assistant-Model: gpt-5.6-sol Assistant-Session: 01a025c2-407a-7a32-b40a-f37a52f03f62
This commit is contained in:
parent
5e2435aaf9
commit
149d2ced70
27 changed files with 1119 additions and 99 deletions
|
|
@ -0,0 +1,33 @@
|
|||
---
|
||||
id: agent-brief/practice-pattern-interface-deprecation-strangler
|
||||
artifact_id: practice-pattern/interface-deprecation-strangler
|
||||
source_path: patterns/InterfaceDeprecationStrangler.md
|
||||
source_kind: practice-pattern
|
||||
generated: true
|
||||
---
|
||||
|
||||
<!-- GENERATED by info_tech_canon; do not edit by hand. -->
|
||||
|
||||
# Agent Brief: InterfaceDeprecationStrangler
|
||||
|
||||
- Artifact ID: `practice-pattern/interface-deprecation-strangler`
|
||||
- Kind: `practice-pattern`
|
||||
- Canonical path: `patterns/InterfaceDeprecationStrangler.md`
|
||||
- Full source: `patterns/InterfaceDeprecationStrangler.md`
|
||||
- Summary: Reusable canon PracticePattern: InterfaceDeprecationStrangler.
|
||||
|
||||
## Retrieval Hints
|
||||
|
||||
Imports and anchors:
|
||||
- `model/devsecops`
|
||||
- `model/governance`
|
||||
- `model/observability`
|
||||
- `scheme/practice-pattern`
|
||||
|
||||
## Owned Concepts
|
||||
|
||||
- `InterfaceDeprecationStrangler`
|
||||
|
||||
## Related Distinctions
|
||||
|
||||
- **Interface deprecation vs retirement vs removal**: Deprecation guides and observes callers, retirement ends legacy behavior while retaining a metered tombstone, and removal deletes that tombstone only after the evidence gate passes.
|
||||
32
infospace/agent/briefs/scheme-practice-pattern.md
Normal file
32
infospace/agent/briefs/scheme-practice-pattern.md
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
---
|
||||
id: agent-brief/scheme-practice-pattern
|
||||
artifact_id: scheme/practice-pattern
|
||||
source_path: patterns/PracticePatternScheme.md
|
||||
source_kind: practice-pattern-scheme
|
||||
generated: true
|
||||
---
|
||||
|
||||
<!-- GENERATED by info_tech_canon; do not edit by hand. -->
|
||||
|
||||
# Agent Brief: PracticePattern Scheme
|
||||
|
||||
- Artifact ID: `scheme/practice-pattern`
|
||||
- Kind: `practice-pattern-scheme`
|
||||
- Canonical path: `patterns/PracticePatternScheme.md`
|
||||
- Full source: `patterns/PracticePatternScheme.md`
|
||||
- Summary: Contract for canon PracticePattern artifacts: PracticePattern Scheme.
|
||||
|
||||
## Retrieval Hints
|
||||
|
||||
Imports and anchors:
|
||||
- `kernel/itc-core`
|
||||
|
||||
## Owned Concepts
|
||||
|
||||
- `PatternLanguage`
|
||||
- `PracticePattern`
|
||||
- `PracticePattern Scheme`
|
||||
|
||||
## Related Distinctions
|
||||
|
||||
No common distinction is anchored directly on this artifact.
|
||||
|
|
@ -5,8 +5,8 @@
|
|||
This brief summarizes the current canon service surface for agents.
|
||||
|
||||
- Infospace slug: `canon`
|
||||
- Artifact count: 68
|
||||
- Retrieval index items: 68
|
||||
- Artifact count: 70
|
||||
- Retrieval index items: 70
|
||||
- Primary confidence command: `make validate`
|
||||
- Refresh generated indexes and views with: `make index`
|
||||
- Refresh agent briefs and interface templates with: `make agent-briefs`
|
||||
|
|
@ -29,6 +29,7 @@ This brief summarizes the current canon service surface for agents.
|
|||
|
||||
## Common Distinctions
|
||||
|
||||
- **Interface deprecation vs retirement vs removal**: Deprecation guides and observes callers, retirement ends legacy behavior while retaining a metered tombstone, and removal deletes that tombstone only after the evidence gate passes.
|
||||
- **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.
|
||||
|
|
|
|||
|
|
@ -1,5 +1,13 @@
|
|||
{
|
||||
"common_distinctions": [
|
||||
{
|
||||
"id": "interface-deprecation-retirement-removal",
|
||||
"source_artifacts": [
|
||||
"practice-pattern/interface-deprecation-strangler"
|
||||
],
|
||||
"summary": "Deprecation guides and observes callers, retirement ends legacy behavior while retaining a metered tombstone, and removal deletes that tombstone only after the evidence gate passes.",
|
||||
"title": "Interface deprecation vs retirement vs removal"
|
||||
},
|
||||
{
|
||||
"id": "actor-subject-principal",
|
||||
"source_artifacts": [
|
||||
|
|
@ -43,7 +51,7 @@
|
|||
}
|
||||
],
|
||||
"infospace": "canon",
|
||||
"item_count": 68,
|
||||
"item_count": 70,
|
||||
"items": [
|
||||
{
|
||||
"canonical_path": "assimilation/it-capability-canon/ASSIMILATION.md",
|
||||
|
|
@ -1523,6 +1531,42 @@
|
|||
"title": "Intent Scope Purposes Pattern",
|
||||
"warnings": []
|
||||
},
|
||||
{
|
||||
"canonical_path": "patterns/InterfaceDeprecationStrangler.md",
|
||||
"id": "practice-pattern/interface-deprecation-strangler",
|
||||
"imports": [
|
||||
"model/devsecops",
|
||||
"model/governance",
|
||||
"model/observability",
|
||||
"scheme/practice-pattern"
|
||||
],
|
||||
"kind": "practice-pattern",
|
||||
"owned_concepts": [
|
||||
"InterfaceDeprecationStrangler"
|
||||
],
|
||||
"relationships": [
|
||||
{
|
||||
"target": "scheme/practice-pattern",
|
||||
"type": "conforms_to"
|
||||
},
|
||||
{
|
||||
"target": "model/governance",
|
||||
"type": "uses"
|
||||
},
|
||||
{
|
||||
"target": "model/observability",
|
||||
"type": "uses"
|
||||
},
|
||||
{
|
||||
"target": "model/devsecops",
|
||||
"type": "uses"
|
||||
}
|
||||
],
|
||||
"source_path": "patterns/InterfaceDeprecationStrangler.md",
|
||||
"summary": "Reusable canon PracticePattern: InterfaceDeprecationStrangler.",
|
||||
"title": "InterfaceDeprecationStrangler",
|
||||
"warnings": []
|
||||
},
|
||||
{
|
||||
"canonical_path": "assimilation/intake-and-assimilation-practice.md",
|
||||
"id": "practice/intake-and-assimilation",
|
||||
|
|
@ -1891,6 +1935,29 @@
|
|||
"title": "Consumer Alignment Workplan Template",
|
||||
"warnings": []
|
||||
},
|
||||
{
|
||||
"canonical_path": "patterns/PracticePatternScheme.md",
|
||||
"id": "scheme/practice-pattern",
|
||||
"imports": [
|
||||
"kernel/itc-core"
|
||||
],
|
||||
"kind": "practice-pattern-scheme",
|
||||
"owned_concepts": [
|
||||
"PatternLanguage",
|
||||
"PracticePattern",
|
||||
"PracticePattern Scheme"
|
||||
],
|
||||
"relationships": [
|
||||
{
|
||||
"target": "kernel/itc-core",
|
||||
"type": "conforms_to"
|
||||
}
|
||||
],
|
||||
"source_path": "patterns/PracticePatternScheme.md",
|
||||
"summary": "Contract for canon PracticePattern artifacts: PracticePattern Scheme.",
|
||||
"title": "PracticePattern Scheme",
|
||||
"warnings": []
|
||||
},
|
||||
{
|
||||
"canonical_path": "profiles/small-saas/artifacts/control.namespace-per-tenant.yaml",
|
||||
"id": "small-saas/control/namespace-per-tenant",
|
||||
|
|
|
|||
|
|
@ -4,10 +4,11 @@
|
|||
|
||||
Schema: `info-tech-canon.retrieval-index.v1`
|
||||
Infospace: `canon`
|
||||
Items: **68**
|
||||
Items: **70**
|
||||
|
||||
## Common Distinctions
|
||||
|
||||
- **Interface deprecation vs retirement vs removal**: Deprecation guides and observes callers, retirement ends legacy behavior while retaining a metered tombstone, and removal deletes that tombstone only after the evidence gate passes. Sources: `practice-pattern/interface-deprecation-strangler`
|
||||
- **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`
|
||||
|
|
@ -455,6 +456,16 @@ Items: **68**
|
|||
- Imports and anchors: `model/governance`, `model/task`
|
||||
- Owned concepts: `Intent Scope Purposes Pattern`, `IntentScopePurposePattern`
|
||||
|
||||
### InterfaceDeprecationStrangler
|
||||
|
||||
- ID: `practice-pattern/interface-deprecation-strangler`
|
||||
- Kind: `practice-pattern`
|
||||
- Canonical path: `patterns/InterfaceDeprecationStrangler.md`
|
||||
- Source path: `patterns/InterfaceDeprecationStrangler.md`
|
||||
- Summary: Reusable canon PracticePattern: InterfaceDeprecationStrangler.
|
||||
- Imports and anchors: `model/devsecops`, `model/governance`, `model/observability`, `scheme/practice-pattern`
|
||||
- Owned concepts: `InterfaceDeprecationStrangler`
|
||||
|
||||
### Intake and Assimilation Practice
|
||||
|
||||
- ID: `practice/intake-and-assimilation`
|
||||
|
|
@ -535,6 +546,16 @@ Items: **68**
|
|||
- Imports and anchors: `model/purpose-demand-extension`, `model/task`
|
||||
- Owned concepts: `Consumer Alignment Workplan Template`
|
||||
|
||||
### PracticePattern Scheme
|
||||
|
||||
- ID: `scheme/practice-pattern`
|
||||
- Kind: `practice-pattern-scheme`
|
||||
- Canonical path: `patterns/PracticePatternScheme.md`
|
||||
- Source path: `patterns/PracticePatternScheme.md`
|
||||
- Summary: Contract for canon PracticePattern artifacts: PracticePattern Scheme.
|
||||
- Imports and anchors: `kernel/itc-core`
|
||||
- Owned concepts: `PatternLanguage`, `PracticePattern`, `PracticePattern Scheme`
|
||||
|
||||
### Namespace Per Tenant Control
|
||||
|
||||
- ID: `small-saas/control/namespace-per-tenant`
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
schema: info-tech-canon.retrieval-index.v1
|
||||
infospace: canon
|
||||
item_count: 68
|
||||
item_count: 70
|
||||
items:
|
||||
- id: assimilation/it-capability-canon
|
||||
kind: assimilation
|
||||
|
|
@ -973,6 +973,29 @@ items:
|
|||
- type: uses
|
||||
target: model/task
|
||||
warnings: []
|
||||
- id: practice-pattern/interface-deprecation-strangler
|
||||
kind: practice-pattern
|
||||
title: InterfaceDeprecationStrangler
|
||||
canonical_path: patterns/InterfaceDeprecationStrangler.md
|
||||
source_path: patterns/InterfaceDeprecationStrangler.md
|
||||
summary: 'Reusable canon PracticePattern: InterfaceDeprecationStrangler.'
|
||||
owned_concepts:
|
||||
- InterfaceDeprecationStrangler
|
||||
imports:
|
||||
- model/devsecops
|
||||
- model/governance
|
||||
- model/observability
|
||||
- scheme/practice-pattern
|
||||
relationships:
|
||||
- type: conforms_to
|
||||
target: scheme/practice-pattern
|
||||
- type: uses
|
||||
target: model/governance
|
||||
- type: uses
|
||||
target: model/observability
|
||||
- type: uses
|
||||
target: model/devsecops
|
||||
warnings: []
|
||||
- id: practice/intake-and-assimilation
|
||||
kind: practice
|
||||
title: Intake and Assimilation Practice
|
||||
|
|
@ -1210,6 +1233,22 @@ items:
|
|||
- type: uses
|
||||
target: model/purpose-demand-extension
|
||||
warnings: []
|
||||
- id: scheme/practice-pattern
|
||||
kind: practice-pattern-scheme
|
||||
title: PracticePattern Scheme
|
||||
canonical_path: patterns/PracticePatternScheme.md
|
||||
source_path: patterns/PracticePatternScheme.md
|
||||
summary: 'Contract for canon PracticePattern artifacts: PracticePattern Scheme.'
|
||||
owned_concepts:
|
||||
- PatternLanguage
|
||||
- PracticePattern
|
||||
- PracticePattern Scheme
|
||||
imports:
|
||||
- kernel/itc-core
|
||||
relationships:
|
||||
- type: conforms_to
|
||||
target: kernel/itc-core
|
||||
warnings: []
|
||||
- id: small-saas/control/namespace-per-tenant
|
||||
kind: profile-artifact
|
||||
title: Namespace Per Tenant Control
|
||||
|
|
@ -1584,6 +1623,13 @@ items:
|
|||
target: model/task
|
||||
warnings: []
|
||||
common_distinctions:
|
||||
- id: interface-deprecation-retirement-removal
|
||||
title: Interface deprecation vs retirement vs removal
|
||||
summary: Deprecation guides and observes callers, retirement ends legacy behavior
|
||||
while retaining a metered tombstone, and removal deletes that tombstone only after
|
||||
the evidence gate passes.
|
||||
source_artifacts:
|
||||
- practice-pattern/interface-deprecation-strangler
|
||||
- id: actor-subject-principal
|
||||
title: Actor vs Subject vs Principal
|
||||
summary: Use actor for the acting entity in a context, subject for the entity a
|
||||
|
|
|
|||
|
|
@ -609,6 +609,33 @@ artifacts:
|
|||
target: model/governance
|
||||
- type: uses
|
||||
target: model/task
|
||||
- id: scheme/practice-pattern
|
||||
path: patterns/PracticePatternScheme.md
|
||||
kind: practice-pattern-scheme
|
||||
title: PracticePattern Scheme
|
||||
provenance:
|
||||
placement: authored
|
||||
placement_workplan: ITC-WP-0016
|
||||
relationships:
|
||||
- type: conforms_to
|
||||
target: kernel/itc-core
|
||||
- id: practice-pattern/interface-deprecation-strangler
|
||||
path: patterns/InterfaceDeprecationStrangler.md
|
||||
kind: practice-pattern
|
||||
title: InterfaceDeprecationStrangler
|
||||
provenance:
|
||||
placement: generalized
|
||||
placement_workplan: ITC-WP-0016
|
||||
known_use: state-hub/docs/workplan-terminology-transition.md
|
||||
relationships:
|
||||
- type: conforms_to
|
||||
target: scheme/practice-pattern
|
||||
- type: uses
|
||||
target: model/governance
|
||||
- type: uses
|
||||
target: model/observability
|
||||
- type: uses
|
||||
target: model/devsecops
|
||||
- id: mapping/purpose-demand-governance-candidates
|
||||
path: mappings/purpose-demand-governance-candidates.yaml
|
||||
kind: mapping
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
root: infospace
|
||||
file_count: 183
|
||||
file_count: 190
|
||||
files:
|
||||
- path: README.md
|
||||
directory: .
|
||||
|
|
@ -22,6 +22,9 @@ files:
|
|||
- path: agent/briefs/benchmark-caring-kubernetes-rbac.md
|
||||
directory: agent/briefs
|
||||
name: benchmark-caring-kubernetes-rbac.md
|
||||
- path: agent/briefs/catalog-attribute-value-types.md
|
||||
directory: agent/briefs
|
||||
name: catalog-attribute-value-types.md
|
||||
- path: agent/briefs/catalog-evidence-basis.md
|
||||
directory: agent/briefs
|
||||
name: catalog-evidence-basis.md
|
||||
|
|
@ -82,6 +85,9 @@ files:
|
|||
- path: agent/briefs/kernel-itc-kernel-map.md
|
||||
directory: agent/briefs
|
||||
name: kernel-itc-kernel-map.md
|
||||
- path: agent/briefs/mapping-capability-anchors.md
|
||||
directory: agent/briefs
|
||||
name: mapping-capability-anchors.md
|
||||
- path: agent/briefs/mapping-purpose-demand-governance-candidates.md
|
||||
directory: agent/briefs
|
||||
name: mapping-purpose-demand-governance-candidates.md
|
||||
|
|
@ -127,6 +133,9 @@ files:
|
|||
- path: agent/briefs/pattern-intent-scope-purposes.md
|
||||
directory: agent/briefs
|
||||
name: pattern-intent-scope-purposes.md
|
||||
- path: agent/briefs/practice-pattern-interface-deprecation-strangler.md
|
||||
directory: agent/briefs
|
||||
name: practice-pattern-interface-deprecation-strangler.md
|
||||
- path: agent/briefs/profile-small-saas.md
|
||||
directory: agent/briefs
|
||||
name: profile-small-saas.md
|
||||
|
|
@ -148,6 +157,9 @@ files:
|
|||
- path: agent/briefs/review-kit-alignment.md
|
||||
directory: agent/briefs
|
||||
name: review-kit-alignment.md
|
||||
- path: agent/briefs/scheme-practice-pattern.md
|
||||
directory: agent/briefs
|
||||
name: scheme-practice-pattern.md
|
||||
- path: agent/briefs/standard-caring.md
|
||||
directory: agent/briefs
|
||||
name: standard-caring.md
|
||||
|
|
@ -394,6 +406,12 @@ files:
|
|||
- path: models/task/InfoTechCanonTaskModel.md
|
||||
directory: models/task
|
||||
name: InfoTechCanonTaskModel.md
|
||||
- path: patterns/InterfaceDeprecationStrangler.md
|
||||
directory: patterns
|
||||
name: InterfaceDeprecationStrangler.md
|
||||
- path: patterns/PracticePatternScheme.md
|
||||
directory: patterns
|
||||
name: PracticePatternScheme.md
|
||||
- path: patterns/README.md
|
||||
directory: patterns
|
||||
name: README.md
|
||||
|
|
@ -484,6 +502,9 @@ files:
|
|||
- path: schemas/mapping.schema.yaml
|
||||
directory: schemas
|
||||
name: mapping.schema.yaml
|
||||
- path: schemas/practice-pattern.schema.yaml
|
||||
directory: schemas
|
||||
name: practice-pattern.schema.yaml
|
||||
- path: schemas/profile.schema.yaml
|
||||
directory: schemas
|
||||
name: profile.schema.yaml
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
concept_count: 110
|
||||
concept_count: 114
|
||||
concepts:
|
||||
- concept: "Assimilation \u2014 IT Capability Canon (ITCC) v0.1"
|
||||
owner: assimilation/it-capability-canon
|
||||
|
|
@ -268,6 +268,10 @@ concepts:
|
|||
owner: pattern/intent-scope-purposes
|
||||
path: patterns/intent-scope-purposes.md
|
||||
source: frontmatter.owned_concepts
|
||||
- concept: InterfaceDeprecationStrangler
|
||||
owner: practice-pattern/interface-deprecation-strangler
|
||||
path: patterns/InterfaceDeprecationStrangler.md
|
||||
source: artifact_title
|
||||
- concept: Intake and Assimilation Practice
|
||||
owner: practice/intake-and-assimilation
|
||||
path: assimilation/intake-and-assimilation-practice.md
|
||||
|
|
@ -300,6 +304,18 @@ concepts:
|
|||
owner: review-kit/alignment/workplan-template
|
||||
path: agent/templates/consumer-alignment-workplan.template.md
|
||||
source: artifact_title
|
||||
- concept: PracticePattern Scheme
|
||||
owner: scheme/practice-pattern
|
||||
path: patterns/PracticePatternScheme.md
|
||||
source: artifact_title
|
||||
- concept: PracticePattern
|
||||
owner: scheme/practice-pattern
|
||||
path: patterns/PracticePatternScheme.md
|
||||
source: frontmatter.owned_concepts
|
||||
- concept: PatternLanguage
|
||||
owner: scheme/practice-pattern
|
||||
path: patterns/PracticePatternScheme.md
|
||||
source: frontmatter.owned_concepts
|
||||
- concept: Namespace Per Tenant Control
|
||||
owner: small-saas/control/namespace-per-tenant
|
||||
path: profiles/small-saas/artifacts/control.namespace-per-tenant.yaml
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ artifacts:
|
|||
- model/security
|
||||
- model/task
|
||||
- pattern/intent-scope-purposes
|
||||
- practice-pattern/interface-deprecation-strangler
|
||||
- practice/intake-and-assimilation
|
||||
- profile/small-saas
|
||||
- review-kit/alignment
|
||||
|
|
@ -51,6 +52,7 @@ artifacts:
|
|||
- review-kit/alignment/scorecard
|
||||
- review-kit/alignment/workflow
|
||||
- review-kit/alignment/workplan-template
|
||||
- scheme/practice-pattern
|
||||
- small-saas/control/namespace-per-tenant
|
||||
- small-saas/dataset/subscription-ledger
|
||||
- small-saas/deployment/production
|
||||
|
|
@ -496,6 +498,16 @@ rows:
|
|||
- implements
|
||||
model/task:
|
||||
- uses
|
||||
- artifact: practice-pattern/interface-deprecation-strangler
|
||||
targets:
|
||||
model/devsecops:
|
||||
- uses
|
||||
model/governance:
|
||||
- uses
|
||||
model/observability:
|
||||
- uses
|
||||
scheme/practice-pattern:
|
||||
- conforms_to
|
||||
- artifact: practice/intake-and-assimilation
|
||||
targets:
|
||||
kernel/itc-core:
|
||||
|
|
@ -610,6 +622,10 @@ rows:
|
|||
- uses
|
||||
review-kit/alignment:
|
||||
- part_of
|
||||
- artifact: scheme/practice-pattern
|
||||
targets:
|
||||
kernel/itc-core:
|
||||
- conforms_to
|
||||
- artifact: small-saas/control/namespace-per-tenant
|
||||
targets:
|
||||
model/security:
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ disciplines:
|
|||
path: standards/repository-layout/InfoTechCanonRepositoryLayoutStandard.md
|
||||
schemas:
|
||||
standard: schemas/standard.schema.yaml
|
||||
practice-pattern: schemas/practice-pattern.schema.yaml
|
||||
concept: schemas/concept.schema.yaml
|
||||
mapping: schemas/mapping.schema.yaml
|
||||
profile: schemas/profile.schema.yaml
|
||||
|
|
|
|||
267
infospace/patterns/InterfaceDeprecationStrangler.md
Normal file
267
infospace/patterns/InterfaceDeprecationStrangler.md
Normal file
|
|
@ -0,0 +1,267 @@
|
|||
---
|
||||
id: practice-pattern/interface-deprecation-strangler
|
||||
title: InterfaceDeprecationStrangler
|
||||
type: practice-pattern
|
||||
scheme: practice-pattern/0.1
|
||||
status: active
|
||||
version: "0.1"
|
||||
summary: Replace an interface gradually while metering legacy use, guiding callers, and gating removal on evidence.
|
||||
aliases:
|
||||
- Metered Interface Strangler
|
||||
- Evidence-Gated Interface Deprecation
|
||||
uses:
|
||||
- model/governance
|
||||
- model/observability
|
||||
- model/devsecops
|
||||
related_patterns: []
|
||||
known_uses:
|
||||
- state-hub-workstream-to-workplan-transition
|
||||
---
|
||||
|
||||
# InterfaceDeprecationStrangler
|
||||
|
||||
## Intent
|
||||
|
||||
Phase out an old interface without guessing whether callers have migrated:
|
||||
introduce and verify its successor, make deprecation visible to callers, meter
|
||||
legacy use, progressively restrict the old behavior, and remove its final
|
||||
tombstone only when evidence satisfies an explicit retirement policy.
|
||||
|
||||
## Context
|
||||
|
||||
Use this pattern when a service, library, event stream, command, file format, or
|
||||
other integration surface must evolve while some callers may still depend on
|
||||
the old interface. Caller inventory is incomplete, release cycles are not
|
||||
coordinated, or removal has enough operational risk that absence of complaints
|
||||
is insufficient evidence.
|
||||
|
||||
The old and new interfaces may coexist briefly, or the old interface may
|
||||
already reject requests while still receiving attempts.
|
||||
|
||||
## Problem
|
||||
|
||||
An interface cannot safely remain forever, but deleting it on a planned date
|
||||
can break unknown callers. Keeping it indefinitely also has a cost: duplicated
|
||||
logic, ambiguity, security exposure, testing burden, and pressure to keep
|
||||
building on an obsolete contract.
|
||||
|
||||
A published deprecation notice alone proves neither that callers received it
|
||||
nor that they migrated. Raw request totals alone are also ambiguous: a request
|
||||
successfully served by compatibility code is different from an attempt rejected
|
||||
by a retired endpoint.
|
||||
|
||||
## Forces
|
||||
|
||||
- Callers need enough continuity to migrate without synchronized releases.
|
||||
- Maintainers need a bounded path to removal rather than permanent dual support.
|
||||
- Unknown callers cannot be coordinated directly until telemetry identifies
|
||||
them.
|
||||
- Caller guidance must be available at the point of use, not only in release
|
||||
notes.
|
||||
- Privacy and security constrain how caller identity and request data are
|
||||
recorded.
|
||||
- Infrequent but important callers can be absent from a short review window.
|
||||
- A replacement that exists but has not been verified is not a safe successor.
|
||||
- Once behavior returns a terminal response, attempted use still matters even
|
||||
though no legacy work was successfully performed.
|
||||
|
||||
## Solution
|
||||
|
||||
Therefore, wrap the interface transition in an evidence-producing strangler:
|
||||
|
||||
1. Register the legacy interface, its owner, successor, lifecycle state, and
|
||||
applicable hold or retirement policy.
|
||||
2. Implement and verify the successor before restricting the legacy path.
|
||||
3. Instrument the legacy boundary and communicate deprecation plus an actionable
|
||||
successor reference on every use where the protocol permits it.
|
||||
4. Record privacy-bounded usage evidence with enough outcome information to
|
||||
distinguish served legacy traffic, redirects, terminal rejection, and
|
||||
failures.
|
||||
5. Move through explicit stages from compatibility to terminal retirement.
|
||||
6. Keep a lightweight metered tombstone after terminal retirement so late
|
||||
attempts reveal remaining callers.
|
||||
7. Remove the tombstone only after the configured evidence gate passes and no
|
||||
manual hold remains.
|
||||
|
||||
The meter and caller guidance are part of the interface lifecycle, not optional
|
||||
observability added after the fact.
|
||||
|
||||
## Structure
|
||||
|
||||
```text
|
||||
Caller
|
||||
-> Legacy Boundary
|
||||
-> deprecation and successor guidance
|
||||
-> outcome-aware usage meter
|
||||
-> compatibility implementation OR terminal response
|
||||
-> Successor Interface
|
||||
|
||||
Interface Registry
|
||||
-> owner + lifecycle + successor + verification + holds
|
||||
|
||||
Review Activity
|
||||
-> usage windows + last-seen + caller attribution + outcome
|
||||
-> migration action OR stage advance OR continued hold
|
||||
```
|
||||
|
||||
The registry carries policy and identity. The meter carries observations. The
|
||||
review activity turns both into a decision; it must not infer removal from a
|
||||
calendar date alone.
|
||||
|
||||
## Dynamics
|
||||
|
||||
### Stage 1 — Announce and observe
|
||||
|
||||
Serve the old behavior, emit protocol-appropriate deprecation and successor
|
||||
information, and establish a usage baseline. Contact attributable callers.
|
||||
|
||||
### Stage 2 — Migrate and narrow
|
||||
|
||||
Move owned callers to the successor. Stop adding capabilities to the legacy
|
||||
surface. Narrow compatibility where doing so is reversible and observable.
|
||||
|
||||
### Stage 3 — Retire behavior, retain the tombstone
|
||||
|
||||
Return an explicit terminal result such as HTTP `410 Gone`, a typed CLI error,
|
||||
or a rejected event subject. Continue returning successor guidance and metering
|
||||
attempts.
|
||||
|
||||
At this stage a count means attempted use of a retired interface, not successful
|
||||
legacy traffic. Dashboards and evidence must preserve that distinction.
|
||||
|
||||
### Stage 4 — Remove the tombstone
|
||||
|
||||
Remove routing and instrumentation only after the successor is verified, no
|
||||
hold remains, and the evidence policy's quiet period has elapsed. Preserve the
|
||||
registry history and decision evidence.
|
||||
|
||||
Any new use can stop or reverse a stage transition when the cost of doing so is
|
||||
lower than breaking the caller.
|
||||
|
||||
## Invariants
|
||||
|
||||
1. Every legacy interface has an owner and an actionable successor reference.
|
||||
2. The successor is verified before legacy behavior is terminally retired.
|
||||
3. Caller-facing deprecation information travels on the legacy interaction
|
||||
where the protocol supports it.
|
||||
4. Metering failure does not silently turn absence of evidence into evidence of
|
||||
absence.
|
||||
5. Successful legacy service and rejected post-retirement attempts are not
|
||||
reported as the same outcome.
|
||||
6. A manual hold prevents automatic stage advancement.
|
||||
7. Quiet periods account for expected caller cadence and historical volume.
|
||||
8. Irreversible removal has retained evidence, rationale, and rollback or
|
||||
recovery guidance appropriate to its risk.
|
||||
9. Telemetry does not capture credentials or unnecessary request payloads.
|
||||
|
||||
## Evidence
|
||||
|
||||
The practice should produce:
|
||||
|
||||
- a registry record with interface identity, owner, successor, lifecycle state,
|
||||
replacement verification, and holds;
|
||||
- usage totals and bounded review windows;
|
||||
- last-seen time and, where allowed, tenant/user/component or equivalent caller
|
||||
attribution;
|
||||
- request outcome or an unambiguous derivation from the interface lifecycle
|
||||
stage;
|
||||
- evidence that owned callers use the successor;
|
||||
- the retirement threshold and its result; and
|
||||
- the decision that advanced, paused, or reversed the transition.
|
||||
|
||||
Quiet-window policy should reflect use cadence. A high-volume interface that
|
||||
has been quiet for one week may require a longer last-seen threshold than an
|
||||
interface that was used once. Evidence should say why an interface is or is not
|
||||
a retirement candidate rather than emitting only a boolean.
|
||||
|
||||
## Consequences
|
||||
|
||||
The organization gains a repeatable migration language, direct discovery of
|
||||
unknown callers, and an evidence-backed point at which compatibility can end.
|
||||
Late use becomes actionable information instead of a surprise outage.
|
||||
|
||||
The cost is temporary duplicate surface area, registry and telemetry storage,
|
||||
review ownership, privacy design, and discipline around outcome semantics. A
|
||||
tombstone has operating cost, but it is much smaller and safer than preserving
|
||||
the full legacy implementation.
|
||||
|
||||
## Failure Modes
|
||||
|
||||
- **NoticeOnly:** publish a deprecation date without observing real use.
|
||||
- **MeterWithoutMeaning:** count requests without distinguishing served traffic
|
||||
from rejected attempts.
|
||||
- **PermanentCompatibility:** meter forever but never define stage gates.
|
||||
- **CalendarRemoval:** delete on a date despite contrary usage evidence.
|
||||
- **UnverifiedSuccessor:** retire the old path because a replacement merely
|
||||
exists.
|
||||
- **SilentTombstone:** return a terminal response without successor guidance.
|
||||
- **TelemetryBlindness:** treat a broken meter as a quiet interface.
|
||||
- **IdentityOverreach:** collect payloads or personal data when coarse component
|
||||
attribution would suffice.
|
||||
- **ShortWindowConfidence:** miss monthly or quarterly callers by using only a
|
||||
short quiet window.
|
||||
|
||||
## When Not to Use
|
||||
|
||||
Do not use the full pattern for an interface that was never released, has a
|
||||
complete and controlled caller set that can be changed atomically, or must be
|
||||
disabled immediately because continued exposure is an unacceptable security or
|
||||
safety risk. In the last case, retire first and use the metered tombstone and
|
||||
recovery guidance only where they do not preserve the vulnerability.
|
||||
|
||||
## Known Uses
|
||||
|
||||
### State Hub workstream-to-workplan transition
|
||||
|
||||
State Hub replaced legacy `workstream` REST terminology with `workplan`
|
||||
interfaces. Its legacy registry records interface identity, owner, replacement,
|
||||
verification, holds, and usage buckets. Legacy responses carry deprecation,
|
||||
sunset, replacement, and successor-link metadata.
|
||||
|
||||
`GET /workstreams/{workstream_id}` is at Stage 3: it returns `410 Gone`, directs
|
||||
the caller to `GET /workplans/{workplan_id}`, and records the attempt. The weekly
|
||||
review therefore exposes remaining callers without implying that the retired
|
||||
request succeeded. Retirement candidacy combines review-window traffic,
|
||||
last-seen time, replacement verification, manual holds, and a quiet-period
|
||||
ladder scaled by historical call volume.
|
||||
|
||||
Implementation references:
|
||||
|
||||
- repository: `state-hub`;
|
||||
- compatibility behavior: `api/services/legacy_compat.py`;
|
||||
- known route: `api/routers/workstreams.py`;
|
||||
- evidence policy: `api/services/legacy_meter.py`; and
|
||||
- operational description: `docs/workplan-terminology-transition.md`.
|
||||
|
||||
### Arc Nexus adoption
|
||||
|
||||
`arc-nexus` declares this PracticePattern as its policy for phasing out old
|
||||
architecture registry interfaces. This is an adoption decision, not yet a
|
||||
second implementation proof.
|
||||
|
||||
## Related Patterns
|
||||
|
||||
This pattern is a specialized strangler migration with an explicit evidence and
|
||||
governance loop. Future related patterns may separate successor verification,
|
||||
compatibility facades, evidence-gated removal, and consumer migration campaigns
|
||||
once repeated uses justify independent names.
|
||||
|
||||
## Adoption Checklist
|
||||
|
||||
- [ ] Give the legacy and successor interfaces stable identities.
|
||||
- [ ] Assign an owner and verify the successor.
|
||||
- [ ] Define lifecycle stages, holds, and outcome semantics.
|
||||
- [ ] Add caller-facing deprecation and successor guidance.
|
||||
- [ ] Meter privacy-bounded usage and test meter failure behavior.
|
||||
- [ ] Establish a review cadence and quiet-period policy.
|
||||
- [ ] Migrate known callers and investigate unknown attribution.
|
||||
- [ ] Retire behavior while retaining a metered tombstone.
|
||||
- [ ] Confirm that evidence distinguishes attempted from successful use.
|
||||
- [ ] Record the removal decision and preserve lifecycle history.
|
||||
|
||||
## Evolution
|
||||
|
||||
Version 0.1 generalizes the practice proven by State Hub's terminology
|
||||
transition. The next useful evidence is a second implementation in a different
|
||||
interface style, such as events, CLI commands, or schemas, to test which outcome
|
||||
and successor fields should become structured canon concepts.
|
||||
154
infospace/patterns/PracticePatternScheme.md
Normal file
154
infospace/patterns/PracticePatternScheme.md
Normal file
|
|
@ -0,0 +1,154 @@
|
|||
---
|
||||
id: scheme/practice-pattern
|
||||
title: PracticePattern Scheme
|
||||
type: practice-pattern-scheme
|
||||
status: active
|
||||
version: "0.1"
|
||||
summary: A common Markdown contract for naming and sharing recurring socio-technical practices.
|
||||
owned_concepts:
|
||||
- PracticePattern
|
||||
- PatternLanguage
|
||||
---
|
||||
|
||||
# PracticePattern Scheme
|
||||
|
||||
## Intent
|
||||
|
||||
Give people and agents a stable language for recurring ways of working. A
|
||||
PracticePattern names a proven or proposed arrangement of actions, roles,
|
||||
interfaces, feedback, and evidence that resolves a recurring tension in a
|
||||
particular context.
|
||||
|
||||
This scheme is inspired by Christopher Alexander's pattern-language method:
|
||||
each pattern connects a context and a system of forces to a reusable solution,
|
||||
describes the resulting consequences, and participates in a language of related
|
||||
patterns. It adapts that idea for software, operations, architecture, and
|
||||
governance practices; it does not copy a building pattern or require a fixed
|
||||
implementation technology.
|
||||
|
||||
## Artifact identity
|
||||
|
||||
A PracticePattern is a Markdown canon artifact with:
|
||||
|
||||
- a speakable canonical name in UpperCamelCase, such as
|
||||
`InterfaceDeprecationStrangler`;
|
||||
- a stable artifact ID, `practice-pattern/<kebab-case-name>`;
|
||||
- `type: practice-pattern`;
|
||||
- `scheme: practice-pattern/0.1`;
|
||||
- an independently versioned pattern body;
|
||||
- a lifecycle status; and
|
||||
- registration in `infospace/artifacts/index.yaml`.
|
||||
|
||||
The canonical name is part of the shared language. Aliases help discovery but
|
||||
must not silently replace it.
|
||||
|
||||
## Required frontmatter
|
||||
|
||||
```yaml
|
||||
---
|
||||
id: practice-pattern/example-name
|
||||
title: ExampleName
|
||||
type: practice-pattern
|
||||
scheme: practice-pattern/0.1
|
||||
status: candidate
|
||||
version: "0.1"
|
||||
summary: One sentence stating the practical move.
|
||||
aliases: []
|
||||
uses: []
|
||||
related_patterns: []
|
||||
known_uses: []
|
||||
---
|
||||
```
|
||||
|
||||
The machine-readable contract is
|
||||
`infospace/schemas/practice-pattern.schema.yaml`.
|
||||
|
||||
### Lifecycle
|
||||
|
||||
| Status | Meaning |
|
||||
| --- | --- |
|
||||
| `draft` | The problem and solution are still being shaped. |
|
||||
| `candidate` | Coherent enough for trial, but known uses are limited. |
|
||||
| `active` | Supported by at least one concrete known use and suitable for reuse. |
|
||||
| `deprecated` | Superseded or discouraged; relationship to its successor is explicit. |
|
||||
| `retired` | Preserved for provenance but no longer recommended. |
|
||||
|
||||
Version and lifecycle are separate. A wording clarification can change the
|
||||
version without changing lifecycle; evidence from a new known use can promote a
|
||||
candidate to active.
|
||||
|
||||
## Required body sections
|
||||
|
||||
Every PracticePattern must contain these second-level headings:
|
||||
|
||||
1. `Intent` — the practical move in compact form.
|
||||
2. `Context` — the conditions in which the pattern applies.
|
||||
3. `Problem` — the recurring failure or tension.
|
||||
4. `Forces` — pressures that make a simplistic solution insufficient.
|
||||
5. `Solution` — the stable arrangement, written as a directive.
|
||||
6. `Dynamics` — the sequence or feedback loop through which it operates.
|
||||
7. `Invariants` — properties an implementation must preserve.
|
||||
8. `Evidence` — observations needed to decide, advance, or stop.
|
||||
9. `Consequences` — benefits, costs, and new responsibilities.
|
||||
10. `Known Uses` — concrete applications and their maturity.
|
||||
|
||||
These headings are validated by the canon. Their contents may use diagrams,
|
||||
tables, checklists, or prose.
|
||||
|
||||
## Recommended body sections
|
||||
|
||||
Use these where they improve adoption:
|
||||
|
||||
- `Structure` for roles, components, and relationships;
|
||||
- `Failure Modes` for common incomplete or unsafe implementations;
|
||||
- `When Not to Use` for boundary conditions;
|
||||
- `Adoption Checklist` for a practical start and completion test;
|
||||
- `Related Patterns` for the surrounding pattern language; and
|
||||
- `Evolution` for provenance, open questions, and version history.
|
||||
|
||||
## Writing rules
|
||||
|
||||
1. Name a recurring practice, not a product feature or one repository's
|
||||
implementation.
|
||||
2. State the problem before prescribing the solution.
|
||||
3. Make forces genuinely competing; a list of requirements is not a force
|
||||
analysis.
|
||||
4. Write the solution as a stable arrangement and keep technology-specific
|
||||
examples in Known Uses.
|
||||
5. Separate invariants from optional implementation techniques.
|
||||
6. State which evidence changes the practice's state or permits an irreversible
|
||||
move.
|
||||
7. Name costs and failure modes as directly as benefits.
|
||||
8. A known use must identify what was actually observed; intended adoption is
|
||||
not implementation evidence.
|
||||
9. Relationships must use stable artifact IDs when the related artifact is in
|
||||
the canon.
|
||||
10. Pattern conformance means preserving the invariants, not copying a known
|
||||
use literally.
|
||||
|
||||
## Relationship vocabulary
|
||||
|
||||
PracticePatterns form a language rather than an isolated catalog. Use:
|
||||
|
||||
- `uses` when this pattern depends on another canon artifact or mechanism;
|
||||
- `related_patterns` for complementary, alternative, predecessor, or successor
|
||||
PracticePatterns, with the relation explained in the body;
|
||||
- artifact-index `conforms_to` to point to this scheme;
|
||||
- artifact-index `uses`, `requires`, or `implements` for graph-visible canon
|
||||
relationships; and
|
||||
- Known Uses to point outward to concrete consumer implementations.
|
||||
|
||||
## Conformance
|
||||
|
||||
A file conforms to PracticePattern v0.1 when its frontmatter validates against
|
||||
the schema, all required body sections are present, its artifact index entry has
|
||||
`kind: practice-pattern`, and every internal relationship target resolves.
|
||||
|
||||
Conformance does not imply that the practice is active or recommended. That is
|
||||
expressed by lifecycle status and known-use evidence.
|
||||
|
||||
## Evolution
|
||||
|
||||
Version 0.1 establishes the smallest useful shared contract. Later versions may
|
||||
add structured force, role, evidence, and known-use records after several
|
||||
patterns demonstrate which structure is genuinely reusable.
|
||||
|
|
@ -1,3 +1,19 @@
|
|||
# Patterns
|
||||
|
||||
Reusable canon patterns live here.
|
||||
|
||||
## PracticePattern language
|
||||
|
||||
PracticePatterns give recurring socio-technical practices stable, speakable
|
||||
names. They follow the Alexander-inspired, Markdown-first contract in
|
||||
[PracticePatternScheme](PracticePatternScheme.md). The current scheme is v0.1;
|
||||
frontmatter is described by
|
||||
[`practice-pattern.schema.yaml`](../schemas/practice-pattern.schema.yaml).
|
||||
|
||||
| PracticePattern | Status | Purpose |
|
||||
| --- | --- | --- |
|
||||
| [InterfaceDeprecationStrangler](InterfaceDeprecationStrangler.md) | active | Phase out an interface through caller guidance, usage evidence, staged retirement, and an evidence-gated removal. |
|
||||
|
||||
The older [Intent Scope Purposes Pattern](intent-scope-purposes.md) predates the
|
||||
PracticePattern v0.1 contract. It remains a candidate canon pattern and can be
|
||||
migrated when its next substantive revision is made.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
schemas:
|
||||
- id: standard
|
||||
path: standard.schema.yaml
|
||||
- id: practice-pattern
|
||||
path: practice-pattern.schema.yaml
|
||||
- id: concept
|
||||
path: concept.schema.yaml
|
||||
- id: mapping
|
||||
|
|
|
|||
54
infospace/schemas/practice-pattern.schema.yaml
Normal file
54
infospace/schemas/practice-pattern.schema.yaml
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
$schema: https://json-schema.org/draft/2020-12/schema
|
||||
$id: https://info-tech-canon.local/schemas/practice-pattern.schema.yaml
|
||||
title: InfoTechCanon PracticePattern frontmatter
|
||||
type: object
|
||||
required:
|
||||
- id
|
||||
- title
|
||||
- type
|
||||
- scheme
|
||||
- status
|
||||
- version
|
||||
- summary
|
||||
properties:
|
||||
id:
|
||||
type: string
|
||||
pattern: ^practice-pattern/[a-z0-9]+(?:-[a-z0-9]+)*$
|
||||
title:
|
||||
type: string
|
||||
pattern: ^[A-Z][A-Za-z0-9]*$
|
||||
type:
|
||||
const: practice-pattern
|
||||
scheme:
|
||||
const: practice-pattern/0.1
|
||||
status:
|
||||
enum:
|
||||
- draft
|
||||
- candidate
|
||||
- active
|
||||
- deprecated
|
||||
- retired
|
||||
version:
|
||||
type: string
|
||||
pattern: ^[0-9]+\.[0-9]+(?:\.[0-9]+)?$
|
||||
summary:
|
||||
type: string
|
||||
minLength: 1
|
||||
aliases:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
uses:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
related_patterns:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
pattern: ^practice-pattern/
|
||||
known_uses:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
additionalProperties: true
|
||||
|
|
@ -1,14 +1,14 @@
|
|||
{
|
||||
"details": {
|
||||
"artifact_count": 68,
|
||||
"relationship_count": 291
|
||||
"artifact_count": 70,
|
||||
"relationship_count": 296
|
||||
},
|
||||
"errors": [],
|
||||
"metrics": {
|
||||
"coherence_components": 1.0,
|
||||
"consistency_cycles": 0.0,
|
||||
"coverage_ratio": 1.0,
|
||||
"granularity_entropy": 4.478787416971244,
|
||||
"granularity_entropy": 4.566569747645274,
|
||||
"redundancy_ratio": 0.0
|
||||
},
|
||||
"ok": true,
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
# By Concept
|
||||
|
||||
Concept count: **110**
|
||||
Concept count: **114**
|
||||
|
||||
| Concept | Owner | Source |
|
||||
| --- | --- | --- |
|
||||
|
|
@ -73,6 +73,7 @@ Concept count: **110**
|
|||
| 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` |
|
||||
| InterfaceDeprecationStrangler | `practice-pattern/interface-deprecation-strangler` | `artifact_title` |
|
||||
| Intake and Assimilation Practice | `practice/intake-and-assimilation` | `artifact_title` |
|
||||
| Small SaaS System Profile | `profile/small-saas` | `artifact_title` |
|
||||
| Canon Consumer Alignment Review Kit | `review-kit/alignment` | `artifact_title` |
|
||||
|
|
@ -81,6 +82,9 @@ Concept count: **110**
|
|||
| Canon Consumer Alignment Scorecard | `review-kit/alignment/scorecard` | `artifact_title` |
|
||||
| Canon Consumer Alignment Review Workflow | `review-kit/alignment/workflow` | `artifact_title` |
|
||||
| Consumer Alignment Workplan Template | `review-kit/alignment/workplan-template` | `artifact_title` |
|
||||
| PracticePattern Scheme | `scheme/practice-pattern` | `artifact_title` |
|
||||
| PracticePattern | `scheme/practice-pattern` | `frontmatter.owned_concepts` |
|
||||
| PatternLanguage | `scheme/practice-pattern` | `frontmatter.owned_concepts` |
|
||||
| Namespace Per Tenant Control | `small-saas/control/namespace-per-tenant` | `artifact_title` |
|
||||
| Subscription Ledger Dataset | `small-saas/dataset/subscription-ledger` | `artifact_title` |
|
||||
| Production Deployment | `small-saas/deployment/production` | `artifact_title` |
|
||||
|
|
|
|||
|
|
@ -82,6 +82,7 @@
|
|||
- `practice/intake-and-assimilation` via `conforms_to`
|
||||
- `profile/small-saas` via `conforms_to`
|
||||
- `review-kit/alignment` via `conforms_to`
|
||||
- `scheme/practice-pattern` via `conforms_to`
|
||||
- `standard/caring` via `conforms_to`
|
||||
- `standard/repository-layout` via `conforms_to`
|
||||
- `standard/tagging` via `conforms_to`
|
||||
|
|
@ -131,6 +132,7 @@
|
|||
- `conformance/railiance-fabric/entity-edge-capture-criteria` via `uses`
|
||||
- `conformance/railiance-fabric/mapping-expectations` via `maps`
|
||||
- `kernel/itc-kernel-map` via `maps`
|
||||
- `practice-pattern/interface-deprecation-strangler` via `uses`
|
||||
- `profile/small-saas` via `requires`
|
||||
- `review-kit/alignment/model-selection-guide` via `uses`
|
||||
- `small-saas/deployment/production` via `uses`
|
||||
|
|
@ -159,6 +161,7 @@
|
|||
- `model/data` via `uses`
|
||||
- `model/purpose-demand-extension` via `extends`
|
||||
- `pattern/intent-scope-purposes` via `uses`
|
||||
- `practice-pattern/interface-deprecation-strangler` via `uses`
|
||||
- `profile/small-saas` via `requires`
|
||||
- `review-kit/alignment` via `uses`
|
||||
- `review-kit/alignment/model-selection-guide` via `uses`
|
||||
|
|
@ -211,6 +214,7 @@
|
|||
- `conformance/railiance-fabric/mapping-expectations` via `maps`
|
||||
- `kernel/itc-kernel-map` via `maps`
|
||||
- `model/capability` via `uses`
|
||||
- `practice-pattern/interface-deprecation-strangler` via `uses`
|
||||
- `profile/small-saas` via `requires`
|
||||
- `review-kit/alignment/model-selection-guide` via `uses`
|
||||
- `small-saas/evidence/access-review-2026-05` via `uses`
|
||||
|
|
@ -335,6 +339,10 @@
|
|||
- `review-kit/alignment/workflow` via `part_of`
|
||||
- `review-kit/alignment/workplan-template` via `part_of`
|
||||
|
||||
## `scheme/practice-pattern`
|
||||
|
||||
- `practice-pattern/interface-deprecation-strangler` via `conforms_to`
|
||||
|
||||
## `small-saas/control/namespace-per-tenant`
|
||||
|
||||
- `small-saas/deployment/production` via `implements`
|
||||
|
|
|
|||
|
|
@ -2,73 +2,75 @@
|
|||
|
||||
# Import Matrix
|
||||
|
||||
| Artifact | `assimilation/it-capability-canon` | `benchmark/caring/kubernetes-rbac` | `benchmark/caring/kubernetes-rbac/access-descriptors` | `benchmark/caring/kubernetes-rbac/caring-mapping` | `benchmark/caring/kubernetes-rbac/findings` | `benchmark/caring/kubernetes-rbac/native-concepts` | `capability-catalog/itc-cap` | `catalog/attribute-value-types` | `catalog/evidence-basis` | `comparison/repo-scoping/canon-benefit-analysis` | `comparison/repo-scoping/consumer-workplan-brief` | `comparison/repo-scoping/extension-candidates` | `comparison/repo-scoping/frame` | `comparison/repo-scoping/report` | `concept-catalog/purpose-demand` | `conformance/railiance-fabric` | `conformance/railiance-fabric/consumer-workplan-brief` | `conformance/railiance-fabric/entity-edge-capture-criteria` | `conformance/railiance-fabric/mapping-expectations` | `conformance/railiance-fabric/visualization-examples` | `evaluation/user-engine` | `evaluation/user-engine/consumer-workplan-brief` | `evaluation/user-engine/interface-card-expectations` | `evaluation/user-engine/questions` | `evaluation/user-engine/small-saas-alignment` | `example/consumer-purpose-portfolio` | `kernel/itc-core` | `kernel/itc-kernel-map` | `mapping/capability-anchors` | `mapping/purpose-demand-governance-candidates` | `model/access-control` | `model/capability` | `model/data` | `model/devsecops` | `model/governance` | `model/information-space` | `model/landscape` | `model/network` | `model/observability` | `model/organization` | `model/purpose-demand-extension` | `model/security` | `model/task` | `pattern/intent-scope-purposes` | `practice/intake-and-assimilation` | `profile/small-saas` | `review-kit/alignment` | `review-kit/alignment/model-selection-guide` | `review-kit/alignment/schema` | `review-kit/alignment/scorecard` | `review-kit/alignment/workflow` | `review-kit/alignment/workplan-template` | `small-saas/control/namespace-per-tenant` | `small-saas/dataset/subscription-ledger` | `small-saas/deployment/production` | `small-saas/evidence/access-review-2026-05` | `small-saas/incident/cross-tenant-access-attempt` | `small-saas/policy/tenant-isolation` | `small-saas/service/billing-portal` | `small-saas/system/billing-system` | `small-saas/task/onboard-tenant` | `small-saas/team/platform` | `small-saas/tenant/acme` | `small-saas/tenant/globex` | `small-saas/user/ada-admin` | `standard/caring` | `standard/repository-layout` | `standard/tagging` |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| `assimilation/it-capability-canon` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `benchmark/caring/kubernetes-rbac` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `stress_tests` | | | `stress_tests` | `stress_tests` | | | `stress_tests` | `stress_tests` | | | `stress_tests` | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | `uses` |
|
||||
| `benchmark/caring/kubernetes-rbac/access-descriptors` | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | `uses` | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | |
|
||||
| `benchmark/caring/kubernetes-rbac/caring-mapping` | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | `maps` | | | | | | | `maps` | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | |
|
||||
| `benchmark/caring/kubernetes-rbac/findings` | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `proposes` | | | | | | | `proposes` | | | | | | | | | | | | | | | | | | | | | | | | `proposes` | | |
|
||||
| `benchmark/caring/kubernetes-rbac/native-concepts` | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | | | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | |
|
||||
| `capability-catalog/itc-cap` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `catalog/attribute-value-types` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `catalog/evidence-basis` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `comparison/repo-scoping/canon-benefit-analysis` | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | `maps` | `maps` | | | | | `maps` | | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | `maps` |
|
||||
| `comparison/repo-scoping/consumer-workplan-brief` | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `comparison/repo-scoping/extension-candidates` | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | `proposes` | `proposes` | | | | | `proposes` | | `proposes` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `comparison/repo-scoping/frame` | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `uses` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `comparison/repo-scoping/report` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | `uses` | | | | | `compares` | | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `concept-catalog/purpose-demand` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `conformance/railiance-fabric` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | `uses` |
|
||||
| `conformance/railiance-fabric/consumer-workplan-brief` | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `conformance/railiance-fabric/entity-edge-capture-criteria` | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `conformance/railiance-fabric/mapping-expectations` | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | `maps` | `maps` | `maps` | | `maps` | `maps` | `maps` | | `maps` | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `conformance/railiance-fabric/visualization-examples` | | | | | | | | | | | | | | | | `part_of` | | `illustrates` | `illustrates` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `evaluation/user-engine` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | `uses` | | `uses` | | | | | `uses` | `uses` | `uses` | `uses` | | | `evaluates` | | | | | | | | | | | | | | | | | | | | `uses` | | |
|
||||
| `evaluation/user-engine/consumer-workplan-brief` | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `evaluation/user-engine/interface-card-expectations` | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | |
|
||||
| `evaluation/user-engine/questions` | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | `uses` | | `uses` | | `uses` | | | | | `uses` | `uses` | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `evaluation/user-engine/small-saas-alignment` | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | `uses` | | | | `uses` | | | | | `uses` | | | | | | `evaluates` | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `example/consumer-purpose-portfolio` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `illustrates` | | | `illustrates` | | `uses` | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `kernel/itc-core` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `kernel/itc-kernel-map` | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | | `maps` | `maps` | | | | | | | | | | | | | | | | | | | | | | | `maps` | | `maps` |
|
||||
| `mapping/capability-anchors` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `mapping/purpose-demand-governance-candidates` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | | | `maps` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/access-control` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | `uses` | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/capability` | `derived_from` | | | | | | `introduces` | | `uses` | | | | | | | | | | | | | | | | | | `conforms_to` | | `introduces` | | | | | | `uses` | | `uses` | | `uses` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/data` | | | | | | | | `introduces` | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/devsecops` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/governance` | | | | | | | | | `introduces` | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/information-space` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/landscape` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/network` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/observability` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/organization` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/purpose-demand-extension` | | | | | | | | | | | | | | | `introduces` | | | | | | | | | | | | `conforms_to` | | | | | | | | `extends` | `uses` | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/security` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/task` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `pattern/intent-scope-purposes` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `implements` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `practice/intake-and-assimilation` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `profile/small-saas` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | `requires` | | `requires` | `requires` | `requires` | | `requires` | `requires` | `requires` | `requires` | | `requires` | `requires` | | | | | | | | | | | | | | | | | | | | | | | `requires` | | `requires` |
|
||||
| `review-kit/alignment` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | `uses` | | | | | | `uses` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | `uses` | | |
|
||||
| `review-kit/alignment/model-selection-guide` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | `uses` | `uses` | `uses` | `uses` | | | `uses` | `part_of` | | | | | | | | | | | | | | | | | | | `uses` | | `uses` |
|
||||
| `review-kit/alignment/schema` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `uses` | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `review-kit/alignment/scorecard` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `uses` | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `review-kit/alignment/workflow` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `uses` | | `uses` | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `review-kit/alignment/workplan-template` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | `uses` | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `small-saas/control/namespace-per-tenant` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | `instantiates` | | | | | | | | | | `evidenced_by` | | | | | | | | | | `uses` | | |
|
||||
| `small-saas/dataset/subscription-ledger` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | `instantiates` | | | | | | | | | | | | `governed_by` | `owned_by` | | | | `partitioned_for` | `partitioned_for` | | | | |
|
||||
| `small-saas/deployment/production` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | `uses` | | | | | | | | `instantiates` | | | | | | | `implements` | | | | | | `deploys` | | | | `separates` | `separates` | | | | |
|
||||
| `small-saas/evidence/access-review-2026-05` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | `instantiates` | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `small-saas/incident/cross-tenant-access-attempt` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | `instantiates` | | | | | | | `constrained_by` | | | `evidenced_by` | | | | | | | | | | | | |
|
||||
| `small-saas/policy/tenant-isolation` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | `instantiates` | | | | | | | `requires` | | | `evidenced_by` | | | | | | | | | | | | |
|
||||
| `small-saas/service/billing-portal` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | `instantiates` | | | | | | | | | | | | | | `part_of` | | `owned_by` | | | | | | |
|
||||
| `small-saas/system/billing-system` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | `instantiates` | | | | | | | | | | | | | | | | | `serves` | `serves` | | | | |
|
||||
| `small-saas/task/onboard-tenant` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | `instantiates` | | | | | | | | | | | | `governed_by` | | | | `owned_by` | `changes` | | | | | |
|
||||
| `small-saas/team/platform` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `instantiates` | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `small-saas/tenant/acme` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `instantiates` | | | | | | | `isolated_by` | | | | | | | | | | | | `represented_by` | | | |
|
||||
| `small-saas/tenant/globex` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `instantiates` | | | | | | | `isolated_by` | | | | | | | | | | | | | | | |
|
||||
| `small-saas/user/ada-admin` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | `uses` | | | | | | `instantiates` | | | | | | | | | | `access_evidenced_by` | | `has_access_under` | | | | `member_of` | | | | | | |
|
||||
| `standard/caring` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | `imports` | | `imports` | `imports` | `imports` | | | `imports` | `imports` | `imports` | | `imports` | `imports` | | | | | | | | | | | | | | | | | | | | | | | | | `imports` |
|
||||
| `standard/repository-layout` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | `imports` | `imports` | | | | | | | `imports` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `standard/tagging` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | `imports` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| Artifact | `assimilation/it-capability-canon` | `benchmark/caring/kubernetes-rbac` | `benchmark/caring/kubernetes-rbac/access-descriptors` | `benchmark/caring/kubernetes-rbac/caring-mapping` | `benchmark/caring/kubernetes-rbac/findings` | `benchmark/caring/kubernetes-rbac/native-concepts` | `capability-catalog/itc-cap` | `catalog/attribute-value-types` | `catalog/evidence-basis` | `comparison/repo-scoping/canon-benefit-analysis` | `comparison/repo-scoping/consumer-workplan-brief` | `comparison/repo-scoping/extension-candidates` | `comparison/repo-scoping/frame` | `comparison/repo-scoping/report` | `concept-catalog/purpose-demand` | `conformance/railiance-fabric` | `conformance/railiance-fabric/consumer-workplan-brief` | `conformance/railiance-fabric/entity-edge-capture-criteria` | `conformance/railiance-fabric/mapping-expectations` | `conformance/railiance-fabric/visualization-examples` | `evaluation/user-engine` | `evaluation/user-engine/consumer-workplan-brief` | `evaluation/user-engine/interface-card-expectations` | `evaluation/user-engine/questions` | `evaluation/user-engine/small-saas-alignment` | `example/consumer-purpose-portfolio` | `kernel/itc-core` | `kernel/itc-kernel-map` | `mapping/capability-anchors` | `mapping/purpose-demand-governance-candidates` | `model/access-control` | `model/capability` | `model/data` | `model/devsecops` | `model/governance` | `model/information-space` | `model/landscape` | `model/network` | `model/observability` | `model/organization` | `model/purpose-demand-extension` | `model/security` | `model/task` | `pattern/intent-scope-purposes` | `practice-pattern/interface-deprecation-strangler` | `practice/intake-and-assimilation` | `profile/small-saas` | `review-kit/alignment` | `review-kit/alignment/model-selection-guide` | `review-kit/alignment/schema` | `review-kit/alignment/scorecard` | `review-kit/alignment/workflow` | `review-kit/alignment/workplan-template` | `scheme/practice-pattern` | `small-saas/control/namespace-per-tenant` | `small-saas/dataset/subscription-ledger` | `small-saas/deployment/production` | `small-saas/evidence/access-review-2026-05` | `small-saas/incident/cross-tenant-access-attempt` | `small-saas/policy/tenant-isolation` | `small-saas/service/billing-portal` | `small-saas/system/billing-system` | `small-saas/task/onboard-tenant` | `small-saas/team/platform` | `small-saas/tenant/acme` | `small-saas/tenant/globex` | `small-saas/user/ada-admin` | `standard/caring` | `standard/repository-layout` | `standard/tagging` |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| `assimilation/it-capability-canon` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `benchmark/caring/kubernetes-rbac` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `stress_tests` | | | `stress_tests` | `stress_tests` | | | `stress_tests` | `stress_tests` | | | `stress_tests` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | `uses` |
|
||||
| `benchmark/caring/kubernetes-rbac/access-descriptors` | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | `uses` | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | |
|
||||
| `benchmark/caring/kubernetes-rbac/caring-mapping` | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | `maps` | | | | | | | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | |
|
||||
| `benchmark/caring/kubernetes-rbac/findings` | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `proposes` | | | | | | | `proposes` | | | | | | | | | | | | | | | | | | | | | | | | | | `proposes` | | |
|
||||
| `benchmark/caring/kubernetes-rbac/native-concepts` | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | | | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | |
|
||||
| `capability-catalog/itc-cap` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `catalog/attribute-value-types` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `catalog/evidence-basis` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `comparison/repo-scoping/canon-benefit-analysis` | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | `maps` | `maps` | | | | | `maps` | | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` |
|
||||
| `comparison/repo-scoping/consumer-workplan-brief` | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `comparison/repo-scoping/extension-candidates` | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | `proposes` | `proposes` | | | | | `proposes` | | `proposes` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `comparison/repo-scoping/frame` | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `uses` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `comparison/repo-scoping/report` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | `uses` | | | | | `compares` | | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `concept-catalog/purpose-demand` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `conformance/railiance-fabric` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` |
|
||||
| `conformance/railiance-fabric/consumer-workplan-brief` | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `conformance/railiance-fabric/entity-edge-capture-criteria` | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `conformance/railiance-fabric/mapping-expectations` | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | `maps` | `maps` | `maps` | | `maps` | `maps` | `maps` | | `maps` | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `conformance/railiance-fabric/visualization-examples` | | | | | | | | | | | | | | | | `part_of` | | `illustrates` | `illustrates` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `evaluation/user-engine` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | `uses` | | `uses` | | | | | `uses` | `uses` | `uses` | `uses` | | | | `evaluates` | | | | | | | | | | | | | | | | | | | | | `uses` | | |
|
||||
| `evaluation/user-engine/consumer-workplan-brief` | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `evaluation/user-engine/interface-card-expectations` | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | |
|
||||
| `evaluation/user-engine/questions` | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | `uses` | | `uses` | | `uses` | | | | | `uses` | `uses` | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `evaluation/user-engine/small-saas-alignment` | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | `uses` | | | | `uses` | | | | | `uses` | | | | | | | `evaluates` | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `example/consumer-purpose-portfolio` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `illustrates` | | | `illustrates` | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `kernel/itc-core` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `kernel/itc-kernel-map` | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | | `maps` | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | `maps` |
|
||||
| `mapping/capability-anchors` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `mapping/purpose-demand-governance-candidates` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | | | `maps` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/access-control` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | `uses` | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/capability` | `derived_from` | | | | | | `introduces` | | `uses` | | | | | | | | | | | | | | | | | | `conforms_to` | | `introduces` | | | | | | `uses` | | `uses` | | `uses` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/data` | | | | | | | | `introduces` | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/devsecops` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/governance` | | | | | | | | | `introduces` | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/information-space` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/landscape` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/network` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/observability` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/organization` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/purpose-demand-extension` | | | | | | | | | | | | | | | `introduces` | | | | | | | | | | | | `conforms_to` | | | | | | | | `extends` | `uses` | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/security` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `model/task` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `pattern/intent-scope-purposes` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `implements` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `practice-pattern/interface-deprecation-strangler` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | `uses` | | | | `uses` | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | |
|
||||
| `practice/intake-and-assimilation` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `profile/small-saas` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | `requires` | | `requires` | `requires` | `requires` | | `requires` | `requires` | `requires` | `requires` | | `requires` | `requires` | | | | | | | | | | | | | | | | | | | | | | | | | `requires` | | `requires` |
|
||||
| `review-kit/alignment` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | `uses` | | | | | | `uses` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | |
|
||||
| `review-kit/alignment/model-selection-guide` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | `uses` | `uses` | `uses` | `uses` | | | | `uses` | `part_of` | | | | | | | | | | | | | | | | | | | | `uses` | | `uses` |
|
||||
| `review-kit/alignment/schema` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `uses` | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `review-kit/alignment/scorecard` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `uses` | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `review-kit/alignment/workflow` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `uses` | | `uses` | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `review-kit/alignment/workplan-template` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | `uses` | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `scheme/practice-pattern` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `small-saas/control/namespace-per-tenant` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | `instantiates` | | | | | | | | | | | `evidenced_by` | | | | | | | | | | `uses` | | |
|
||||
| `small-saas/dataset/subscription-ledger` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | `instantiates` | | | | | | | | | | | | | `governed_by` | `owned_by` | | | | `partitioned_for` | `partitioned_for` | | | | |
|
||||
| `small-saas/deployment/production` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | `uses` | | | | | | | | | `instantiates` | | | | | | | | `implements` | | | | | | `deploys` | | | | `separates` | `separates` | | | | |
|
||||
| `small-saas/evidence/access-review-2026-05` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `instantiates` | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `small-saas/incident/cross-tenant-access-attempt` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | `instantiates` | | | | | | | | `constrained_by` | | | `evidenced_by` | | | | | | | | | | | | |
|
||||
| `small-saas/policy/tenant-isolation` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | `instantiates` | | | | | | | | `requires` | | | `evidenced_by` | | | | | | | | | | | | |
|
||||
| `small-saas/service/billing-portal` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | `instantiates` | | | | | | | | | | | | | | | `part_of` | | `owned_by` | | | | | | |
|
||||
| `small-saas/system/billing-system` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | `instantiates` | | | | | | | | | | | | | | | | | | `serves` | `serves` | | | | |
|
||||
| `small-saas/task/onboard-tenant` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | `instantiates` | | | | | | | | | | | | | `governed_by` | | | | `owned_by` | `changes` | | | | | |
|
||||
| `small-saas/team/platform` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | `instantiates` | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `small-saas/tenant/acme` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | `instantiates` | | | | | | | | `isolated_by` | | | | | | | | | | | | `represented_by` | | | |
|
||||
| `small-saas/tenant/globex` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | `instantiates` | | | | | | | | `isolated_by` | | | | | | | | | | | | | | | |
|
||||
| `small-saas/user/ada-admin` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | `uses` | | | | | | | `instantiates` | | | | | | | | | | | `access_evidenced_by` | | `has_access_under` | | | | `member_of` | | | | | | |
|
||||
| `standard/caring` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | `imports` | | `imports` | `imports` | `imports` | | | `imports` | `imports` | `imports` | | `imports` | `imports` | | | | | | | | | | | | | | | | | | | | | | | | | | | `imports` |
|
||||
| `standard/repository-layout` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | `imports` | `imports` | | | | | | | `imports` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
| `standard/tagging` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | `imports` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
# Kernel Overview
|
||||
|
||||
- Infospace: `canon`
|
||||
- Artifacts: 68
|
||||
- Artifacts: 70
|
||||
|
||||
## Artifact Kinds
|
||||
|
||||
|
|
@ -39,6 +39,8 @@
|
|||
- `native-concept-map`: 1
|
||||
- `pattern`: 1
|
||||
- `practice`: 1
|
||||
- `practice-pattern`: 1
|
||||
- `practice-pattern-scheme`: 1
|
||||
- `profile`: 1
|
||||
- `profile-alignment`: 1
|
||||
- `profile-artifact`: 13
|
||||
|
|
@ -50,7 +52,7 @@
|
|||
- `access_evidenced_by`: 1
|
||||
- `changes`: 1
|
||||
- `compares`: 1
|
||||
- `conforms_to`: 22
|
||||
- `conforms_to`: 24
|
||||
- `constrained_by`: 1
|
||||
- `deploys`: 1
|
||||
- `derived_from`: 1
|
||||
|
|
@ -76,4 +78,4 @@
|
|||
- `separates`: 2
|
||||
- `serves`: 2
|
||||
- `stress_tests`: 6
|
||||
- `uses`: 118
|
||||
- `uses`: 121
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
# Repository Tree
|
||||
|
||||
File count: **175**
|
||||
File count: **190**
|
||||
|
||||
- `README.md`
|
||||
- `agent/README.md`
|
||||
|
|
@ -11,6 +11,8 @@ File count: **175**
|
|||
- `agent/briefs/benchmark-caring-kubernetes-rbac-findings.md`
|
||||
- `agent/briefs/benchmark-caring-kubernetes-rbac-native-concepts.md`
|
||||
- `agent/briefs/benchmark-caring-kubernetes-rbac.md`
|
||||
- `agent/briefs/catalog-attribute-value-types.md`
|
||||
- `agent/briefs/catalog-evidence-basis.md`
|
||||
- `agent/briefs/comparison-repo-scoping-canon-benefit-analysis.md`
|
||||
- `agent/briefs/comparison-repo-scoping-consumer-workplan-brief.md`
|
||||
- `agent/briefs/comparison-repo-scoping-extension-candidates.md`
|
||||
|
|
@ -30,6 +32,7 @@ File count: **175**
|
|||
- `agent/briefs/example-consumer-purpose-portfolio.md`
|
||||
- `agent/briefs/kernel-itc-core.md`
|
||||
- `agent/briefs/kernel-itc-kernel-map.md`
|
||||
- `agent/briefs/mapping-capability-anchors.md`
|
||||
- `agent/briefs/mapping-purpose-demand-governance-candidates.md`
|
||||
- `agent/briefs/model-access-control.md`
|
||||
- `agent/briefs/model-capability.md`
|
||||
|
|
@ -45,6 +48,7 @@ File count: **175**
|
|||
- `agent/briefs/model-security.md`
|
||||
- `agent/briefs/model-task.md`
|
||||
- `agent/briefs/pattern-intent-scope-purposes.md`
|
||||
- `agent/briefs/practice-pattern-interface-deprecation-strangler.md`
|
||||
- `agent/briefs/profile-small-saas.md`
|
||||
- `agent/briefs/review-kit-alignment-model-selection-guide.md`
|
||||
- `agent/briefs/review-kit-alignment-schema.md`
|
||||
|
|
@ -52,6 +56,7 @@ File count: **175**
|
|||
- `agent/briefs/review-kit-alignment-workflow.md`
|
||||
- `agent/briefs/review-kit-alignment-workplan-template.md`
|
||||
- `agent/briefs/review-kit-alignment.md`
|
||||
- `agent/briefs/scheme-practice-pattern.md`
|
||||
- `agent/briefs/standard-caring.md`
|
||||
- `agent/briefs/standard-repository-layout.md`
|
||||
- `agent/briefs/standard-tagging.md`
|
||||
|
|
@ -115,14 +120,18 @@ File count: **175**
|
|||
- `kernel/InfoTechCanonCore.md`
|
||||
- `kernel/InfoTechCanonKernelMap.md`
|
||||
- `mappings/README.md`
|
||||
- `mappings/capability-anchors.yaml`
|
||||
- `mappings/purpose-demand-governance-candidates.yaml`
|
||||
- `models/access-control/InfoTechCanonAccessControlModel.md`
|
||||
- `models/capability/InfoTechCanonCapabilityModel.md`
|
||||
- `models/capability/capabilities.yaml`
|
||||
- `models/data/InfoTechCanonDataModel.md`
|
||||
- `models/data/attribute-value-types-alignment.md`
|
||||
- `models/data/attribute-value-types.yaml`
|
||||
- `models/devsecops/InfoTechCanonDevSecOpsModel.md`
|
||||
- `models/governance/InfoTechCanonGovernanceModel.md`
|
||||
- `models/governance/InfoTechCanonPurposeDemandExtension.md`
|
||||
- `models/governance/evidence-basis.yaml`
|
||||
- `models/information-space/InfoTechCanonInformationSpaceModel.md`
|
||||
- `models/landscape/InfoTechCanonLandscapeModel.md`
|
||||
- `models/network/InfoTechCanonNetworkModel.md`
|
||||
|
|
@ -130,6 +139,8 @@ File count: **175**
|
|||
- `models/organization/InfoTechCanonOrganizationModel.md`
|
||||
- `models/security/InfoTechCanonSecurityModel.md`
|
||||
- `models/task/InfoTechCanonTaskModel.md`
|
||||
- `patterns/InterfaceDeprecationStrangler.md`
|
||||
- `patterns/PracticePatternScheme.md`
|
||||
- `patterns/README.md`
|
||||
- `patterns/intent-scope-purposes.md`
|
||||
- `profiles/README.md`
|
||||
|
|
@ -153,10 +164,14 @@ File count: **175**
|
|||
- `schemas/agent-brief.schema.yaml`
|
||||
- `schemas/alignment-review.schema.yaml`
|
||||
- `schemas/assimilation.schema.yaml`
|
||||
- `schemas/attribute-value-type.schema.yaml`
|
||||
- `schemas/capability-record.schema.yaml`
|
||||
- `schemas/capability.schema.yaml`
|
||||
- `schemas/concept.schema.yaml`
|
||||
- `schemas/index.yaml`
|
||||
- `schemas/interface-card.schema.yaml`
|
||||
- `schemas/mapping.schema.yaml`
|
||||
- `schemas/practice-pattern.schema.yaml`
|
||||
- `schemas/profile.schema.yaml`
|
||||
- `schemas/standard.schema.yaml`
|
||||
- `schemas/workplan.schema.yaml`
|
||||
|
|
|
|||
|
|
@ -39,6 +39,8 @@ RETRIEVAL_ARTIFACT_KINDS = {
|
|||
"model-selection-guide",
|
||||
"native-concept-map",
|
||||
"pattern",
|
||||
"practice-pattern",
|
||||
"practice-pattern-scheme",
|
||||
"profile-alignment",
|
||||
"profile",
|
||||
"standard",
|
||||
|
|
@ -46,6 +48,14 @@ RETRIEVAL_ARTIFACT_KINDS = {
|
|||
}
|
||||
CONSUMER_BRIEF_IDS = ("user-engine", "railiance-fabric", "repo-scoping")
|
||||
COMMON_DISTINCTIONS = [
|
||||
{
|
||||
"id": "interface-deprecation-retirement-removal",
|
||||
"title": "Interface deprecation vs retirement vs removal",
|
||||
"summary": "Deprecation guides and observes callers, retirement ends legacy behavior while retaining a metered tombstone, and removal deletes that tombstone only after the evidence gate passes.",
|
||||
"source_artifacts": [
|
||||
"practice-pattern/interface-deprecation-strangler",
|
||||
],
|
||||
},
|
||||
{
|
||||
"id": "actor-subject-principal",
|
||||
"title": "Actor vs Subject vs Principal",
|
||||
|
|
@ -934,6 +944,10 @@ def _summary_for_artifact(artifact: Any) -> str:
|
|||
return f"Native source concept map for assimilation or benchmark work: {artifact.title}."
|
||||
if artifact.kind == "pattern":
|
||||
return f"Reusable canon pattern: {artifact.title}."
|
||||
if artifact.kind == "practice-pattern":
|
||||
return f"Reusable canon PracticePattern: {artifact.title}."
|
||||
if artifact.kind == "practice-pattern-scheme":
|
||||
return f"Contract for canon PracticePattern artifacts: {artifact.title}."
|
||||
if artifact.kind == "profile-alignment":
|
||||
return f"Profile-specific evaluation alignment artifact: {artifact.title}."
|
||||
if artifact.kind == "visualization-example-set":
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
import re
|
||||
from typing import Any
|
||||
|
||||
import yaml
|
||||
|
|
@ -54,6 +55,7 @@ REQUIRED_SCHEMAS = (
|
|||
"capability.schema.yaml",
|
||||
"capability-record.schema.yaml",
|
||||
"attribute-value-type.schema.yaml",
|
||||
"practice-pattern.schema.yaml",
|
||||
)
|
||||
|
||||
RETRIEVAL_BRIEF_KINDS = {
|
||||
|
|
@ -85,6 +87,8 @@ RETRIEVAL_BRIEF_KINDS = {
|
|||
"model-selection-guide",
|
||||
"native-concept-map",
|
||||
"pattern",
|
||||
"practice-pattern",
|
||||
"practice-pattern-scheme",
|
||||
"profile-alignment",
|
||||
"profile",
|
||||
"standard",
|
||||
|
|
@ -348,6 +352,43 @@ ALIGNMENT_REVIEW_TEMPLATE_MARKERS = {
|
|||
"## Canon Feedback",
|
||||
}
|
||||
|
||||
PRACTICE_PATTERN_REQUIRED_FRONTMATTER = {
|
||||
"id",
|
||||
"title",
|
||||
"type",
|
||||
"scheme",
|
||||
"status",
|
||||
"version",
|
||||
"summary",
|
||||
}
|
||||
|
||||
PRACTICE_PATTERN_STATUSES = {
|
||||
"draft",
|
||||
"candidate",
|
||||
"active",
|
||||
"deprecated",
|
||||
"retired",
|
||||
}
|
||||
|
||||
PRACTICE_PATTERN_REQUIRED_HEADINGS = {
|
||||
"## Intent",
|
||||
"## Context",
|
||||
"## Problem",
|
||||
"## Forces",
|
||||
"## Solution",
|
||||
"## Dynamics",
|
||||
"## Invariants",
|
||||
"## Evidence",
|
||||
"## Consequences",
|
||||
"## Known Uses",
|
||||
}
|
||||
|
||||
PRACTICE_PATTERN_ID_RE = re.compile(
|
||||
r"^practice-pattern/[a-z0-9]+(?:-[a-z0-9]+)*$"
|
||||
)
|
||||
PRACTICE_PATTERN_TITLE_RE = re.compile(r"^[A-Z][A-Za-z0-9]*$")
|
||||
PRACTICE_PATTERN_VERSION_RE = re.compile(r"^[0-9]+\.[0-9]+(?:\.[0-9]+)?$")
|
||||
|
||||
|
||||
def structural_checks(context: Any) -> dict[str, list[dict[str, Any]]]:
|
||||
errors: list[dict[str, Any]] = []
|
||||
|
|
@ -359,6 +400,11 @@ def structural_checks(context: Any) -> dict[str, list[dict[str, Any]]]:
|
|||
_check_capability_catalog(errors)
|
||||
_check_canon_paths(context.repo_root, context.infospace_root, errors)
|
||||
_check_artifact_index(context.repo_root, context.infospace_root, errors)
|
||||
_check_practice_pattern_assets(
|
||||
context.infospace_root,
|
||||
context.infospace.artifacts,
|
||||
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(
|
||||
|
|
@ -391,6 +437,140 @@ def structural_checks(context: Any) -> dict[str, list[dict[str, Any]]]:
|
|||
return {"errors": errors, "warnings": warnings}
|
||||
|
||||
|
||||
def _check_practice_pattern_assets(
|
||||
infospace_root: Path,
|
||||
artifacts: list[Any],
|
||||
errors: list[dict[str, Any]],
|
||||
) -> None:
|
||||
for artifact in artifacts:
|
||||
if artifact.kind != "practice-pattern":
|
||||
continue
|
||||
|
||||
path = infospace_root / artifact.path
|
||||
frontmatter = _read_markdown_frontmatter(path, errors)
|
||||
missing_fields = sorted(
|
||||
PRACTICE_PATTERN_REQUIRED_FRONTMATTER - set(frontmatter)
|
||||
)
|
||||
if missing_fields:
|
||||
errors.append(
|
||||
{
|
||||
"code": "practice_pattern_missing_frontmatter",
|
||||
"artifact_id": artifact.id,
|
||||
"path": artifact.path,
|
||||
"fields": missing_fields,
|
||||
}
|
||||
)
|
||||
|
||||
expected = {
|
||||
"id": artifact.id,
|
||||
"title": artifact.title,
|
||||
"type": "practice-pattern",
|
||||
"scheme": "practice-pattern/0.1",
|
||||
}
|
||||
for field, value in expected.items():
|
||||
if frontmatter.get(field) != value:
|
||||
errors.append(
|
||||
{
|
||||
"code": "practice_pattern_frontmatter_mismatch",
|
||||
"artifact_id": artifact.id,
|
||||
"path": artifact.path,
|
||||
"field": field,
|
||||
"expected": value,
|
||||
"actual": frontmatter.get(field),
|
||||
}
|
||||
)
|
||||
|
||||
status = frontmatter.get("status")
|
||||
if status not in PRACTICE_PATTERN_STATUSES:
|
||||
errors.append(
|
||||
{
|
||||
"code": "practice_pattern_invalid_status",
|
||||
"artifact_id": artifact.id,
|
||||
"path": artifact.path,
|
||||
"status": status,
|
||||
}
|
||||
)
|
||||
|
||||
scalar_contracts = (
|
||||
("id", PRACTICE_PATTERN_ID_RE),
|
||||
("title", PRACTICE_PATTERN_TITLE_RE),
|
||||
("version", PRACTICE_PATTERN_VERSION_RE),
|
||||
)
|
||||
for field, pattern in scalar_contracts:
|
||||
value = frontmatter.get(field)
|
||||
if not isinstance(value, str) or pattern.fullmatch(value) is None:
|
||||
errors.append(
|
||||
{
|
||||
"code": "practice_pattern_invalid_frontmatter_value",
|
||||
"artifact_id": artifact.id,
|
||||
"path": artifact.path,
|
||||
"field": field,
|
||||
"value": value,
|
||||
}
|
||||
)
|
||||
|
||||
summary = frontmatter.get("summary")
|
||||
if not isinstance(summary, str) or not summary.strip():
|
||||
errors.append(
|
||||
{
|
||||
"code": "practice_pattern_invalid_frontmatter_value",
|
||||
"artifact_id": artifact.id,
|
||||
"path": artifact.path,
|
||||
"field": "summary",
|
||||
"value": summary,
|
||||
}
|
||||
)
|
||||
|
||||
for field in ("aliases", "uses", "related_patterns", "known_uses"):
|
||||
value = frontmatter.get(field, [])
|
||||
if not isinstance(value, list) or not all(
|
||||
isinstance(item, str) for item in value
|
||||
):
|
||||
errors.append(
|
||||
{
|
||||
"code": "practice_pattern_invalid_frontmatter_value",
|
||||
"artifact_id": artifact.id,
|
||||
"path": artifact.path,
|
||||
"field": field,
|
||||
"value": value,
|
||||
}
|
||||
)
|
||||
|
||||
related_patterns = frontmatter.get("related_patterns", [])
|
||||
if isinstance(related_patterns, list):
|
||||
for related in related_patterns:
|
||||
if isinstance(related, str) and not related.startswith(
|
||||
"practice-pattern/"
|
||||
):
|
||||
errors.append(
|
||||
{
|
||||
"code": "practice_pattern_invalid_related_pattern",
|
||||
"artifact_id": artifact.id,
|
||||
"path": artifact.path,
|
||||
"value": related,
|
||||
}
|
||||
)
|
||||
|
||||
try:
|
||||
headings = {
|
||||
line.strip()
|
||||
for line in path.read_text(encoding="utf-8").splitlines()
|
||||
if line.startswith("## ")
|
||||
}
|
||||
except FileNotFoundError:
|
||||
continue
|
||||
missing_headings = sorted(PRACTICE_PATTERN_REQUIRED_HEADINGS - headings)
|
||||
if missing_headings:
|
||||
errors.append(
|
||||
{
|
||||
"code": "practice_pattern_missing_sections",
|
||||
"artifact_id": artifact.id,
|
||||
"path": artifact.path,
|
||||
"headings": missing_headings,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
def _check_required_top_level_files(
|
||||
repo_root: Path,
|
||||
errors: list[dict[str, Any]],
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ def test_cli_inspect_emits_json(capsys) -> None:
|
|||
assert exit_code == 0
|
||||
payload = json.loads(capsys.readouterr().out)
|
||||
assert payload["ok"] is True
|
||||
assert payload["infospace"]["artifact_count"] == 68
|
||||
assert payload["infospace"]["artifact_count"] == 70
|
||||
|
||||
|
||||
def test_cli_missing_profile_uses_structured_error(capsys) -> None:
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ from info_tech_canon.service import (
|
|||
generate_indexes,
|
||||
generate_tree,
|
||||
inspect_canon,
|
||||
list_artifacts,
|
||||
list_models,
|
||||
list_standards,
|
||||
profile_graph,
|
||||
|
|
@ -24,7 +25,7 @@ def test_inspect_canon_counts_artifact_kinds() -> None:
|
|||
|
||||
assert payload["ok"] is True
|
||||
assert payload["infospace"]["slug"] == "canon"
|
||||
assert payload["infospace"]["artifact_count"] == 68
|
||||
assert payload["infospace"]["artifact_count"] == 70
|
||||
assert payload["infospace"]["kinds"] == {
|
||||
"access-descriptor-set": 1,
|
||||
"alignment-review-kit": 1,
|
||||
|
|
@ -58,6 +59,8 @@ def test_inspect_canon_counts_artifact_kinds() -> None:
|
|||
"native-concept-map": 1,
|
||||
"pattern": 1,
|
||||
"practice": 1,
|
||||
"practice-pattern": 1,
|
||||
"practice-pattern-scheme": 1,
|
||||
"profile-alignment": 1,
|
||||
"profile": 1,
|
||||
"profile-artifact": 13,
|
||||
|
|
@ -96,17 +99,27 @@ def test_validate_canon_passes_scaffold() -> None:
|
|||
assert payload["ok"] is True
|
||||
assert payload["errors"] == []
|
||||
assert "warnings" in payload
|
||||
assert payload["details"]["artifact_count"] == 68
|
||||
assert payload["details"]["artifact_count"] == 70
|
||||
|
||||
|
||||
def test_graph_exports_relationship_summary() -> None:
|
||||
payload = artifact_graph()
|
||||
|
||||
assert payload["ok"] is True
|
||||
assert payload["graph"]["node_count"] == 68
|
||||
assert payload["graph"]["node_count"] == 70
|
||||
assert payload["graph"]["edge_count"] > 15
|
||||
|
||||
|
||||
def test_interface_deprecation_strangler_is_a_registered_practice_pattern() -> None:
|
||||
payload = list_artifacts(kind="practice-pattern")
|
||||
|
||||
assert payload["count"] == 1
|
||||
pattern = payload["artifacts"][0]
|
||||
assert pattern["id"] == "practice-pattern/interface-deprecation-strangler"
|
||||
assert pattern["title"] == "InterfaceDeprecationStrangler"
|
||||
assert pattern["path"] == "patterns/InterfaceDeprecationStrangler.md"
|
||||
|
||||
|
||||
def test_capability_review_joins_a_minimal_record(tmp_path) -> None:
|
||||
record = {
|
||||
"record_id": "test",
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ title: "PracticePattern language and InterfaceDeprecationStrangler"
|
|||
domain: infotech
|
||||
topic_slug: canon
|
||||
repo: info-tech-canon
|
||||
status: active
|
||||
status: finished
|
||||
priority: high
|
||||
created: "2026-08-21"
|
||||
updated: "2026-08-21"
|
||||
|
|
@ -33,7 +33,7 @@ Christopher Alexander's pattern-language method, seed it with the proven
|
|||
|
||||
```task
|
||||
id: ITC-WP-0016-T01
|
||||
status: progress
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "4e581485-52cc-4de6-86ac-8876104df930"
|
||||
```
|
||||
|
|
@ -47,7 +47,7 @@ canon validation for the contract.
|
|||
|
||||
```task
|
||||
id: ITC-WP-0016-T02
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "f94abadb-26e1-49cf-bf0a-7d6b7bbe6b2e"
|
||||
```
|
||||
|
|
@ -60,7 +60,7 @@ consequences, adoption checklist, and known use in State Hub.
|
|||
|
||||
```task
|
||||
id: ITC-WP-0016-T03
|
||||
status: todo
|
||||
status: done
|
||||
priority: medium
|
||||
state_hub_task_id: "ca98c387-25f4-4493-9f83-1b91269ee584"
|
||||
```
|
||||
|
|
@ -73,7 +73,7 @@ retrieve the named practice without relying on the originating repository.
|
|||
|
||||
```task
|
||||
id: ITC-WP-0016-T04
|
||||
status: todo
|
||||
status: done
|
||||
priority: medium
|
||||
state_hub_task_id: "ff7e1e12-ada5-43ae-8a86-78419fff79ae"
|
||||
```
|
||||
|
|
@ -84,11 +84,19 @@ artifact ID and path and the local adoption expectations.
|
|||
|
||||
## Acceptance
|
||||
|
||||
- [ ] PracticePattern Markdown artifacts have a documented and validated v0.1 scheme.
|
||||
- [ ] `InterfaceDeprecationStrangler` is a registered, retrieval-visible canon artifact.
|
||||
- [ ] The pattern distinguishes successful legacy traffic from attempted use of a retired interface.
|
||||
- [ ] `arc-nexus` names the pattern and states how it applies locally.
|
||||
- [ ] Canon validation and tests pass; both repositories are committed and synchronized.
|
||||
- [x] PracticePattern Markdown artifacts have a documented and validated v0.1 scheme.
|
||||
- [x] `InterfaceDeprecationStrangler` is a registered, retrieval-visible canon artifact.
|
||||
- [x] The pattern distinguishes successful legacy traffic from attempted use of a retired interface.
|
||||
- [x] `arc-nexus` names the pattern and states how it applies locally.
|
||||
- [x] Canon validation and tests pass; both repositories are committed and synchronized.
|
||||
|
||||
## Result
|
||||
|
||||
Completed 2026-08-21. The canon now carries an Alexander-inspired
|
||||
PracticePattern v0.1 Markdown scheme, a matching frontmatter schema and
|
||||
structural validator, the active `InterfaceDeprecationStrangler` known use, and
|
||||
generated graph, view, and agent-retrieval assets. `arc-nexus` adopted the
|
||||
pattern by name and contract in commit `ff21e8a`.
|
||||
|
||||
## Out of scope
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue