Implement canon conformance and maintenance optimizations
Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a06e82-3e08-7042-a79d-438ac6eed8db
This commit is contained in:
parent
a2e7f22d8d
commit
b081d39da1
64 changed files with 4491 additions and 373 deletions
1090
.repo-manager/index.json
Normal file
1090
.repo-manager/index.json
Normal file
File diff suppressed because it is too large
Load diff
39
CHANGELOG.md
39
CHANGELOG.md
|
|
@ -15,6 +15,45 @@ semantics.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 0.7.0 — 2026-09-04
|
||||||
|
|
||||||
|
### Added — ecosystem-wide EmissionCadenceDeclaration contract
|
||||||
|
|
||||||
|
**Change.** Added the draft `ITC-EMISSION-CADENCE` standard and JSON Schema
|
||||||
|
contract version `0.1`. The contract defines source-authored expected-rate,
|
||||||
|
heartbeat, and reconciliation cadence semantics, namespaced profile extensions,
|
||||||
|
strict form validation, and compatibility rules. A schema-valid
|
||||||
|
`qonto-assistant` worked example demonstrates both forms without claiming to be
|
||||||
|
the source-owned live declaration.
|
||||||
|
|
||||||
|
**Ownership.** InfoTechCanon owns the generic forms, fields, validation, and
|
||||||
|
evolution under `GH-DEC-2026-004`. NetKingdom owns its importing security
|
||||||
|
profile, including evidence-class policy and stronger requirements for rare
|
||||||
|
load-bearing streams. Sources own instances; observers own evaluation and
|
||||||
|
findings.
|
||||||
|
|
||||||
|
**Rationale.** Stream silence cannot be evaluated from event contents alone,
|
||||||
|
and a Staff-layer consumer must not own the Taxonomy contract it evaluates.
|
||||||
|
The split preserves one owner per semantic layer without turning NetKingdom
|
||||||
|
security doctrine into an ecosystem-wide rule.
|
||||||
|
|
||||||
|
**Provenance.** King's Guard draft 0.1.0, frozen under
|
||||||
|
`assimilation/emission-cadence`; disposition `adapt`; `ITC-WP-0018`.
|
||||||
|
|
||||||
|
**Breaking:** no. This is a new draft artifact and schema.
|
||||||
|
|
||||||
|
**Validation.** The built-in example is checked against JSON Schema Draft 2020-12;
|
||||||
|
negative tests cover missing/ambiguous windows, missing intermittent mechanisms,
|
||||||
|
and unnamespaced profile fields. `make validate` reports 0 errors and 0 warnings;
|
||||||
|
`make test` passes 29 tests.
|
||||||
|
|
||||||
|
**Completed illustration.** The Small-SaaS profile now includes the optional
|
||||||
|
ITC-CAP requirement/provision record left by `ITC-WP-0014-T04`. Its four
|
||||||
|
requirements are joined to catalog-valid provisions and evidence and meet their
|
||||||
|
declared maturity floors.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 0.6.0 — 2026-08-15
|
## 0.6.0 — 2026-08-15
|
||||||
|
|
||||||
### Frozen — ITC-CAP draft; AttributeValueType catalog; joinable review
|
### Frozen — ITC-CAP draft; AttributeValueType catalog; joinable review
|
||||||
|
|
|
||||||
30
INTENT.md
30
INTENT.md
|
|
@ -1,26 +1,25 @@
|
||||||
# INTENT
|
# INTENT
|
||||||
|
|
||||||
> **NetKingdom layering review — 2026-08-28.** This repository's role was reviewed
|
|
||||||
> against the NetKingdom IT-security layer model: **Taxonomy → Tooling → Engines →
|
|
||||||
> Staff**, layered by determinism and by the kind of artifact each layer produces.
|
|
||||||
> Findings and the argument behind them:
|
|
||||||
> `gate-house/history/2026-08-28-security-layer-model-and-gate-house-recut.md`.
|
|
||||||
> The model is `net-kingdom/canon/standards/security-layer-model_v0.1.md` (proposed),
|
|
||||||
> ratified by `gate-house/decisions/decisions.md` GH-DEC-2026-001.
|
|
||||||
>
|
|
||||||
> The layer rule that binds every repository: **Staff never touches tooling
|
|
||||||
> directly. It acts only through engine APIs.**
|
|
||||||
>
|
|
||||||
> **This repository is Taxonomy — cross-cutting, ecosystem-wide.** Clarify the split with net-kingdom canon: info-tech-canon owns cross-cutting semantic contracts and terminology for the whole ecosystem; NetKingdom-specific security architecture — including the layer model — is net-kingdom canon's. No change of role, only an explicit boundary so the two canons are not read as competing.
|
|
||||||
>
|
|
||||||
> *This note records what should change. The body below is not yet adapted.*
|
|
||||||
|
|
||||||
## Purpose
|
## Purpose
|
||||||
|
|
||||||
This repository exists to develop and maintain **InfoTechCanon**: an evolving, markdown-first reference system for building interoperable, adaptable, and extensible information-processing systems.
|
This repository exists to develop and maintain **InfoTechCanon**: an evolving, markdown-first reference system for building interoperable, adaptable, and extensible information-processing systems.
|
||||||
|
|
||||||
InfoTechCanon provides a shared semantic foundation for standards, concepts, patterns, profiles, mappings, and assimilation processes used across software, infrastructure, governance, DevSecOps, task management, knowledge systems, and related domains.
|
InfoTechCanon provides a shared semantic foundation for standards, concepts, patterns, profiles, mappings, and assimilation processes used across software, infrastructure, governance, DevSecOps, task management, knowledge systems, and related domains.
|
||||||
|
|
||||||
|
## Layer And Boundary
|
||||||
|
|
||||||
|
This repository declares itself part of the **Taxonomy** layer under the
|
||||||
|
NetKingdom Security Layer Model. It produces cross-cutting language: terms,
|
||||||
|
semantic contracts, standards, profiles, mappings, and compatibility rules that
|
||||||
|
let independently owned systems interoperate.
|
||||||
|
|
||||||
|
InfoTechCanon owns ecosystem-wide semantic contracts and terminology. It does
|
||||||
|
not own a runtime position or state on which another layer depends. NetKingdom
|
||||||
|
owns its security architecture and standards of record, including the security
|
||||||
|
layer model and any NetKingdom-specific profiles that import this canon. A
|
||||||
|
generic semantic contract belongs here; a security obligation imposed on the
|
||||||
|
NetKingdom estate belongs there.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Primary Utility
|
## Primary Utility
|
||||||
|
|
@ -120,4 +119,3 @@ The repository should initially establish:
|
||||||
- and example subsystem interface declarations.
|
- and example subsystem interface declarations.
|
||||||
|
|
||||||
Over time, the repository should grow into a living canon that supports human reasoning, agentic workflows, validation, documentation generation, knowledge retrieval, and practical system integration.
|
Over time, the repository should grow into a living canon that supports human reasoning, agentic workflows, validation, documentation generation, knowledge retrieval, and practical system integration.
|
||||||
|
|
||||||
|
|
|
||||||
14
Makefile
14
Makefile
|
|
@ -1,5 +1,7 @@
|
||||||
PYTHON ?= python3
|
PYTHON ?= python3
|
||||||
CANON_CLI = PYTHONPATH=src $(PYTHON) -m info_tech_canon
|
CANON_CLI = PYTHONPATH=src:$(BENCH_SOURCE) $(PYTHON) -m info_tech_canon
|
||||||
|
# Optional development source override; installed distributions need no override.
|
||||||
|
BENCH_SOURCE ?= ../infospace-bench/src
|
||||||
|
|
||||||
.PHONY: validate index tree agent-briefs test
|
.PHONY: validate index tree agent-briefs test
|
||||||
|
|
||||||
|
|
@ -17,3 +19,13 @@ agent-briefs:
|
||||||
|
|
||||||
test:
|
test:
|
||||||
$(PYTHON) -m pytest
|
$(PYTHON) -m pytest
|
||||||
|
|
||||||
|
.PHONY: check-generated refresh check
|
||||||
|
check-generated:
|
||||||
|
$(CANON_CLI) check-generated
|
||||||
|
|
||||||
|
refresh: index tree agent-briefs
|
||||||
|
|
||||||
|
check: test check-generated
|
||||||
|
$(CANON_CLI) validate
|
||||||
|
$(CANON_CLI) profile validate small-saas
|
||||||
|
|
|
||||||
13
README.md
13
README.md
|
|
@ -14,6 +14,10 @@ The first service surface is intentionally small:
|
||||||
|
|
||||||
## Source-Tree Usage
|
## Source-Tree Usage
|
||||||
|
|
||||||
|
These commands assume `infospace-bench` is installed. For development against
|
||||||
|
an adjacent checkout, use `PYTHONPATH=src:../infospace-bench/src` instead of
|
||||||
|
`PYTHONPATH=src`, or use the Makefile targets.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
PYTHONPATH=src python3 -m info_tech_canon inspect
|
PYTHONPATH=src python3 -m info_tech_canon inspect
|
||||||
PYTHONPATH=src python3 -m info_tech_canon artifacts
|
PYTHONPATH=src python3 -m info_tech_canon artifacts
|
||||||
|
|
@ -57,6 +61,15 @@ After package installation, the same commands are available through the
|
||||||
|
|
||||||
## Maintenance
|
## Maintenance
|
||||||
|
|
||||||
|
Contract consumption, installation boundaries, independent adoption criteria,
|
||||||
|
and freshness checks are documented in
|
||||||
|
[Reproducible canon consumption](docs/canon-consumption.md).
|
||||||
|
|
||||||
|
Additional CLI commands: `emission-review RECORD`,
|
||||||
|
`export-emission-contract DIRECTORY`, `validation-coverage`, `scope-inventory`,
|
||||||
|
`check-generated`, and `benchmark-reads`. Use `--root PATH` before the command
|
||||||
|
to select a corpus independently of the installed package.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
make validate
|
make validate
|
||||||
make index
|
make index
|
||||||
|
|
|
||||||
308
SCOPE.md
308
SCOPE.md
|
|
@ -1,241 +1,115 @@
|
||||||
# SCOPE
|
# SCOPE
|
||||||
|
|
||||||
## Current Repository Scope
|
Reviewed: 2026-09-05 (Europe/Berlin), including the uncommitted working tree.
|
||||||
|
|
||||||
This repository currently contains the seed structure for **InfoTechCanon**: an evolving, markdown-first canon for building interoperable, adaptable, and extensible information-processing systems.
|
## Current repository scope
|
||||||
|
|
||||||
At this stage, the repository is not yet a fully validated standards system. It is a **seed corpus** of kernel documents, domain models, specialized standards, and integration guidance that together define the first-generation InfoTechCanon kernel.
|
InfoTechCanon maintains one concrete, Markdown-first, machine-readable canon
|
||||||
|
under `infospace/`, with a Python service for inspection, validation, retrieval,
|
||||||
|
and generation. It has progressed beyond its seed corpus to a **service baseline
|
||||||
|
with executable proofs and mixed artifact maturity**.
|
||||||
|
|
||||||
---
|
The working-tree canon version is `0.7.0`; the Python package version is
|
||||||
|
`0.1.0`. These are separate version surfaces. Many models remain `RC1-seed`;
|
||||||
|
ITC-CAP is a frozen draft at `0.4.0`, and Emission Cadence is a draft document
|
||||||
|
at `0.1.0` with wire schema version `0.1`. This is not yet a stable,
|
||||||
|
ecosystem-wide conformance release.
|
||||||
|
|
||||||
## Current Purpose
|
## Ownership and boundaries
|
||||||
|
|
||||||
The repository currently serves to:
|
Following [INTENT.md](INTENT.md), this repository occupies the Taxonomy layer:
|
||||||
|
it owns shared terminology, generic semantic contracts, compatibility rules,
|
||||||
|
and reference artifacts for independently owned systems.
|
||||||
|
|
||||||
- collect the first generation of InfoTechCanon standards and models,
|
The CLI, library, and local read-only HTTP API serve and check those artifacts.
|
||||||
- define the semantic boundaries between domains,
|
They do not establish ownership of consumer runtime state, enforcement,
|
||||||
- preserve orthogonality between concepts,
|
observation, or orchestration. NetKingdom owns its security architecture and
|
||||||
- provide seed structures for mappings, profiles, patterns, assimilation, validation, and agent use,
|
importing security profiles. Sources own emission-cadence instances; observers
|
||||||
- support future machine-readable extraction,
|
own evaluation and findings; importing profiles own additional policy requirements.
|
||||||
- and act as the first major use case for markdown-based infospaces and related tooling.
|
|
||||||
|
|
||||||
---
|
## Implemented canon content
|
||||||
|
|
||||||
## Current Kernel
|
| Surface | Current responsibility |
|
||||||
|
| --- | --- |
|
||||||
|
| `infospace/kernel/` | Core mechanisms for artifacts, ownership, relationships, mappings, assimilation, profiles, patterns, conformance, provenance, and interfaces; kernel map. |
|
||||||
|
| `infospace/models/` | Information Space, Landscape, Organization, Governance, Task, Access Control, Security, Data, DevSecOps, Network, Observability, and Capability models. |
|
||||||
|
| Extensions and catalogs | PURPOSES/Purpose and Demand governance extension; EvidenceBasis; AttributeValueType; ITC-CAP capabilities, requirements, provisions, maturity, economics, and evidence relationships. |
|
||||||
|
| `infospace/standards/` | Tagging, CARING access governance, Repository Layout, and draft Emission Cadence. |
|
||||||
|
| `infospace/profiles/small-saas/` | Executable example linking service, system, tenants, user, team, data, deployment, task, policy, control, evidence, incident, and capability requirements/provisions. |
|
||||||
|
| `infospace/patterns/` | Intent–Scope–Purposes, PracticePattern scheme, InterfaceDeprecationStrangler, and AgenticDrivesFunctional. |
|
||||||
|
| Mappings and assimilation | Mapping artifacts and source-preserving workspaces for IT Capability Canon and Emission Cadence, including comparisons, dispositions, gaps, and open questions. |
|
||||||
|
| `infospace/evaluations/` | Evaluation/comparison packs for user-engine, railiance-fabric, repo-scoping, and repository-layout. These prepare adoption and review; they do not certify deployed consumers. |
|
||||||
|
| CARING Kubernetes RBAC benchmark | Native-concept mappings, structured access descriptors, findings, conflicts, and proposed improvements. |
|
||||||
|
| `infospace/agent/` | Generated retrieval indexes and artifact briefs, consumer briefs, interface-card template, alignment review kit, and consumer workplan template. |
|
||||||
|
|
||||||
The current kernel consists of:
|
The root is the service and governance shell. `seeds/` preserves provenance.
|
||||||
|
`incoming/`, `demand/`, and `feedback/` distinguish source material, consumer
|
||||||
|
needs, and utility evidence. Workplans and intake records track work;
|
||||||
|
`history/` holds dated assessments. Generated navigation lives under
|
||||||
|
`infospace/indexes/`, `infospace/views/`, and `infospace/agent/`.
|
||||||
|
|
||||||
```text
|
## Implemented service and checks
|
||||||
kernel/
|
|
||||||
InfoTechCanonCore.md
|
|
||||||
InfoTechCanonKernelMap.md
|
|
||||||
```
|
|
||||||
|
|
||||||
### InfoTechCanonCore
|
`src/info_tech_canon/` provides an importable Python service, JSON-first CLI,
|
||||||
|
and read-only HTTP API, defaulting to `127.0.0.1:8765`. Operations include
|
||||||
|
artifact/model/standard inspection, graph export (JSON or Mermaid), canon and
|
||||||
|
profile validation, capability-record review, generated-view retrieval, and
|
||||||
|
alignment-review materials. CLI maintenance commands generate indexes, trees,
|
||||||
|
and agent briefs. Usage and endpoints are in [README.md](README.md).
|
||||||
|
|
||||||
Defines shared canon mechanisms:
|
Validation checks registered paths, artifact IDs and relationship targets,
|
||||||
|
collection metrics, required schema presence, and selected content contracts.
|
||||||
|
Specialized checks cover capability records/catalogs, practice patterns,
|
||||||
|
consumer packs, and the built-in Emission Cadence example. JSON Schemas exist
|
||||||
|
for multiple artifact types, but general schema-to-instance validation and
|
||||||
|
semantic conformance are not complete across the corpus.
|
||||||
|
|
||||||
- canon artifacts,
|
Dependencies are Python 3.12+, PyYAML, jsonschema, and `infospace-bench`.
|
||||||
- concepts,
|
The loader discovers an installed bench distribution. An explicit `--root` or
|
||||||
- concept ownership,
|
`INFO_TECH_CANON_ROOT` selects a separately supplied corpus. Narrow wheel
|
||||||
- relationships,
|
installation is supported; upstream bench's full transitive dependency metadata
|
||||||
- mappings,
|
still contains workstation-specific paths. See
|
||||||
- assimilation,
|
[consumption instructions](docs/canon-consumption.md).
|
||||||
- profiles,
|
|
||||||
- patterns,
|
|
||||||
- validation rules,
|
|
||||||
- conformance levels,
|
|
||||||
- versioning,
|
|
||||||
- provenance,
|
|
||||||
- agent briefs,
|
|
||||||
- and Canon Interface Cards.
|
|
||||||
|
|
||||||
### InfoTechCanonKernelMap
|
## Verified baseline and limits
|
||||||
|
|
||||||
Shows how the first-generation standards and models fit together, including the position of CARING as a specialized access-governance standard.
|
After INFO-WP-0019 implementation, `make check` passed **36 tests** and
|
||||||
|
verified **77 generated assets**. Read-only CLI validation
|
||||||
|
reported **76 registered artifacts, 315 relationships, zero errors and zero
|
||||||
|
warnings**. Small-SaaS validation passed with **15 artifacts/payloads**.
|
||||||
|
|
||||||
---
|
The ownership calculation reports 129 entries and no cross-owner conflicts,
|
||||||
|
but derives entries from artifact titles and explicit `owned_concepts`
|
||||||
|
frontmatter. It does not establish ownership of every concept in prose.
|
||||||
|
Collection coverage metrics measure the registered corpus, not fulfillment
|
||||||
|
of every intent commitment.
|
||||||
|
|
||||||
## Current Models
|
Current limitations include:
|
||||||
|
|
||||||
The repository currently includes seed models for:
|
- incomplete concept extraction and enforcement of concept-level imports;
|
||||||
|
- uneven schema depth and validation coverage, including no formal
|
||||||
|
CARINGAccessDescriptor schema or complete effective-access calculus;
|
||||||
|
- limited external mapping and independent consumer interoperability evidence;
|
||||||
|
- interface templates and evaluation packs without a complete set of
|
||||||
|
source-owned, version-pinned consumer declarations;
|
||||||
|
- draft promotion and compatibility questions, including the requirement for
|
||||||
|
two independent Emission Cadence source implementations;
|
||||||
|
- upstream full-application packaging limitations and consumer-owned adoption evidence.
|
||||||
|
|
||||||
```text
|
INFO-WP-0019 adds reusable arbitrary Emission Cadence declaration validation,
|
||||||
models/
|
mapping schema checks, explicit ownership-conflict enforcement, a validation
|
||||||
information-space/
|
coverage report, content-addressed contract export, generated-asset freshness
|
||||||
landscape/
|
checks, scope inventory, and validation source/time evidence. These mechanisms
|
||||||
organization/
|
do not close the semantic or independent-adoption gaps listed above.
|
||||||
governance/
|
|
||||||
task/
|
|
||||||
access-control/
|
|
||||||
security/
|
|
||||||
data/
|
|
||||||
devsecops/
|
|
||||||
network/
|
|
||||||
observability/
|
|
||||||
```
|
|
||||||
|
|
||||||
These models define broad domain structures.
|
## Exclusions and evolution
|
||||||
|
|
||||||
| Model | Current Responsibility |
|
This repository does not replace external standards, mandate one universal
|
||||||
|---|---|
|
enterprise model, operate consumer systems, enforce NetKingdom policy, or
|
||||||
| Information Space | Markdown-first knowledge packaging, retrieval, links, chunks, indexes, agent briefs |
|
provide production observability or authorization services. A complete
|
||||||
| Landscape | IT landscapes, services, systems, runtime resources, infrastructure context |
|
ontology and exhaustive external-standard mappings are not current deliverables.
|
||||||
| Organization | Actors, roles, teams, membership, responsibility, authority, accountability |
|
|
||||||
| Governance | Policies, rules, decisions, controls, risk, evidence, exceptions, assurance |
|
|
||||||
| Task | Work items, options, tasks, actions, blockers, dependencies, commitment, outcomes |
|
|
||||||
| Access Control | Subjects, principals, permissions, grants, authorization decisions, enforcement |
|
|
||||||
| Security | Threats, weaknesses, vulnerabilities, findings, exposure, attack paths, incidents |
|
|
||||||
| Data | Datasets, schemas, data products, classification, lineage, quality, contracts |
|
|
||||||
| DevSecOps | Source-to-artifact-to-release-to-deployment delivery flow and evidence |
|
|
||||||
| Network | Addressing, topology, routing, policy, reachability, exposure, network state |
|
|
||||||
| Observability | Telemetry, logs, metrics, traces, alerts, SLOs, health, operational evidence |
|
|
||||||
|
|
||||||
---
|
Further semantic coverage, stronger conformance, and consumer adoption are
|
||||||
|
consistent with intent but require follow-up work. Evidence, gaps, and
|
||||||
## Current Specialized Standards
|
optimization options are recorded in the
|
||||||
|
[2026-09-05 scope assessment](history/2026-09-05_002437+0200-scope-against-intent.md).
|
||||||
The repository currently includes specialized standards for:
|
|
||||||
|
|
||||||
```text
|
|
||||||
standards/
|
|
||||||
tagging/
|
|
||||||
caring/
|
|
||||||
```
|
|
||||||
|
|
||||||
| Standard | Current Responsibility |
|
|
||||||
|---|---|
|
|
||||||
| Tagging | Tag identity, schemes, namespaces, assignments, mappings, validation |
|
|
||||||
| CARING | Orthogonal access-governance analysis using canonical roles, planes, exposure modes, derived and induced capabilities |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Current Structural Assumptions
|
|
||||||
|
|
||||||
The current repository structure assumes the distinction:
|
|
||||||
|
|
||||||
```text
|
|
||||||
Kernel
|
|
||||||
Defines how the canon works.
|
|
||||||
|
|
||||||
Models
|
|
||||||
Define broad domain structures.
|
|
||||||
|
|
||||||
Standards
|
|
||||||
Define cross-cutting conventions, mechanisms, or named analytical/design frameworks.
|
|
||||||
|
|
||||||
Profiles
|
|
||||||
Constrain models and standards for concrete implementation contexts.
|
|
||||||
|
|
||||||
Patterns
|
|
||||||
Describe recurring practical solutions.
|
|
||||||
|
|
||||||
Mappings
|
|
||||||
Relate InfoTechCanon concepts to external bodies of knowledge.
|
|
||||||
|
|
||||||
Assimilation
|
|
||||||
Analyzes external knowledge bodies and turns them into mappings, gaps, conflicts, and proposed changes.
|
|
||||||
|
|
||||||
Views
|
|
||||||
Provide generated or curated navigation over canon artifacts.
|
|
||||||
|
|
||||||
Agent
|
|
||||||
Provides compact, retrieval-optimized guidance for AI agents and tools.
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Current Non-Goals
|
|
||||||
|
|
||||||
The current repository does not yet provide:
|
|
||||||
|
|
||||||
- a complete ontology,
|
|
||||||
- complete YAML/JSON schemas for all artifact types,
|
|
||||||
- automated validation tooling,
|
|
||||||
- fully extracted concept pages,
|
|
||||||
- finalized mappings to external standards,
|
|
||||||
- complete application profiles,
|
|
||||||
- complete agent retrieval indexes,
|
|
||||||
- mature conformance tests,
|
|
||||||
- or a stable release of the InfoTechCanon.
|
|
||||||
|
|
||||||
The current scope is seed-level structure and consolidation.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Current Known Duplication
|
|
||||||
|
|
||||||
The current seed standards still repeat some generic sections that should eventually be centralized in `InfoTechCanonCore`, including:
|
|
||||||
|
|
||||||
- mapping model,
|
|
||||||
- assimilation model,
|
|
||||||
- profile format,
|
|
||||||
- conformance levels,
|
|
||||||
- validation rule format,
|
|
||||||
- repository placement,
|
|
||||||
- agent brief requirements,
|
|
||||||
- Canon Interface Card usage,
|
|
||||||
- lifecycle statuses.
|
|
||||||
|
|
||||||
This duplication is accepted for the seed phase but should be reduced during refactoring.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Current Refactoring Priorities
|
|
||||||
|
|
||||||
Near-term work should focus on:
|
|
||||||
|
|
||||||
1. moving repeated generic mechanisms into Core,
|
|
||||||
2. creating machine-readable schemas,
|
|
||||||
3. extracting concept pages from seed standards,
|
|
||||||
4. creating global indexes,
|
|
||||||
5. creating agent briefs,
|
|
||||||
6. creating first application profiles,
|
|
||||||
7. creating formal assimilation workspaces,
|
|
||||||
8. running CARING as the first full benchmark assimilation,
|
|
||||||
9. validating concept ownership across the kernel,
|
|
||||||
10. and creating Canon Interface Cards for initial tools and repositories.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## First Validation Targets
|
|
||||||
|
|
||||||
The first validation targets should be:
|
|
||||||
|
|
||||||
```text
|
|
||||||
1. Concept ownership table
|
|
||||||
2. Cross-standard import matrix
|
|
||||||
3. Kernel dependency graph
|
|
||||||
4. CARING access descriptor schema
|
|
||||||
5. Mapping schema
|
|
||||||
6. Profile schema
|
|
||||||
7. Agent brief schema
|
|
||||||
8. Repository layout validation
|
|
||||||
9. Internal link validation
|
|
||||||
10. Duplicate concept detection
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Current Maturity
|
|
||||||
|
|
||||||
The repository is currently at:
|
|
||||||
|
|
||||||
```text
|
|
||||||
Maturity: Seed Kernel
|
|
||||||
Status: Pre-release consolidation
|
|
||||||
Primary use: Human/agent reference and refactoring foundation
|
|
||||||
```
|
|
||||||
|
|
||||||
The next maturity target is:
|
|
||||||
|
|
||||||
```text
|
|
||||||
Maturity: Kernel RC1
|
|
||||||
Condition:
|
|
||||||
Core mechanisms centralized,
|
|
||||||
standards indexed,
|
|
||||||
concept ownership explicit,
|
|
||||||
first profiles and mappings created,
|
|
||||||
CARING assimilation completed,
|
|
||||||
and basic validation scripts available.
|
|
||||||
```
|
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@
|
||||||
| Kind | ID | Status | Lane | Source |
|
| Kind | ID | Status | Lane | Source |
|
||||||
| --- | --- | --- | --- | --- |
|
| --- | --- | --- | --- | --- |
|
||||||
| workplan | ITC-WP-ADHOC-2026-08-15 | finished | — | workplans/ADHOC-2026-08-15.md |
|
| workplan | ITC-WP-ADHOC-2026-08-15 | finished | — | workplans/ADHOC-2026-08-15.md |
|
||||||
|
| workplan | INFO-WP-0019 | blocked | — | workplans/INFO-WP-0019-conformance-and-maintenance.md |
|
||||||
| workplan | ITC-WP-0001 | finished | — | workplans/ITC-WP-0001-infospace-scaffold-and-seed-placement.md |
|
| workplan | ITC-WP-0001 | finished | — | workplans/ITC-WP-0001-infospace-scaffold-and-seed-placement.md |
|
||||||
| workplan | ITC-WP-0002 | finished | — | workplans/ITC-WP-0002-service-surface-cli-json-api.md |
|
| workplan | ITC-WP-0002 | finished | — | workplans/ITC-WP-0002-service-surface-cli-json-api.md |
|
||||||
| workplan | ITC-WP-0003 | finished | — | workplans/ITC-WP-0003-validation-indexes-and-generated-views.md |
|
| workplan | ITC-WP-0003 | finished | — | workplans/ITC-WP-0003-validation-indexes-and-generated-views.md |
|
||||||
|
|
@ -26,9 +27,16 @@
|
||||||
| workplan | ITC-WP-0015 | finished | — | workplans/ITC-WP-0015-evidence-basis.md |
|
| workplan | ITC-WP-0015 | finished | — | workplans/ITC-WP-0015-evidence-basis.md |
|
||||||
| workplan | ITC-WP-0016 | finished | — | workplans/ITC-WP-0016-practice-pattern-language.md |
|
| workplan | ITC-WP-0016 | finished | — | workplans/ITC-WP-0016-practice-pattern-language.md |
|
||||||
| workplan | ITC-WP-0017 | finished | — | workplans/ITC-WP-0017-agentic-drives-functional.md |
|
| workplan | ITC-WP-0017 | finished | — | workplans/ITC-WP-0017-agentic-drives-functional.md |
|
||||||
|
| workplan | ITC-WP-0018 | finished | — | workplans/ITC-WP-0018-emission-cadence-contract.md |
|
||||||
| task | ITC-WP-ADHOC-2026-08-15-T01 | done | — | workplans/ADHOC-2026-08-15.md |
|
| task | ITC-WP-ADHOC-2026-08-15-T01 | done | — | workplans/ADHOC-2026-08-15.md |
|
||||||
| task | ITC-WP-ADHOC-2026-08-15-T02 | done | — | workplans/ADHOC-2026-08-15.md |
|
| task | ITC-WP-ADHOC-2026-08-15-T02 | done | — | workplans/ADHOC-2026-08-15.md |
|
||||||
| task | ITC-WP-ADHOC-2026-08-15-T03 | done | — | workplans/ADHOC-2026-08-15.md |
|
| task | ITC-WP-ADHOC-2026-08-15-T03 | done | — | workplans/ADHOC-2026-08-15.md |
|
||||||
|
| task | INFO-WP-0019-T01 | done | — | workplans/INFO-WP-0019-conformance-and-maintenance.md |
|
||||||
|
| task | INFO-WP-0019-T02 | done | — | workplans/INFO-WP-0019-conformance-and-maintenance.md |
|
||||||
|
| task | INFO-WP-0019-T03 | done | — | workplans/INFO-WP-0019-conformance-and-maintenance.md |
|
||||||
|
| task | INFO-WP-0019-T04 | done | — | workplans/INFO-WP-0019-conformance-and-maintenance.md |
|
||||||
|
| task | INFO-WP-0019-T05 | done | — | workplans/INFO-WP-0019-conformance-and-maintenance.md |
|
||||||
|
| task | INFO-WP-0019-T06 | wait | — | workplans/INFO-WP-0019-conformance-and-maintenance.md |
|
||||||
| task | ITC-WP-0001-T01 | done | — | workplans/ITC-WP-0001-infospace-scaffold-and-seed-placement.md |
|
| task | ITC-WP-0001-T01 | done | — | workplans/ITC-WP-0001-infospace-scaffold-and-seed-placement.md |
|
||||||
| task | ITC-WP-0001-T02 | done | — | workplans/ITC-WP-0001-infospace-scaffold-and-seed-placement.md |
|
| task | ITC-WP-0001-T02 | done | — | workplans/ITC-WP-0001-infospace-scaffold-and-seed-placement.md |
|
||||||
| task | ITC-WP-0001-T03 | done | — | workplans/ITC-WP-0001-infospace-scaffold-and-seed-placement.md |
|
| task | ITC-WP-0001-T03 | done | — | workplans/ITC-WP-0001-infospace-scaffold-and-seed-placement.md |
|
||||||
|
|
@ -87,7 +95,7 @@
|
||||||
| task | ITC-WP-0014-T01 | done | — | workplans/ITC-WP-0014-capability-model-consolidation.md |
|
| task | ITC-WP-0014-T01 | done | — | workplans/ITC-WP-0014-capability-model-consolidation.md |
|
||||||
| task | ITC-WP-0014-T02 | done | — | workplans/ITC-WP-0014-capability-model-consolidation.md |
|
| task | ITC-WP-0014-T02 | done | — | workplans/ITC-WP-0014-capability-model-consolidation.md |
|
||||||
| task | ITC-WP-0014-T03 | done | — | workplans/ITC-WP-0014-capability-model-consolidation.md |
|
| task | ITC-WP-0014-T03 | done | — | workplans/ITC-WP-0014-capability-model-consolidation.md |
|
||||||
| task | ITC-WP-0014-T04 | todo | — | workplans/ITC-WP-0014-capability-model-consolidation.md |
|
| task | ITC-WP-0014-T04 | done | — | workplans/ITC-WP-0014-capability-model-consolidation.md |
|
||||||
| task | ITC-WP-0014-T05 | done | — | workplans/ITC-WP-0014-capability-model-consolidation.md |
|
| task | ITC-WP-0014-T05 | done | — | workplans/ITC-WP-0014-capability-model-consolidation.md |
|
||||||
| task | ITC-WP-0014-T06 | done | — | workplans/ITC-WP-0014-capability-model-consolidation.md |
|
| task | ITC-WP-0014-T06 | done | — | workplans/ITC-WP-0014-capability-model-consolidation.md |
|
||||||
| task | ITC-WP-0014-T07 | done | — | workplans/ITC-WP-0014-capability-model-consolidation.md |
|
| task | ITC-WP-0014-T07 | done | — | workplans/ITC-WP-0014-capability-model-consolidation.md |
|
||||||
|
|
@ -104,4 +112,7 @@
|
||||||
| task | ITC-WP-0016-T04 | done | — | workplans/ITC-WP-0016-practice-pattern-language.md |
|
| task | ITC-WP-0016-T04 | done | — | workplans/ITC-WP-0016-practice-pattern-language.md |
|
||||||
| task | ITC-WP-0017-T01 | done | — | workplans/ITC-WP-0017-agentic-drives-functional.md |
|
| task | ITC-WP-0017-T01 | done | — | workplans/ITC-WP-0017-agentic-drives-functional.md |
|
||||||
| task | ITC-WP-0017-T02 | done | — | workplans/ITC-WP-0017-agentic-drives-functional.md |
|
| task | ITC-WP-0017-T02 | done | — | workplans/ITC-WP-0017-agentic-drives-functional.md |
|
||||||
| intake | ITC-IN-0001 | open | — | intakes/intakes.md |
|
| task | ITC-WP-0018-T01 | done | — | workplans/ITC-WP-0018-emission-cadence-contract.md |
|
||||||
|
| task | ITC-WP-0018-T02 | done | — | workplans/ITC-WP-0018-emission-cadence-contract.md |
|
||||||
|
| task | ITC-WP-0018-T03 | done | — | workplans/ITC-WP-0018-emission-cadence-contract.md |
|
||||||
|
| intake | ITC-IN-0001 | closed | — | intakes/intakes.md |
|
||||||
|
|
|
||||||
29
canon.yaml
29
canon.yaml
|
|
@ -1,7 +1,7 @@
|
||||||
repository: info-tech-canon
|
repository: info-tech-canon
|
||||||
title: InfoTechCanon
|
title: InfoTechCanon
|
||||||
status: service-baseline
|
status: service-baseline
|
||||||
version: 0.6.0
|
version: 0.7.0
|
||||||
description: >
|
description: >
|
||||||
An evolving, markdown-first canon for building interoperable, adaptable,
|
An evolving, markdown-first canon for building interoperable, adaptable,
|
||||||
and extensible information-processing systems.
|
and extensible information-processing systems.
|
||||||
|
|
@ -114,6 +114,17 @@ standards:
|
||||||
title: InfoTechCanonRepositoryLayoutStandard
|
title: InfoTechCanonRepositoryLayoutStandard
|
||||||
path: infospace/standards/repository-layout/InfoTechCanonRepositoryLayoutStandard.md
|
path: infospace/standards/repository-layout/InfoTechCanonRepositoryLayoutStandard.md
|
||||||
status: RC1-seed
|
status: RC1-seed
|
||||||
|
- id: itc-emission-cadence
|
||||||
|
title: InfoTechCanonEmissionCadenceStandard
|
||||||
|
path: infospace/standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md
|
||||||
|
status: draft
|
||||||
|
version: 0.1.0
|
||||||
|
schema: infospace/schemas/emission-cadence.schema.yaml
|
||||||
|
provenance:
|
||||||
|
assimilation: assimilation/emission-cadence
|
||||||
|
source_body: King's Guard EmissionCadenceDeclaration handover
|
||||||
|
source_version: 0.1.0
|
||||||
|
disposition: adapt
|
||||||
|
|
||||||
planned_directories:
|
planned_directories:
|
||||||
- infospace/
|
- infospace/
|
||||||
|
|
@ -150,6 +161,9 @@ workplans:
|
||||||
- ITC-WP-0013
|
- ITC-WP-0013
|
||||||
- ITC-WP-0014
|
- ITC-WP-0014
|
||||||
- ITC-WP-0015
|
- ITC-WP-0015
|
||||||
|
- ITC-WP-0016
|
||||||
|
- ITC-WP-0017
|
||||||
|
- ITC-WP-0018
|
||||||
|
|
||||||
feedback:
|
feedback:
|
||||||
path: feedback/
|
path: feedback/
|
||||||
|
|
@ -166,6 +180,11 @@ assimilation:
|
||||||
disposition: adapt
|
disposition: adapt
|
||||||
status: closed
|
status: closed
|
||||||
produced: itc-cap
|
produced: itc-cap
|
||||||
|
- id: assimilation/emission-cadence
|
||||||
|
source: King's Guard EmissionCadenceDeclaration draft 0.1.0
|
||||||
|
disposition: adapt
|
||||||
|
status: closed
|
||||||
|
produced: itc-emission-cadence
|
||||||
|
|
||||||
first_proofs:
|
first_proofs:
|
||||||
near_term:
|
near_term:
|
||||||
|
|
@ -178,8 +197,6 @@ first_proofs:
|
||||||
- caring-kubernetes-rbac
|
- caring-kubernetes-rbac
|
||||||
|
|
||||||
next_actions:
|
next_actions:
|
||||||
- implement ITC-WP-0003 validation and generated views
|
- keep ITC-CAP 0.4.0 frozen; do not change its shape without a new minor
|
||||||
- implement ITC-WP-0004 small-saas profile proof
|
- collect two independent EmissionCadenceDeclaration source implementations
|
||||||
- explore ITC-WP-0006 PURPOSES model extension
|
before promoting ITC-EMISSION-CADENCE beyond draft
|
||||||
- sit on canon 0.6.0; do not change ITC-CAP shape without a new minor
|
|
||||||
- optional ITC-WP-0014 T04 small-saas illustration (not a promotion gate)
|
|
||||||
|
|
|
||||||
86
docs/canon-consumption.md
Normal file
86
docs/canon-consumption.md
Normal file
|
|
@ -0,0 +1,86 @@
|
||||||
|
# Reproducible canon consumption
|
||||||
|
|
||||||
|
The Python service and canon corpus have independent versions. Install the
|
||||||
|
service into a virtual environment and supply a pinned corpus checkout with
|
||||||
|
`--root /path/to/corpus/infospace` or `INFO_TECH_CANON_ROOT`. Source-tree users
|
||||||
|
may use `make` targets; `BENCH_SOURCE` is an optional development override.
|
||||||
|
Installed use does not depend on adjacent source directories.
|
||||||
|
|
||||||
|
## Installation boundary
|
||||||
|
|
||||||
|
The service requires Python 3.12+, PyYAML, jsonschema, and the reference-data
|
||||||
|
modules of infospace-bench 0.1.0. Its distribution is discovered through Python's
|
||||||
|
installed module search path. A narrow adapter avoids executing the upstream
|
||||||
|
initializer, which imports unrelated database/engine integrations.
|
||||||
|
|
||||||
|
The upstream bench distribution still declares workstation-specific dependencies
|
||||||
|
for its full application. Until its owner separates the reference-data package,
|
||||||
|
use reviewed local wheels and install the narrow service dependencies explicitly:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python3 -m venv /path/to/venv
|
||||||
|
/path/to/venv/bin/pip install PyYAML jsonschema
|
||||||
|
/path/to/venv/bin/pip install --no-deps --no-index /path/to/infospace_bench-0.1.0-py3-none-any.whl /path/to/info_tech_canon-0.1.0-py3-none-any.whl
|
||||||
|
/path/to/venv/bin/info-tech-canon --root /path/to/canon/infospace inspect
|
||||||
|
```
|
||||||
|
|
||||||
|
Pin wheel hashes and the corpus revision in consumer deployment records.
|
||||||
|
This procedure supports canon reference operations, not the complete bench
|
||||||
|
application. A normal transitive dependency installation remains an upstream
|
||||||
|
packaging limitation. The corpus is supplied separately and includes its root
|
||||||
|
governance files and provenance inputs (including `seeds/` and `demand/`) when
|
||||||
|
whole-repository validation is required.
|
||||||
|
|
||||||
|
## Declaration and bundle workflow
|
||||||
|
|
||||||
|
```bash
|
||||||
|
info-tech-canon --root /path/to/canon/infospace emission-review /path/to/source-declaration.yaml
|
||||||
|
info-tech-canon --root /path/to/canon/infospace export-emission-contract /path/to/bundles
|
||||||
|
```
|
||||||
|
|
||||||
|
The export contains the standard, schema, illustrative example, and a manifest
|
||||||
|
of SHA-256 file hashes. Its tar filename contains the archive SHA-256. Identical
|
||||||
|
inputs produce identical bytes; a different contract produces a different name.
|
||||||
|
Existing different contents at the computed path cause failure. The export is
|
||||||
|
a local artifact, not evidence of remote publication or independent adoption.
|
||||||
|
|
||||||
|
The shared validator accepts YAML or JSON, applies the schema, and additionally
|
||||||
|
checks unique `source_id` values. A schema-only consumer must implement that
|
||||||
|
uniqueness check too. Unsupported versions and malformed forms fail. Validation
|
||||||
|
does not assess operational truth or importing-profile policy.
|
||||||
|
|
||||||
|
## Independent adoption gate
|
||||||
|
|
||||||
|
File owner-authored results under `feedback/` using its existing intake process.
|
||||||
|
Each implementation's evidence must include:
|
||||||
|
|
||||||
|
- source repository, accountable owner, implementation revision, declaration path;
|
||||||
|
- contract version, bundle SHA-256, and schema SHA-256;
|
||||||
|
- importing consumer/profile revision and its additional policy checks;
|
||||||
|
- positive result for the actual source-owned declaration;
|
||||||
|
- negative results for unsupported versions, duplicate IDs, missing windows,
|
||||||
|
and malformed heartbeat/reconciliation forms;
|
||||||
|
- distinction between locally tested behavior and observed deployed behavior,
|
||||||
|
with evidence references and dates for each claim.
|
||||||
|
|
||||||
|
Two records must represent independently implemented sources; copying the
|
||||||
|
illustrative example twice does not count. A human/owner review must assess
|
||||||
|
independence and operational claims. Draft promotion remains pending in
|
||||||
|
INFO-WP-0019-T06 until this evidence exists. No new profile or pattern should
|
||||||
|
be created solely to fill an inventory: use recurring consumer demand and
|
||||||
|
recorded CARING gaps to select the next semantic work.
|
||||||
|
|
||||||
|
## Maintenance and coverage
|
||||||
|
|
||||||
|
`validation-coverage` lists artifact checks and unproven properties.
|
||||||
|
`scope-inventory` derives counts and model/standard IDs from the registry.
|
||||||
|
`make check-generated` renders in a temporary copy and reports missing/stale
|
||||||
|
assets without repairing the checkout. `make refresh` performs regeneration.
|
||||||
|
`make check` runs tests, freshness, canon validation, and profile validation.
|
||||||
|
Work-record projections remain owned by `statehub fix-consistency`.
|
||||||
|
|
||||||
|
Validation reports written with `validate --write` include UTC time, Git
|
||||||
|
revision, dirty status, and a digest of all infospace files except validation
|
||||||
|
reports. The digest captures uncommitted corpus changes; Git revision alone
|
||||||
|
does not. `benchmark-reads` measures ten uncached inspections. Use measurements
|
||||||
|
and an explicit latency target before introducing a cache.
|
||||||
193
history/2026-09-05_002437+0200-scope-against-intent.md
Normal file
193
history/2026-09-05_002437+0200-scope-against-intent.md
Normal file
|
|
@ -0,0 +1,193 @@
|
||||||
|
# Scope against intent — repository review
|
||||||
|
|
||||||
|
Review date: 2026-09-05, Europe/Berlin.
|
||||||
|
Evidence timestamp: 2026-09-04T22:24:37Z (2026-09-05T00:24:37+02:00).
|
||||||
|
Base commit: `78e917e366dfc26f9abdf92240006bbea7922751`.
|
||||||
|
Basis: current working tree, including pre-existing modified and untracked
|
||||||
|
files; the commit alone does not reproduce this assessment.
|
||||||
|
|
||||||
|
## Assessment
|
||||||
|
|
||||||
|
Implemented scope substantially advances the intent: there is a usable canon
|
||||||
|
service, connected artifact corpus, generated retrieval assets, executable
|
||||||
|
profile examples, and concrete assimilation results. The old `SCOPE.md`
|
||||||
|
materially understated this by describing validation, schemas, indexes,
|
||||||
|
profiles, and agent briefs as future work and showing obsolete root-level paths.
|
||||||
|
|
||||||
|
The principal remaining gap is assurance that declared semantic contracts
|
||||||
|
support independent integration. Passing repository checks demonstrates local
|
||||||
|
consistency within their coverage; it does not establish exhaustive concept
|
||||||
|
ownership, compatibility across versions, or consumer adoption. The Taxonomy
|
||||||
|
boundary is coherent with the service: serving and checking artifacts supports
|
||||||
|
that role. No reviewed implementation establishes ownership of consumer runtime state.
|
||||||
|
|
||||||
|
`SCOPE.md` was rewritten to describe the implemented baseline, current paths,
|
||||||
|
ownership boundaries, maturity, dependencies, and limits. Existing implementation
|
||||||
|
changes were preserved. Recommendations below were not implemented by this review.
|
||||||
|
|
||||||
|
## Changes reviewed
|
||||||
|
|
||||||
|
Recent commits include the NetKingdom layering note and source reference,
|
||||||
|
work-record identifiers, intake creation, and index maintenance. The working
|
||||||
|
tree incorporates the layering clarification into the body of `INTENT.md`.
|
||||||
|
The original interoperability commitments remain intact.
|
||||||
|
|
||||||
|
The main uncommitted implementation adds Emission Cadence: a generic standard,
|
||||||
|
JSON Schema, adapted example, source-preserving assimilation workspace, artifact
|
||||||
|
registration, retrieval assets, validation, and negative tests. `canon.yaml`
|
||||||
|
and `CHANGELOG.md` advance the canon to `0.7.0` while retaining draft status.
|
||||||
|
The contract supports two cadence forms and namespaced profile extensions.
|
||||||
|
Its worked example explicitly disclaims being the source-owned live declaration.
|
||||||
|
|
||||||
|
The other substantive addition completes the Small-SaaS capability illustration
|
||||||
|
and marks ITC-WP-0014-T04 done. Workplan/index, intake, and `.repo-manager/`
|
||||||
|
metadata changes are work-management surfaces, not additional semantic
|
||||||
|
capabilities. ITC-WP-0018 records local Emission Cadence work as finished.
|
||||||
|
Local workplans scanned are marked finished; this does not close promotion
|
||||||
|
questions retained in canon artifacts.
|
||||||
|
|
||||||
|
## Verification and limits
|
||||||
|
|
||||||
|
| Check run | Result |
|
||||||
|
| --- | --- |
|
||||||
|
| `make test` | 29 passed in 6.47 seconds. |
|
||||||
|
| `PYTHONPATH=src python3 -m info_tech_canon validate` | Pass; 76 artifacts, 315 relationships, zero errors/warnings. |
|
||||||
|
| `PYTHONPATH=src python3 -m info_tech_canon profile validate small-saas` | Pass; 15 artifacts and 15 payloads, zero errors/warnings. |
|
||||||
|
| `generation.concept_ownership(load_context())` | 129 entries, zero cross-owner conflicts; one same-owner duplicate for AgenticDrivesFunctional. |
|
||||||
|
|
||||||
|
Validation ran without rewriting `infospace/validation/latest.json`. Ownership
|
||||||
|
entries include artifact titles and explicitly declared concepts, rather than
|
||||||
|
129 independently extracted semantic definitions. The duplicate is not an
|
||||||
|
ownership conflict.
|
||||||
|
|
||||||
|
The State Hub returned no active domain workplans. Its inbox contained a
|
||||||
|
2026-09-04 NetKingdom request awaiting the published Emission Cadence contract
|
||||||
|
and stable locator (message `13f55e9c-5660-4a30-9bfe-4c546f5064f8`), which was
|
||||||
|
read and marked read. This shows a pending handoff at message time, not proof
|
||||||
|
that adoption remains blocked today. No consumer repositories, remote release
|
||||||
|
publication, or deployed integrations were verified. External standards were
|
||||||
|
not audited; this is a repository-local assessment.
|
||||||
|
|
||||||
|
## Coverage against intent
|
||||||
|
|
||||||
|
| Intent commitment | Repository evidence | Assessment and gap |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| Clear owner for every canonical concept | Models, owned_concepts, generated ownership index | Partial. Titles and explicit frontmatter do not cover every concept in prose. |
|
||||||
|
| Import instead of redefine | Artifact relationships, import matrix, ownership boundaries, capability anchor mappings | Partial. Comprehensive concept-level import/redefinition enforcement is absent. |
|
||||||
|
| Explicit, versioned, scoped, justified external mappings | Mapping artifacts, assimilation comparisons, CARING RBAC benchmark | Partial. Mapping schema requires only id/title/source/target; versions, scope, and rationale are not mandatory. Candidate mappings are not a complete external-standard mapping corpus. |
|
||||||
|
| Assimilation produces gaps, conflicts, mappings, proposals | IT Capability Canon and Emission Cadence workspaces; CARING findings | Substantially present. Retained proposals and questions need follow-through. |
|
||||||
|
| Patterns explain practical combinations | PracticePattern scheme, two practice patterns, Intent–Scope–Purposes | Present but narrow; expand from recurring consumer evidence. |
|
||||||
|
| Profiles constrain concrete implementations | Executable Small-SaaS profile and capability illustration | Present for one local proof; independent behavior and compatibility remain unverified. |
|
||||||
|
| Useful to humans and agents | Markdown, CLI/API, graph/views, retrieval indexes, briefs, alignment kit | Strong local support; portability and freshness checks remain gaps. |
|
||||||
|
| Preserve provenance, compatibility, rationale | Frozen sources, changelog, versions, mapping rationale, draft gates | Partial. Policies exist; immutable distribution and cross-version consumer evidence were not demonstrated. |
|
||||||
|
| Initial kernel, models, formats, and subsystem interface examples | Kernel, models, schemas, profile proofs, interface-card template and expectation packs | Most structures exist; a template does not establish independently owned interface declarations. |
|
||||||
|
| Taxonomy ownership without runtime-state ownership | Updated intent, cadence ownership section, local read-only API | Aligned. Operational policy, scheduling, and observation stay with consumer owners. |
|
||||||
|
|
||||||
|
## Gaps and closure criteria
|
||||||
|
|
||||||
|
### G1 — Semantic validation coverage (high)
|
||||||
|
|
||||||
|
Evidence: [validation.py](../src/info_tech_canon/validation.py),
|
||||||
|
[generation.py](../src/info_tech_canon/generation.py), and
|
||||||
|
[mapping schema](../infospace/schemas/mapping.schema.yaml).
|
||||||
|
Required schemas are generally checked for presence; selected families receive
|
||||||
|
specialized checks. No general pass proves every registered payload conforms
|
||||||
|
to its declared schema. Ownership generation reads titles and frontmatter;
|
||||||
|
general Markdown links are not comprehensively validated by the reviewed local
|
||||||
|
validator.
|
||||||
|
|
||||||
|
Closure: publish a validation-coverage inventory, bind supported artifact kinds
|
||||||
|
to schemas, and enforce concept ownership/import references and mapping metadata
|
||||||
|
with representative negative cases. Explicitly label unsupported checks so
|
||||||
|
zero errors cannot be mistaken for full semantic conformance.
|
||||||
|
|
||||||
|
### G2 — CARING conformance (high)
|
||||||
|
|
||||||
|
The [benchmark findings](../infospace/standards/caring/benchmarks/kubernetes-rbac/findings-and-canon-pressure.yaml)
|
||||||
|
explicitly identify a missing CARINGAccessDescriptor schema, effective-access
|
||||||
|
derivation rules, tenant-boundary evidence profile, and DerivedCapability
|
||||||
|
ownership pressure. Structured examples do not prove deployed effective access.
|
||||||
|
|
||||||
|
Closure: formalize descriptors and representative derivation rules, resolve
|
||||||
|
ownership, and exercise workload-mediated access, secrets, and tenant-boundary
|
||||||
|
cases. Keep operational evaluation with the relevant consumer.
|
||||||
|
|
||||||
|
### G3 — Consumer adoption and contract distribution (high)
|
||||||
|
|
||||||
|
The [Emission Cadence standard](../infospace/standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md)
|
||||||
|
distinguishes example validity from operational truth. `canon.yaml` requires
|
||||||
|
two independent source implementations before draft promotion. The validator
|
||||||
|
checks the bundled example; there is no general Emission Cadence CLI command
|
||||||
|
accepting arbitrary consumer declarations analogous to `capability-review`.
|
||||||
|
|
||||||
|
Closure: provide an immutable, version-addressable contract bundle and reusable
|
||||||
|
validator covering both JSON Schema and unique source_id semantics. Capture
|
||||||
|
two source-owned declarations and importing-consumer results, including
|
||||||
|
unsupported-version rejection. Retain the evidence owner and tested canon
|
||||||
|
revision. Do not infer publication from a local changelog entry.
|
||||||
|
|
||||||
|
### G4 — Portable service consumption (medium)
|
||||||
|
|
||||||
|
[pyproject.toml](../pyproject.toml) declares an absolute local infospace-bench
|
||||||
|
dependency; [bench.py](../src/info_tech_canon/bench.py) loads modules from a
|
||||||
|
sibling source checkout. The service locates canon data relative to its code.
|
||||||
|
Local tests do not prove a wheel installed elsewhere can find its dependency
|
||||||
|
or corpus.
|
||||||
|
|
||||||
|
Closure: use a reproducible dependency source, normal package imports, and an
|
||||||
|
explicit corpus location/package-data contract. Demonstrate installation and
|
||||||
|
inspection in a clean environment without the workstation directory layout.
|
||||||
|
|
||||||
|
### G5 — Freshness and lifecycle visibility (medium)
|
||||||
|
|
||||||
|
The old scope contradicted implemented features.
|
||||||
|
[WORK-RECORDS.md](../WORK-RECORDS.md) still lists ITC-WP-0014-T04 as todo,
|
||||||
|
while its working-tree workplan says done. Package and canon versions differ
|
||||||
|
without explanation in the previous scope. The generated validation report
|
||||||
|
has no source revision or execution timestamp.
|
||||||
|
|
||||||
|
Closure: regenerate work-record projections from owner files, document version
|
||||||
|
surfaces, and add deterministic generated-asset freshness checks and validation
|
||||||
|
revision/timestamp evidence. The scope rewrite resolves the scope-description
|
||||||
|
part; projection maintenance remains a recommendation.
|
||||||
|
|
||||||
|
### G6 — Remaining semantic pressure (medium, demand driven)
|
||||||
|
|
||||||
|
[IT Capability Canon open questions](../infospace/assimilation/it-capability-canon/open-questions.md)
|
||||||
|
retain canon-wide state qualifiers, continuity/recovery ownership, and structural
|
||||||
|
models behind commerce/intelligence capabilities.
|
||||||
|
[Capability anchor mappings](../infospace/mappings/capability-anchors.yaml)
|
||||||
|
record low-confidence recovery/continuity alignment and unmapped domains.
|
||||||
|
|
||||||
|
Closure: resolve owners where consumers need structural contracts, record
|
||||||
|
rationale and compatibility impact, and preserve explicit deferral where only
|
||||||
|
a capability identifier is needed. Intent does not require inventing every
|
||||||
|
possible domain model now.
|
||||||
|
|
||||||
|
## Possible optimizations
|
||||||
|
|
||||||
|
1. **Prioritize reusable conformance over corpus expansion.** Start with G1 and
|
||||||
|
the cadence validator/bundle in G3. This advances integration by declared
|
||||||
|
contract and makes draft promotion evidence tangible.
|
||||||
|
2. **Reduce metadata drift.** Define authoritative inputs and derive navigation,
|
||||||
|
work-record projections, and a small scope inventory from them. Check that
|
||||||
|
regeneration produces no unexpected diff; retain human-authored judgments.
|
||||||
|
3. **Organize validation by contract.** The roughly 2,040-line validator embeds
|
||||||
|
many pack-specific ID sets and checks. Factor reusable shape, reference, and
|
||||||
|
provenance checks into common code and keep specialized semantics alongside
|
||||||
|
contracts. Preserve meaningful negative tests during refactoring.
|
||||||
|
4. **Make consumption reproducible.** Fix the sibling-loader dependency and
|
||||||
|
prove clean installation before expanding the HTTP service. Immutable
|
||||||
|
artifacts let consumers pin inputs without a live canon runtime dependency.
|
||||||
|
5. **Use consumer evidence to select the next profile or pattern.** Complete
|
||||||
|
the two-source cadence proof and target CARING's recorded gaps before adding
|
||||||
|
speculative catalogs. Route needs through demand and utility results through
|
||||||
|
feedback, preserving ownership.
|
||||||
|
6. **Measure before caching.** service.load_context() reloads the infospace for
|
||||||
|
many operations. If repeated API reads become material, benchmark parsing
|
||||||
|
cost and consider revision-keyed snapshots with explicit invalidation.
|
||||||
|
No performance bottleneck was measured in this review.
|
||||||
|
|
||||||
|
Suggested order: conformance coverage and adoption proof, freshness and
|
||||||
|
portability, then targeted semantic expansion. These are follow-up options,
|
||||||
|
not changes to the repository's runtime responsibilities.
|
||||||
87
history/2026-09-05_optimization-implementation.md
Normal file
87
history/2026-09-05_optimization-implementation.md
Normal file
|
|
@ -0,0 +1,87 @@
|
||||||
|
# Optimization implementation — 2026-09-05
|
||||||
|
|
||||||
|
Workplan: [INFO-WP-0019](../workplans/INFO-WP-0019-conformance-and-maintenance.md).
|
||||||
|
Registered State Hub UUID: `b29261ba-c1e4-5533-8185-ab2d5b433685`.
|
||||||
|
Implements the local optimization recommendations from the timestamped scope
|
||||||
|
assessment. Existing uncommitted changes were retained.
|
||||||
|
|
||||||
|
## Delivered
|
||||||
|
|
||||||
|
- `contracts.py`: shared JSON Schema validation and Emission Cadence semantics;
|
||||||
|
arbitrary YAML/JSON declaration review; duplicate source-ID detection robust
|
||||||
|
to malformed field types; schema bindings for mapping artifacts.
|
||||||
|
- `service.py`: explicit ownership conflicts fail validation; reports describe
|
||||||
|
coverage limits; capability operations respect the selected corpus root.
|
||||||
|
- `maintenance.py`: non-mutating comparison of generated projections,
|
||||||
|
registry-derived scope inventory, deterministic content-addressed contract
|
||||||
|
export, validation timestamp/revision/dirty-state/corpus-digest evidence,
|
||||||
|
and repeated-read measurement.
|
||||||
|
- CLI commands: `emission-review`, `validation-coverage`, `scope-inventory`,
|
||||||
|
`check-generated`, `export-emission-contract`, and `benchmark-reads`.
|
||||||
|
- Installed bench discovery and independently selected corpus root replace
|
||||||
|
hardcoded workstation lookup. The narrow loader remains necessary because
|
||||||
|
upstream initialization imports unrelated database integrations.
|
||||||
|
- `make check`, `make check-generated`, and `make refresh` expose maintenance
|
||||||
|
workflows. State Hub refreshes work-record projections from source files.
|
||||||
|
- [Consumption documentation](../docs/canon-consumption.md) defines portable
|
||||||
|
installation, contract pinning, independent adoption evidence, and demand-led
|
||||||
|
selection of future profiles/patterns. README and SCOPE describe the changes.
|
||||||
|
|
||||||
|
## Verification
|
||||||
|
|
||||||
|
`make check` passed 36 tests in 22.42 seconds, verified 77 generated assets,
|
||||||
|
and passed canon validation (76 artifacts/315 relationships) and Small-SaaS
|
||||||
|
validation (15 payloads), both without errors or warnings.
|
||||||
|
|
||||||
|
Seven new tests cover malformed declarations, unsupported versions and duplicate
|
||||||
|
IDs, stale/missing projections without source mutation, deterministic bundle
|
||||||
|
bytes and corruption refusal, mapping schema enforcement, explicit ownership
|
||||||
|
conflicts, report digest behavior, selected-root capability loading, and a
|
||||||
|
missing schema producing a validation finding.
|
||||||
|
|
||||||
|
A fresh virtual environment under `/tmp/itc-install-SOoIlF/` installed PyYAML
|
||||||
|
6.0.3, jsonschema 4.26.0 and their dependencies, plus locally built canon and
|
||||||
|
bench wheels using `--no-deps`. With PYTHONPATH unset and an independent corpus
|
||||||
|
copy, installed CLI inspection, canon validation, and emission review passed.
|
||||||
|
The initial corpus copy omitted two demand provenance files; validation correctly
|
||||||
|
reported them missing. Including `demand/` completed the proof. Full transitive
|
||||||
|
bench installation remains outside this narrow proof because its upstream
|
||||||
|
metadata still names workstation paths. No sibling source files were changed.
|
||||||
|
|
||||||
|
Contract export produced:
|
||||||
|
|
||||||
|
`dist/contracts/emission-cadence-0.1-972c0b6701d1693f6bb297a2feef34bcdb5ef04f3c906882e6f5e0afa5261e01.tar`
|
||||||
|
|
||||||
|
The filename is its SHA-256. The manifest records schema, standard, and example
|
||||||
|
hashes and the additional uniqueness check. The build output is gitignored;
|
||||||
|
recreate it with `export-emission-contract dist/contracts`. This is a local
|
||||||
|
distribution artifact, not remote release publication.
|
||||||
|
|
||||||
|
Ten uncached inspections measured median **788.05 ms**, maximum **1241.92 ms**
|
||||||
|
on this workstation during concurrent verification. These measurements do not
|
||||||
|
establish a production SLA. No cache was added without a workload and latency
|
||||||
|
target. Ruff was unavailable; no lint result is claimed.
|
||||||
|
|
||||||
|
## Remaining boundaries
|
||||||
|
|
||||||
|
T01–T05 are done; T06 waits for two independent source owners' implementation
|
||||||
|
and consumer evidence. The workplan remains blocked rather than declaring
|
||||||
|
draft promotion complete. No external messages or consumer writes were made.
|
||||||
|
The original CARING calculus, complete concept extraction, comprehensive mapping
|
||||||
|
metadata, and cross-version interoperability gaps are not claimed closed by
|
||||||
|
this implementation; coverage output explicitly preserves these limits.
|
||||||
|
|
||||||
|
State Hub registration succeeded. Its consistency helper also commits/pushes
|
||||||
|
its own generated consistency changes. Advisories include the documented
|
||||||
|
INFO-WP convention conflicting with the registry's ITC-WP prefix, existing
|
||||||
|
classification warnings, and intake-index lookup trouble. These do not prevent
|
||||||
|
the new workplan and six tasks from being registered.
|
||||||
|
|
||||||
|
Final synchronization encountered two State Hub repository-query timeouts.
|
||||||
|
The five completed task statuses and blocked workplan status were then updated
|
||||||
|
and confirmed through their individual REST endpoints. WORK-RECORDS.md was
|
||||||
|
regenerated using State Hub's own offline `_generate_work_record_index`
|
||||||
|
renderer, preserving the file-authoritative projection. Progress receipt:
|
||||||
|
`deab32a8-7642-440c-896c-e37783084757`. A full consistency sweep still needs
|
||||||
|
re-running when the repository-query path recovers; registration and final
|
||||||
|
task statuses have already been confirmed.
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
---
|
||||||
|
id: agent-brief/example-emission-cadence-qonto-assistant
|
||||||
|
artifact_id: example/emission-cadence/qonto-assistant
|
||||||
|
source_path: standards/emission-cadence/examples/qonto-assistant.yaml
|
||||||
|
source_kind: example
|
||||||
|
generated: true
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- GENERATED by info_tech_canon; do not edit by hand. -->
|
||||||
|
|
||||||
|
# Agent Brief: Qonto Assistant Emission Cadence Worked Example
|
||||||
|
|
||||||
|
- Artifact ID: `example/emission-cadence/qonto-assistant`
|
||||||
|
- Kind: `example`
|
||||||
|
- Canonical path: `standards/emission-cadence/examples/qonto-assistant.yaml`
|
||||||
|
- Full source: `standards/emission-cadence/examples/qonto-assistant.yaml`
|
||||||
|
- Summary: Canon-side example artifact: Qonto Assistant Emission Cadence Worked Example.
|
||||||
|
|
||||||
|
## Retrieval Hints
|
||||||
|
|
||||||
|
Imports and anchors:
|
||||||
|
- `standard/emission-cadence`
|
||||||
|
|
||||||
|
## Owned Concepts
|
||||||
|
|
||||||
|
- `Qonto Assistant Emission Cadence Worked Example`
|
||||||
|
|
||||||
|
## Related Distinctions
|
||||||
|
|
||||||
|
No common distinction is anchored directly on this artifact.
|
||||||
29
infospace/agent/briefs/mapping-emission-cadence-handover.md
Normal file
29
infospace/agent/briefs/mapping-emission-cadence-handover.md
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
---
|
||||||
|
id: agent-brief/mapping-emission-cadence-handover
|
||||||
|
artifact_id: mapping/emission-cadence-handover
|
||||||
|
source_path: assimilation/emission-cadence/mappings.yaml
|
||||||
|
source_kind: mapping
|
||||||
|
generated: true
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- GENERATED by info_tech_canon; do not edit by hand. -->
|
||||||
|
|
||||||
|
# Agent Brief: Emission cadence handover mappings
|
||||||
|
|
||||||
|
- Artifact ID: `mapping/emission-cadence-handover`
|
||||||
|
- Kind: `mapping`
|
||||||
|
- Canonical path: `assimilation/emission-cadence/mappings.yaml`
|
||||||
|
- Full source: `assimilation/emission-cadence/mappings.yaml`
|
||||||
|
- Summary: Mapping artifact connecting canon surfaces: Emission cadence handover mappings.
|
||||||
|
|
||||||
|
## Retrieval Hints
|
||||||
|
|
||||||
|
No imports or anchors recorded.
|
||||||
|
|
||||||
|
## Owned Concepts
|
||||||
|
|
||||||
|
- `Emission cadence handover mappings`
|
||||||
|
|
||||||
|
## Related Distinctions
|
||||||
|
|
||||||
|
No common distinction is anchored directly on this artifact.
|
||||||
37
infospace/agent/briefs/standard-emission-cadence.md
Normal file
37
infospace/agent/briefs/standard-emission-cadence.md
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
---
|
||||||
|
id: agent-brief/standard-emission-cadence
|
||||||
|
artifact_id: standard/emission-cadence
|
||||||
|
source_path: standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md
|
||||||
|
source_kind: standard
|
||||||
|
generated: true
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- GENERATED by info_tech_canon; do not edit by hand. -->
|
||||||
|
|
||||||
|
# Agent Brief: InfoTechCanon Emission Cadence Standard
|
||||||
|
|
||||||
|
- Artifact ID: `standard/emission-cadence`
|
||||||
|
- Kind: `standard`
|
||||||
|
- Canonical path: `standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md`
|
||||||
|
- Full source: `standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md`
|
||||||
|
- Summary: Cross-cutting canon standard: InfoTechCanon Emission Cadence Standard.
|
||||||
|
|
||||||
|
## Retrieval Hints
|
||||||
|
|
||||||
|
Imports and anchors:
|
||||||
|
- `kernel/itc-core`
|
||||||
|
- `model/governance`
|
||||||
|
- `model/observability`
|
||||||
|
|
||||||
|
## Owned Concepts
|
||||||
|
|
||||||
|
- `EmissionCadenceDeclaration`
|
||||||
|
- `EmissionCadenceForm`
|
||||||
|
- `ExpectedRateCadence`
|
||||||
|
- `HeartbeatCadence`
|
||||||
|
- `InfoTechCanon Emission Cadence Standard`
|
||||||
|
- `ReconciliationCadence`
|
||||||
|
|
||||||
|
## 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.
|
This brief summarizes the current canon service surface for agents.
|
||||||
|
|
||||||
- Infospace slug: `canon`
|
- Infospace slug: `canon`
|
||||||
- Artifact count: 71
|
- Artifact count: 76
|
||||||
- Retrieval index items: 71
|
- Retrieval index items: 76
|
||||||
- Primary confidence command: `make validate`
|
- Primary confidence command: `make validate`
|
||||||
- Refresh generated indexes and views with: `make index`
|
- Refresh generated indexes and views with: `make index`
|
||||||
- Refresh agent briefs and interface templates with: `make agent-briefs`
|
- Refresh agent briefs and interface templates with: `make agent-briefs`
|
||||||
|
|
|
||||||
|
|
@ -59,8 +59,29 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"infospace": "canon",
|
"infospace": "canon",
|
||||||
"item_count": 71,
|
"item_count": 76,
|
||||||
"items": [
|
"items": [
|
||||||
|
{
|
||||||
|
"canonical_path": "assimilation/emission-cadence/ASSIMILATION.md",
|
||||||
|
"id": "assimilation/emission-cadence",
|
||||||
|
"imports": [
|
||||||
|
"kernel/itc-core"
|
||||||
|
],
|
||||||
|
"kind": "assimilation",
|
||||||
|
"owned_concepts": [
|
||||||
|
"Assimilation \u2014 EmissionCadenceDeclaration handover"
|
||||||
|
],
|
||||||
|
"relationships": [
|
||||||
|
{
|
||||||
|
"target": "kernel/itc-core",
|
||||||
|
"type": "conforms_to"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source_path": "infospace/assimilation/emission-cadence/source/EmissionCadenceDeclaration.md",
|
||||||
|
"summary": "Canon artifact: Assimilation \u2014 EmissionCadenceDeclaration handover.",
|
||||||
|
"title": "Assimilation \u2014 EmissionCadenceDeclaration handover",
|
||||||
|
"warnings": []
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"canonical_path": "assimilation/it-capability-canon/ASSIMILATION.md",
|
"canonical_path": "assimilation/it-capability-canon/ASSIMILATION.md",
|
||||||
"id": "assimilation/it-capability-canon",
|
"id": "assimilation/it-capability-canon",
|
||||||
|
|
@ -983,6 +1004,27 @@
|
||||||
"title": "Canon-Side Consumer Purpose Portfolio",
|
"title": "Canon-Side Consumer Purpose Portfolio",
|
||||||
"warnings": []
|
"warnings": []
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"canonical_path": "standards/emission-cadence/examples/qonto-assistant.yaml",
|
||||||
|
"id": "example/emission-cadence/qonto-assistant",
|
||||||
|
"imports": [
|
||||||
|
"standard/emission-cadence"
|
||||||
|
],
|
||||||
|
"kind": "example",
|
||||||
|
"owned_concepts": [
|
||||||
|
"Qonto Assistant Emission Cadence Worked Example"
|
||||||
|
],
|
||||||
|
"relationships": [
|
||||||
|
{
|
||||||
|
"target": "standard/emission-cadence",
|
||||||
|
"type": "conforms_to"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source_path": "infospace/assimilation/emission-cadence/source/EmissionCadenceDeclaration.md",
|
||||||
|
"summary": "Canon-side example artifact: Qonto Assistant Emission Cadence Worked Example.",
|
||||||
|
"title": "Qonto Assistant Emission Cadence Worked Example",
|
||||||
|
"warnings": []
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"canonical_path": "kernel/InfoTechCanonCore.md",
|
"canonical_path": "kernel/InfoTechCanonCore.md",
|
||||||
"id": "kernel/itc-core",
|
"id": "kernel/itc-core",
|
||||||
|
|
@ -1086,6 +1128,33 @@
|
||||||
"title": "ITC-CAP concept mappings to anchoring canon models",
|
"title": "ITC-CAP concept mappings to anchoring canon models",
|
||||||
"warnings": []
|
"warnings": []
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"canonical_path": "assimilation/emission-cadence/mappings.yaml",
|
||||||
|
"id": "mapping/emission-cadence-handover",
|
||||||
|
"imports": [],
|
||||||
|
"kind": "mapping",
|
||||||
|
"owned_concepts": [
|
||||||
|
"Emission cadence handover mappings"
|
||||||
|
],
|
||||||
|
"relationships": [
|
||||||
|
{
|
||||||
|
"target": "standard/emission-cadence",
|
||||||
|
"type": "maps"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"target": "model/observability",
|
||||||
|
"type": "maps"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"target": "model/governance",
|
||||||
|
"type": "maps"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source_path": "infospace/assimilation/emission-cadence/source/EmissionCadenceDeclaration.md",
|
||||||
|
"summary": "Mapping artifact connecting canon surfaces: Emission cadence handover mappings.",
|
||||||
|
"title": "Emission cadence handover mappings",
|
||||||
|
"warnings": []
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"canonical_path": "mappings/purpose-demand-governance-candidates.yaml",
|
"canonical_path": "mappings/purpose-demand-governance-candidates.yaml",
|
||||||
"id": "mapping/purpose-demand-governance-candidates",
|
"id": "mapping/purpose-demand-governance-candidates",
|
||||||
|
|
@ -2014,6 +2083,35 @@
|
||||||
"title": "PracticePattern Scheme",
|
"title": "PracticePattern Scheme",
|
||||||
"warnings": []
|
"warnings": []
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"canonical_path": "profiles/small-saas/artifacts/capability-requirements.yaml",
|
||||||
|
"id": "small-saas/capability-requirements/production",
|
||||||
|
"imports": [
|
||||||
|
"model/capability"
|
||||||
|
],
|
||||||
|
"kind": "profile-artifact",
|
||||||
|
"owned_concepts": [
|
||||||
|
"Small SaaS Production Capability Requirements"
|
||||||
|
],
|
||||||
|
"relationships": [
|
||||||
|
{
|
||||||
|
"target": "profile/small-saas",
|
||||||
|
"type": "instantiates"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"target": "model/capability",
|
||||||
|
"type": "uses"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"target": "small-saas/service/billing-portal",
|
||||||
|
"type": "applies_to"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source_path": "profiles/small-saas/artifacts/capability-requirements.yaml",
|
||||||
|
"summary": "Example artifact for the small-saas profile: Small SaaS Production Capability Requirements.",
|
||||||
|
"title": "Small SaaS Production Capability Requirements",
|
||||||
|
"warnings": []
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"canonical_path": "profiles/small-saas/artifacts/control.namespace-per-tenant.yaml",
|
"canonical_path": "profiles/small-saas/artifacts/control.namespace-per-tenant.yaml",
|
||||||
"id": "small-saas/control/namespace-per-tenant",
|
"id": "small-saas/control/namespace-per-tenant",
|
||||||
|
|
@ -2545,6 +2643,50 @@
|
||||||
"title": "InfoTechCanon CARING Access Governance Standard",
|
"title": "InfoTechCanon CARING Access Governance Standard",
|
||||||
"warnings": []
|
"warnings": []
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"canonical_path": "standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md",
|
||||||
|
"id": "standard/emission-cadence",
|
||||||
|
"imports": [
|
||||||
|
"kernel/itc-core",
|
||||||
|
"model/governance",
|
||||||
|
"model/observability"
|
||||||
|
],
|
||||||
|
"kind": "standard",
|
||||||
|
"owned_concepts": [
|
||||||
|
"EmissionCadenceDeclaration",
|
||||||
|
"EmissionCadenceForm",
|
||||||
|
"ExpectedRateCadence",
|
||||||
|
"HeartbeatCadence",
|
||||||
|
"InfoTechCanon Emission Cadence Standard",
|
||||||
|
"ReconciliationCadence"
|
||||||
|
],
|
||||||
|
"relationships": [
|
||||||
|
{
|
||||||
|
"target": "kernel/itc-core",
|
||||||
|
"type": "conforms_to"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"target": "model/observability",
|
||||||
|
"type": "imports"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"target": "model/governance",
|
||||||
|
"type": "imports"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"target": "model/security",
|
||||||
|
"type": "related_to"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"target": "assimilation/emission-cadence",
|
||||||
|
"type": "derived_from"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source_path": "infospace/assimilation/emission-cadence/source/EmissionCadenceDeclaration.md",
|
||||||
|
"summary": "Cross-cutting canon standard: InfoTechCanon Emission Cadence Standard.",
|
||||||
|
"title": "InfoTechCanon Emission Cadence Standard",
|
||||||
|
"warnings": []
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"canonical_path": "standards/repository-layout/InfoTechCanonRepositoryLayoutStandard.md",
|
"canonical_path": "standards/repository-layout/InfoTechCanonRepositoryLayoutStandard.md",
|
||||||
"id": "standard/repository-layout",
|
"id": "standard/repository-layout",
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
Schema: `info-tech-canon.retrieval-index.v1`
|
Schema: `info-tech-canon.retrieval-index.v1`
|
||||||
Infospace: `canon`
|
Infospace: `canon`
|
||||||
Items: **71**
|
Items: **76**
|
||||||
|
|
||||||
## Common Distinctions
|
## Common Distinctions
|
||||||
|
|
||||||
|
|
@ -17,6 +17,16 @@ Items: **71**
|
||||||
|
|
||||||
## Items
|
## Items
|
||||||
|
|
||||||
|
### Assimilation — EmissionCadenceDeclaration handover
|
||||||
|
|
||||||
|
- ID: `assimilation/emission-cadence`
|
||||||
|
- Kind: `assimilation`
|
||||||
|
- Canonical path: `assimilation/emission-cadence/ASSIMILATION.md`
|
||||||
|
- Source path: `infospace/assimilation/emission-cadence/source/EmissionCadenceDeclaration.md`
|
||||||
|
- Summary: Canon artifact: Assimilation — EmissionCadenceDeclaration handover.
|
||||||
|
- Imports and anchors: `kernel/itc-core`
|
||||||
|
- Owned concepts: `Assimilation — EmissionCadenceDeclaration handover`
|
||||||
|
|
||||||
### Assimilation — IT Capability Canon (ITCC) v0.1
|
### Assimilation — IT Capability Canon (ITCC) v0.1
|
||||||
|
|
||||||
- ID: `assimilation/it-capability-canon`
|
- ID: `assimilation/it-capability-canon`
|
||||||
|
|
@ -277,6 +287,16 @@ Items: **71**
|
||||||
- Imports and anchors: `profile/small-saas`
|
- Imports and anchors: `profile/small-saas`
|
||||||
- Owned concepts: `Canon-Side Consumer Purpose Portfolio`
|
- Owned concepts: `Canon-Side Consumer Purpose Portfolio`
|
||||||
|
|
||||||
|
### Qonto Assistant Emission Cadence Worked Example
|
||||||
|
|
||||||
|
- ID: `example/emission-cadence/qonto-assistant`
|
||||||
|
- Kind: `example`
|
||||||
|
- Canonical path: `standards/emission-cadence/examples/qonto-assistant.yaml`
|
||||||
|
- Source path: `infospace/assimilation/emission-cadence/source/EmissionCadenceDeclaration.md`
|
||||||
|
- Summary: Canon-side example artifact: Qonto Assistant Emission Cadence Worked Example.
|
||||||
|
- Imports and anchors: `standard/emission-cadence`
|
||||||
|
- Owned concepts: `Qonto Assistant Emission Cadence Worked Example`
|
||||||
|
|
||||||
### InfoTechCanon Core
|
### InfoTechCanon Core
|
||||||
|
|
||||||
- ID: `kernel/itc-core`
|
- ID: `kernel/itc-core`
|
||||||
|
|
@ -307,6 +327,16 @@ Items: **71**
|
||||||
- Imports and anchors: none
|
- Imports and anchors: none
|
||||||
- Owned concepts: `ITC-CAP concept mappings to anchoring canon models`
|
- Owned concepts: `ITC-CAP concept mappings to anchoring canon models`
|
||||||
|
|
||||||
|
### Emission cadence handover mappings
|
||||||
|
|
||||||
|
- ID: `mapping/emission-cadence-handover`
|
||||||
|
- Kind: `mapping`
|
||||||
|
- Canonical path: `assimilation/emission-cadence/mappings.yaml`
|
||||||
|
- Source path: `infospace/assimilation/emission-cadence/source/EmissionCadenceDeclaration.md`
|
||||||
|
- Summary: Mapping artifact connecting canon surfaces: Emission cadence handover mappings.
|
||||||
|
- Imports and anchors: none
|
||||||
|
- Owned concepts: `Emission cadence handover mappings`
|
||||||
|
|
||||||
### Purpose Demand Governance Extension Candidates
|
### Purpose Demand Governance Extension Candidates
|
||||||
|
|
||||||
- ID: `mapping/purpose-demand-governance-candidates`
|
- ID: `mapping/purpose-demand-governance-candidates`
|
||||||
|
|
@ -567,6 +597,16 @@ Items: **71**
|
||||||
- Imports and anchors: `kernel/itc-core`
|
- Imports and anchors: `kernel/itc-core`
|
||||||
- Owned concepts: `PatternLanguage`, `PracticePattern`, `PracticePattern Scheme`
|
- Owned concepts: `PatternLanguage`, `PracticePattern`, `PracticePattern Scheme`
|
||||||
|
|
||||||
|
### Small SaaS Production Capability Requirements
|
||||||
|
|
||||||
|
- ID: `small-saas/capability-requirements/production`
|
||||||
|
- Kind: `profile-artifact`
|
||||||
|
- Canonical path: `profiles/small-saas/artifacts/capability-requirements.yaml`
|
||||||
|
- Source path: `profiles/small-saas/artifacts/capability-requirements.yaml`
|
||||||
|
- Summary: Example artifact for the small-saas profile: Small SaaS Production Capability Requirements.
|
||||||
|
- Imports and anchors: `model/capability`
|
||||||
|
- Owned concepts: `Small SaaS Production Capability Requirements`
|
||||||
|
|
||||||
### Namespace Per Tenant Control
|
### Namespace Per Tenant Control
|
||||||
|
|
||||||
- ID: `small-saas/control/namespace-per-tenant`
|
- ID: `small-saas/control/namespace-per-tenant`
|
||||||
|
|
@ -707,6 +747,16 @@ Items: **71**
|
||||||
- Imports and anchors: `kernel/itc-core`, `model/access-control`, `model/data`, `model/devsecops`, `model/governance`, `model/network`, `model/observability`, `model/organization`, `model/security`, `model/task`, `standard/tagging`
|
- Imports and anchors: `kernel/itc-core`, `model/access-control`, `model/data`, `model/devsecops`, `model/governance`, `model/network`, `model/observability`, `model/organization`, `model/security`, `model/task`, `standard/tagging`
|
||||||
- Owned concepts: `CARINGAccessDescriptor`, `CARINGAnalysisFitnessTest`, `CARINGAnalysisProcedure`, `CARINGCanonicalRole`, `CARINGCapabilityProfile`, `CARINGDeclaredAccessMap`, `CARINGDerivedCapability`, `CARINGEffectiveAccessMap`, `CARINGExposureEvent`, `CARINGExposureMode`, `CARINGInducedAccess`, `CARINGOrganizationRelation`, `CARINGPlane`, `CARINGRedesignProcedure`, `CARINGRestrictionPrecedence`, `InfoTechCanon CARING Access Governance Standard`
|
- Owned concepts: `CARINGAccessDescriptor`, `CARINGAnalysisFitnessTest`, `CARINGAnalysisProcedure`, `CARINGCanonicalRole`, `CARINGCapabilityProfile`, `CARINGDeclaredAccessMap`, `CARINGDerivedCapability`, `CARINGEffectiveAccessMap`, `CARINGExposureEvent`, `CARINGExposureMode`, `CARINGInducedAccess`, `CARINGOrganizationRelation`, `CARINGPlane`, `CARINGRedesignProcedure`, `CARINGRestrictionPrecedence`, `InfoTechCanon CARING Access Governance Standard`
|
||||||
|
|
||||||
|
### InfoTechCanon Emission Cadence Standard
|
||||||
|
|
||||||
|
- ID: `standard/emission-cadence`
|
||||||
|
- Kind: `standard`
|
||||||
|
- Canonical path: `standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md`
|
||||||
|
- Source path: `infospace/assimilation/emission-cadence/source/EmissionCadenceDeclaration.md`
|
||||||
|
- Summary: Cross-cutting canon standard: InfoTechCanon Emission Cadence Standard.
|
||||||
|
- Imports and anchors: `kernel/itc-core`, `model/governance`, `model/observability`
|
||||||
|
- Owned concepts: `EmissionCadenceDeclaration`, `EmissionCadenceForm`, `ExpectedRateCadence`, `HeartbeatCadence`, `InfoTechCanon Emission Cadence Standard`, `ReconciliationCadence`
|
||||||
|
|
||||||
### InfoTechCanon Repository Layout Standard
|
### InfoTechCanon Repository Layout Standard
|
||||||
|
|
||||||
- ID: `standard/repository-layout`
|
- ID: `standard/repository-layout`
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,21 @@
|
||||||
schema: info-tech-canon.retrieval-index.v1
|
schema: info-tech-canon.retrieval-index.v1
|
||||||
infospace: canon
|
infospace: canon
|
||||||
item_count: 71
|
item_count: 76
|
||||||
items:
|
items:
|
||||||
|
- id: assimilation/emission-cadence
|
||||||
|
kind: assimilation
|
||||||
|
title: "Assimilation \u2014 EmissionCadenceDeclaration handover"
|
||||||
|
canonical_path: assimilation/emission-cadence/ASSIMILATION.md
|
||||||
|
source_path: infospace/assimilation/emission-cadence/source/EmissionCadenceDeclaration.md
|
||||||
|
summary: "Canon artifact: Assimilation \u2014 EmissionCadenceDeclaration handover."
|
||||||
|
owned_concepts:
|
||||||
|
- "Assimilation \u2014 EmissionCadenceDeclaration handover"
|
||||||
|
imports:
|
||||||
|
- kernel/itc-core
|
||||||
|
relationships:
|
||||||
|
- type: conforms_to
|
||||||
|
target: kernel/itc-core
|
||||||
|
warnings: []
|
||||||
- id: assimilation/it-capability-canon
|
- id: assimilation/it-capability-canon
|
||||||
kind: assimilation
|
kind: assimilation
|
||||||
title: "Assimilation \u2014 IT Capability Canon (ITCC) v0.1"
|
title: "Assimilation \u2014 IT Capability Canon (ITCC) v0.1"
|
||||||
|
|
@ -595,6 +609,20 @@ items:
|
||||||
- type: uses
|
- type: uses
|
||||||
target: profile/small-saas
|
target: profile/small-saas
|
||||||
warnings: []
|
warnings: []
|
||||||
|
- id: example/emission-cadence/qonto-assistant
|
||||||
|
kind: example
|
||||||
|
title: Qonto Assistant Emission Cadence Worked Example
|
||||||
|
canonical_path: standards/emission-cadence/examples/qonto-assistant.yaml
|
||||||
|
source_path: infospace/assimilation/emission-cadence/source/EmissionCadenceDeclaration.md
|
||||||
|
summary: 'Canon-side example artifact: Qonto Assistant Emission Cadence Worked Example.'
|
||||||
|
owned_concepts:
|
||||||
|
- Qonto Assistant Emission Cadence Worked Example
|
||||||
|
imports:
|
||||||
|
- standard/emission-cadence
|
||||||
|
relationships:
|
||||||
|
- type: conforms_to
|
||||||
|
target: standard/emission-cadence
|
||||||
|
warnings: []
|
||||||
- id: kernel/itc-core
|
- id: kernel/itc-core
|
||||||
kind: kernel
|
kind: kernel
|
||||||
title: InfoTechCanon Core
|
title: InfoTechCanon Core
|
||||||
|
|
@ -661,6 +689,24 @@ items:
|
||||||
imports: []
|
imports: []
|
||||||
relationships: []
|
relationships: []
|
||||||
warnings: []
|
warnings: []
|
||||||
|
- id: mapping/emission-cadence-handover
|
||||||
|
kind: mapping
|
||||||
|
title: Emission cadence handover mappings
|
||||||
|
canonical_path: assimilation/emission-cadence/mappings.yaml
|
||||||
|
source_path: infospace/assimilation/emission-cadence/source/EmissionCadenceDeclaration.md
|
||||||
|
summary: 'Mapping artifact connecting canon surfaces: Emission cadence handover
|
||||||
|
mappings.'
|
||||||
|
owned_concepts:
|
||||||
|
- Emission cadence handover mappings
|
||||||
|
imports: []
|
||||||
|
relationships:
|
||||||
|
- type: maps
|
||||||
|
target: standard/emission-cadence
|
||||||
|
- type: maps
|
||||||
|
target: model/observability
|
||||||
|
- type: maps
|
||||||
|
target: model/governance
|
||||||
|
warnings: []
|
||||||
- id: mapping/purpose-demand-governance-candidates
|
- id: mapping/purpose-demand-governance-candidates
|
||||||
kind: mapping
|
kind: mapping
|
||||||
title: Purpose Demand Governance Extension Candidates
|
title: Purpose Demand Governance Extension Candidates
|
||||||
|
|
@ -1280,6 +1326,25 @@ items:
|
||||||
- type: conforms_to
|
- type: conforms_to
|
||||||
target: kernel/itc-core
|
target: kernel/itc-core
|
||||||
warnings: []
|
warnings: []
|
||||||
|
- id: small-saas/capability-requirements/production
|
||||||
|
kind: profile-artifact
|
||||||
|
title: Small SaaS Production Capability Requirements
|
||||||
|
canonical_path: profiles/small-saas/artifacts/capability-requirements.yaml
|
||||||
|
source_path: profiles/small-saas/artifacts/capability-requirements.yaml
|
||||||
|
summary: 'Example artifact for the small-saas profile: Small SaaS Production Capability
|
||||||
|
Requirements.'
|
||||||
|
owned_concepts:
|
||||||
|
- Small SaaS Production Capability Requirements
|
||||||
|
imports:
|
||||||
|
- model/capability
|
||||||
|
relationships:
|
||||||
|
- type: instantiates
|
||||||
|
target: profile/small-saas
|
||||||
|
- type: uses
|
||||||
|
target: model/capability
|
||||||
|
- type: applies_to
|
||||||
|
target: small-saas/service/billing-portal
|
||||||
|
warnings: []
|
||||||
- id: small-saas/control/namespace-per-tenant
|
- id: small-saas/control/namespace-per-tenant
|
||||||
kind: profile-artifact
|
kind: profile-artifact
|
||||||
title: Namespace Per Tenant Control
|
title: Namespace Per Tenant Control
|
||||||
|
|
@ -1609,6 +1674,35 @@ items:
|
||||||
- type: imports
|
- type: imports
|
||||||
target: standard/tagging
|
target: standard/tagging
|
||||||
warnings: []
|
warnings: []
|
||||||
|
- id: standard/emission-cadence
|
||||||
|
kind: standard
|
||||||
|
title: InfoTechCanon Emission Cadence Standard
|
||||||
|
canonical_path: standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md
|
||||||
|
source_path: infospace/assimilation/emission-cadence/source/EmissionCadenceDeclaration.md
|
||||||
|
summary: 'Cross-cutting canon standard: InfoTechCanon Emission Cadence Standard.'
|
||||||
|
owned_concepts:
|
||||||
|
- EmissionCadenceDeclaration
|
||||||
|
- EmissionCadenceForm
|
||||||
|
- ExpectedRateCadence
|
||||||
|
- HeartbeatCadence
|
||||||
|
- InfoTechCanon Emission Cadence Standard
|
||||||
|
- ReconciliationCadence
|
||||||
|
imports:
|
||||||
|
- kernel/itc-core
|
||||||
|
- model/governance
|
||||||
|
- model/observability
|
||||||
|
relationships:
|
||||||
|
- type: conforms_to
|
||||||
|
target: kernel/itc-core
|
||||||
|
- type: imports
|
||||||
|
target: model/observability
|
||||||
|
- type: imports
|
||||||
|
target: model/governance
|
||||||
|
- type: related_to
|
||||||
|
target: model/security
|
||||||
|
- type: derived_from
|
||||||
|
target: assimilation/emission-cadence
|
||||||
|
warnings: []
|
||||||
- id: standard/repository-layout
|
- id: standard/repository-layout
|
||||||
kind: standard
|
kind: standard
|
||||||
title: InfoTechCanon Repository Layout Standard
|
title: InfoTechCanon Repository Layout Standard
|
||||||
|
|
|
||||||
|
|
@ -1193,3 +1193,73 @@ artifacts:
|
||||||
target: small-saas/control/namespace-per-tenant
|
target: small-saas/control/namespace-per-tenant
|
||||||
- type: evidenced_by
|
- type: evidenced_by
|
||||||
target: small-saas/evidence/access-review-2026-05
|
target: small-saas/evidence/access-review-2026-05
|
||||||
|
- id: standard/emission-cadence
|
||||||
|
path: standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md
|
||||||
|
kind: standard
|
||||||
|
title: InfoTechCanon Emission Cadence Standard
|
||||||
|
provenance:
|
||||||
|
source_path: infospace/assimilation/emission-cadence/source/EmissionCadenceDeclaration.md
|
||||||
|
placement: adapted
|
||||||
|
placement_workplan: ITC-WP-0018
|
||||||
|
assimilation: assimilation/emission-cadence
|
||||||
|
relationships:
|
||||||
|
- type: conforms_to
|
||||||
|
target: kernel/itc-core
|
||||||
|
- type: imports
|
||||||
|
target: model/observability
|
||||||
|
- type: imports
|
||||||
|
target: model/governance
|
||||||
|
- type: related_to
|
||||||
|
target: model/security
|
||||||
|
- type: derived_from
|
||||||
|
target: assimilation/emission-cadence
|
||||||
|
- id: assimilation/emission-cadence
|
||||||
|
path: assimilation/emission-cadence/ASSIMILATION.md
|
||||||
|
kind: assimilation
|
||||||
|
title: Assimilation — EmissionCadenceDeclaration handover
|
||||||
|
provenance:
|
||||||
|
source_path: infospace/assimilation/emission-cadence/source/EmissionCadenceDeclaration.md
|
||||||
|
disposition: adapt
|
||||||
|
placement_workplan: ITC-WP-0018
|
||||||
|
relationships:
|
||||||
|
- type: conforms_to
|
||||||
|
target: kernel/itc-core
|
||||||
|
- id: mapping/emission-cadence-handover
|
||||||
|
path: assimilation/emission-cadence/mappings.yaml
|
||||||
|
kind: mapping
|
||||||
|
title: Emission cadence handover mappings
|
||||||
|
provenance:
|
||||||
|
source_path: infospace/assimilation/emission-cadence/source/EmissionCadenceDeclaration.md
|
||||||
|
placement_workplan: ITC-WP-0018
|
||||||
|
relationships:
|
||||||
|
- type: maps
|
||||||
|
target: standard/emission-cadence
|
||||||
|
- type: maps
|
||||||
|
target: model/observability
|
||||||
|
- type: maps
|
||||||
|
target: model/governance
|
||||||
|
- id: example/emission-cadence/qonto-assistant
|
||||||
|
path: standards/emission-cadence/examples/qonto-assistant.yaml
|
||||||
|
kind: example
|
||||||
|
title: Qonto Assistant Emission Cadence Worked Example
|
||||||
|
provenance:
|
||||||
|
source_path: infospace/assimilation/emission-cadence/source/EmissionCadenceDeclaration.md
|
||||||
|
placement: adapted-example
|
||||||
|
placement_workplan: ITC-WP-0018
|
||||||
|
relationships:
|
||||||
|
- type: conforms_to
|
||||||
|
target: standard/emission-cadence
|
||||||
|
- id: small-saas/capability-requirements/production
|
||||||
|
path: profiles/small-saas/artifacts/capability-requirements.yaml
|
||||||
|
kind: profile-artifact
|
||||||
|
title: Small SaaS Production Capability Requirements
|
||||||
|
provenance:
|
||||||
|
profile: small-saas
|
||||||
|
placement_workplan: ITC-WP-0014
|
||||||
|
relationships:
|
||||||
|
- type: instantiates
|
||||||
|
target: profile/small-saas
|
||||||
|
- type: uses
|
||||||
|
target: model/capability
|
||||||
|
- type: applies_to
|
||||||
|
target: small-saas/service/billing-portal
|
||||||
|
|
|
||||||
79
infospace/assimilation/emission-cadence/ASSIMILATION.md
Normal file
79
infospace/assimilation/emission-cadence/ASSIMILATION.md
Normal file
|
|
@ -0,0 +1,79 @@
|
||||||
|
# Assimilation — EmissionCadenceDeclaration
|
||||||
|
|
||||||
|
**Status:** Closed
|
||||||
|
**Disposition:** Adapt
|
||||||
|
**Source:** King's Guard Taxonomy draft 0.1.0
|
||||||
|
**Authority:** `GH-DEC-2026-004` / State Hub decision
|
||||||
|
`89c73f45-d07b-40ea-b428-5a7375ce4b09`
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
|
||||||
|
This assimilation covers the generic, ecosystem-wide shape by which a source
|
||||||
|
declares an expected emission cadence for an event class. It does not absorb
|
||||||
|
the NetKingdom security profile: evidence-class policy, MUST/SHOULD obligations,
|
||||||
|
and the rule requiring heartbeat plus reconciliation for rare load-bearing
|
||||||
|
classes remain owned by NetKingdom.
|
||||||
|
|
||||||
|
## Findings
|
||||||
|
|
||||||
|
- The Observability Model already owns `Signal`, `SignalSource`, `Event`,
|
||||||
|
`EventSource`, and the missing-signal pattern. It does not own a portable
|
||||||
|
source declaration for the expected arrival of an event class.
|
||||||
|
- The Governance Model already owns `Finding`. A cadence declaration names
|
||||||
|
detection conditions but does not redefine the finding record or lifecycle.
|
||||||
|
- The handover contains two useful generic forms: an expected count over a
|
||||||
|
window, and a positive heartbeat and/or count reconciliation for streams
|
||||||
|
whose meaningful events are intermittent.
|
||||||
|
- `evidence_class`, security modality, and required combinations are importing
|
||||||
|
profile concerns rather than generic cadence semantics.
|
||||||
|
|
||||||
|
## DecisionRecord
|
||||||
|
|
||||||
|
### Context
|
||||||
|
|
||||||
|
King's Guard needs a stable contract to evaluate silence but is a Staff-layer
|
||||||
|
consumer, not the Taxonomy owner. Gate House assigned the generic contract to
|
||||||
|
InfoTechCanon and the NetKingdom security profile to `net-kingdom`.
|
||||||
|
|
||||||
|
### Decision
|
||||||
|
|
||||||
|
Adapt the draft into `standard/emission-cadence` and schema version `0.1`.
|
||||||
|
Preserve its two form names and field meanings. Make profile classifications
|
||||||
|
optional extension data, and let the heartbeat-or-reconciliation form contain
|
||||||
|
either mechanism or both. Publish strict validation for the generic core and a
|
||||||
|
namespaced `extensions` object for profile-owned additions.
|
||||||
|
|
||||||
|
### Options Considered
|
||||||
|
|
||||||
|
- Keep the schema in King's Guard — rejected because a consumer would own the
|
||||||
|
semantics it evaluates.
|
||||||
|
- Put the whole contract in NetKingdom — rejected because generic cadence is
|
||||||
|
reusable outside that security estate.
|
||||||
|
- Joint ownership — rejected because version authority would be ambiguous.
|
||||||
|
- Adapt the generic core here and import it from a NetKingdom profile — chosen.
|
||||||
|
|
||||||
|
### Rationale
|
||||||
|
|
||||||
|
The split follows the repository's Taxonomy role and Core's single-owner rule.
|
||||||
|
Allowing heartbeat, reconciliation, or both keeps the generic form useful while
|
||||||
|
leaving NetKingdom free to require the stronger combination.
|
||||||
|
|
||||||
|
### Consequences
|
||||||
|
|
||||||
|
- Sources own their declaration instances and emission behavior.
|
||||||
|
- Observers own evaluation and findings, not the declaration schema.
|
||||||
|
- Importing profiles may require fields or combinations but may not change the
|
||||||
|
generic fields' meanings.
|
||||||
|
- King's Guard's draft becomes provenance rather than a competing contract.
|
||||||
|
|
||||||
|
### Review Trigger
|
||||||
|
|
||||||
|
Review the draft after two independent source implementations, or when an
|
||||||
|
importing profile needs a third cadence form that cannot be expressed through
|
||||||
|
extensions without changing generic semantics.
|
||||||
|
|
||||||
|
## Result
|
||||||
|
|
||||||
|
The source was adapted, not copied into the canon. The resulting standard,
|
||||||
|
schema, and worked example are registered in canon 0.7.0 and validated by the
|
||||||
|
service surface.
|
||||||
18
infospace/assimilation/emission-cadence/assimilation.yaml
Normal file
18
infospace/assimilation/emission-cadence/assimilation.yaml
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
id: assimilation/emission-cadence
|
||||||
|
title: Assimilation — EmissionCadenceDeclaration handover
|
||||||
|
source: King's Guard Emission-cadence declaration Taxonomy draft
|
||||||
|
source_version: "0.1.0"
|
||||||
|
source_type: internal-draft
|
||||||
|
source_files:
|
||||||
|
- source/EmissionCadenceDeclaration.md
|
||||||
|
requested_by: gate-house
|
||||||
|
status: closed
|
||||||
|
disposition: adapt
|
||||||
|
impacts:
|
||||||
|
- model/observability
|
||||||
|
- model/governance
|
||||||
|
- standard/emission-cadence
|
||||||
|
decision:
|
||||||
|
authority: GH-DEC-2026-004
|
||||||
|
decided_by: Bernd Worsch
|
||||||
|
decided_at: "2026-09-04T00:55:29Z"
|
||||||
12
infospace/assimilation/emission-cadence/comparison-matrix.md
Normal file
12
infospace/assimilation/emission-cadence/comparison-matrix.md
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
# Comparison matrix — EmissionCadenceDeclaration
|
||||||
|
|
||||||
|
| Source concept | Canon comparison | Disposition |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| EmissionCadenceDeclaration | Missing portable declaration contract | Add standard-owned concept |
|
||||||
|
| expected-rate | Missing bounded-count declaration | Add generic form |
|
||||||
|
| heartbeat | ITC-OBS has missing-signal semantics, but no source declaration | Add form component; import observability terms |
|
||||||
|
| reconciliation | Missing source/observer count comparison declaration | Add form component |
|
||||||
|
| finding | ITC-GOV already owns the assessment outcome | Import; do not redefine |
|
||||||
|
| evidence_class | NetKingdom security viewpoint | Leave to importing profile via extensions |
|
||||||
|
| load-bearing MUST/SHOULD rules | NetKingdom doctrine | Exclude from generic standard |
|
||||||
|
| King's Guard evaluation behavior | Consumer implementation | Exclude from canon contract |
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
source: KG-DRAFT-EMISSION-CADENCE
|
||||||
|
concepts:
|
||||||
|
- id: emission-cadence-declaration
|
||||||
|
source_term: EmissionCadenceDeclaration
|
||||||
|
definition: A source-authored statement of expected event-class emission.
|
||||||
|
classification: missing_concept
|
||||||
|
proposed_owner: standard/emission-cadence
|
||||||
|
- id: expected-rate-cadence
|
||||||
|
source_term: expected-rate
|
||||||
|
definition: A minimum event count expected within a bounded window.
|
||||||
|
classification: missing_concept
|
||||||
|
proposed_owner: standard/emission-cadence
|
||||||
|
- id: heartbeat-cadence
|
||||||
|
source_term: heartbeat
|
||||||
|
definition: A positive liveness claim expected within an interval.
|
||||||
|
classification: broader_than_existing
|
||||||
|
existing_anchor: model/observability
|
||||||
|
proposed_owner: standard/emission-cadence
|
||||||
|
- id: reconciliation-cadence
|
||||||
|
source_term: reconciliation
|
||||||
|
definition: A comparison between source-side and observer-side event counts.
|
||||||
|
classification: missing_concept
|
||||||
|
proposed_owner: standard/emission-cadence
|
||||||
|
- id: evidence-class
|
||||||
|
source_term: evidence_class
|
||||||
|
definition: Security importance assigned to an emitted event class.
|
||||||
|
classification: viewpoint_difference
|
||||||
|
disposition: importing-profile-extension
|
||||||
|
- id: finding
|
||||||
|
source_term: finding
|
||||||
|
definition: The observer outcome produced by a cadence breach.
|
||||||
|
classification: already_covered
|
||||||
|
existing_anchor: model/governance
|
||||||
25
infospace/assimilation/emission-cadence/mappings.yaml
Normal file
25
infospace/assimilation/emission-cadence/mappings.yaml
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
id: mapping/emission-cadence-handover
|
||||||
|
title: Emission cadence handover mappings
|
||||||
|
source: KG-DRAFT-EMISSION-CADENCE
|
||||||
|
target: standard/emission-cadence
|
||||||
|
mappings:
|
||||||
|
- source_concept: EmissionCadenceDeclaration
|
||||||
|
target_concept: EmissionCadenceDeclaration
|
||||||
|
mapping_type: adapted
|
||||||
|
- source_concept: expected-rate
|
||||||
|
target_concept: ExpectedRateCadence
|
||||||
|
mapping_type: equivalent
|
||||||
|
- source_concept: heartbeat
|
||||||
|
target_concept: HeartbeatCadence
|
||||||
|
mapping_type: adapted
|
||||||
|
- source_concept: reconciliation
|
||||||
|
target_concept: ReconciliationCadence
|
||||||
|
mapping_type: adapted
|
||||||
|
- source_concept: finding
|
||||||
|
target: model/governance
|
||||||
|
target_concept: Finding
|
||||||
|
mapping_type: imports
|
||||||
|
- source_concept: event_class
|
||||||
|
target: model/observability
|
||||||
|
target_concept: EventType
|
||||||
|
mapping_type: imports
|
||||||
14
infospace/assimilation/emission-cadence/open-questions.md
Normal file
14
infospace/assimilation/emission-cadence/open-questions.md
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
# Open questions — EmissionCadenceDeclaration
|
||||||
|
|
||||||
|
No question blocks adoption.
|
||||||
|
|
||||||
|
The following promotion questions remain for the draft's future review:
|
||||||
|
|
||||||
|
1. Do two independent source implementations need interval tolerance or grace
|
||||||
|
fields in the generic core, or can profiles carry them in `extensions`?
|
||||||
|
2. Should schema 1.0 retain the handed-over name `sources` for cadence entries,
|
||||||
|
or migrate to the clearer `cadences` with explicit compatibility tooling?
|
||||||
|
3. Does reconciliation eventually need a generic typed counter-selector
|
||||||
|
language, or are owner-defined field references sufficient?
|
||||||
|
|
||||||
|
These are review triggers, not deferred implementation tasks.
|
||||||
12
infospace/assimilation/emission-cadence/proposed-changes.md
Normal file
12
infospace/assimilation/emission-cadence/proposed-changes.md
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
# Proposed changes — resolved
|
||||||
|
|
||||||
|
1. Publish a draft Emission Cadence Standard under `infospace/standards/`.
|
||||||
|
2. Publish and register `emission-cadence.schema.yaml`.
|
||||||
|
3. Include one schema-valid worked example derived from the handed-over
|
||||||
|
`qonto-assistant` fixture without claiming it is the source-owned instance.
|
||||||
|
4. Add structural validation for the schema and example.
|
||||||
|
5. Register the standard and assimilation in all retrieval surfaces.
|
||||||
|
6. Bump the canon minor version and record compatibility rules.
|
||||||
|
|
||||||
|
All proposals were accepted under `GH-DEC-2026-004` and implemented by
|
||||||
|
`ITC-WP-0018`.
|
||||||
17
infospace/assimilation/emission-cadence/source-summary.md
Normal file
17
infospace/assimilation/emission-cadence/source-summary.md
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
# Source summary — EmissionCadenceDeclaration draft
|
||||||
|
|
||||||
|
The King's Guard draft proposes a source-authored declaration that makes stream
|
||||||
|
silence observable. It distinguishes two forms:
|
||||||
|
|
||||||
|
- `expected-rate`: an event-class minimum over a time window;
|
||||||
|
- `heartbeat-or-reconciliation`: a positive liveness assertion, a comparison of
|
||||||
|
source and observed counts, or both.
|
||||||
|
|
||||||
|
The draft was written against `qonto-assistant` and the Gate House approval
|
||||||
|
emission contract. It assigns evaluation to King's Guard and explicitly asks a
|
||||||
|
Taxonomy repository to own the schema.
|
||||||
|
|
||||||
|
Security-specific content associates event classes with `attributive` or
|
||||||
|
`load-bearing` evidence and requires the stronger form for rare, load-bearing
|
||||||
|
events. That policy is part of the source context, not the generic core adopted
|
||||||
|
by InfoTechCanon.
|
||||||
|
|
@ -0,0 +1,134 @@
|
||||||
|
---
|
||||||
|
title: Emission-cadence declaration (Taxonomy draft)
|
||||||
|
document_id: KG-DRAFT-EMISSION-CADENCE
|
||||||
|
version: 0.1.0
|
||||||
|
status: Draft-for-handover
|
||||||
|
date: 2026-09-01
|
||||||
|
drafter: kings-guard
|
||||||
|
owner: Taxonomy
|
||||||
|
worked_example: qonto-assistant
|
||||||
|
reference_instance: GH-WP-0002-T04
|
||||||
|
reference_source_declaration: approval-engine/cadence.yaml
|
||||||
|
statute: net-kingdom/canon/standards/security-layer-model_v0.7.md
|
||||||
|
sections: ["9.6", "17"]
|
||||||
|
classification: Public
|
||||||
|
---
|
||||||
|
|
||||||
|
# Emission-cadence declaration — Taxonomy draft
|
||||||
|
|
||||||
|
kings-guard drafts this artifact because it is the only consumer of
|
||||||
|
silence-as-signal and cannot implement §9.6 without a declared cadence.
|
||||||
|
**Ownership stays with Taxonomy.** This file is a handover, not an internal
|
||||||
|
schema. Inventing a local shape and keeping it here would be the drift
|
||||||
|
§17 exists to prevent.
|
||||||
|
|
||||||
|
Proposed Taxonomy homes, neither of which has assented (§17):
|
||||||
|
|
||||||
|
- `info-tech-canon` — ecosystem-wide semantic contracts
|
||||||
|
- `net-kingdom` — NetKingdom standards of record
|
||||||
|
|
||||||
|
gate-house already named the heartbeat form as doctrine in
|
||||||
|
`docs/contracts/approval-emission-detection.md` (`GH-WP-0002-T04`). The
|
||||||
|
reference source declaration is `approval-engine/cadence.yaml`. This draft
|
||||||
|
covers **both** forms, because one does not substitute for the other.
|
||||||
|
|
||||||
|
## 1. Why this belongs alongside the security genome
|
||||||
|
|
||||||
|
A source already declares intended healthy operation as a `security_genome`:
|
||||||
|
purpose, permitted capabilities, egress, tolerances. Expected emission cadence
|
||||||
|
is a claim of the same kind — a statement of intent about the evidence the
|
||||||
|
source will publish, not a measurement kings-guard takes of it.
|
||||||
|
|
||||||
|
Putting the declaration next to the genome keeps three properties:
|
||||||
|
|
||||||
|
1. **The class is the source's declaration.** Load-bearing versus attributive
|
||||||
|
is not inferred by the observer from event contents.
|
||||||
|
2. **The form follows the class.** Volume classes declare an expected rate.
|
||||||
|
Low-volume load-bearing classes declare a heartbeat or reconciliation.
|
||||||
|
Rate monitoring is forbidden for the latter: a suppressed month of
|
||||||
|
revocations is indistinguishable from a quiet one.
|
||||||
|
3. **Silence becomes observable without Tooling contact.** The source
|
||||||
|
publishes the stream, including the positive claim that can itself go
|
||||||
|
missing. kings-guard compares what arrived against what was declared.
|
||||||
|
|
||||||
|
## 2. Both forms
|
||||||
|
|
||||||
|
### 2.1 Expected rate — volume classes
|
||||||
|
|
||||||
|
Use when the class has a rate that can drop.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
form: expected-rate
|
||||||
|
event_class: <name>
|
||||||
|
evidence_class: attributive | load-bearing
|
||||||
|
window: 24h
|
||||||
|
expected_min: <integer>
|
||||||
|
drop_below: finding
|
||||||
|
```
|
||||||
|
|
||||||
|
A drop below `expected_min` in `window` is a finding about the **stream**,
|
||||||
|
not about any record's contents.
|
||||||
|
|
||||||
|
Load-bearing volume classes MUST declare this form (or the heartbeat form
|
||||||
|
if they are in fact low-volume). Attributive sources SHOULD.
|
||||||
|
|
||||||
|
### 2.2 Heartbeat or reconciliation — low-volume load-bearing classes
|
||||||
|
|
||||||
|
Use when the valuable event is rare: revocations, denials, containment
|
||||||
|
actions. Rate monitoring cannot work. The required property is a **positive
|
||||||
|
claim that can itself go missing**.
|
||||||
|
|
||||||
|
Reference instance: `GH-WP-0002-T04` / `approval-engine/cadence.yaml`.
|
||||||
|
Form is heartbeat **plus** reconciliation, not rate monitoring.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
form: heartbeat-or-reconciliation
|
||||||
|
event_class: <name>
|
||||||
|
evidence_class: load-bearing
|
||||||
|
rate_monitoring: forbidden
|
||||||
|
heartbeat:
|
||||||
|
event_class: <name>.heartbeat # or a dedicated heartbeat class
|
||||||
|
interval: 24h
|
||||||
|
assertion: nothing-to-report
|
||||||
|
missing: finding
|
||||||
|
reconciliation:
|
||||||
|
compare_local: source transition counts per class
|
||||||
|
compare_observed: evidence-engine counts per class
|
||||||
|
divergence: finding
|
||||||
|
undrained_local: lag-not-divergence
|
||||||
|
```
|
||||||
|
|
||||||
|
A missing heartbeat, or a reconciliation divergence, is a finding about the
|
||||||
|
stream. None of these are informational logs.
|
||||||
|
|
||||||
|
## 3. Worked example — `qonto-assistant`
|
||||||
|
|
||||||
|
The one real source this draft is written against.
|
||||||
|
|
||||||
|
| Event class | Evidence class | Form | Why |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| `audit.allow` | attributive | expected-rate (SHOULD) | Forensic reconstruction; no control branches on presence. Completeness is not claimed. The rate row is here so the volume form is specified, not because qonto traffic is currently a meaningful volume class. |
|
||||||
|
| `audit.deny` | load-bearing | heartbeat-or-reconciliation (MUST) | Deny-escalation and posture branch on deny presence/absence. Statute §9.6 names denials as load-bearing. Denials are infrequent, so rate monitoring is the wrong form. |
|
||||||
|
| `audit.heartbeat` | load-bearing | the positive claim | `nothing-to-report` plus per-class counts since the previous heartbeat. |
|
||||||
|
|
||||||
|
Machine-readable worked example consumed by the local evaluator (draft-shaped,
|
||||||
|
not a competing schema): `src/kings_guard/fixtures/qonto_assistant_cadence.json`.
|
||||||
|
|
||||||
|
Until `qonto-assistant` publishes the declaration and emits heartbeats, no
|
||||||
|
argument may assume this surface is live on that source. kings-guard can
|
||||||
|
still observe the audit events it does emit; stream completeness for the
|
||||||
|
deny class stays `unknown` or `degraded` until the positive claim exists.
|
||||||
|
|
||||||
|
## 4. Consumer obligations (kings-guard)
|
||||||
|
|
||||||
|
- Copy the declared evidence class onto each observation; do not infer it.
|
||||||
|
- Evaluate the stream against the declaration, not only each record.
|
||||||
|
- Carry completeness separately from record richness in posture output.
|
||||||
|
- Treat stream findings as distinct from content findings.
|
||||||
|
- Open no Tooling client to obtain the stream. The source publishes it.
|
||||||
|
|
||||||
|
## 5. Handover
|
||||||
|
|
||||||
|
Sent to `gate-house`, `net-kingdom`, and `info-tech-canon` for ownership.
|
||||||
|
kings-guard will consume whatever Taxonomy publishes; it will not fork this
|
||||||
|
draft into a private schema.
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
root: infospace
|
root: infospace
|
||||||
file_count: 191
|
file_count: 208
|
||||||
files:
|
files:
|
||||||
- path: README.md
|
- path: README.md
|
||||||
directory: .
|
directory: .
|
||||||
|
|
@ -79,6 +79,9 @@ files:
|
||||||
- path: agent/briefs/example-consumer-purpose-portfolio.md
|
- path: agent/briefs/example-consumer-purpose-portfolio.md
|
||||||
directory: agent/briefs
|
directory: agent/briefs
|
||||||
name: example-consumer-purpose-portfolio.md
|
name: example-consumer-purpose-portfolio.md
|
||||||
|
- path: agent/briefs/example-emission-cadence-qonto-assistant.md
|
||||||
|
directory: agent/briefs
|
||||||
|
name: example-emission-cadence-qonto-assistant.md
|
||||||
- path: agent/briefs/kernel-itc-core.md
|
- path: agent/briefs/kernel-itc-core.md
|
||||||
directory: agent/briefs
|
directory: agent/briefs
|
||||||
name: kernel-itc-core.md
|
name: kernel-itc-core.md
|
||||||
|
|
@ -88,6 +91,9 @@ files:
|
||||||
- path: agent/briefs/mapping-capability-anchors.md
|
- path: agent/briefs/mapping-capability-anchors.md
|
||||||
directory: agent/briefs
|
directory: agent/briefs
|
||||||
name: mapping-capability-anchors.md
|
name: mapping-capability-anchors.md
|
||||||
|
- path: agent/briefs/mapping-emission-cadence-handover.md
|
||||||
|
directory: agent/briefs
|
||||||
|
name: mapping-emission-cadence-handover.md
|
||||||
- path: agent/briefs/mapping-purpose-demand-governance-candidates.md
|
- path: agent/briefs/mapping-purpose-demand-governance-candidates.md
|
||||||
directory: agent/briefs
|
directory: agent/briefs
|
||||||
name: mapping-purpose-demand-governance-candidates.md
|
name: mapping-purpose-demand-governance-candidates.md
|
||||||
|
|
@ -133,6 +139,9 @@ files:
|
||||||
- path: agent/briefs/pattern-intent-scope-purposes.md
|
- path: agent/briefs/pattern-intent-scope-purposes.md
|
||||||
directory: agent/briefs
|
directory: agent/briefs
|
||||||
name: pattern-intent-scope-purposes.md
|
name: pattern-intent-scope-purposes.md
|
||||||
|
- path: agent/briefs/practice-pattern-agentic-drives-functional.md
|
||||||
|
directory: agent/briefs
|
||||||
|
name: practice-pattern-agentic-drives-functional.md
|
||||||
- path: agent/briefs/practice-pattern-interface-deprecation-strangler.md
|
- path: agent/briefs/practice-pattern-interface-deprecation-strangler.md
|
||||||
directory: agent/briefs
|
directory: agent/briefs
|
||||||
name: practice-pattern-interface-deprecation-strangler.md
|
name: practice-pattern-interface-deprecation-strangler.md
|
||||||
|
|
@ -163,6 +172,9 @@ files:
|
||||||
- path: agent/briefs/standard-caring.md
|
- path: agent/briefs/standard-caring.md
|
||||||
directory: agent/briefs
|
directory: agent/briefs
|
||||||
name: standard-caring.md
|
name: standard-caring.md
|
||||||
|
- path: agent/briefs/standard-emission-cadence.md
|
||||||
|
directory: agent/briefs
|
||||||
|
name: standard-emission-cadence.md
|
||||||
- path: agent/briefs/standard-repository-layout.md
|
- path: agent/briefs/standard-repository-layout.md
|
||||||
directory: agent/briefs
|
directory: agent/briefs
|
||||||
name: standard-repository-layout.md
|
name: standard-repository-layout.md
|
||||||
|
|
@ -217,6 +229,33 @@ files:
|
||||||
- path: assimilation/README.md
|
- path: assimilation/README.md
|
||||||
directory: assimilation
|
directory: assimilation
|
||||||
name: README.md
|
name: README.md
|
||||||
|
- path: assimilation/emission-cadence/ASSIMILATION.md
|
||||||
|
directory: assimilation/emission-cadence
|
||||||
|
name: ASSIMILATION.md
|
||||||
|
- path: assimilation/emission-cadence/assimilation.yaml
|
||||||
|
directory: assimilation/emission-cadence
|
||||||
|
name: assimilation.yaml
|
||||||
|
- path: assimilation/emission-cadence/comparison-matrix.md
|
||||||
|
directory: assimilation/emission-cadence
|
||||||
|
name: comparison-matrix.md
|
||||||
|
- path: assimilation/emission-cadence/extracted-concepts.yaml
|
||||||
|
directory: assimilation/emission-cadence
|
||||||
|
name: extracted-concepts.yaml
|
||||||
|
- path: assimilation/emission-cadence/mappings.yaml
|
||||||
|
directory: assimilation/emission-cadence
|
||||||
|
name: mappings.yaml
|
||||||
|
- path: assimilation/emission-cadence/open-questions.md
|
||||||
|
directory: assimilation/emission-cadence
|
||||||
|
name: open-questions.md
|
||||||
|
- path: assimilation/emission-cadence/proposed-changes.md
|
||||||
|
directory: assimilation/emission-cadence
|
||||||
|
name: proposed-changes.md
|
||||||
|
- path: assimilation/emission-cadence/source/EmissionCadenceDeclaration.md
|
||||||
|
directory: assimilation/emission-cadence/source
|
||||||
|
name: EmissionCadenceDeclaration.md
|
||||||
|
- path: assimilation/emission-cadence/source-summary.md
|
||||||
|
directory: assimilation/emission-cadence
|
||||||
|
name: source-summary.md
|
||||||
- path: assimilation/intake-and-assimilation-practice.md
|
- path: assimilation/intake-and-assimilation-practice.md
|
||||||
directory: assimilation
|
directory: assimilation
|
||||||
name: intake-and-assimilation-practice.md
|
name: intake-and-assimilation-practice.md
|
||||||
|
|
@ -424,6 +463,9 @@ files:
|
||||||
- path: profiles/README.md
|
- path: profiles/README.md
|
||||||
directory: profiles
|
directory: profiles
|
||||||
name: README.md
|
name: README.md
|
||||||
|
- path: profiles/small-saas/artifacts/capability-requirements.yaml
|
||||||
|
directory: profiles/small-saas/artifacts
|
||||||
|
name: capability-requirements.yaml
|
||||||
- path: profiles/small-saas/artifacts/control.namespace-per-tenant.yaml
|
- path: profiles/small-saas/artifacts/control.namespace-per-tenant.yaml
|
||||||
directory: profiles/small-saas/artifacts
|
directory: profiles/small-saas/artifacts
|
||||||
name: control.namespace-per-tenant.yaml
|
name: control.namespace-per-tenant.yaml
|
||||||
|
|
@ -496,6 +538,9 @@ files:
|
||||||
- path: schemas/concept.schema.yaml
|
- path: schemas/concept.schema.yaml
|
||||||
directory: schemas
|
directory: schemas
|
||||||
name: concept.schema.yaml
|
name: concept.schema.yaml
|
||||||
|
- path: schemas/emission-cadence.schema.yaml
|
||||||
|
directory: schemas
|
||||||
|
name: emission-cadence.schema.yaml
|
||||||
- path: schemas/index.yaml
|
- path: schemas/index.yaml
|
||||||
directory: schemas
|
directory: schemas
|
||||||
name: index.yaml
|
name: index.yaml
|
||||||
|
|
@ -538,6 +583,12 @@ files:
|
||||||
- path: standards/caring/benchmarks/kubernetes-rbac/native-concepts.yaml
|
- path: standards/caring/benchmarks/kubernetes-rbac/native-concepts.yaml
|
||||||
directory: standards/caring/benchmarks/kubernetes-rbac
|
directory: standards/caring/benchmarks/kubernetes-rbac
|
||||||
name: native-concepts.yaml
|
name: native-concepts.yaml
|
||||||
|
- path: standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md
|
||||||
|
directory: standards/emission-cadence
|
||||||
|
name: InfoTechCanonEmissionCadenceStandard.md
|
||||||
|
- path: standards/emission-cadence/examples/qonto-assistant.yaml
|
||||||
|
directory: standards/emission-cadence/examples
|
||||||
|
name: qonto-assistant.yaml
|
||||||
- path: standards/repository-layout/InfoTechCanonRepositoryLayoutStandard.md
|
- path: standards/repository-layout/InfoTechCanonRepositoryLayoutStandard.md
|
||||||
directory: standards/repository-layout
|
directory: standards/repository-layout
|
||||||
name: InfoTechCanonRepositoryLayoutStandard.md
|
name: InfoTechCanonRepositoryLayoutStandard.md
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,9 @@
|
||||||
concept_count: 119
|
concept_count: 129
|
||||||
concepts:
|
concepts:
|
||||||
|
- concept: "Assimilation \u2014 EmissionCadenceDeclaration handover"
|
||||||
|
owner: assimilation/emission-cadence
|
||||||
|
path: assimilation/emission-cadence/ASSIMILATION.md
|
||||||
|
source: artifact_title
|
||||||
- concept: "Assimilation \u2014 IT Capability Canon (ITCC) v0.1"
|
- concept: "Assimilation \u2014 IT Capability Canon (ITCC) v0.1"
|
||||||
owner: assimilation/it-capability-canon
|
owner: assimilation/it-capability-canon
|
||||||
path: assimilation/it-capability-canon/ASSIMILATION.md
|
path: assimilation/it-capability-canon/ASSIMILATION.md
|
||||||
|
|
@ -104,6 +108,10 @@ concepts:
|
||||||
owner: example/consumer-purpose-portfolio
|
owner: example/consumer-purpose-portfolio
|
||||||
path: examples/consumer-purpose-portfolio.yaml
|
path: examples/consumer-purpose-portfolio.yaml
|
||||||
source: artifact_title
|
source: artifact_title
|
||||||
|
- concept: Qonto Assistant Emission Cadence Worked Example
|
||||||
|
owner: example/emission-cadence/qonto-assistant
|
||||||
|
path: standards/emission-cadence/examples/qonto-assistant.yaml
|
||||||
|
source: artifact_title
|
||||||
- concept: InfoTechCanon Core
|
- concept: InfoTechCanon Core
|
||||||
owner: kernel/itc-core
|
owner: kernel/itc-core
|
||||||
path: kernel/InfoTechCanonCore.md
|
path: kernel/InfoTechCanonCore.md
|
||||||
|
|
@ -116,6 +124,10 @@ concepts:
|
||||||
owner: mapping/capability-anchors
|
owner: mapping/capability-anchors
|
||||||
path: mappings/capability-anchors.yaml
|
path: mappings/capability-anchors.yaml
|
||||||
source: artifact_title
|
source: artifact_title
|
||||||
|
- concept: Emission cadence handover mappings
|
||||||
|
owner: mapping/emission-cadence-handover
|
||||||
|
path: assimilation/emission-cadence/mappings.yaml
|
||||||
|
source: artifact_title
|
||||||
- concept: Purpose Demand Governance Extension Candidates
|
- concept: Purpose Demand Governance Extension Candidates
|
||||||
owner: mapping/purpose-demand-governance-candidates
|
owner: mapping/purpose-demand-governance-candidates
|
||||||
path: mappings/purpose-demand-governance-candidates.yaml
|
path: mappings/purpose-demand-governance-candidates.yaml
|
||||||
|
|
@ -338,6 +350,10 @@ concepts:
|
||||||
owner: scheme/practice-pattern
|
owner: scheme/practice-pattern
|
||||||
path: patterns/PracticePatternScheme.md
|
path: patterns/PracticePatternScheme.md
|
||||||
source: frontmatter.owned_concepts
|
source: frontmatter.owned_concepts
|
||||||
|
- concept: Small SaaS Production Capability Requirements
|
||||||
|
owner: small-saas/capability-requirements/production
|
||||||
|
path: profiles/small-saas/artifacts/capability-requirements.yaml
|
||||||
|
source: artifact_title
|
||||||
- concept: Namespace Per Tenant Control
|
- concept: Namespace Per Tenant Control
|
||||||
owner: small-saas/control/namespace-per-tenant
|
owner: small-saas/control/namespace-per-tenant
|
||||||
path: profiles/small-saas/artifacts/control.namespace-per-tenant.yaml
|
path: profiles/small-saas/artifacts/control.namespace-per-tenant.yaml
|
||||||
|
|
@ -454,6 +470,30 @@ concepts:
|
||||||
owner: standard/caring
|
owner: standard/caring
|
||||||
path: standards/caring/InfoTechCanonCaringAccessGovernanceStandard.md
|
path: standards/caring/InfoTechCanonCaringAccessGovernanceStandard.md
|
||||||
source: frontmatter.owned_concepts
|
source: frontmatter.owned_concepts
|
||||||
|
- concept: InfoTechCanon Emission Cadence Standard
|
||||||
|
owner: standard/emission-cadence
|
||||||
|
path: standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md
|
||||||
|
source: artifact_title
|
||||||
|
- concept: EmissionCadenceDeclaration
|
||||||
|
owner: standard/emission-cadence
|
||||||
|
path: standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md
|
||||||
|
source: frontmatter.owned_concepts
|
||||||
|
- concept: EmissionCadenceForm
|
||||||
|
owner: standard/emission-cadence
|
||||||
|
path: standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md
|
||||||
|
source: frontmatter.owned_concepts
|
||||||
|
- concept: ExpectedRateCadence
|
||||||
|
owner: standard/emission-cadence
|
||||||
|
path: standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md
|
||||||
|
source: frontmatter.owned_concepts
|
||||||
|
- concept: HeartbeatCadence
|
||||||
|
owner: standard/emission-cadence
|
||||||
|
path: standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md
|
||||||
|
source: frontmatter.owned_concepts
|
||||||
|
- concept: ReconciliationCadence
|
||||||
|
owner: standard/emission-cadence
|
||||||
|
path: standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md
|
||||||
|
source: frontmatter.owned_concepts
|
||||||
- concept: InfoTechCanon Repository Layout Standard
|
- concept: InfoTechCanon Repository Layout Standard
|
||||||
owner: standard/repository-layout
|
owner: standard/repository-layout
|
||||||
path: standards/repository-layout/InfoTechCanonRepositoryLayoutStandard.md
|
path: standards/repository-layout/InfoTechCanonRepositoryLayoutStandard.md
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
artifacts:
|
artifacts:
|
||||||
|
- assimilation/emission-cadence
|
||||||
- assimilation/it-capability-canon
|
- assimilation/it-capability-canon
|
||||||
- benchmark/caring/kubernetes-rbac
|
- benchmark/caring/kubernetes-rbac
|
||||||
- benchmark/caring/kubernetes-rbac/access-descriptors
|
- benchmark/caring/kubernetes-rbac/access-descriptors
|
||||||
|
|
@ -25,9 +26,11 @@ artifacts:
|
||||||
- evaluation/user-engine/questions
|
- evaluation/user-engine/questions
|
||||||
- evaluation/user-engine/small-saas-alignment
|
- evaluation/user-engine/small-saas-alignment
|
||||||
- example/consumer-purpose-portfolio
|
- example/consumer-purpose-portfolio
|
||||||
|
- example/emission-cadence/qonto-assistant
|
||||||
- kernel/itc-core
|
- kernel/itc-core
|
||||||
- kernel/itc-kernel-map
|
- kernel/itc-kernel-map
|
||||||
- mapping/capability-anchors
|
- mapping/capability-anchors
|
||||||
|
- mapping/emission-cadence-handover
|
||||||
- mapping/purpose-demand-governance-candidates
|
- mapping/purpose-demand-governance-candidates
|
||||||
- model/access-control
|
- model/access-control
|
||||||
- model/capability
|
- model/capability
|
||||||
|
|
@ -54,6 +57,7 @@ artifacts:
|
||||||
- review-kit/alignment/workflow
|
- review-kit/alignment/workflow
|
||||||
- review-kit/alignment/workplan-template
|
- review-kit/alignment/workplan-template
|
||||||
- scheme/practice-pattern
|
- scheme/practice-pattern
|
||||||
|
- small-saas/capability-requirements/production
|
||||||
- small-saas/control/namespace-per-tenant
|
- small-saas/control/namespace-per-tenant
|
||||||
- small-saas/dataset/subscription-ledger
|
- small-saas/dataset/subscription-ledger
|
||||||
- small-saas/deployment/production
|
- small-saas/deployment/production
|
||||||
|
|
@ -68,9 +72,14 @@ artifacts:
|
||||||
- small-saas/tenant/globex
|
- small-saas/tenant/globex
|
||||||
- small-saas/user/ada-admin
|
- small-saas/user/ada-admin
|
||||||
- standard/caring
|
- standard/caring
|
||||||
|
- standard/emission-cadence
|
||||||
- standard/repository-layout
|
- standard/repository-layout
|
||||||
- standard/tagging
|
- standard/tagging
|
||||||
rows:
|
rows:
|
||||||
|
- artifact: assimilation/emission-cadence
|
||||||
|
targets:
|
||||||
|
kernel/itc-core:
|
||||||
|
- conforms_to
|
||||||
- artifact: assimilation/it-capability-canon
|
- artifact: assimilation/it-capability-canon
|
||||||
targets:
|
targets:
|
||||||
kernel/itc-core:
|
kernel/itc-core:
|
||||||
|
|
@ -353,6 +362,10 @@ rows:
|
||||||
- illustrates
|
- illustrates
|
||||||
profile/small-saas:
|
profile/small-saas:
|
||||||
- uses
|
- uses
|
||||||
|
- artifact: example/emission-cadence/qonto-assistant
|
||||||
|
targets:
|
||||||
|
standard/emission-cadence:
|
||||||
|
- conforms_to
|
||||||
- artifact: kernel/itc-core
|
- artifact: kernel/itc-core
|
||||||
targets: {}
|
targets: {}
|
||||||
- artifact: kernel/itc-kernel-map
|
- artifact: kernel/itc-kernel-map
|
||||||
|
|
@ -389,6 +402,14 @@ rows:
|
||||||
- maps
|
- maps
|
||||||
- artifact: mapping/capability-anchors
|
- artifact: mapping/capability-anchors
|
||||||
targets: {}
|
targets: {}
|
||||||
|
- artifact: mapping/emission-cadence-handover
|
||||||
|
targets:
|
||||||
|
model/governance:
|
||||||
|
- maps
|
||||||
|
model/observability:
|
||||||
|
- maps
|
||||||
|
standard/emission-cadence:
|
||||||
|
- maps
|
||||||
- artifact: mapping/purpose-demand-governance-candidates
|
- artifact: mapping/purpose-demand-governance-candidates
|
||||||
targets:
|
targets:
|
||||||
model/governance:
|
model/governance:
|
||||||
|
|
@ -641,6 +662,14 @@ rows:
|
||||||
targets:
|
targets:
|
||||||
kernel/itc-core:
|
kernel/itc-core:
|
||||||
- conforms_to
|
- conforms_to
|
||||||
|
- artifact: small-saas/capability-requirements/production
|
||||||
|
targets:
|
||||||
|
model/capability:
|
||||||
|
- uses
|
||||||
|
profile/small-saas:
|
||||||
|
- instantiates
|
||||||
|
small-saas/service/billing-portal:
|
||||||
|
- applies_to
|
||||||
- artifact: small-saas/control/namespace-per-tenant
|
- artifact: small-saas/control/namespace-per-tenant
|
||||||
targets:
|
targets:
|
||||||
model/security:
|
model/security:
|
||||||
|
|
@ -801,6 +830,18 @@ rows:
|
||||||
- imports
|
- imports
|
||||||
standard/tagging:
|
standard/tagging:
|
||||||
- imports
|
- imports
|
||||||
|
- artifact: standard/emission-cadence
|
||||||
|
targets:
|
||||||
|
assimilation/emission-cadence:
|
||||||
|
- derived_from
|
||||||
|
kernel/itc-core:
|
||||||
|
- conforms_to
|
||||||
|
model/governance:
|
||||||
|
- imports
|
||||||
|
model/observability:
|
||||||
|
- imports
|
||||||
|
model/security:
|
||||||
|
- related_to
|
||||||
- artifact: standard/repository-layout
|
- artifact: standard/repository-layout
|
||||||
targets:
|
targets:
|
||||||
kernel/itc-core:
|
kernel/itc-core:
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,8 @@ disciplines:
|
||||||
path: standards/caring/InfoTechCanonCaringAccessGovernanceStandard.md
|
path: standards/caring/InfoTechCanonCaringAccessGovernanceStandard.md
|
||||||
- name: Repository Layout Standard
|
- name: Repository Layout Standard
|
||||||
path: standards/repository-layout/InfoTechCanonRepositoryLayoutStandard.md
|
path: standards/repository-layout/InfoTechCanonRepositoryLayoutStandard.md
|
||||||
|
- name: Emission Cadence Standard
|
||||||
|
path: standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md
|
||||||
schemas:
|
schemas:
|
||||||
standard: schemas/standard.schema.yaml
|
standard: schemas/standard.schema.yaml
|
||||||
practice-pattern: schemas/practice-pattern.schema.yaml
|
practice-pattern: schemas/practice-pattern.schema.yaml
|
||||||
|
|
@ -52,6 +54,7 @@ schemas:
|
||||||
capability: schemas/capability.schema.yaml
|
capability: schemas/capability.schema.yaml
|
||||||
capability-record: schemas/capability-record.schema.yaml
|
capability-record: schemas/capability-record.schema.yaml
|
||||||
attribute-value-type: schemas/attribute-value-type.schema.yaml
|
attribute-value-type: schemas/attribute-value-type.schema.yaml
|
||||||
|
emission-cadence: schemas/emission-cadence.schema.yaml
|
||||||
workflows: []
|
workflows: []
|
||||||
viability:
|
viability:
|
||||||
redundancy_ratio:
|
redundancy_ratio:
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,68 @@
|
||||||
|
id: small-saas/capability-requirements/production
|
||||||
|
kind: capability-requirement-set
|
||||||
|
title: Small SaaS Production Capability Requirements
|
||||||
|
profile: small-saas
|
||||||
|
record_id: small-saas-production-capabilities
|
||||||
|
requires:
|
||||||
|
- capability: identity.authorization
|
||||||
|
profile: rbac
|
||||||
|
minimum_maturity: D4
|
||||||
|
targets:
|
||||||
|
policy_coverage:
|
||||||
|
value: all-tenant-routes
|
||||||
|
- capability: data.transactional
|
||||||
|
profile: relational
|
||||||
|
minimum_maturity: D4
|
||||||
|
targets:
|
||||||
|
durability:
|
||||||
|
value: production-approved
|
||||||
|
- capability: integration.api
|
||||||
|
profile: request-response
|
||||||
|
minimum_maturity: D4
|
||||||
|
targets:
|
||||||
|
compatibility:
|
||||||
|
value: versioned-contract
|
||||||
|
- capability: operations.observability
|
||||||
|
profile: events
|
||||||
|
minimum_maturity: D3
|
||||||
|
targets:
|
||||||
|
coverage:
|
||||||
|
value: tenant-access-and-service-health
|
||||||
|
provisions:
|
||||||
|
- provider: small-saas/control/namespace-per-tenant
|
||||||
|
capability: identity.authorization
|
||||||
|
profile: rbac
|
||||||
|
maturity: D4
|
||||||
|
evidence:
|
||||||
|
- hook: policy_tests
|
||||||
|
basis: measured
|
||||||
|
source: small-saas/evidence/access-review-2026-05
|
||||||
|
- provider: small-saas/dataset/subscription-ledger
|
||||||
|
capability: data.transactional
|
||||||
|
profile: relational
|
||||||
|
maturity: D4
|
||||||
|
evidence:
|
||||||
|
- hook: durability_tests
|
||||||
|
basis: measured
|
||||||
|
source: small-saas/evidence/access-review-2026-05
|
||||||
|
- provider: small-saas/service/billing-portal
|
||||||
|
capability: integration.api
|
||||||
|
profile: request-response
|
||||||
|
maturity: D4
|
||||||
|
evidence:
|
||||||
|
- hook: contract_tests
|
||||||
|
basis: measured
|
||||||
|
source: small-saas/evidence/access-review-2026-05
|
||||||
|
- provider: small-saas/deployment/production
|
||||||
|
capability: operations.observability
|
||||||
|
profile: events
|
||||||
|
maturity: D3
|
||||||
|
evidence:
|
||||||
|
- hook: telemetry_coverage
|
||||||
|
basis: measured
|
||||||
|
source: small-saas/evidence/access-review-2026-05
|
||||||
|
relationships:
|
||||||
|
- type: instantiates
|
||||||
|
target: profile/small-saas
|
||||||
|
- type: applies_to
|
||||||
|
target: small-saas/service/billing-portal
|
||||||
|
|
@ -22,6 +22,7 @@ required_standards:
|
||||||
- model/devsecops
|
- model/devsecops
|
||||||
- model/network
|
- model/network
|
||||||
- model/observability
|
- model/observability
|
||||||
|
- model/capability
|
||||||
- standard/tagging
|
- standard/tagging
|
||||||
- standard/caring
|
- standard/caring
|
||||||
required_concepts:
|
required_concepts:
|
||||||
|
|
@ -87,6 +88,7 @@ artifact_ids:
|
||||||
- small-saas/control/namespace-per-tenant
|
- small-saas/control/namespace-per-tenant
|
||||||
- small-saas/evidence/access-review-2026-05
|
- small-saas/evidence/access-review-2026-05
|
||||||
- small-saas/incident/cross-tenant-access-attempt
|
- small-saas/incident/cross-tenant-access-attempt
|
||||||
|
- small-saas/capability-requirements/production
|
||||||
validation_rules:
|
validation_rules:
|
||||||
required_artifact_kinds:
|
required_artifact_kinds:
|
||||||
- service
|
- service
|
||||||
|
|
|
||||||
159
infospace/schemas/emission-cadence.schema.yaml
Normal file
159
infospace/schemas/emission-cadence.schema.yaml
Normal file
|
|
@ -0,0 +1,159 @@
|
||||||
|
$schema: https://json-schema.org/draft/2020-12/schema
|
||||||
|
$id: https://info-tech-canon.local/schemas/emission-cadence.schema.yaml
|
||||||
|
title: InfoTechCanon EmissionCadenceDeclaration 0.1
|
||||||
|
description: Generic source-authored event emission cadence declaration.
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- schema_version
|
||||||
|
- declaration_id
|
||||||
|
- source
|
||||||
|
- sources
|
||||||
|
properties:
|
||||||
|
schema_version:
|
||||||
|
const: "0.1"
|
||||||
|
declaration_id:
|
||||||
|
$ref: "#/$defs/non_empty_string"
|
||||||
|
source:
|
||||||
|
$ref: "#/$defs/non_empty_string"
|
||||||
|
stream_id:
|
||||||
|
$ref: "#/$defs/non_empty_string"
|
||||||
|
sources:
|
||||||
|
type: array
|
||||||
|
minItems: 1
|
||||||
|
items:
|
||||||
|
$ref: "#/$defs/cadence_entry"
|
||||||
|
extensions:
|
||||||
|
$ref: "#/$defs/extensions"
|
||||||
|
additionalProperties: false
|
||||||
|
$defs:
|
||||||
|
non_empty_string:
|
||||||
|
type: string
|
||||||
|
minLength: 1
|
||||||
|
duration:
|
||||||
|
type: string
|
||||||
|
pattern: "^(?:P(?=\\d|T\\d)(?:\\d+D)?(?:T(?:\\d+H)?(?:\\d+M)?(?:\\d+S)?)?|[1-9][0-9]*(?:s|m|h|d))$"
|
||||||
|
extensions:
|
||||||
|
type: object
|
||||||
|
minProperties: 1
|
||||||
|
propertyNames:
|
||||||
|
pattern: "^[a-z][a-z0-9.-]*$"
|
||||||
|
additionalProperties:
|
||||||
|
type: object
|
||||||
|
heartbeat:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- event_class
|
||||||
|
- assertion
|
||||||
|
- missing
|
||||||
|
properties:
|
||||||
|
event_class:
|
||||||
|
$ref: "#/$defs/non_empty_string"
|
||||||
|
interval:
|
||||||
|
$ref: "#/$defs/duration"
|
||||||
|
interval_seconds:
|
||||||
|
type: integer
|
||||||
|
minimum: 1
|
||||||
|
assertion:
|
||||||
|
$ref: "#/$defs/non_empty_string"
|
||||||
|
missing:
|
||||||
|
$ref: "#/$defs/non_empty_string"
|
||||||
|
extensions:
|
||||||
|
$ref: "#/$defs/extensions"
|
||||||
|
oneOf:
|
||||||
|
- required: [interval]
|
||||||
|
not:
|
||||||
|
required: [interval_seconds]
|
||||||
|
- required: [interval_seconds]
|
||||||
|
not:
|
||||||
|
required: [interval]
|
||||||
|
additionalProperties: false
|
||||||
|
reconciliation:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- compare_local
|
||||||
|
- compare_observed
|
||||||
|
- divergence
|
||||||
|
properties:
|
||||||
|
compare_local:
|
||||||
|
$ref: "#/$defs/non_empty_string"
|
||||||
|
compare_observed:
|
||||||
|
$ref: "#/$defs/non_empty_string"
|
||||||
|
divergence:
|
||||||
|
$ref: "#/$defs/non_empty_string"
|
||||||
|
undrained_local:
|
||||||
|
$ref: "#/$defs/non_empty_string"
|
||||||
|
extensions:
|
||||||
|
$ref: "#/$defs/extensions"
|
||||||
|
additionalProperties: false
|
||||||
|
cadence_entry:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- source_id
|
||||||
|
- event_class
|
||||||
|
- form
|
||||||
|
properties:
|
||||||
|
source_id:
|
||||||
|
$ref: "#/$defs/non_empty_string"
|
||||||
|
source_system:
|
||||||
|
$ref: "#/$defs/non_empty_string"
|
||||||
|
event_class:
|
||||||
|
$ref: "#/$defs/non_empty_string"
|
||||||
|
form:
|
||||||
|
enum:
|
||||||
|
- expected-rate
|
||||||
|
- heartbeat-or-reconciliation
|
||||||
|
window:
|
||||||
|
$ref: "#/$defs/duration"
|
||||||
|
window_seconds:
|
||||||
|
type: integer
|
||||||
|
minimum: 1
|
||||||
|
expected_min:
|
||||||
|
type: integer
|
||||||
|
minimum: 0
|
||||||
|
drop_below:
|
||||||
|
$ref: "#/$defs/non_empty_string"
|
||||||
|
heartbeat:
|
||||||
|
$ref: "#/$defs/heartbeat"
|
||||||
|
reconciliation:
|
||||||
|
$ref: "#/$defs/reconciliation"
|
||||||
|
extensions:
|
||||||
|
$ref: "#/$defs/extensions"
|
||||||
|
allOf:
|
||||||
|
- if:
|
||||||
|
properties:
|
||||||
|
form:
|
||||||
|
const: expected-rate
|
||||||
|
required: [form]
|
||||||
|
then:
|
||||||
|
required:
|
||||||
|
- expected_min
|
||||||
|
- drop_below
|
||||||
|
oneOf:
|
||||||
|
- required: [window]
|
||||||
|
not:
|
||||||
|
anyOf:
|
||||||
|
- required: [window_seconds]
|
||||||
|
- required: [heartbeat]
|
||||||
|
- required: [reconciliation]
|
||||||
|
- required: [window_seconds]
|
||||||
|
not:
|
||||||
|
anyOf:
|
||||||
|
- required: [window]
|
||||||
|
- required: [heartbeat]
|
||||||
|
- required: [reconciliation]
|
||||||
|
- if:
|
||||||
|
properties:
|
||||||
|
form:
|
||||||
|
const: heartbeat-or-reconciliation
|
||||||
|
required: [form]
|
||||||
|
then:
|
||||||
|
anyOf:
|
||||||
|
- required: [heartbeat]
|
||||||
|
- required: [reconciliation]
|
||||||
|
not:
|
||||||
|
anyOf:
|
||||||
|
- required: [window]
|
||||||
|
- required: [window_seconds]
|
||||||
|
- required: [expected_min]
|
||||||
|
- required: [drop_below]
|
||||||
|
additionalProperties: false
|
||||||
|
|
@ -25,3 +25,5 @@ schemas:
|
||||||
path: capability-record.schema.yaml
|
path: capability-record.schema.yaml
|
||||||
- id: attribute-value-type
|
- id: attribute-value-type
|
||||||
path: attribute-value-type.schema.yaml
|
path: attribute-value-type.schema.yaml
|
||||||
|
- id: emission-cadence
|
||||||
|
path: emission-cadence.schema.yaml
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,214 @@
|
||||||
|
---
|
||||||
|
id: itc-emission-cadence:EmissionCadenceDeclaration
|
||||||
|
title: InfoTechCanon Emission Cadence Standard
|
||||||
|
short_name: ITC-EMISSION-CADENCE
|
||||||
|
type: standard
|
||||||
|
standard_family: InfoTechCanon
|
||||||
|
repository_context: info-tech-canon
|
||||||
|
recommended_path: standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md
|
||||||
|
status: draft
|
||||||
|
version: 0.1.0
|
||||||
|
schema_version: "0.1"
|
||||||
|
canonical_owner: InfoTechCanonEmissionCadenceStandard
|
||||||
|
namespace: itc-emission-cadence
|
||||||
|
classification: standard
|
||||||
|
primary_cluster: observability-contract
|
||||||
|
imports:
|
||||||
|
- InfoTechCanonCore
|
||||||
|
- InfoTechCanonObservabilityModel
|
||||||
|
- InfoTechCanonGovernanceModel
|
||||||
|
related:
|
||||||
|
- InfoTechCanonSecurityModel
|
||||||
|
owned_concepts:
|
||||||
|
- EmissionCadenceDeclaration
|
||||||
|
- EmissionCadenceForm
|
||||||
|
- ExpectedRateCadence
|
||||||
|
- HeartbeatCadence
|
||||||
|
- ReconciliationCadence
|
||||||
|
provenance:
|
||||||
|
source_version: 0.1.0
|
||||||
|
source_file: infospace/assimilation/emission-cadence/source/EmissionCadenceDeclaration.md
|
||||||
|
assimilation: assimilation/emission-cadence
|
||||||
|
decision: GH-DEC-2026-004
|
||||||
|
created_at: "2026-09-04"
|
||||||
|
updated_at: "2026-09-04"
|
||||||
|
---
|
||||||
|
|
||||||
|
# InfoTechCanon Emission Cadence Standard
|
||||||
|
|
||||||
|
**Short Name:** `ITC-EMISSION-CADENCE`
|
||||||
|
**Document Status:** Draft
|
||||||
|
**Version:** 0.1.0
|
||||||
|
**Schema Version:** `0.1`
|
||||||
|
|
||||||
|
## 1. Purpose
|
||||||
|
|
||||||
|
This standard defines `EmissionCadenceDeclaration`: a machine-readable,
|
||||||
|
source-authored claim about when records of an event class are expected to be
|
||||||
|
emitted. It lets an observer evaluate a stream's silence separately from the
|
||||||
|
contents and richness of records that did arrive.
|
||||||
|
|
||||||
|
The declaration describes intended emission. It is not a measurement, a health
|
||||||
|
result, or proof that every event was emitted.
|
||||||
|
|
||||||
|
## 2. Ownership boundary
|
||||||
|
|
||||||
|
InfoTechCanon owns the generic forms, fields, validation semantics,
|
||||||
|
compatibility rules, and evolution of this contract.
|
||||||
|
|
||||||
|
Other owners retain their own responsibilities:
|
||||||
|
|
||||||
|
- a source owns each declaration instance and the behavior it declares;
|
||||||
|
- an observer owns measurement, evaluation, and resulting findings;
|
||||||
|
- an importing profile owns domain policy: which classes must declare cadence,
|
||||||
|
which form is required, and any stronger combination or threshold rules;
|
||||||
|
- ITC-OBS owns `Event`, `EventType`, `EventSource`, and missing-signal semantics;
|
||||||
|
- ITC-GOV owns `Finding` and its lifecycle.
|
||||||
|
|
||||||
|
In particular, this standard does not define `attributive` or `load-bearing`
|
||||||
|
evidence, does not require cadence for any security class, and does not require
|
||||||
|
heartbeat and reconciliation together. Those are NetKingdom security-profile
|
||||||
|
rules, not ecosystem-wide semantics.
|
||||||
|
|
||||||
|
## 3. Declaration envelope
|
||||||
|
|
||||||
|
A declaration contains:
|
||||||
|
|
||||||
|
| Field | Requirement | Meaning |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `schema_version` | required | Contract version understood by the producer. This draft uses `0.1`. |
|
||||||
|
| `declaration_id` | required | Stable identifier for the declaration instance. |
|
||||||
|
| `source` | required | Source system that owns the emission claim. |
|
||||||
|
| `stream_id` | optional | Stable stream identifier when the source publishes more than one stream. |
|
||||||
|
| `sources` | required | One or more event-class cadence entries. The name is retained from the handed-over 0.1 draft. |
|
||||||
|
| `extensions` | optional | Namespaced, profile-owned data that does not change generic field meanings. |
|
||||||
|
|
||||||
|
Every entry in `sources` has a stable `source_id`, an `event_class`, and exactly
|
||||||
|
one generic `form`. A declaration must not contain duplicate `source_id` values.
|
||||||
|
|
||||||
|
## 4. Forms
|
||||||
|
|
||||||
|
### 4.1 `expected-rate`
|
||||||
|
|
||||||
|
`ExpectedRateCadence` says that at least `expected_min` records of an event class
|
||||||
|
are expected in each `window`.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
source_id: example.audit
|
||||||
|
event_class: audit.recorded
|
||||||
|
form: expected-rate
|
||||||
|
window: PT24H
|
||||||
|
expected_min: 1
|
||||||
|
drop_below: finding
|
||||||
|
```
|
||||||
|
|
||||||
|
The window may be an ISO 8601 duration (`PT24H`) or a positive compact duration
|
||||||
|
using `s`, `m`, `h`, or `d` (`24h`). A producer that cannot use duration strings
|
||||||
|
may provide `window_seconds` instead, but must not provide both.
|
||||||
|
|
||||||
|
Evaluation is performed per complete window unless an importing profile defines
|
||||||
|
a grace rule. A count below `expected_min` satisfies the condition named by
|
||||||
|
`drop_below`. The string names an observer-owned outcome; it does not create or
|
||||||
|
change the ITC-GOV Finding concept.
|
||||||
|
|
||||||
|
### 4.2 `heartbeat-or-reconciliation`
|
||||||
|
|
||||||
|
This form describes one or both of the following mechanisms:
|
||||||
|
|
||||||
|
- `heartbeat`: a positive assertion expected within an interval, so the
|
||||||
|
assertion can itself be missing;
|
||||||
|
- `reconciliation`: references to source-side and observer-side counts whose
|
||||||
|
divergence is evaluated.
|
||||||
|
|
||||||
|
At least one mechanism is required by the generic contract. An importing
|
||||||
|
profile may require both.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
source_id: example.denials
|
||||||
|
event_class: audit.denied
|
||||||
|
form: heartbeat-or-reconciliation
|
||||||
|
heartbeat:
|
||||||
|
event_class: audit.heartbeat
|
||||||
|
interval: PT24H
|
||||||
|
assertion: nothing-to-report
|
||||||
|
missing: finding
|
||||||
|
reconciliation:
|
||||||
|
compare_local: source_transition_counts.audit.denied
|
||||||
|
compare_observed: evidence_counts.audit.denied
|
||||||
|
divergence: finding
|
||||||
|
undrained_local: lag-not-divergence
|
||||||
|
```
|
||||||
|
|
||||||
|
`heartbeat.interval` follows the same duration rules as the expected-rate
|
||||||
|
window; `interval_seconds` is the alternative integer representation.
|
||||||
|
`compare_local` and `compare_observed` are owner-defined references. This draft
|
||||||
|
does not define a query language for them.
|
||||||
|
|
||||||
|
## 5. Extensions and profiles
|
||||||
|
|
||||||
|
Generic objects are closed: unknown fields fail schema validation. Additional
|
||||||
|
profile data belongs in an `extensions` mapping keyed by an owner-controlled
|
||||||
|
namespace. For example:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
extensions:
|
||||||
|
netkingdom:
|
||||||
|
evidence_class: load-bearing
|
||||||
|
rate_monitoring: forbidden
|
||||||
|
```
|
||||||
|
|
||||||
|
An extension may narrow use of the generic contract. It must not redefine a
|
||||||
|
generic field, change the meaning of a form, or make an instance that fails the
|
||||||
|
generic schema valid.
|
||||||
|
|
||||||
|
## 6. Validation semantics
|
||||||
|
|
||||||
|
The normative machine contract is
|
||||||
|
`infospace/schemas/emission-cadence.schema.yaml`.
|
||||||
|
|
||||||
|
A conforming generic declaration:
|
||||||
|
|
||||||
|
1. validates against that schema;
|
||||||
|
2. has at least one cadence entry;
|
||||||
|
3. has unique `source_id` values;
|
||||||
|
4. uses one duration representation for each window or interval;
|
||||||
|
5. supplies only expected-rate fields for `expected-rate` entries;
|
||||||
|
6. supplies heartbeat, reconciliation, or both for
|
||||||
|
`heartbeat-or-reconciliation` entries; and
|
||||||
|
7. carries profile-owned data only under a namespaced `extensions` key.
|
||||||
|
|
||||||
|
Schema validation establishes declaration shape, not operational truth.
|
||||||
|
Observers must not infer that a stream is complete merely because its
|
||||||
|
declaration is valid.
|
||||||
|
|
||||||
|
## 7. Compatibility and evolution
|
||||||
|
|
||||||
|
The document version and `schema_version` use semantic versioning with the
|
||||||
|
schema's major and minor represented on the wire.
|
||||||
|
|
||||||
|
- Patch releases clarify prose or validation without changing accepted data.
|
||||||
|
- Minor releases add optional fields or forms. Producers may opt in; consumers
|
||||||
|
must not silently interpret an unknown form as a known one.
|
||||||
|
- Major releases may rename, remove, or change field semantics and require an
|
||||||
|
explicit migration note.
|
||||||
|
|
||||||
|
During the `0.x` draft period, incompatible changes remain possible but must be
|
||||||
|
recorded in the repo changelog and accompanied by migration guidance. A
|
||||||
|
consumer must reject an unsupported `schema_version`; it must not guess.
|
||||||
|
|
||||||
|
## 8. Worked example
|
||||||
|
|
||||||
|
`examples/qonto-assistant.yaml` is a schema-valid transformation of the King's
|
||||||
|
Guard handover example. It demonstrates both forms and the profile-extension
|
||||||
|
boundary. It is not the source-owned `qonto-assistant` declaration and makes no
|
||||||
|
claim about live emission or observation.
|
||||||
|
|
||||||
|
## 9. Conformance
|
||||||
|
|
||||||
|
A producer conforms to this standard when its published declaration validates
|
||||||
|
against the named schema and accurately identifies the source and event class
|
||||||
|
it owns. A consumer conforms when it preserves the generic semantics, rejects
|
||||||
|
unsupported versions and forms, and keeps observation results separate from
|
||||||
|
the source's declaration.
|
||||||
|
|
||||||
|
Profile conformance is additional and is assessed by the profile owner.
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
# Worked example only. qonto-assistant owns its live declaration; this file
|
||||||
|
# makes no claim that this cadence is currently emitted or observed.
|
||||||
|
schema_version: "0.1"
|
||||||
|
declaration_id: qonto-assistant.audit.example
|
||||||
|
source: qonto-assistant
|
||||||
|
stream_id: qonto-assistant.audit
|
||||||
|
sources:
|
||||||
|
- source_id: qonto-assistant.audit.allow
|
||||||
|
event_class: audit.allow
|
||||||
|
form: expected-rate
|
||||||
|
window: PT24H
|
||||||
|
expected_min: 1
|
||||||
|
drop_below: finding
|
||||||
|
extensions:
|
||||||
|
netkingdom:
|
||||||
|
evidence_class: attributive
|
||||||
|
completeness_claimed: false
|
||||||
|
example_only: true
|
||||||
|
- source_id: qonto-assistant.audit.deny
|
||||||
|
event_class: audit.deny
|
||||||
|
form: heartbeat-or-reconciliation
|
||||||
|
heartbeat:
|
||||||
|
event_class: audit.heartbeat
|
||||||
|
interval: PT24H
|
||||||
|
assertion: nothing-to-report
|
||||||
|
missing: finding
|
||||||
|
reconciliation:
|
||||||
|
compare_local: source_transition_counts.audit.deny
|
||||||
|
compare_observed: evidence_counts.audit.deny
|
||||||
|
divergence: finding
|
||||||
|
undrained_local: lag-not-divergence
|
||||||
|
extensions:
|
||||||
|
netkingdom:
|
||||||
|
evidence_class: load-bearing
|
||||||
|
rate_monitoring: forbidden
|
||||||
|
completeness_claimed: true
|
||||||
|
|
@ -1,14 +1,496 @@
|
||||||
{
|
{
|
||||||
|
"coverage": {
|
||||||
|
"artifacts": [
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "assimilation/emission-cadence",
|
||||||
|
"kind": "assimilation",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "assimilation/it-capability-canon",
|
||||||
|
"kind": "assimilation",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "benchmark/caring/kubernetes-rbac",
|
||||||
|
"kind": "benchmark-workspace",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "benchmark/caring/kubernetes-rbac/access-descriptors",
|
||||||
|
"kind": "access-descriptor-set",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "benchmark/caring/kubernetes-rbac/caring-mapping",
|
||||||
|
"kind": "caring-mapping",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "benchmark/caring/kubernetes-rbac/findings",
|
||||||
|
"kind": "benchmark-findings",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "benchmark/caring/kubernetes-rbac/native-concepts",
|
||||||
|
"kind": "native-concept-map",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "capability-catalog/itc-cap",
|
||||||
|
"kind": "capability-catalog",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "catalog/attribute-value-types",
|
||||||
|
"kind": "concept-catalog",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "catalog/evidence-basis",
|
||||||
|
"kind": "concept-catalog",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "comparison/repo-scoping/canon-benefit-analysis",
|
||||||
|
"kind": "benefit-analysis",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "comparison/repo-scoping/consumer-workplan-brief",
|
||||||
|
"kind": "consumer-workplan-brief",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "comparison/repo-scoping/extension-candidates",
|
||||||
|
"kind": "extension-candidate-set",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "comparison/repo-scoping/frame",
|
||||||
|
"kind": "comparison-frame",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "comparison/repo-scoping/report",
|
||||||
|
"kind": "comparison-report",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "concept-catalog/purpose-demand",
|
||||||
|
"kind": "concept-catalog",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "conformance/railiance-fabric",
|
||||||
|
"kind": "conformance-pack",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "conformance/railiance-fabric/consumer-workplan-brief",
|
||||||
|
"kind": "consumer-workplan-brief",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "conformance/railiance-fabric/entity-edge-capture-criteria",
|
||||||
|
"kind": "capture-criteria",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "conformance/railiance-fabric/mapping-expectations",
|
||||||
|
"kind": "mapping-expectation",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "conformance/railiance-fabric/visualization-examples",
|
||||||
|
"kind": "visualization-example-set",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "evaluation/user-engine",
|
||||||
|
"kind": "evaluation-pack",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "evaluation/user-engine/consumer-workplan-brief",
|
||||||
|
"kind": "consumer-workplan-brief",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "evaluation/user-engine/interface-card-expectations",
|
||||||
|
"kind": "interface-card-expectation",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "evaluation/user-engine/questions",
|
||||||
|
"kind": "evaluation-question-set",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "evaluation/user-engine/small-saas-alignment",
|
||||||
|
"kind": "profile-alignment",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "example/consumer-purpose-portfolio",
|
||||||
|
"kind": "example",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "example/emission-cadence/qonto-assistant",
|
||||||
|
"kind": "example",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "kernel/itc-core",
|
||||||
|
"kind": "kernel",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "kernel/itc-kernel-map",
|
||||||
|
"kind": "kernel",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "schema-and-references",
|
||||||
|
"id": "mapping/capability-anchors",
|
||||||
|
"kind": "mapping",
|
||||||
|
"schema": "mapping.schema.yaml"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "schema-and-references",
|
||||||
|
"id": "mapping/emission-cadence-handover",
|
||||||
|
"kind": "mapping",
|
||||||
|
"schema": "mapping.schema.yaml"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "schema-and-references",
|
||||||
|
"id": "mapping/purpose-demand-governance-candidates",
|
||||||
|
"kind": "mapping",
|
||||||
|
"schema": "mapping.schema.yaml"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "model/access-control",
|
||||||
|
"kind": "model",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "model/capability",
|
||||||
|
"kind": "model",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "model/data",
|
||||||
|
"kind": "model",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "model/devsecops",
|
||||||
|
"kind": "model",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "model/governance",
|
||||||
|
"kind": "model",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "model/information-space",
|
||||||
|
"kind": "model",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "model/landscape",
|
||||||
|
"kind": "model",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "model/network",
|
||||||
|
"kind": "model",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "model/observability",
|
||||||
|
"kind": "model",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "model/organization",
|
||||||
|
"kind": "model",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "model/purpose-demand-extension",
|
||||||
|
"kind": "model-extension",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "model/security",
|
||||||
|
"kind": "model",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "model/task",
|
||||||
|
"kind": "model",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "pattern/intent-scope-purposes",
|
||||||
|
"kind": "pattern",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "practice-pattern/agentic-drives-functional",
|
||||||
|
"kind": "practice-pattern",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "practice-pattern/interface-deprecation-strangler",
|
||||||
|
"kind": "practice-pattern",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "practice/intake-and-assimilation",
|
||||||
|
"kind": "practice",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "profile/small-saas",
|
||||||
|
"kind": "profile",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "review-kit/alignment",
|
||||||
|
"kind": "alignment-review-kit",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "review-kit/alignment/model-selection-guide",
|
||||||
|
"kind": "model-selection-guide",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "review-kit/alignment/schema",
|
||||||
|
"kind": "alignment-review-schema",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "review-kit/alignment/scorecard",
|
||||||
|
"kind": "alignment-scorecard",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "review-kit/alignment/workflow",
|
||||||
|
"kind": "alignment-review-workflow",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "review-kit/alignment/workplan-template",
|
||||||
|
"kind": "consumer-workplan-template",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "scheme/practice-pattern",
|
||||||
|
"kind": "practice-pattern-scheme",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "small-saas/capability-requirements/production",
|
||||||
|
"kind": "profile-artifact",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "small-saas/control/namespace-per-tenant",
|
||||||
|
"kind": "profile-artifact",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "small-saas/dataset/subscription-ledger",
|
||||||
|
"kind": "profile-artifact",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "small-saas/deployment/production",
|
||||||
|
"kind": "profile-artifact",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "small-saas/evidence/access-review-2026-05",
|
||||||
|
"kind": "profile-artifact",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "small-saas/incident/cross-tenant-access-attempt",
|
||||||
|
"kind": "profile-artifact",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "small-saas/policy/tenant-isolation",
|
||||||
|
"kind": "profile-artifact",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "small-saas/service/billing-portal",
|
||||||
|
"kind": "profile-artifact",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "small-saas/system/billing-system",
|
||||||
|
"kind": "profile-artifact",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "small-saas/task/onboard-tenant",
|
||||||
|
"kind": "profile-artifact",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "small-saas/team/platform",
|
||||||
|
"kind": "profile-artifact",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "small-saas/tenant/acme",
|
||||||
|
"kind": "profile-artifact",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "small-saas/tenant/globex",
|
||||||
|
"kind": "profile-artifact",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "small-saas/user/ada-admin",
|
||||||
|
"kind": "profile-artifact",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "standard/caring",
|
||||||
|
"kind": "standard",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "standard/emission-cadence",
|
||||||
|
"kind": "standard",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "standard/repository-layout",
|
||||||
|
"kind": "standard",
|
||||||
|
"schema": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checks": "structural-or-specialized",
|
||||||
|
"id": "standard/tagging",
|
||||||
|
"kind": "standard",
|
||||||
|
"schema": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"not_proven": [
|
||||||
|
"ownership of concepts only in prose",
|
||||||
|
"all Markdown links",
|
||||||
|
"consumer adoption",
|
||||||
|
"cross-version interoperability",
|
||||||
|
"CARING effective access",
|
||||||
|
"mapping rationale completeness"
|
||||||
|
],
|
||||||
|
"ok": true,
|
||||||
|
"specialized": [
|
||||||
|
"capability catalog/record",
|
||||||
|
"practice pattern",
|
||||||
|
"emission cadence example",
|
||||||
|
"consumer packs"
|
||||||
|
]
|
||||||
|
},
|
||||||
"details": {
|
"details": {
|
||||||
"artifact_count": 71,
|
"artifact_count": 76,
|
||||||
"relationship_count": 302
|
"relationship_count": 315
|
||||||
},
|
},
|
||||||
"errors": [],
|
"errors": [],
|
||||||
|
"evidence": {
|
||||||
|
"corpus_sha256": "466d11ec8825482b370c3afc4cf22b44fe5f48aa14e4babef838a6aa91009148",
|
||||||
|
"digest_scope": "all infospace files except validation reports",
|
||||||
|
"dirty": true,
|
||||||
|
"generated_at": "2026-09-04T22:43:03.604707+00:00",
|
||||||
|
"revision": "a2e7f22d8deda813b6265f1e06fc75d0a2ccc5ce"
|
||||||
|
},
|
||||||
"metrics": {
|
"metrics": {
|
||||||
"coherence_components": 1.0,
|
"coherence_components": 1.0,
|
||||||
"consistency_cycles": 0.0,
|
"consistency_cycles": 0.0,
|
||||||
"coverage_ratio": 1.0,
|
"coverage_ratio": 1.0,
|
||||||
"granularity_entropy": 4.580874882166957,
|
"granularity_entropy": 4.582306705233707,
|
||||||
"redundancy_ratio": 0.0
|
"redundancy_ratio": 0.0
|
||||||
},
|
},
|
||||||
"ok": true,
|
"ok": true,
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,11 @@
|
||||||
|
|
||||||
# By Concept
|
# By Concept
|
||||||
|
|
||||||
Concept count: **119**
|
Concept count: **129**
|
||||||
|
|
||||||
| Concept | Owner | Source |
|
| Concept | Owner | Source |
|
||||||
| --- | --- | --- |
|
| --- | --- | --- |
|
||||||
|
| Assimilation — EmissionCadenceDeclaration handover | `assimilation/emission-cadence` | `artifact_title` |
|
||||||
| Assimilation — IT Capability Canon (ITCC) v0.1 | `assimilation/it-capability-canon` | `artifact_title` |
|
| Assimilation — IT Capability Canon (ITCC) v0.1 | `assimilation/it-capability-canon` | `artifact_title` |
|
||||||
| CARING Kubernetes RBAC Benchmark | `benchmark/caring/kubernetes-rbac` | `artifact_title` |
|
| CARING Kubernetes RBAC Benchmark | `benchmark/caring/kubernetes-rbac` | `artifact_title` |
|
||||||
| Kubernetes RBAC CARING Access Descriptors | `benchmark/caring/kubernetes-rbac/access-descriptors` | `artifact_title` |
|
| Kubernetes RBAC CARING Access Descriptors | `benchmark/caring/kubernetes-rbac/access-descriptors` | `artifact_title` |
|
||||||
|
|
@ -32,9 +33,11 @@ Concept count: **119**
|
||||||
| User Engine Canon Evaluation Questions | `evaluation/user-engine/questions` | `artifact_title` |
|
| User Engine Canon Evaluation Questions | `evaluation/user-engine/questions` | `artifact_title` |
|
||||||
| User Engine Small SaaS Alignment Lens | `evaluation/user-engine/small-saas-alignment` | `artifact_title` |
|
| User Engine Small SaaS Alignment Lens | `evaluation/user-engine/small-saas-alignment` | `artifact_title` |
|
||||||
| Canon-Side Consumer Purpose Portfolio | `example/consumer-purpose-portfolio` | `artifact_title` |
|
| Canon-Side Consumer Purpose Portfolio | `example/consumer-purpose-portfolio` | `artifact_title` |
|
||||||
|
| Qonto Assistant Emission Cadence Worked Example | `example/emission-cadence/qonto-assistant` | `artifact_title` |
|
||||||
| InfoTechCanon Core | `kernel/itc-core` | `artifact_title` |
|
| InfoTechCanon Core | `kernel/itc-core` | `artifact_title` |
|
||||||
| InfoTechCanon Kernel Map | `kernel/itc-kernel-map` | `artifact_title` |
|
| InfoTechCanon Kernel Map | `kernel/itc-kernel-map` | `artifact_title` |
|
||||||
| ITC-CAP concept mappings to anchoring canon models | `mapping/capability-anchors` | `artifact_title` |
|
| ITC-CAP concept mappings to anchoring canon models | `mapping/capability-anchors` | `artifact_title` |
|
||||||
|
| Emission cadence handover mappings | `mapping/emission-cadence-handover` | `artifact_title` |
|
||||||
| Purpose Demand Governance Extension Candidates | `mapping/purpose-demand-governance-candidates` | `artifact_title` |
|
| Purpose Demand Governance Extension Candidates | `mapping/purpose-demand-governance-candidates` | `artifact_title` |
|
||||||
| InfoTechCanon Access Control Model | `model/access-control` | `artifact_title` |
|
| InfoTechCanon Access Control Model | `model/access-control` | `artifact_title` |
|
||||||
| InfoTechCanon Capability Model | `model/capability` | `artifact_title` |
|
| InfoTechCanon Capability Model | `model/capability` | `artifact_title` |
|
||||||
|
|
@ -90,6 +93,7 @@ Concept count: **119**
|
||||||
| PracticePattern Scheme | `scheme/practice-pattern` | `artifact_title` |
|
| PracticePattern Scheme | `scheme/practice-pattern` | `artifact_title` |
|
||||||
| PracticePattern | `scheme/practice-pattern` | `frontmatter.owned_concepts` |
|
| PracticePattern | `scheme/practice-pattern` | `frontmatter.owned_concepts` |
|
||||||
| PatternLanguage | `scheme/practice-pattern` | `frontmatter.owned_concepts` |
|
| PatternLanguage | `scheme/practice-pattern` | `frontmatter.owned_concepts` |
|
||||||
|
| Small SaaS Production Capability Requirements | `small-saas/capability-requirements/production` | `artifact_title` |
|
||||||
| Namespace Per Tenant Control | `small-saas/control/namespace-per-tenant` | `artifact_title` |
|
| Namespace Per Tenant Control | `small-saas/control/namespace-per-tenant` | `artifact_title` |
|
||||||
| Subscription Ledger Dataset | `small-saas/dataset/subscription-ledger` | `artifact_title` |
|
| Subscription Ledger Dataset | `small-saas/dataset/subscription-ledger` | `artifact_title` |
|
||||||
| Production Deployment | `small-saas/deployment/production` | `artifact_title` |
|
| Production Deployment | `small-saas/deployment/production` | `artifact_title` |
|
||||||
|
|
@ -119,6 +123,12 @@ Concept count: **119**
|
||||||
| CARINGAnalysisFitnessTest | `standard/caring` | `frontmatter.owned_concepts` |
|
| CARINGAnalysisFitnessTest | `standard/caring` | `frontmatter.owned_concepts` |
|
||||||
| CARINGAnalysisProcedure | `standard/caring` | `frontmatter.owned_concepts` |
|
| CARINGAnalysisProcedure | `standard/caring` | `frontmatter.owned_concepts` |
|
||||||
| CARINGRedesignProcedure | `standard/caring` | `frontmatter.owned_concepts` |
|
| CARINGRedesignProcedure | `standard/caring` | `frontmatter.owned_concepts` |
|
||||||
|
| InfoTechCanon Emission Cadence Standard | `standard/emission-cadence` | `artifact_title` |
|
||||||
|
| EmissionCadenceDeclaration | `standard/emission-cadence` | `frontmatter.owned_concepts` |
|
||||||
|
| EmissionCadenceForm | `standard/emission-cadence` | `frontmatter.owned_concepts` |
|
||||||
|
| ExpectedRateCadence | `standard/emission-cadence` | `frontmatter.owned_concepts` |
|
||||||
|
| HeartbeatCadence | `standard/emission-cadence` | `frontmatter.owned_concepts` |
|
||||||
|
| ReconciliationCadence | `standard/emission-cadence` | `frontmatter.owned_concepts` |
|
||||||
| InfoTechCanon Repository Layout Standard | `standard/repository-layout` | `artifact_title` |
|
| InfoTechCanon Repository Layout Standard | `standard/repository-layout` | `artifact_title` |
|
||||||
| CanonicalRepositoryLayout | `standard/repository-layout` | `frontmatter.owned_concepts` |
|
| CanonicalRepositoryLayout | `standard/repository-layout` | `frontmatter.owned_concepts` |
|
||||||
| RepositoryDocumentationDirectory | `standard/repository-layout` | `frontmatter.owned_concepts` |
|
| RepositoryDocumentationDirectory | `standard/repository-layout` | `frontmatter.owned_concepts` |
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,10 @@
|
||||||
|
|
||||||
# By Mapping Target
|
# By Mapping Target
|
||||||
|
|
||||||
|
## `assimilation/emission-cadence`
|
||||||
|
|
||||||
|
- `standard/emission-cadence` via `derived_from`
|
||||||
|
|
||||||
## `assimilation/it-capability-canon`
|
## `assimilation/it-capability-canon`
|
||||||
|
|
||||||
- `model/capability` via `derived_from`
|
- `model/capability` via `derived_from`
|
||||||
|
|
@ -63,6 +67,7 @@
|
||||||
|
|
||||||
## `kernel/itc-core`
|
## `kernel/itc-core`
|
||||||
|
|
||||||
|
- `assimilation/emission-cadence` via `conforms_to`
|
||||||
- `assimilation/it-capability-canon` via `conforms_to`
|
- `assimilation/it-capability-canon` via `conforms_to`
|
||||||
- `concept-catalog/purpose-demand` via `conforms_to`
|
- `concept-catalog/purpose-demand` via `conforms_to`
|
||||||
- `kernel/itc-kernel-map` via `maps`
|
- `kernel/itc-kernel-map` via `maps`
|
||||||
|
|
@ -84,6 +89,7 @@
|
||||||
- `review-kit/alignment` via `conforms_to`
|
- `review-kit/alignment` via `conforms_to`
|
||||||
- `scheme/practice-pattern` via `conforms_to`
|
- `scheme/practice-pattern` via `conforms_to`
|
||||||
- `standard/caring` via `conforms_to`
|
- `standard/caring` via `conforms_to`
|
||||||
|
- `standard/emission-cadence` via `conforms_to`
|
||||||
- `standard/repository-layout` via `conforms_to`
|
- `standard/repository-layout` via `conforms_to`
|
||||||
- `standard/tagging` via `conforms_to`
|
- `standard/tagging` via `conforms_to`
|
||||||
|
|
||||||
|
|
@ -111,6 +117,7 @@
|
||||||
|
|
||||||
- `kernel/itc-kernel-map` via `maps`
|
- `kernel/itc-kernel-map` via `maps`
|
||||||
- `practice-pattern/agentic-drives-functional` via `uses`
|
- `practice-pattern/agentic-drives-functional` via `uses`
|
||||||
|
- `small-saas/capability-requirements/production` via `uses`
|
||||||
|
|
||||||
## `model/data`
|
## `model/data`
|
||||||
|
|
||||||
|
|
@ -156,6 +163,7 @@
|
||||||
- `evaluation/user-engine/questions` via `uses`
|
- `evaluation/user-engine/questions` via `uses`
|
||||||
- `evaluation/user-engine/small-saas-alignment` via `uses`
|
- `evaluation/user-engine/small-saas-alignment` via `uses`
|
||||||
- `kernel/itc-kernel-map` via `maps`
|
- `kernel/itc-kernel-map` via `maps`
|
||||||
|
- `mapping/emission-cadence-handover` via `maps`
|
||||||
- `mapping/purpose-demand-governance-candidates` via `maps`
|
- `mapping/purpose-demand-governance-candidates` via `maps`
|
||||||
- `model/access-control` via `uses`
|
- `model/access-control` via `uses`
|
||||||
- `model/capability` via `uses`
|
- `model/capability` via `uses`
|
||||||
|
|
@ -172,6 +180,7 @@
|
||||||
- `review-kit/alignment/workflow` via `uses`
|
- `review-kit/alignment/workflow` via `uses`
|
||||||
- `small-saas/policy/tenant-isolation` via `uses`
|
- `small-saas/policy/tenant-isolation` via `uses`
|
||||||
- `standard/caring` via `imports`
|
- `standard/caring` via `imports`
|
||||||
|
- `standard/emission-cadence` via `imports`
|
||||||
- `standard/repository-layout` via `imports`
|
- `standard/repository-layout` via `imports`
|
||||||
|
|
||||||
## `model/information-space`
|
## `model/information-space`
|
||||||
|
|
@ -215,6 +224,7 @@
|
||||||
- `conformance/railiance-fabric/entity-edge-capture-criteria` via `uses`
|
- `conformance/railiance-fabric/entity-edge-capture-criteria` via `uses`
|
||||||
- `conformance/railiance-fabric/mapping-expectations` via `maps`
|
- `conformance/railiance-fabric/mapping-expectations` via `maps`
|
||||||
- `kernel/itc-kernel-map` via `maps`
|
- `kernel/itc-kernel-map` via `maps`
|
||||||
|
- `mapping/emission-cadence-handover` via `maps`
|
||||||
- `model/capability` via `uses`
|
- `model/capability` via `uses`
|
||||||
- `practice-pattern/agentic-drives-functional` via `uses`
|
- `practice-pattern/agentic-drives-functional` via `uses`
|
||||||
- `practice-pattern/interface-deprecation-strangler` via `uses`
|
- `practice-pattern/interface-deprecation-strangler` via `uses`
|
||||||
|
|
@ -222,6 +232,7 @@
|
||||||
- `review-kit/alignment/model-selection-guide` via `uses`
|
- `review-kit/alignment/model-selection-guide` via `uses`
|
||||||
- `small-saas/evidence/access-review-2026-05` via `uses`
|
- `small-saas/evidence/access-review-2026-05` via `uses`
|
||||||
- `standard/caring` via `imports`
|
- `standard/caring` via `imports`
|
||||||
|
- `standard/emission-cadence` via `imports`
|
||||||
|
|
||||||
## `model/organization`
|
## `model/organization`
|
||||||
|
|
||||||
|
|
@ -281,6 +292,7 @@
|
||||||
- `small-saas/control/namespace-per-tenant` via `uses`
|
- `small-saas/control/namespace-per-tenant` via `uses`
|
||||||
- `small-saas/incident/cross-tenant-access-attempt` via `uses`
|
- `small-saas/incident/cross-tenant-access-attempt` via `uses`
|
||||||
- `standard/caring` via `imports`
|
- `standard/caring` via `imports`
|
||||||
|
- `standard/emission-cadence` via `related_to`
|
||||||
|
|
||||||
## `model/task`
|
## `model/task`
|
||||||
|
|
||||||
|
|
@ -325,6 +337,7 @@
|
||||||
- `evaluation/user-engine/small-saas-alignment` via `evaluates`
|
- `evaluation/user-engine/small-saas-alignment` via `evaluates`
|
||||||
- `example/consumer-purpose-portfolio` via `uses`
|
- `example/consumer-purpose-portfolio` via `uses`
|
||||||
- `review-kit/alignment/model-selection-guide` via `uses`
|
- `review-kit/alignment/model-selection-guide` via `uses`
|
||||||
|
- `small-saas/capability-requirements/production` via `instantiates`
|
||||||
- `small-saas/control/namespace-per-tenant` via `instantiates`
|
- `small-saas/control/namespace-per-tenant` via `instantiates`
|
||||||
- `small-saas/dataset/subscription-ledger` via `instantiates`
|
- `small-saas/dataset/subscription-ledger` via `instantiates`
|
||||||
- `small-saas/deployment/production` via `instantiates`
|
- `small-saas/deployment/production` via `instantiates`
|
||||||
|
|
@ -375,6 +388,7 @@
|
||||||
|
|
||||||
## `small-saas/service/billing-portal`
|
## `small-saas/service/billing-portal`
|
||||||
|
|
||||||
|
- `small-saas/capability-requirements/production` via `applies_to`
|
||||||
- `small-saas/dataset/subscription-ledger` via `owned_by`
|
- `small-saas/dataset/subscription-ledger` via `owned_by`
|
||||||
- `small-saas/deployment/production` via `deploys`
|
- `small-saas/deployment/production` via `deploys`
|
||||||
|
|
||||||
|
|
@ -420,6 +434,11 @@
|
||||||
- `review-kit/alignment/model-selection-guide` via `uses`
|
- `review-kit/alignment/model-selection-guide` via `uses`
|
||||||
- `small-saas/control/namespace-per-tenant` via `uses`
|
- `small-saas/control/namespace-per-tenant` via `uses`
|
||||||
|
|
||||||
|
## `standard/emission-cadence`
|
||||||
|
|
||||||
|
- `example/emission-cadence/qonto-assistant` via `conforms_to`
|
||||||
|
- `mapping/emission-cadence-handover` via `maps`
|
||||||
|
|
||||||
## `standard/tagging`
|
## `standard/tagging`
|
||||||
|
|
||||||
- `benchmark/caring/kubernetes-rbac` via `uses`
|
- `benchmark/caring/kubernetes-rbac` via `uses`
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,13 @@
|
||||||
- Path: `standards/caring/InfoTechCanonCaringAccessGovernanceStandard.md`
|
- Path: `standards/caring/InfoTechCanonCaringAccessGovernanceStandard.md`
|
||||||
- Relationships: 11
|
- Relationships: 11
|
||||||
|
|
||||||
|
## InfoTechCanon Emission Cadence Standard
|
||||||
|
|
||||||
|
- ID: `standard/emission-cadence`
|
||||||
|
- Kind: `standard`
|
||||||
|
- Path: `standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md`
|
||||||
|
- Relationships: 5
|
||||||
|
|
||||||
## InfoTechCanon Repository Layout Standard
|
## InfoTechCanon Repository Layout Standard
|
||||||
|
|
||||||
- ID: `standard/repository-layout`
|
- ID: `standard/repository-layout`
|
||||||
|
|
|
||||||
|
|
@ -2,76 +2,81 @@
|
||||||
|
|
||||||
# Import Matrix
|
# 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-pattern/agentic-drives-functional` | `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` |
|
| Artifact | `assimilation/emission-cadence` | `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` | `example/emission-cadence/qonto-assistant` | `kernel/itc-core` | `kernel/itc-kernel-map` | `mapping/capability-anchors` | `mapping/emission-cadence-handover` | `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/agentic-drives-functional` | `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/capability-requirements/production` | `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/emission-cadence` | `standard/repository-layout` | `standard/tagging` |
|
||||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||||
| `assimilation/it-capability-canon` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `assimilation/emission-cadence` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `benchmark/caring/kubernetes-rbac` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `stress_tests` | | | `stress_tests` | `stress_tests` | | | `stress_tests` | `stress_tests` | | | `stress_tests` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | `uses` |
|
| `assimilation/it-capability-canon` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `benchmark/caring/kubernetes-rbac/access-descriptors` | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | `uses` | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | |
|
| `benchmark/caring/kubernetes-rbac` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `stress_tests` | | | `stress_tests` | `stress_tests` | | | `stress_tests` | `stress_tests` | | | `stress_tests` | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | `uses` |
|
||||||
| `benchmark/caring/kubernetes-rbac/caring-mapping` | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | `maps` | | | | | | | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | |
|
| `benchmark/caring/kubernetes-rbac/access-descriptors` | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | `uses` | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | |
|
||||||
| `benchmark/caring/kubernetes-rbac/findings` | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `proposes` | | | | | | | `proposes` | | | | | | | | | | | | | | | | | | | | | | | | | | | `proposes` | | |
|
| `benchmark/caring/kubernetes-rbac/caring-mapping` | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | `maps` | | | | | | | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | |
|
||||||
| `benchmark/caring/kubernetes-rbac/native-concepts` | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | | | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | |
|
| `benchmark/caring/kubernetes-rbac/findings` | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `proposes` | | | | | | | `proposes` | | | | | | | | | | | | | | | | | | | | | | | | | | | | `proposes` | | | |
|
||||||
| `capability-catalog/itc-cap` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `benchmark/caring/kubernetes-rbac/native-concepts` | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | | | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | |
|
||||||
| `catalog/attribute-value-types` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `capability-catalog/itc-cap` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `catalog/evidence-basis` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `catalog/attribute-value-types` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `comparison/repo-scoping/canon-benefit-analysis` | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | `maps` | `maps` | | | | | `maps` | | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` |
|
| `catalog/evidence-basis` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `comparison/repo-scoping/consumer-workplan-brief` | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `comparison/repo-scoping/canon-benefit-analysis` | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | `maps` | `maps` | | | | | `maps` | | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` |
|
||||||
| `comparison/repo-scoping/extension-candidates` | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | `proposes` | `proposes` | | | | | `proposes` | | `proposes` | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `comparison/repo-scoping/consumer-workplan-brief` | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `comparison/repo-scoping/frame` | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `uses` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `comparison/repo-scoping/extension-candidates` | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | `proposes` | `proposes` | | | | | `proposes` | | `proposes` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `comparison/repo-scoping/report` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | `uses` | | | | | `compares` | | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `comparison/repo-scoping/frame` | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `uses` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `concept-catalog/purpose-demand` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `comparison/repo-scoping/report` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | `uses` | | | | | `compares` | | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `conformance/railiance-fabric` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` |
|
| `concept-catalog/purpose-demand` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `conformance/railiance-fabric/consumer-workplan-brief` | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `conformance/railiance-fabric` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` |
|
||||||
| `conformance/railiance-fabric/entity-edge-capture-criteria` | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `conformance/railiance-fabric/consumer-workplan-brief` | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `conformance/railiance-fabric/mapping-expectations` | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | `maps` | `maps` | `maps` | | `maps` | `maps` | `maps` | | `maps` | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `conformance/railiance-fabric/entity-edge-capture-criteria` | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `conformance/railiance-fabric/visualization-examples` | | | | | | | | | | | | | | | | `part_of` | | `illustrates` | `illustrates` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `conformance/railiance-fabric/mapping-expectations` | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | `maps` | `maps` | `maps` | | `maps` | `maps` | `maps` | | `maps` | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `evaluation/user-engine` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | `uses` | | `uses` | | | | | `uses` | `uses` | `uses` | `uses` | | | | | `evaluates` | | | | | | | | | | | | | | | | | | | | | `uses` | | |
|
| `conformance/railiance-fabric/visualization-examples` | | | | | | | | | | | | | | | | | `part_of` | | `illustrates` | `illustrates` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `evaluation/user-engine/consumer-workplan-brief` | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `evaluation/user-engine` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | `uses` | | `uses` | | | | | `uses` | `uses` | `uses` | `uses` | | | | | `evaluates` | | | | | | | | | | | | | | | | | | | | | | `uses` | | | |
|
||||||
| `evaluation/user-engine/interface-card-expectations` | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | |
|
| `evaluation/user-engine/consumer-workplan-brief` | | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `evaluation/user-engine/questions` | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | `uses` | | `uses` | | `uses` | | | | | `uses` | `uses` | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `evaluation/user-engine/interface-card-expectations` | | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | |
|
||||||
| `evaluation/user-engine/small-saas-alignment` | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | `uses` | | | | `uses` | | | | | `uses` | | | | | | | | `evaluates` | | | | | | | | | | | | | | | | | | | | | | | |
|
| `evaluation/user-engine/questions` | | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | `uses` | | `uses` | | `uses` | | | | | `uses` | `uses` | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `example/consumer-purpose-portfolio` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `illustrates` | | | `illustrates` | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | |
|
| `evaluation/user-engine/small-saas-alignment` | | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | `uses` | | | | `uses` | | | | | `uses` | | | | | | | | `evaluates` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `kernel/itc-core` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `example/consumer-purpose-portfolio` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `illustrates` | | | `illustrates` | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `kernel/itc-kernel-map` | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | | `maps` | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | `maps` |
|
| `example/emission-cadence/qonto-assistant` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | |
|
||||||
| `mapping/capability-anchors` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `kernel/itc-core` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `mapping/purpose-demand-governance-candidates` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | | | `maps` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `kernel/itc-kernel-map` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | | `maps` | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | `maps` |
|
||||||
| `model/access-control` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | `uses` | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `mapping/capability-anchors` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `model/capability` | `derived_from` | | | | | | `introduces` | | `uses` | | | | | | | | | | | | | | | | | | `conforms_to` | | `introduces` | | | | | | `uses` | | `uses` | | `uses` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `mapping/emission-cadence-handover` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | |
|
||||||
| `model/data` | | | | | | | | `introduces` | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `mapping/purpose-demand-governance-candidates` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | | | `maps` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `model/devsecops` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `model/access-control` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | `uses` | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `model/governance` | | | | | | | | | `introduces` | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `model/capability` | | `derived_from` | | | | | | `introduces` | | `uses` | | | | | | | | | | | | | | | | | | | `conforms_to` | | `introduces` | | | | | | | `uses` | | `uses` | | `uses` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `model/information-space` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `model/data` | | | | | | | | | `introduces` | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `model/landscape` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `model/devsecops` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `model/network` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `model/governance` | | | | | | | | | | `introduces` | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `model/observability` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `model/information-space` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `model/organization` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `model/landscape` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `model/purpose-demand-extension` | | | | | | | | | | | | | | | `introduces` | | | | | | | | | | | | `conforms_to` | | | | | | | | `extends` | `uses` | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `model/network` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `model/security` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `model/observability` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `model/task` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `model/organization` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `pattern/intent-scope-purposes` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `implements` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `model/purpose-demand-extension` | | | | | | | | | | | | | | | | `introduces` | | | | | | | | | | | | | `conforms_to` | | | | | | | | | `extends` | `uses` | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `practice-pattern/agentic-drives-functional` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | `uses` | | | | `uses` | | | | `uses` | | | `related_to` | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | |
|
| `model/security` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `practice-pattern/interface-deprecation-strangler` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | `uses` | | | | `uses` | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | |
|
| `model/task` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `practice/intake-and-assimilation` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `pattern/intent-scope-purposes` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `implements` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `profile/small-saas` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | `requires` | | `requires` | `requires` | `requires` | | `requires` | `requires` | `requires` | `requires` | | `requires` | `requires` | | | | | | | | | | | | | | | | | | | | | | | | | | `requires` | | `requires` |
|
| `practice-pattern/agentic-drives-functional` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | `uses` | | | | `uses` | | | | `uses` | | | `related_to` | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | |
|
||||||
| `review-kit/alignment` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | `uses` | | | | | | `uses` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | |
|
| `practice-pattern/interface-deprecation-strangler` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | `uses` | | | | `uses` | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | |
|
||||||
| `review-kit/alignment/model-selection-guide` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | `uses` | `uses` | `uses` | `uses` | | | | | `uses` | `part_of` | | | | | | | | | | | | | | | | | | | | `uses` | | `uses` |
|
| `practice/intake-and-assimilation` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `review-kit/alignment/schema` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `uses` | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | |
|
| `profile/small-saas` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | `requires` | | `requires` | `requires` | `requires` | | `requires` | `requires` | `requires` | `requires` | | `requires` | `requires` | | | | | | | | | | | | | | | | | | | | | | | | | | | `requires` | | | `requires` |
|
||||||
| `review-kit/alignment/scorecard` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `uses` | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | |
|
| `review-kit/alignment` | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | `uses` | | | | | | `uses` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | |
|
||||||
| `review-kit/alignment/workflow` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `uses` | | `uses` | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | |
|
| `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/workplan-template` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | `uses` | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | |
|
| `review-kit/alignment/schema` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `uses` | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `scheme/practice-pattern` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `review-kit/alignment/scorecard` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `uses` | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `small-saas/control/namespace-per-tenant` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `instantiates` | | | | | | | | | | | `evidenced_by` | | | | | | | | | | `uses` | | |
|
| `review-kit/alignment/workflow` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `uses` | | `uses` | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `small-saas/dataset/subscription-ledger` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | `instantiates` | | | | | | | | | | | | | `governed_by` | `owned_by` | | | | `partitioned_for` | `partitioned_for` | | | | |
|
| `review-kit/alignment/workplan-template` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | `uses` | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `small-saas/deployment/production` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | `uses` | | | | | | | | | | `instantiates` | | | | | | | | `implements` | | | | | | `deploys` | | | | `separates` | `separates` | | | | |
|
| `scheme/practice-pattern` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `small-saas/evidence/access-review-2026-05` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | `instantiates` | | | | | | | | | | | | | | | | | | | | | | | |
|
| `small-saas/capability-requirements/production` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | `instantiates` | | | | | | | | | | | | | | | `applies_to` | | | | | | | | | | |
|
||||||
| `small-saas/incident/cross-tenant-access-attempt` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `instantiates` | | | | | | | | `constrained_by` | | | `evidenced_by` | | | | | | | | | | | | |
|
| `small-saas/control/namespace-per-tenant` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `instantiates` | | | | | | | | | | | | `evidenced_by` | | | | | | | | | | `uses` | | | |
|
||||||
| `small-saas/policy/tenant-isolation` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | `instantiates` | | | | | | | | `requires` | | | `evidenced_by` | | | | | | | | | | | | |
|
| `small-saas/dataset/subscription-ledger` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | `instantiates` | | | | | | | | | | | | | | `governed_by` | `owned_by` | | | | `partitioned_for` | `partitioned_for` | | | | | |
|
||||||
| `small-saas/service/billing-portal` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | `instantiates` | | | | | | | | | | | | | | | `part_of` | | `owned_by` | | | | | | |
|
| `small-saas/deployment/production` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | `uses` | | | | | | | | | | `instantiates` | | | | | | | | | `implements` | | | | | | `deploys` | | | | `separates` | `separates` | | | | | |
|
||||||
| `small-saas/system/billing-system` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | `instantiates` | | | | | | | | | | | | | | | | | | `serves` | `serves` | | | | |
|
| `small-saas/evidence/access-review-2026-05` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | `instantiates` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `small-saas/task/onboard-tenant` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | `instantiates` | | | | | | | | | | | | | `governed_by` | | | | `owned_by` | `changes` | | | | | |
|
| `small-saas/incident/cross-tenant-access-attempt` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `instantiates` | | | | | | | | | `constrained_by` | | | `evidenced_by` | | | | | | | | | | | | | |
|
||||||
| `small-saas/team/platform` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `instantiates` | | | | | | | | | | | | | | | | | | | | | | | |
|
| `small-saas/policy/tenant-isolation` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | `instantiates` | | | | | | | | | `requires` | | | `evidenced_by` | | | | | | | | | | | | | |
|
||||||
| `small-saas/tenant/acme` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `instantiates` | | | | | | | | `isolated_by` | | | | | | | | | | | | `represented_by` | | | |
|
| `small-saas/service/billing-portal` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | `instantiates` | | | | | | | | | | | | | | | | `part_of` | | `owned_by` | | | | | | | |
|
||||||
| `small-saas/tenant/globex` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `instantiates` | | | | | | | | `isolated_by` | | | | | | | | | | | | | | | |
|
| `small-saas/system/billing-system` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | `instantiates` | | | | | | | | | | | | | | | | | | | `serves` | `serves` | | | | | |
|
||||||
| `small-saas/user/ada-admin` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | `uses` | | | | | | | | `instantiates` | | | | | | | | | | | `access_evidenced_by` | | `has_access_under` | | | | `member_of` | | | | | | |
|
| `small-saas/task/onboard-tenant` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | `instantiates` | | | | | | | | | | | | | | `governed_by` | | | | `owned_by` | `changes` | | | | | | |
|
||||||
| `standard/caring` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | `imports` | | `imports` | `imports` | `imports` | | | `imports` | `imports` | `imports` | | `imports` | `imports` | | | | | | | | | | | | | | | | | | | | | | | | | | | | `imports` |
|
| `small-saas/team/platform` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `instantiates` | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
| `standard/repository-layout` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | `imports` | `imports` | | | | | | | `imports` | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `small-saas/tenant/acme` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `instantiates` | | | | | | | | | `isolated_by` | | | | | | | | | | | | `represented_by` | | | | |
|
||||||
| `standard/tagging` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | `imports` | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| `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/emission-cadence` | `derived_from` | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | `imports` | | | | `imports` | | | `related_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
|
| `standard/repository-layout` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | `imports` | `imports` | | | | | | | `imports` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
|
| `standard/tagging` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | `imports` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
# Kernel Overview
|
# Kernel Overview
|
||||||
|
|
||||||
- Infospace: `canon`
|
- Infospace: `canon`
|
||||||
- Artifacts: 71
|
- Artifacts: 76
|
||||||
|
|
||||||
## Artifact Kinds
|
## Artifact Kinds
|
||||||
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
- `alignment-review-schema`: 1
|
- `alignment-review-schema`: 1
|
||||||
- `alignment-review-workflow`: 1
|
- `alignment-review-workflow`: 1
|
||||||
- `alignment-scorecard`: 1
|
- `alignment-scorecard`: 1
|
||||||
- `assimilation`: 1
|
- `assimilation`: 2
|
||||||
- `benchmark-findings`: 1
|
- `benchmark-findings`: 1
|
||||||
- `benchmark-workspace`: 1
|
- `benchmark-workspace`: 1
|
||||||
- `benefit-analysis`: 1
|
- `benefit-analysis`: 1
|
||||||
|
|
@ -27,11 +27,11 @@
|
||||||
- `consumer-workplan-template`: 1
|
- `consumer-workplan-template`: 1
|
||||||
- `evaluation-pack`: 1
|
- `evaluation-pack`: 1
|
||||||
- `evaluation-question-set`: 1
|
- `evaluation-question-set`: 1
|
||||||
- `example`: 1
|
- `example`: 2
|
||||||
- `extension-candidate-set`: 1
|
- `extension-candidate-set`: 1
|
||||||
- `interface-card-expectation`: 1
|
- `interface-card-expectation`: 1
|
||||||
- `kernel`: 2
|
- `kernel`: 2
|
||||||
- `mapping`: 2
|
- `mapping`: 3
|
||||||
- `mapping-expectation`: 1
|
- `mapping-expectation`: 1
|
||||||
- `model`: 12
|
- `model`: 12
|
||||||
- `model-extension`: 1
|
- `model-extension`: 1
|
||||||
|
|
@ -43,19 +43,20 @@
|
||||||
- `practice-pattern-scheme`: 1
|
- `practice-pattern-scheme`: 1
|
||||||
- `profile`: 1
|
- `profile`: 1
|
||||||
- `profile-alignment`: 1
|
- `profile-alignment`: 1
|
||||||
- `profile-artifact`: 13
|
- `profile-artifact`: 14
|
||||||
- `standard`: 3
|
- `standard`: 4
|
||||||
- `visualization-example-set`: 1
|
- `visualization-example-set`: 1
|
||||||
|
|
||||||
## Relationship Types
|
## Relationship Types
|
||||||
|
|
||||||
- `access_evidenced_by`: 1
|
- `access_evidenced_by`: 1
|
||||||
|
- `applies_to`: 1
|
||||||
- `changes`: 1
|
- `changes`: 1
|
||||||
- `compares`: 1
|
- `compares`: 1
|
||||||
- `conforms_to`: 25
|
- `conforms_to`: 28
|
||||||
- `constrained_by`: 1
|
- `constrained_by`: 1
|
||||||
- `deploys`: 1
|
- `deploys`: 1
|
||||||
- `derived_from`: 1
|
- `derived_from`: 2
|
||||||
- `evaluates`: 2
|
- `evaluates`: 2
|
||||||
- `evidenced_by`: 3
|
- `evidenced_by`: 3
|
||||||
- `extends`: 1
|
- `extends`: 1
|
||||||
|
|
@ -63,20 +64,20 @@
|
||||||
- `has_access_under`: 1
|
- `has_access_under`: 1
|
||||||
- `illustrates`: 4
|
- `illustrates`: 4
|
||||||
- `implements`: 2
|
- `implements`: 2
|
||||||
- `imports`: 14
|
- `imports`: 16
|
||||||
- `instantiates`: 13
|
- `instantiates`: 14
|
||||||
- `introduces`: 5
|
- `introduces`: 5
|
||||||
- `isolated_by`: 2
|
- `isolated_by`: 2
|
||||||
- `maps`: 37
|
- `maps`: 40
|
||||||
- `member_of`: 1
|
- `member_of`: 1
|
||||||
- `owned_by`: 3
|
- `owned_by`: 3
|
||||||
- `part_of`: 22
|
- `part_of`: 22
|
||||||
- `partitioned_for`: 2
|
- `partitioned_for`: 2
|
||||||
- `proposes`: 7
|
- `proposes`: 7
|
||||||
- `related_to`: 1
|
- `related_to`: 2
|
||||||
- `represented_by`: 1
|
- `represented_by`: 1
|
||||||
- `requires`: 13
|
- `requires`: 13
|
||||||
- `separates`: 2
|
- `separates`: 2
|
||||||
- `serves`: 2
|
- `serves`: 2
|
||||||
- `stress_tests`: 6
|
- `stress_tests`: 6
|
||||||
- `uses`: 125
|
- `uses`: 126
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
# Repository Tree
|
# Repository Tree
|
||||||
|
|
||||||
File count: **191**
|
File count: **208**
|
||||||
|
|
||||||
- `README.md`
|
- `README.md`
|
||||||
- `agent/README.md`
|
- `agent/README.md`
|
||||||
|
|
@ -30,9 +30,11 @@ File count: **191**
|
||||||
- `agent/briefs/evaluation-user-engine-small-saas-alignment.md`
|
- `agent/briefs/evaluation-user-engine-small-saas-alignment.md`
|
||||||
- `agent/briefs/evaluation-user-engine.md`
|
- `agent/briefs/evaluation-user-engine.md`
|
||||||
- `agent/briefs/example-consumer-purpose-portfolio.md`
|
- `agent/briefs/example-consumer-purpose-portfolio.md`
|
||||||
|
- `agent/briefs/example-emission-cadence-qonto-assistant.md`
|
||||||
- `agent/briefs/kernel-itc-core.md`
|
- `agent/briefs/kernel-itc-core.md`
|
||||||
- `agent/briefs/kernel-itc-kernel-map.md`
|
- `agent/briefs/kernel-itc-kernel-map.md`
|
||||||
- `agent/briefs/mapping-capability-anchors.md`
|
- `agent/briefs/mapping-capability-anchors.md`
|
||||||
|
- `agent/briefs/mapping-emission-cadence-handover.md`
|
||||||
- `agent/briefs/mapping-purpose-demand-governance-candidates.md`
|
- `agent/briefs/mapping-purpose-demand-governance-candidates.md`
|
||||||
- `agent/briefs/model-access-control.md`
|
- `agent/briefs/model-access-control.md`
|
||||||
- `agent/briefs/model-capability.md`
|
- `agent/briefs/model-capability.md`
|
||||||
|
|
@ -48,6 +50,7 @@ File count: **191**
|
||||||
- `agent/briefs/model-security.md`
|
- `agent/briefs/model-security.md`
|
||||||
- `agent/briefs/model-task.md`
|
- `agent/briefs/model-task.md`
|
||||||
- `agent/briefs/pattern-intent-scope-purposes.md`
|
- `agent/briefs/pattern-intent-scope-purposes.md`
|
||||||
|
- `agent/briefs/practice-pattern-agentic-drives-functional.md`
|
||||||
- `agent/briefs/practice-pattern-interface-deprecation-strangler.md`
|
- `agent/briefs/practice-pattern-interface-deprecation-strangler.md`
|
||||||
- `agent/briefs/profile-small-saas.md`
|
- `agent/briefs/profile-small-saas.md`
|
||||||
- `agent/briefs/review-kit-alignment-model-selection-guide.md`
|
- `agent/briefs/review-kit-alignment-model-selection-guide.md`
|
||||||
|
|
@ -58,6 +61,7 @@ File count: **191**
|
||||||
- `agent/briefs/review-kit-alignment.md`
|
- `agent/briefs/review-kit-alignment.md`
|
||||||
- `agent/briefs/scheme-practice-pattern.md`
|
- `agent/briefs/scheme-practice-pattern.md`
|
||||||
- `agent/briefs/standard-caring.md`
|
- `agent/briefs/standard-caring.md`
|
||||||
|
- `agent/briefs/standard-emission-cadence.md`
|
||||||
- `agent/briefs/standard-repository-layout.md`
|
- `agent/briefs/standard-repository-layout.md`
|
||||||
- `agent/briefs/standard-tagging.md`
|
- `agent/briefs/standard-tagging.md`
|
||||||
- `agent/consumer-briefs/railiance-fabric.md`
|
- `agent/consumer-briefs/railiance-fabric.md`
|
||||||
|
|
@ -76,6 +80,15 @@ File count: **191**
|
||||||
- `agent/templates/consumer-brief.template.md`
|
- `agent/templates/consumer-brief.template.md`
|
||||||
- `artifacts/index.yaml`
|
- `artifacts/index.yaml`
|
||||||
- `assimilation/README.md`
|
- `assimilation/README.md`
|
||||||
|
- `assimilation/emission-cadence/ASSIMILATION.md`
|
||||||
|
- `assimilation/emission-cadence/assimilation.yaml`
|
||||||
|
- `assimilation/emission-cadence/comparison-matrix.md`
|
||||||
|
- `assimilation/emission-cadence/extracted-concepts.yaml`
|
||||||
|
- `assimilation/emission-cadence/mappings.yaml`
|
||||||
|
- `assimilation/emission-cadence/open-questions.md`
|
||||||
|
- `assimilation/emission-cadence/proposed-changes.md`
|
||||||
|
- `assimilation/emission-cadence/source/EmissionCadenceDeclaration.md`
|
||||||
|
- `assimilation/emission-cadence/source-summary.md`
|
||||||
- `assimilation/intake-and-assimilation-practice.md`
|
- `assimilation/intake-and-assimilation-practice.md`
|
||||||
- `assimilation/it-capability-canon/ASSIMILATION.md`
|
- `assimilation/it-capability-canon/ASSIMILATION.md`
|
||||||
- `assimilation/it-capability-canon/assimilation.yaml`
|
- `assimilation/it-capability-canon/assimilation.yaml`
|
||||||
|
|
@ -145,6 +158,7 @@ File count: **191**
|
||||||
- `patterns/README.md`
|
- `patterns/README.md`
|
||||||
- `patterns/intent-scope-purposes.md`
|
- `patterns/intent-scope-purposes.md`
|
||||||
- `profiles/README.md`
|
- `profiles/README.md`
|
||||||
|
- `profiles/small-saas/artifacts/capability-requirements.yaml`
|
||||||
- `profiles/small-saas/artifacts/control.namespace-per-tenant.yaml`
|
- `profiles/small-saas/artifacts/control.namespace-per-tenant.yaml`
|
||||||
- `profiles/small-saas/artifacts/dataset.subscription-ledger.yaml`
|
- `profiles/small-saas/artifacts/dataset.subscription-ledger.yaml`
|
||||||
- `profiles/small-saas/artifacts/deployment.production.yaml`
|
- `profiles/small-saas/artifacts/deployment.production.yaml`
|
||||||
|
|
@ -169,6 +183,7 @@ File count: **191**
|
||||||
- `schemas/capability-record.schema.yaml`
|
- `schemas/capability-record.schema.yaml`
|
||||||
- `schemas/capability.schema.yaml`
|
- `schemas/capability.schema.yaml`
|
||||||
- `schemas/concept.schema.yaml`
|
- `schemas/concept.schema.yaml`
|
||||||
|
- `schemas/emission-cadence.schema.yaml`
|
||||||
- `schemas/index.yaml`
|
- `schemas/index.yaml`
|
||||||
- `schemas/interface-card.schema.yaml`
|
- `schemas/interface-card.schema.yaml`
|
||||||
- `schemas/mapping.schema.yaml`
|
- `schemas/mapping.schema.yaml`
|
||||||
|
|
@ -183,6 +198,8 @@ File count: **191**
|
||||||
- `standards/caring/benchmarks/kubernetes-rbac/caring-mapping.yaml`
|
- `standards/caring/benchmarks/kubernetes-rbac/caring-mapping.yaml`
|
||||||
- `standards/caring/benchmarks/kubernetes-rbac/findings-and-canon-pressure.yaml`
|
- `standards/caring/benchmarks/kubernetes-rbac/findings-and-canon-pressure.yaml`
|
||||||
- `standards/caring/benchmarks/kubernetes-rbac/native-concepts.yaml`
|
- `standards/caring/benchmarks/kubernetes-rbac/native-concepts.yaml`
|
||||||
|
- `standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md`
|
||||||
|
- `standards/emission-cadence/examples/qonto-assistant.yaml`
|
||||||
- `standards/repository-layout/InfoTechCanonRepositoryLayoutStandard.md`
|
- `standards/repository-layout/InfoTechCanonRepositoryLayoutStandard.md`
|
||||||
- `standards/tagging/InfoTechCanonTaggingStandard.md`
|
- `standards/tagging/InfoTechCanonTaggingStandard.md`
|
||||||
- `validation/README.md`
|
- `validation/README.md`
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ id: ITC-IN-0001
|
||||||
kind: intake
|
kind: intake
|
||||||
title: 'Declaration requested: state this repository''s layer in INTENT.md (security
|
title: 'Declaration requested: state this repository''s layer in INTENT.md (security
|
||||||
layer model §11)'
|
layer model §11)'
|
||||||
status: open
|
status: closed
|
||||||
origin: cross-repo
|
origin: cross-repo
|
||||||
origin_ref: net-kingdom security-layer-model_v0.4 §11
|
origin_ref: net-kingdom security-layer-model_v0.4 §11
|
||||||
priority: low
|
priority: low
|
||||||
|
|
@ -31,5 +31,12 @@ description: 'A conformance sweep on 2026-08-28 found this repository has no lay
|
||||||
If the proposed layer is wrong for what this repository actually does, that is more
|
If the proposed layer is wrong for what this repository actually does, that is more
|
||||||
useful to us than a label added to close a checkbox. Standard: net-kingdom/canon/standards/security-layer-model_v0.4.md.'
|
useful to us than a label added to close a checkbox. Standard: net-kingdom/canon/standards/security-layer-model_v0.4.md.'
|
||||||
created: '2026-08-28T21:01:51.123381Z'
|
created: '2026-08-28T21:01:51.123381Z'
|
||||||
updated: '2026-08-28T21:01:51.123381Z'
|
updated: '2026-09-04T03:10:00+02:00'
|
||||||
|
disposition: accepted
|
||||||
|
resolution: >-
|
||||||
|
INTENT.md now declares info-tech-canon as Taxonomy in this repository's own
|
||||||
|
voice and states the ownership boundary with NetKingdom-specific security
|
||||||
|
architecture and importing profiles.
|
||||||
|
resolved_by: codex
|
||||||
|
resolved_at: '2026-09-04T03:10:00+02:00'
|
||||||
```
|
```
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,8 @@ description = "Practical service surface for the InfoTechCanon infospace."
|
||||||
requires-python = ">=3.12"
|
requires-python = ">=3.12"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"PyYAML>=6",
|
"PyYAML>=6",
|
||||||
"infospace-bench @ file:///home/worsch/infospace-bench",
|
"jsonschema>=4.10",
|
||||||
|
"infospace-bench==0.1.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[project.scripts]
|
[project.scripts]
|
||||||
|
|
|
||||||
|
|
@ -9,9 +9,13 @@ from typing import Any
|
||||||
|
|
||||||
|
|
||||||
BENCH_PACKAGE = "_info_tech_canon_infospace_bench"
|
BENCH_PACKAGE = "_info_tech_canon_infospace_bench"
|
||||||
BENCH_SOURCE_ROOT = (
|
_spec = importlib.util.find_spec("infospace_bench")
|
||||||
Path(__file__).resolve().parents[3] / "infospace-bench" / "src" / "infospace_bench"
|
if _spec is None or not _spec.submodule_search_locations:
|
||||||
)
|
raise RuntimeError("Install infospace-bench==0.1.0 before using the canon service")
|
||||||
|
# The upstream __init__ imports optional database/engine integrations. Resolve
|
||||||
|
# its installed location without executing that initializer; load only the
|
||||||
|
# reference-data modules needed here. No sibling checkout is assumed.
|
||||||
|
BENCH_SOURCE_ROOT = Path(next(iter(_spec.submodule_search_locations)))
|
||||||
|
|
||||||
|
|
||||||
def _ensure_package() -> ModuleType:
|
def _ensure_package() -> ModuleType:
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ from pathlib import Path
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
|
from .paths import infospace_root
|
||||||
|
|
||||||
REPO_ROOT = Path(__file__).resolve().parents[2]
|
REPO_ROOT = Path(__file__).resolve().parents[2]
|
||||||
CATALOG_PATH = REPO_ROOT / "infospace" / "models" / "capability" / "capabilities.yaml"
|
CATALOG_PATH = REPO_ROOT / "infospace" / "models" / "capability" / "capabilities.yaml"
|
||||||
|
|
@ -33,7 +34,7 @@ MATURITY_ORDER = tuple(f"D{i}" for i in range(8))
|
||||||
|
|
||||||
|
|
||||||
def load_catalog(path: Path | None = None) -> dict[str, Any]:
|
def load_catalog(path: Path | None = None) -> dict[str, Any]:
|
||||||
catalog_path = path or CATALOG_PATH
|
catalog_path = path or infospace_root() / "models/capability/capabilities.yaml"
|
||||||
if not catalog_path.is_file():
|
if not catalog_path.is_file():
|
||||||
raise CapabilityReviewError(
|
raise CapabilityReviewError(
|
||||||
"capability_catalog_missing",
|
"capability_catalog_missing",
|
||||||
|
|
|
||||||
|
|
@ -113,6 +113,21 @@ def build_parser() -> argparse.ArgumentParser:
|
||||||
capability_review.add_argument("record")
|
capability_review.add_argument("record")
|
||||||
capability_review.set_defaults(handler=_capability_review)
|
capability_review.set_defaults(handler=_capability_review)
|
||||||
|
|
||||||
|
emission = sub.add_parser("emission-review", help="Validate a source-owned YAML/JSON cadence declaration")
|
||||||
|
emission.add_argument("record")
|
||||||
|
emission.set_defaults(handler=_emission_review)
|
||||||
|
coverage = sub.add_parser("validation-coverage", help="List implemented checks and explicit limits")
|
||||||
|
coverage.set_defaults(handler=_coverage)
|
||||||
|
freshness = sub.add_parser("check-generated", help="Check projections without changing source files")
|
||||||
|
freshness.set_defaults(handler=_check_generated)
|
||||||
|
inventory = sub.add_parser("scope-inventory", help="Derive scope counts from the artifact registry")
|
||||||
|
inventory.set_defaults(handler=_scope_inventory)
|
||||||
|
bundle = sub.add_parser("export-emission-contract", help="Export a content-addressed contract tar")
|
||||||
|
bundle.add_argument("destination")
|
||||||
|
bundle.set_defaults(handler=_export_emission)
|
||||||
|
benchmark = sub.add_parser("benchmark-reads", help="Measure ten uncached inspect calls")
|
||||||
|
benchmark.set_defaults(handler=_benchmark_reads)
|
||||||
|
|
||||||
api = sub.add_parser("api", help="Run the read-only local API")
|
api = sub.add_parser("api", help="Run the read-only local API")
|
||||||
api.add_argument("--host", default="127.0.0.1")
|
api.add_argument("--host", default="127.0.0.1")
|
||||||
api.add_argument("--port", type=int, default=8765)
|
api.add_argument("--port", type=int, default=8765)
|
||||||
|
|
@ -207,6 +222,41 @@ def _capability_review(args: argparse.Namespace) -> dict[str, Any]:
|
||||||
return review_capability_record(args.record, _root(args))
|
return review_capability_record(args.record, _root(args))
|
||||||
|
|
||||||
|
|
||||||
|
def _emission_review(args):
|
||||||
|
from .contracts import review_emission
|
||||||
|
return review_emission(args.record, _root(args))
|
||||||
|
|
||||||
|
|
||||||
|
def _coverage(args):
|
||||||
|
from .contracts import coverage
|
||||||
|
from .service import load_context
|
||||||
|
return coverage(load_context(_root(args)))
|
||||||
|
|
||||||
|
|
||||||
|
def _check_generated(args):
|
||||||
|
from .maintenance import check_generated
|
||||||
|
from .service import load_context
|
||||||
|
return check_generated(load_context(_root(args)))
|
||||||
|
|
||||||
|
|
||||||
|
def _scope_inventory(args):
|
||||||
|
from .maintenance import scope_inventory
|
||||||
|
from .service import load_context
|
||||||
|
return dict(scope_inventory(load_context(_root(args))), ok=True)
|
||||||
|
|
||||||
|
|
||||||
|
def _export_emission(args):
|
||||||
|
from .maintenance import export_emission_bundle
|
||||||
|
from .paths import infospace_root
|
||||||
|
return export_emission_bundle(infospace_root(_root(args)), Path(args.destination))
|
||||||
|
|
||||||
|
|
||||||
|
def _benchmark_reads(args):
|
||||||
|
from .maintenance import benchmark_reads
|
||||||
|
from .paths import infospace_root
|
||||||
|
return benchmark_reads(infospace_root(_root(args)))
|
||||||
|
|
||||||
|
|
||||||
def _profile_inspect(args: argparse.Namespace) -> dict[str, Any]:
|
def _profile_inspect(args: argparse.Namespace) -> dict[str, Any]:
|
||||||
return profile_inspect(args.profile, _root(args))
|
return profile_inspect(args.profile, _root(args))
|
||||||
|
|
||||||
|
|
|
||||||
82
src/info_tech_canon/contracts.py
Normal file
82
src/info_tech_canon/contracts.py
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
"""Reusable declaration checks. Shape validity never proves operational truth."""
|
||||||
|
|
||||||
|
from collections import Counter
|
||||||
|
from pathlib import Path
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
|
from jsonschema import Draft202012Validator
|
||||||
|
from jsonschema.exceptions import SchemaError
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
from .paths import infospace_root
|
||||||
|
|
||||||
|
|
||||||
|
def schema_errors(instance: Any, schema: dict) -> list[dict]:
|
||||||
|
try:
|
||||||
|
Draft202012Validator.check_schema(schema)
|
||||||
|
except SchemaError as exc:
|
||||||
|
return [{"code": "invalid_schema", "message": exc.message}]
|
||||||
|
return [
|
||||||
|
{"code": "schema_violation", "instance_path": "/".join(map(str, e.path)),
|
||||||
|
"message": e.message}
|
||||||
|
for e in sorted(Draft202012Validator(schema).iter_errors(instance),
|
||||||
|
key=lambda e: tuple(map(str, e.path)))
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def emission_errors(instance: Any, schema: dict) -> list[dict]:
|
||||||
|
errors = schema_errors(instance, schema)
|
||||||
|
if isinstance(instance, dict) and isinstance(instance.get("sources"), list):
|
||||||
|
counts = Counter(entry.get("source_id") for entry in instance["sources"]
|
||||||
|
if isinstance(entry, dict) and isinstance(entry.get("source_id"), str))
|
||||||
|
duplicates = sorted(key for key, count in counts.items() if count > 1)
|
||||||
|
if duplicates:
|
||||||
|
errors.append({"code": "duplicate_emission_cadence_source_id",
|
||||||
|
"source_ids": duplicates})
|
||||||
|
return errors
|
||||||
|
|
||||||
|
|
||||||
|
def review_emission(path: str | Path, root: Path | str | None = None) -> dict:
|
||||||
|
from .service import CanonServiceError
|
||||||
|
|
||||||
|
try:
|
||||||
|
schema = yaml.safe_load((infospace_root(root) / "schemas/emission-cadence.schema.yaml").read_text())
|
||||||
|
instance = yaml.safe_load(Path(path).read_text())
|
||||||
|
except (OSError, yaml.YAMLError) as exc:
|
||||||
|
raise CanonServiceError("declaration_unreadable", str(exc)) from exc
|
||||||
|
errors = emission_errors(instance, schema)
|
||||||
|
return {"ok": not errors, "contract": "emission-cadence/0.1", "errors": errors,
|
||||||
|
"operational_truth_assessed": False}
|
||||||
|
|
||||||
|
|
||||||
|
def coverage(context: Any) -> dict:
|
||||||
|
"""Report actual checks and their limits rather than claiming full conformance."""
|
||||||
|
bindings = {"mapping": "mapping.schema.yaml"}
|
||||||
|
rows = []
|
||||||
|
for artifact in sorted(context.infospace.artifacts, key=lambda a: a.id):
|
||||||
|
schema = bindings.get(artifact.kind)
|
||||||
|
rows.append({"id": artifact.id, "kind": artifact.kind, "schema": schema,
|
||||||
|
"checks": "schema-and-references" if schema else "structural-or-specialized"})
|
||||||
|
return {"ok": True, "artifacts": rows,
|
||||||
|
"specialized": ["capability catalog/record", "practice pattern",
|
||||||
|
"emission cadence example", "consumer packs"],
|
||||||
|
"not_proven": ["ownership of concepts only in prose", "all Markdown links",
|
||||||
|
"consumer adoption", "cross-version interoperability",
|
||||||
|
"CARING effective access", "mapping rationale completeness"]}
|
||||||
|
|
||||||
|
|
||||||
|
def bound_artifact_errors(context: Any) -> list[dict]:
|
||||||
|
errors = []
|
||||||
|
try:
|
||||||
|
schema = yaml.safe_load((context.infospace_root / "schemas/mapping.schema.yaml").read_text())
|
||||||
|
except (OSError, yaml.YAMLError) as exc:
|
||||||
|
return [{"code": "mapping_schema_unreadable", "message": str(exc)}]
|
||||||
|
for artifact in context.infospace.artifacts:
|
||||||
|
if artifact.kind != "mapping":
|
||||||
|
continue
|
||||||
|
try:
|
||||||
|
data = yaml.safe_load((context.infospace_root / artifact.path).read_text())
|
||||||
|
errors.extend(dict(error, artifact_id=artifact.id) for error in schema_errors(data, schema))
|
||||||
|
except (OSError, yaml.YAMLError) as exc:
|
||||||
|
errors.append({"code": "mapping_unreadable", "artifact_id": artifact.id, "message": str(exc)})
|
||||||
|
return errors
|
||||||
108
src/info_tech_canon/maintenance.py
Normal file
108
src/info_tech_canon/maintenance.py
Normal file
|
|
@ -0,0 +1,108 @@
|
||||||
|
"""Reproducible projections, portable contract exports, and read measurements."""
|
||||||
|
|
||||||
|
from collections import Counter
|
||||||
|
from dataclasses import replace
|
||||||
|
from datetime import datetime, timezone
|
||||||
|
import hashlib
|
||||||
|
import io
|
||||||
|
import json
|
||||||
|
from pathlib import Path
|
||||||
|
import shutil
|
||||||
|
import statistics
|
||||||
|
import subprocess
|
||||||
|
import tarfile
|
||||||
|
import tempfile
|
||||||
|
import time
|
||||||
|
|
||||||
|
from . import generation
|
||||||
|
|
||||||
|
|
||||||
|
def scope_inventory(context) -> dict:
|
||||||
|
return {"artifact_count": len(context.infospace.artifacts),
|
||||||
|
"kinds": dict(sorted(Counter(a.kind for a in context.infospace.artifacts).items())),
|
||||||
|
"standards": sorted(a.id for a in context.infospace.artifacts if a.kind == "standard"),
|
||||||
|
"models": sorted(a.id for a in context.infospace.artifacts if a.kind == "model")}
|
||||||
|
|
||||||
|
|
||||||
|
def check_generated(context) -> dict:
|
||||||
|
"""Render only into a disposable copy; never repair the source as a check."""
|
||||||
|
with tempfile.TemporaryDirectory(prefix="canon-freshness-") as temporary:
|
||||||
|
target = Path(temporary) / "infospace"
|
||||||
|
shutil.copytree(context.infospace_root, target)
|
||||||
|
copied = replace(context, infospace_root=target)
|
||||||
|
files = {}
|
||||||
|
for render in (generation.generate_indexes, generation.generate_tree,
|
||||||
|
generation.generate_agent_briefs):
|
||||||
|
for item in render(copied)["files"]:
|
||||||
|
path = Path(item["path"])
|
||||||
|
files[str(path.relative_to(target))] = path.read_bytes()
|
||||||
|
stale = []
|
||||||
|
for relative, expected in files.items():
|
||||||
|
original = context.infospace_root / relative
|
||||||
|
if not original.is_file() or original.read_bytes() != expected:
|
||||||
|
stale.append(relative)
|
||||||
|
return {"ok": not stale, "checked": len(files), "stale": sorted(stale)}
|
||||||
|
|
||||||
|
|
||||||
|
def source_evidence(root: Path) -> dict:
|
||||||
|
digest = hashlib.sha256()
|
||||||
|
# Include source and generated corpus; exclude reports to avoid self-hashing.
|
||||||
|
for path in sorted(root.rglob("*")):
|
||||||
|
if path.is_file() and "validation" not in path.relative_to(root).parts:
|
||||||
|
digest.update(str(path.relative_to(root)).encode() + b"\0" + path.read_bytes() + b"\0")
|
||||||
|
def git(*args):
|
||||||
|
try:
|
||||||
|
result = subprocess.run(["git", "-C", str(root.parent), *args],
|
||||||
|
capture_output=True, text=True, check=False)
|
||||||
|
except FileNotFoundError:
|
||||||
|
return None
|
||||||
|
return result.stdout.strip() if result.returncode == 0 else None
|
||||||
|
status = git("status", "--porcelain")
|
||||||
|
return {"generated_at": datetime.now(timezone.utc).isoformat(),
|
||||||
|
"revision": git("rev-parse", "HEAD"),
|
||||||
|
"dirty": bool(status) if status is not None else None,
|
||||||
|
"corpus_sha256": digest.hexdigest(),
|
||||||
|
"digest_scope": "all infospace files except validation reports"}
|
||||||
|
|
||||||
|
|
||||||
|
def export_emission_bundle(root: Path, destination: Path) -> dict:
|
||||||
|
"""Content-addressed deterministic tar; a changed contract gets a new name."""
|
||||||
|
paths = ["schemas/emission-cadence.schema.yaml",
|
||||||
|
"standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md",
|
||||||
|
"standards/emission-cadence/examples/qonto-assistant.yaml"]
|
||||||
|
files = {path: (root / path).read_bytes() for path in paths}
|
||||||
|
manifest = {"contract": "emission-cadence/0.1", "status": "draft",
|
||||||
|
"files": {name: hashlib.sha256(data).hexdigest() for name, data in files.items()},
|
||||||
|
"semantic_checks": ["unique source_id in sources"],
|
||||||
|
"adoption_evidence": "Two independent source-owned implementations required; example does not count."}
|
||||||
|
files["manifest.json"] = (json.dumps(manifest, sort_keys=True, indent=2) + "\n").encode()
|
||||||
|
output = io.BytesIO()
|
||||||
|
with tarfile.open(fileobj=output, mode="w", format=tarfile.USTAR_FORMAT) as archive:
|
||||||
|
for name, data in sorted(files.items()):
|
||||||
|
info = tarfile.TarInfo(name)
|
||||||
|
info.size = len(data)
|
||||||
|
info.mode = 0o644
|
||||||
|
archive.addfile(info, io.BytesIO(data))
|
||||||
|
data = output.getvalue()
|
||||||
|
digest = hashlib.sha256(data).hexdigest()
|
||||||
|
destination.mkdir(parents=True, exist_ok=True)
|
||||||
|
path = destination / f"emission-cadence-0.1-{digest}.tar"
|
||||||
|
try:
|
||||||
|
with path.open("xb") as stream:
|
||||||
|
stream.write(data)
|
||||||
|
except FileExistsError:
|
||||||
|
if path.read_bytes() != data:
|
||||||
|
raise ValueError(f"Refusing to overwrite different bundle contents: {path}")
|
||||||
|
return {"ok": True, "path": str(path), "sha256": digest, "manifest": manifest}
|
||||||
|
|
||||||
|
|
||||||
|
def benchmark_reads(root: Path, runs: int = 10) -> dict:
|
||||||
|
from .service import inspect_canon
|
||||||
|
samples = []
|
||||||
|
for _ in range(runs):
|
||||||
|
started = time.perf_counter()
|
||||||
|
inspect_canon(root)
|
||||||
|
samples.append((time.perf_counter() - started) * 1000)
|
||||||
|
return {"ok": True, "operation": "inspect", "runs": runs,
|
||||||
|
"median_ms": statistics.median(samples), "max_ms": max(samples),
|
||||||
|
"cache": "none; benchmark does not establish a production latency requirement"}
|
||||||
15
src/info_tech_canon/paths.py
Normal file
15
src/info_tech_canon/paths.py
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
"""Corpus location is independent of the installed Python package."""
|
||||||
|
|
||||||
|
import os
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
||||||
|
def infospace_root(root: Path | str | None = None) -> Path:
|
||||||
|
if root:
|
||||||
|
return Path(root).resolve()
|
||||||
|
if os.environ.get("INFO_TECH_CANON_ROOT"):
|
||||||
|
return Path(os.environ["INFO_TECH_CANON_ROOT"]).resolve()
|
||||||
|
local = Path.cwd() / "infospace"
|
||||||
|
if local.is_dir():
|
||||||
|
return local.resolve()
|
||||||
|
return Path(__file__).resolve().parents[2] / "infospace"
|
||||||
|
|
@ -19,10 +19,11 @@ from .bench import (
|
||||||
run_collection_checks,
|
run_collection_checks,
|
||||||
)
|
)
|
||||||
from .validation import structural_checks
|
from .validation import structural_checks
|
||||||
|
from .paths import infospace_root
|
||||||
|
|
||||||
|
|
||||||
REPO_ROOT = Path(__file__).resolve().parents[2]
|
REPO_ROOT = Path(__file__).resolve().parents[2]
|
||||||
DEFAULT_INFOSPACE_ROOT = REPO_ROOT / "infospace"
|
DEFAULT_INFOSPACE_ROOT = infospace_root()
|
||||||
|
|
||||||
REVIEW_KIT_COMPONENTS = {
|
REVIEW_KIT_COMPONENTS = {
|
||||||
"manifest": "agent/review-kit/review-kit.yaml",
|
"manifest": "agent/review-kit/review-kit.yaml",
|
||||||
|
|
@ -65,18 +66,18 @@ class CanonContext:
|
||||||
|
|
||||||
|
|
||||||
def load_context(root: Path | str | None = None) -> CanonContext:
|
def load_context(root: Path | str | None = None) -> CanonContext:
|
||||||
infospace_root = Path(root) if root else DEFAULT_INFOSPACE_ROOT
|
resolved_root = infospace_root(root)
|
||||||
try:
|
try:
|
||||||
infospace = load_infospace(infospace_root)
|
infospace = load_infospace(resolved_root)
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
raise CanonServiceError(
|
raise CanonServiceError(
|
||||||
"infospace_load_failed",
|
"infospace_load_failed",
|
||||||
f"Unable to load infospace at {infospace_root}",
|
f"Unable to load infospace at {resolved_root}",
|
||||||
{"root": str(infospace_root), "reason": str(exc)},
|
{"root": str(resolved_root), "reason": str(exc)},
|
||||||
) from exc
|
) from exc
|
||||||
return CanonContext(
|
return CanonContext(
|
||||||
repo_root=REPO_ROOT,
|
repo_root=resolved_root.parent,
|
||||||
infospace_root=infospace_root,
|
infospace_root=resolved_root,
|
||||||
infospace=infospace,
|
infospace=infospace,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -217,6 +218,11 @@ def validate_canon(root: Path | str | None = None) -> dict[str, Any]:
|
||||||
structural = structural_checks(context)
|
structural = structural_checks(context)
|
||||||
errors.extend(structural["errors"])
|
errors.extend(structural["errors"])
|
||||||
warnings.extend(structural["warnings"])
|
warnings.extend(structural["warnings"])
|
||||||
|
from .contracts import bound_artifact_errors, coverage
|
||||||
|
errors.extend(bound_artifact_errors(context))
|
||||||
|
ownership = generation.concept_ownership(context)
|
||||||
|
errors.extend(dict(item, code="concept_ownership_conflict")
|
||||||
|
for item in ownership["ownership_conflicts"])
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"ok": not errors,
|
"ok": not errors,
|
||||||
|
|
@ -224,6 +230,7 @@ def validate_canon(root: Path | str | None = None) -> dict[str, Any]:
|
||||||
"warnings": warnings,
|
"warnings": warnings,
|
||||||
"metrics": checks.metrics,
|
"metrics": checks.metrics,
|
||||||
"details": checks.details,
|
"details": checks.details,
|
||||||
|
"coverage": coverage(context),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -232,6 +239,8 @@ def write_validation_report(
|
||||||
root: Path | str | None = None,
|
root: Path | str | None = None,
|
||||||
) -> dict[str, Any]:
|
) -> dict[str, Any]:
|
||||||
payload = validate_canon(root)
|
payload = validate_canon(root)
|
||||||
|
from .maintenance import source_evidence
|
||||||
|
payload["evidence"] = source_evidence(infospace_root(root))
|
||||||
path = Path(destination)
|
path = Path(destination)
|
||||||
path.parent.mkdir(parents=True, exist_ok=True)
|
path.parent.mkdir(parents=True, exist_ok=True)
|
||||||
path.write_text(json.dumps(payload, indent=2, sort_keys=True) + "\n", encoding="utf-8")
|
path.write_text(json.dumps(payload, indent=2, sort_keys=True) + "\n", encoding="utf-8")
|
||||||
|
|
@ -335,7 +344,7 @@ def review_capability_record(
|
||||||
from .capability import CapabilityReviewError, review_path
|
from .capability import CapabilityReviewError, review_path
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return review_path(path)
|
return review_path(path, infospace_root(root) / "models/capability/capabilities.yaml")
|
||||||
except CapabilityReviewError as exc:
|
except CapabilityReviewError as exc:
|
||||||
raise CanonServiceError(exc.code, exc.message) from exc
|
raise CanonServiceError(exc.code, exc.message) from exc
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -56,6 +56,7 @@ REQUIRED_SCHEMAS = (
|
||||||
"capability-record.schema.yaml",
|
"capability-record.schema.yaml",
|
||||||
"attribute-value-type.schema.yaml",
|
"attribute-value-type.schema.yaml",
|
||||||
"practice-pattern.schema.yaml",
|
"practice-pattern.schema.yaml",
|
||||||
|
"emission-cadence.schema.yaml",
|
||||||
)
|
)
|
||||||
|
|
||||||
RETRIEVAL_BRIEF_KINDS = {
|
RETRIEVAL_BRIEF_KINDS = {
|
||||||
|
|
@ -397,7 +398,8 @@ def structural_checks(context: Any) -> dict[str, list[dict[str, Any]]]:
|
||||||
_check_required_top_level_files(context.repo_root, errors)
|
_check_required_top_level_files(context.repo_root, errors)
|
||||||
_check_required_infospace_dirs(context.infospace_root, errors)
|
_check_required_infospace_dirs(context.infospace_root, errors)
|
||||||
_check_required_schemas(context.infospace_root, errors)
|
_check_required_schemas(context.infospace_root, errors)
|
||||||
_check_capability_catalog(errors)
|
_check_capability_catalog(context.infospace_root, errors)
|
||||||
|
_check_emission_cadence_contract(context.infospace_root, errors)
|
||||||
_check_canon_paths(context.repo_root, context.infospace_root, errors)
|
_check_canon_paths(context.repo_root, context.infospace_root, errors)
|
||||||
_check_artifact_index(context.repo_root, context.infospace_root, errors)
|
_check_artifact_index(context.repo_root, context.infospace_root, errors)
|
||||||
_check_practice_pattern_assets(
|
_check_practice_pattern_assets(
|
||||||
|
|
@ -599,11 +601,11 @@ def _check_required_infospace_dirs(
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def _check_capability_catalog(errors: list[dict[str, Any]]) -> None:
|
def _check_capability_catalog(infospace_root: Path, errors: list[dict[str, Any]]) -> None:
|
||||||
from .capability import check_catalog_contract
|
from .capability import check_catalog_contract, load_catalog
|
||||||
|
|
||||||
try:
|
try:
|
||||||
errors.extend(check_catalog_contract())
|
errors.extend(check_catalog_contract(load_catalog(infospace_root / "models/capability/capabilities.yaml")))
|
||||||
except Exception as exc: # pragma: no cover - catalog missing is structural
|
except Exception as exc: # pragma: no cover - catalog missing is structural
|
||||||
errors.append(
|
errors.append(
|
||||||
{
|
{
|
||||||
|
|
@ -613,6 +615,20 @@ def _check_capability_catalog(errors: list[dict[str, Any]]) -> None:
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def _check_emission_cadence_contract(
|
||||||
|
infospace_root: Path,
|
||||||
|
errors: list[dict[str, Any]],
|
||||||
|
) -> None:
|
||||||
|
from .contracts import emission_errors
|
||||||
|
|
||||||
|
schema = _read_yaml(infospace_root / "schemas/emission-cadence.schema.yaml", errors)
|
||||||
|
example_path = "standards/emission-cadence/examples/qonto-assistant.yaml"
|
||||||
|
example = _read_yaml(infospace_root / example_path, errors)
|
||||||
|
if isinstance(schema, dict):
|
||||||
|
errors.extend(dict(error, path=example_path)
|
||||||
|
for error in emission_errors(example, schema))
|
||||||
|
|
||||||
|
|
||||||
def _check_required_schemas(
|
def _check_required_schemas(
|
||||||
infospace_root: Path,
|
infospace_root: Path,
|
||||||
errors: list[dict[str, Any]],
|
errors: list[dict[str, Any]],
|
||||||
|
|
|
||||||
|
|
@ -62,4 +62,4 @@ def test_api_route_validates_small_saas_profile() -> None:
|
||||||
|
|
||||||
assert status == HTTPStatus.OK
|
assert status == HTTPStatus.OK
|
||||||
assert payload["ok"] is True
|
assert payload["ok"] is True
|
||||||
assert payload["details"]["artifact_count"] == 14
|
assert payload["details"]["artifact_count"] == 15
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ def test_cli_inspect_emits_json(capsys) -> None:
|
||||||
assert exit_code == 0
|
assert exit_code == 0
|
||||||
payload = json.loads(capsys.readouterr().out)
|
payload = json.loads(capsys.readouterr().out)
|
||||||
assert payload["ok"] is True
|
assert payload["ok"] is True
|
||||||
assert payload["infospace"]["artifact_count"] == 71
|
assert payload["infospace"]["artifact_count"] == 76
|
||||||
|
|
||||||
|
|
||||||
def test_cli_missing_profile_uses_structured_error(capsys) -> None:
|
def test_cli_missing_profile_uses_structured_error(capsys) -> None:
|
||||||
|
|
|
||||||
59
tests/test_emission_cadence.py
Normal file
59
tests/test_emission_cadence.py
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
from copy import deepcopy
|
||||||
|
|
||||||
|
from jsonschema import Draft202012Validator
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
from info_tech_canon.service import DEFAULT_INFOSPACE_ROOT
|
||||||
|
|
||||||
|
|
||||||
|
SCHEMA_PATH = DEFAULT_INFOSPACE_ROOT / "schemas" / "emission-cadence.schema.yaml"
|
||||||
|
EXAMPLE_PATH = (
|
||||||
|
DEFAULT_INFOSPACE_ROOT
|
||||||
|
/ "standards"
|
||||||
|
/ "emission-cadence"
|
||||||
|
/ "examples"
|
||||||
|
/ "qonto-assistant.yaml"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def _load_yaml(path):
|
||||||
|
return yaml.safe_load(path.read_text(encoding="utf-8"))
|
||||||
|
|
||||||
|
|
||||||
|
def _validator() -> Draft202012Validator:
|
||||||
|
schema = _load_yaml(SCHEMA_PATH)
|
||||||
|
Draft202012Validator.check_schema(schema)
|
||||||
|
return Draft202012Validator(schema)
|
||||||
|
|
||||||
|
|
||||||
|
def test_worked_example_validates() -> None:
|
||||||
|
assert list(_validator().iter_errors(_load_yaml(EXAMPLE_PATH))) == []
|
||||||
|
|
||||||
|
|
||||||
|
def test_expected_rate_requires_one_window_representation() -> None:
|
||||||
|
payload = deepcopy(_load_yaml(EXAMPLE_PATH))
|
||||||
|
rate = payload["sources"][0]
|
||||||
|
rate.pop("window")
|
||||||
|
|
||||||
|
assert list(_validator().iter_errors(payload))
|
||||||
|
|
||||||
|
rate["window"] = "PT24H"
|
||||||
|
rate["window_seconds"] = 86400
|
||||||
|
assert list(_validator().iter_errors(payload))
|
||||||
|
|
||||||
|
|
||||||
|
def test_heartbeat_form_accepts_either_mechanism_but_not_neither() -> None:
|
||||||
|
payload = deepcopy(_load_yaml(EXAMPLE_PATH))
|
||||||
|
intermittent = payload["sources"][1]
|
||||||
|
intermittent.pop("heartbeat")
|
||||||
|
assert list(_validator().iter_errors(payload)) == []
|
||||||
|
|
||||||
|
intermittent.pop("reconciliation")
|
||||||
|
assert list(_validator().iter_errors(payload))
|
||||||
|
|
||||||
|
|
||||||
|
def test_profile_fields_must_be_namespaced_extensions() -> None:
|
||||||
|
payload = deepcopy(_load_yaml(EXAMPLE_PATH))
|
||||||
|
payload["sources"][1]["evidence_class"] = "load-bearing"
|
||||||
|
|
||||||
|
assert list(_validator().iter_errors(payload))
|
||||||
116
tests/test_maintenance.py
Normal file
116
tests/test_maintenance.py
Normal file
|
|
@ -0,0 +1,116 @@
|
||||||
|
from copy import deepcopy
|
||||||
|
import hashlib
|
||||||
|
import json
|
||||||
|
from pathlib import Path
|
||||||
|
import shutil
|
||||||
|
import tarfile
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
from info_tech_canon.cli import main
|
||||||
|
from info_tech_canon.maintenance import check_generated, export_emission_bundle, source_evidence
|
||||||
|
from info_tech_canon.service import DEFAULT_INFOSPACE_ROOT, load_context, validate_canon
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def corpus(tmp_path):
|
||||||
|
root = tmp_path / "infospace"
|
||||||
|
shutil.copytree(DEFAULT_INFOSPACE_ROOT, root)
|
||||||
|
return root
|
||||||
|
|
||||||
|
|
||||||
|
def test_emission_cli_checks_versions_duplicates_and_bad_types(tmp_path, capsys):
|
||||||
|
source = DEFAULT_INFOSPACE_ROOT / "standards/emission-cadence/examples/qonto-assistant.yaml"
|
||||||
|
valid = yaml.safe_load(source.read_text())
|
||||||
|
path = tmp_path / "declaration.yaml"
|
||||||
|
path.write_text(yaml.safe_dump(valid))
|
||||||
|
assert main(["emission-review", str(path)]) == 0
|
||||||
|
assert json.loads(capsys.readouterr().out)["operational_truth_assessed"] is False
|
||||||
|
for change in ("version", "duplicate", "bad_type"):
|
||||||
|
data = deepcopy(valid)
|
||||||
|
if change == "version":
|
||||||
|
data["schema_version"] = "99.0"
|
||||||
|
elif change == "duplicate":
|
||||||
|
data["sources"].append(deepcopy(data["sources"][0]))
|
||||||
|
else:
|
||||||
|
data["sources"][0]["source_id"] = ["unhashable"]
|
||||||
|
path.write_text(yaml.safe_dump(data))
|
||||||
|
assert main(["emission-review", str(path)]) == 1
|
||||||
|
payload = json.loads(capsys.readouterr().out)
|
||||||
|
assert payload["errors"]
|
||||||
|
if change == "duplicate":
|
||||||
|
assert payload["errors"][0]["code"] == "duplicate_emission_cadence_source_id"
|
||||||
|
|
||||||
|
|
||||||
|
def test_freshness_detects_missing_and_stale_without_repair(corpus):
|
||||||
|
from info_tech_canon import generation
|
||||||
|
context = load_context(corpus)
|
||||||
|
for render in (generation.generate_indexes, generation.generate_tree, generation.generate_agent_briefs):
|
||||||
|
render(context)
|
||||||
|
assert check_generated(context)["ok"]
|
||||||
|
stale = corpus / "views/by-concept.md"
|
||||||
|
stale.write_text("stale\n")
|
||||||
|
missing = corpus / "agent/retrieval-index.json"
|
||||||
|
missing.unlink()
|
||||||
|
result = check_generated(context)
|
||||||
|
assert not result["ok"]
|
||||||
|
assert "views/by-concept.md" in result["stale"]
|
||||||
|
assert "agent/retrieval-index.json" in result["stale"]
|
||||||
|
assert stale.read_text() == "stale\n"
|
||||||
|
assert not missing.exists()
|
||||||
|
|
||||||
|
|
||||||
|
def test_bundle_is_reproducible_and_refuses_corruption(tmp_path):
|
||||||
|
first = export_emission_bundle(DEFAULT_INFOSPACE_ROOT, tmp_path)
|
||||||
|
second = export_emission_bundle(DEFAULT_INFOSPACE_ROOT, tmp_path)
|
||||||
|
assert first == second
|
||||||
|
path = Path(first["path"])
|
||||||
|
assert hashlib.sha256(path.read_bytes()).hexdigest() == first["sha256"]
|
||||||
|
with tarfile.open(path) as archive:
|
||||||
|
for name, digest in first["manifest"]["files"].items():
|
||||||
|
assert hashlib.sha256(archive.extractfile(name).read()).hexdigest() == digest
|
||||||
|
path.write_bytes(b"corrupted")
|
||||||
|
with pytest.raises(ValueError, match="Refusing"):
|
||||||
|
export_emission_bundle(DEFAULT_INFOSPACE_ROOT, tmp_path)
|
||||||
|
|
||||||
|
|
||||||
|
def test_mapping_schema_and_explicit_ownership_are_enforced(corpus):
|
||||||
|
from info_tech_canon.contracts import bound_artifact_errors
|
||||||
|
mapping = corpus / "mappings/capability-anchors.yaml"
|
||||||
|
data = yaml.safe_load(mapping.read_text())
|
||||||
|
del data["target"]
|
||||||
|
mapping.write_text(yaml.safe_dump(data))
|
||||||
|
assert bound_artifact_errors(load_context(corpus))[0]["code"] == "schema_violation"
|
||||||
|
pattern = corpus / "patterns/AgenticDrivesFunctional.md"
|
||||||
|
text = pattern.read_text()
|
||||||
|
# Reuse another artifact's title as an owned concept to create a real conflict.
|
||||||
|
owner = next(a.title for a in load_context(corpus).infospace.artifacts if a.kind == "kernel")
|
||||||
|
text = text.replace("owned_concepts:", f"owned_concepts:\n - {owner}")
|
||||||
|
pattern.write_text(text)
|
||||||
|
assert any(e["code"] == "concept_ownership_conflict" for e in validate_canon(corpus)["errors"])
|
||||||
|
|
||||||
|
|
||||||
|
def test_evidence_digest_tracks_content_but_excludes_reports(corpus):
|
||||||
|
before = source_evidence(corpus)
|
||||||
|
(corpus / "validation/latest.json").write_text("{}")
|
||||||
|
assert source_evidence(corpus)["corpus_sha256"] == before["corpus_sha256"]
|
||||||
|
(corpus / "mappings/README.md").write_text("changed")
|
||||||
|
assert source_evidence(corpus)["corpus_sha256"] != before["corpus_sha256"]
|
||||||
|
assert before["generated_at"]
|
||||||
|
|
||||||
|
|
||||||
|
def test_explicit_root_controls_capability_catalog(corpus, tmp_path):
|
||||||
|
from info_tech_canon.service import review_capability_record, CanonServiceError
|
||||||
|
(corpus / "models/capability/capabilities.yaml").unlink()
|
||||||
|
record = tmp_path / "record.json"
|
||||||
|
record.write_text('{"record_id":"example", "requires":[], "provisions":[]}')
|
||||||
|
with pytest.raises(CanonServiceError, match="catalog"):
|
||||||
|
review_capability_record(record, corpus)
|
||||||
|
|
||||||
|
|
||||||
|
def test_missing_mapping_schema_is_a_validation_finding(corpus):
|
||||||
|
(corpus / "schemas/mapping.schema.yaml").unlink()
|
||||||
|
payload = validate_canon(corpus)
|
||||||
|
assert not payload["ok"]
|
||||||
|
assert any(e["code"] == "mapping_schema_unreadable" for e in payload["errors"])
|
||||||
|
|
@ -25,11 +25,11 @@ def test_inspect_canon_counts_artifact_kinds() -> None:
|
||||||
|
|
||||||
assert payload["ok"] is True
|
assert payload["ok"] is True
|
||||||
assert payload["infospace"]["slug"] == "canon"
|
assert payload["infospace"]["slug"] == "canon"
|
||||||
assert payload["infospace"]["artifact_count"] == 71
|
assert payload["infospace"]["artifact_count"] == 76
|
||||||
assert payload["infospace"]["kinds"] == {
|
assert payload["infospace"]["kinds"] == {
|
||||||
"access-descriptor-set": 1,
|
"access-descriptor-set": 1,
|
||||||
"alignment-review-kit": 1,
|
"alignment-review-kit": 1,
|
||||||
"assimilation": 1,
|
"assimilation": 2,
|
||||||
"alignment-review-schema": 1,
|
"alignment-review-schema": 1,
|
||||||
"alignment-review-workflow": 1,
|
"alignment-review-workflow": 1,
|
||||||
"alignment-scorecard": 1,
|
"alignment-scorecard": 1,
|
||||||
|
|
@ -47,11 +47,11 @@ def test_inspect_canon_counts_artifact_kinds() -> None:
|
||||||
"consumer-workplan-template": 1,
|
"consumer-workplan-template": 1,
|
||||||
"evaluation-pack": 1,
|
"evaluation-pack": 1,
|
||||||
"evaluation-question-set": 1,
|
"evaluation-question-set": 1,
|
||||||
"example": 1,
|
"example": 2,
|
||||||
"extension-candidate-set": 1,
|
"extension-candidate-set": 1,
|
||||||
"interface-card-expectation": 1,
|
"interface-card-expectation": 1,
|
||||||
"kernel": 2,
|
"kernel": 2,
|
||||||
"mapping": 2,
|
"mapping": 3,
|
||||||
"mapping-expectation": 1,
|
"mapping-expectation": 1,
|
||||||
"model": 12,
|
"model": 12,
|
||||||
"model-extension": 1,
|
"model-extension": 1,
|
||||||
|
|
@ -63,15 +63,15 @@ def test_inspect_canon_counts_artifact_kinds() -> None:
|
||||||
"practice-pattern-scheme": 1,
|
"practice-pattern-scheme": 1,
|
||||||
"profile-alignment": 1,
|
"profile-alignment": 1,
|
||||||
"profile": 1,
|
"profile": 1,
|
||||||
"profile-artifact": 13,
|
"profile-artifact": 14,
|
||||||
"standard": 3,
|
"standard": 4,
|
||||||
"visualization-example-set": 1,
|
"visualization-example-set": 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def test_model_and_standard_lists_are_filtered() -> None:
|
def test_model_and_standard_lists_are_filtered() -> None:
|
||||||
assert list_models()["count"] == 12
|
assert list_models()["count"] == 12
|
||||||
assert list_standards()["count"] == 3
|
assert list_standards()["count"] == 4
|
||||||
|
|
||||||
|
|
||||||
def test_review_kit_exports_workflow_and_template() -> None:
|
def test_review_kit_exports_workflow_and_template() -> None:
|
||||||
|
|
@ -99,14 +99,14 @@ def test_validate_canon_passes_scaffold() -> None:
|
||||||
assert payload["ok"] is True
|
assert payload["ok"] is True
|
||||||
assert payload["errors"] == []
|
assert payload["errors"] == []
|
||||||
assert "warnings" in payload
|
assert "warnings" in payload
|
||||||
assert payload["details"]["artifact_count"] == 71
|
assert payload["details"]["artifact_count"] == 76
|
||||||
|
|
||||||
|
|
||||||
def test_graph_exports_relationship_summary() -> None:
|
def test_graph_exports_relationship_summary() -> None:
|
||||||
payload = artifact_graph()
|
payload = artifact_graph()
|
||||||
|
|
||||||
assert payload["ok"] is True
|
assert payload["ok"] is True
|
||||||
assert payload["graph"]["node_count"] == 71
|
assert payload["graph"]["node_count"] == 76
|
||||||
assert payload["graph"]["edge_count"] > 15
|
assert payload["graph"]["edge_count"] > 15
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -180,6 +180,21 @@ def test_small_saas_profile_graph_exports_slice() -> None:
|
||||||
assert "small-saas/service/billing-portal" in payload["graph"]["nodes"]
|
assert "small-saas/service/billing-portal" in payload["graph"]["nodes"]
|
||||||
|
|
||||||
|
|
||||||
|
def test_small_saas_capability_requirements_meet_maturity_floors() -> None:
|
||||||
|
path = (
|
||||||
|
DEFAULT_INFOSPACE_ROOT
|
||||||
|
/ "profiles"
|
||||||
|
/ "small-saas"
|
||||||
|
/ "artifacts"
|
||||||
|
/ "capability-requirements.yaml"
|
||||||
|
)
|
||||||
|
payload = review_capability_record(path)
|
||||||
|
|
||||||
|
assert payload["ok"] is True
|
||||||
|
assert {item["status"] for item in payload["requirements"]} == {"met"}
|
||||||
|
assert len(payload["provisions"]) == 4
|
||||||
|
|
||||||
|
|
||||||
def test_generators_write_expected_assets(tmp_path) -> None:
|
def test_generators_write_expected_assets(tmp_path) -> None:
|
||||||
root = tmp_path / "infospace"
|
root = tmp_path / "infospace"
|
||||||
shutil.copytree(DEFAULT_INFOSPACE_ROOT, root)
|
shutil.copytree(DEFAULT_INFOSPACE_ROOT, root)
|
||||||
|
|
@ -214,6 +229,7 @@ def test_generators_write_expected_assets(tmp_path) -> None:
|
||||||
root / "agent" / "briefs" / "benchmark-caring-kubernetes-rbac.md"
|
root / "agent" / "briefs" / "benchmark-caring-kubernetes-rbac.md"
|
||||||
).is_file()
|
).is_file()
|
||||||
assert (root / "agent" / "briefs" / "review-kit-alignment.md").is_file()
|
assert (root / "agent" / "briefs" / "review-kit-alignment.md").is_file()
|
||||||
|
assert (root / "agent" / "briefs" / "standard-emission-cadence.md").is_file()
|
||||||
assert (
|
assert (
|
||||||
root / "agent" / "templates" / "consumer-alignment-workplan.template.md"
|
root / "agent" / "templates" / "consumer-alignment-workplan.template.md"
|
||||||
).is_file()
|
).is_file()
|
||||||
|
|
|
||||||
132
workplans/INFO-WP-0019-conformance-and-maintenance.md
Normal file
132
workplans/INFO-WP-0019-conformance-and-maintenance.md
Normal file
|
|
@ -0,0 +1,132 @@
|
||||||
|
---
|
||||||
|
id: INFO-WP-0019
|
||||||
|
type: workplan
|
||||||
|
title: "Conformance, reproducible consumption, and maintenance"
|
||||||
|
domain: infotech
|
||||||
|
repo: info-tech-canon
|
||||||
|
status: blocked
|
||||||
|
owner: codex
|
||||||
|
topic_slug: canon-optimization
|
||||||
|
created: "2026-09-05"
|
||||||
|
updated: "2026-09-05"
|
||||||
|
state_hub_workstream_id: "b29261ba-c1e4-5533-8185-ab2d5b433685"
|
||||||
|
---
|
||||||
|
|
||||||
|
# Conformance, reproducible consumption, and maintenance
|
||||||
|
|
||||||
|
Implements the optimization recommendations in
|
||||||
|
`history/2026-09-05_002437+0200-scope-against-intent.md`.
|
||||||
|
Reviewed against the current working tree; authorized by the operator on
|
||||||
|
2026-09-05. Uses the AGENTS.md INFO-WP file convention.
|
||||||
|
|
||||||
|
## Reusable conformance and coverage
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: INFO-WP-0019-T01
|
||||||
|
status: done
|
||||||
|
priority: high
|
||||||
|
state_hub_task_id: "abc0ed79-009f-5254-a2bf-4dcedd1925e9"
|
||||||
|
```
|
||||||
|
|
||||||
|
Extract shared schema validation and emission-cadence semantics into contract
|
||||||
|
modules. Expose arbitrary declaration validation and explicit coverage through
|
||||||
|
the CLI. Reject unsupported versions, malformed declarations, and duplicate
|
||||||
|
source IDs. Enforce explicit ownership conflicts. Preserve all existing tests.
|
||||||
|
|
||||||
|
## Reproducible contract bundle and adoption gate
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: INFO-WP-0019-T02
|
||||||
|
status: done
|
||||||
|
priority: high
|
||||||
|
state_hub_task_id: "1ec85dc5-5775-50b6-8066-ac839fd252c9"
|
||||||
|
```
|
||||||
|
|
||||||
|
Provide deterministic, content-addressed export of the cadence contract,
|
||||||
|
schema, and example; refuse overwriting different contents. Define owner-authored
|
||||||
|
adoption evidence requirements and keep draft promotion contingent on two
|
||||||
|
independent implementations. Local examples must not count as adoption evidence.
|
||||||
|
|
||||||
|
## Freshness and evidence
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: INFO-WP-0019-T03
|
||||||
|
status: done
|
||||||
|
priority: high
|
||||||
|
state_hub_task_id: "e4171772-50bf-58f6-9c87-8eddbef1caa5"
|
||||||
|
```
|
||||||
|
|
||||||
|
Add non-mutating generated-asset checks, reproducible scope inventory, and
|
||||||
|
revision/time/source-digest evidence on validation reports. Refresh work-record
|
||||||
|
projections via State Hub. Check stale and missing generated assets with tests.
|
||||||
|
|
||||||
|
## Portable consumption
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: INFO-WP-0019-T04
|
||||||
|
status: done
|
||||||
|
priority: medium
|
||||||
|
state_hub_task_id: "e258d84d-d969-5032-baef-ae1060843319"
|
||||||
|
```
|
||||||
|
|
||||||
|
Remove hardcoded workstation dependency paths. Resolve an installed bench
|
||||||
|
distribution and an explicit external corpus root. Prove wheel installation
|
||||||
|
and commands from an unrelated directory. Document upstream packaging limits
|
||||||
|
without changing sibling repositories.
|
||||||
|
|
||||||
|
## Measure performance and verify implementation
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: INFO-WP-0019-T05
|
||||||
|
status: done
|
||||||
|
priority: medium
|
||||||
|
state_hub_task_id: "09a585e8-4c67-5143-bc3a-ae47623547ea"
|
||||||
|
```
|
||||||
|
|
||||||
|
Measure repeated reads before deciding whether caching is justified. Run all
|
||||||
|
tests, canon/profile validation, generated freshness checks, and the clean
|
||||||
|
installation proof. Update SCOPE/README and record evidence. Avoid speculative
|
||||||
|
models or runtime expansion.
|
||||||
|
|
||||||
|
## Independent consumer adoption
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: INFO-WP-0019-T06
|
||||||
|
status: wait
|
||||||
|
priority: high
|
||||||
|
state_hub_task_id: "b33aeb8c-ba7c-5094-9902-85565c1e721b"
|
||||||
|
```
|
||||||
|
|
||||||
|
Requires two source owners to provide independently implemented declarations
|
||||||
|
and consumer results pinned to the contract digest. This repo can validate
|
||||||
|
submitted evidence but cannot manufacture source ownership or deployed proof.
|
||||||
|
No external messages or consumer changes are authorized by this workplan.
|
||||||
|
Promotion remains blocked until that evidence arrives.
|
||||||
|
|
||||||
|
## Implementation notes
|
||||||
|
|
||||||
|
T01–T04 implemented in `contracts.py`, `maintenance.py`, `paths.py`, CLI,
|
||||||
|
service integration, and `docs/canon-consumption.md`. Explicit mapping schema
|
||||||
|
bindings and ownership checks improve coverage without claiming exhaustive
|
||||||
|
semantic validation. The normal bench initializer imports unrelated database
|
||||||
|
integrations; installed-module discovery retains the narrow adapter. Clean
|
||||||
|
wheel consumption uses the documented explicit-dependency installation until
|
||||||
|
the upstream owner separates reference-data packaging.
|
||||||
|
|
||||||
|
Registration: State Hub workstream `b29261ba-c1e4-5533-8185-ab2d5b433685`.
|
||||||
|
The consistency tool reports an INFO-WP/ITC-WP prefix advisory: this plan follows
|
||||||
|
the explicit INFO-WP convention in AGENTS.md; existing plans and the registry
|
||||||
|
use ITC-WP. This naming inconsistency does not prevent registration.
|
||||||
|
|
||||||
|
## Verification — 2026-09-05
|
||||||
|
|
||||||
|
`make check`: 36 tests passed (22.42 seconds); all 77 generated assets current;
|
||||||
|
canon validation passed (76 artifacts, 315 relationships); Small-SaaS passed
|
||||||
|
(15 payloads). Installed-wheel inspect, validation, and emission review passed
|
||||||
|
from an unrelated directory with PYTHONPATH unset and a copied corpus.
|
||||||
|
Ten uncached inspections measured median 788.05 ms, maximum 1241.92 ms;
|
||||||
|
caching remains deferred pending a workload/latency requirement.
|
||||||
|
|
||||||
|
Local implementation T01–T05 is complete. Overall status is blocked only on
|
||||||
|
T06's independent owner evidence. See
|
||||||
|
`history/2026-09-05_optimization-implementation.md` for artifacts and limitations.
|
||||||
|
|
@ -8,7 +8,7 @@ repo: info-tech-canon
|
||||||
status: finished
|
status: finished
|
||||||
priority: medium
|
priority: medium
|
||||||
created: "2026-08-14"
|
created: "2026-08-14"
|
||||||
updated: "2026-08-15"
|
updated: "2026-09-04"
|
||||||
depends_on_workplans:
|
depends_on_workplans:
|
||||||
- ITC-WP-0003
|
- ITC-WP-0003
|
||||||
- ITC-WP-0006
|
- ITC-WP-0006
|
||||||
|
|
@ -102,7 +102,7 @@ entry per source/target pair, registered as `mapping/capability-anchors`.
|
||||||
|
|
||||||
```task
|
```task
|
||||||
id: ITC-WP-0014-T04
|
id: ITC-WP-0014-T04
|
||||||
status: todo
|
status: done
|
||||||
priority: medium
|
priority: medium
|
||||||
depends_on: [T02]
|
depends_on: [T02]
|
||||||
state_hub_task_id: "a4621991-fea8-5f74-b0fd-e5e606ea32a7"
|
state_hub_task_id: "a4621991-fea8-5f74-b0fd-e5e606ea32a7"
|
||||||
|
|
@ -113,6 +113,12 @@ small-saas profile (coordinate with ITC-WP-0004). Useful in-repo illustration.
|
||||||
**No longer the promotion gate** — §10.3 now accepts a consumer record that
|
**No longer the promotion gate** — §10.3 now accepts a consumer record that
|
||||||
validates against the live catalog (T11).
|
validates against the live catalog (T11).
|
||||||
|
|
||||||
|
**Done 2026-09-04:** Added
|
||||||
|
`profiles/small-saas/artifacts/capability-requirements.yaml`, covering
|
||||||
|
authorization, transactional persistence, API exposure, and observability.
|
||||||
|
All four requirements have profile-owned provisions and evidence and meet their
|
||||||
|
declared maturity floors through the live capability-review surface.
|
||||||
|
|
||||||
### T05 — Landscape and kernel-map revision
|
### T05 — Landscape and kernel-map revision
|
||||||
|
|
||||||
```task
|
```task
|
||||||
|
|
|
||||||
80
workplans/ITC-WP-0018-emission-cadence-contract.md
Normal file
80
workplans/ITC-WP-0018-emission-cadence-contract.md
Normal file
|
|
@ -0,0 +1,80 @@
|
||||||
|
---
|
||||||
|
id: ITC-WP-0018
|
||||||
|
type: workplan
|
||||||
|
title: "EmissionCadenceDeclaration semantic contract"
|
||||||
|
domain: infotech
|
||||||
|
repo: info-tech-canon
|
||||||
|
status: finished
|
||||||
|
owner: codex
|
||||||
|
topic_slug: emission-cadence
|
||||||
|
priority: high
|
||||||
|
created: "2026-09-04"
|
||||||
|
updated: "2026-09-04"
|
||||||
|
spec_refs:
|
||||||
|
- infospace/assimilation/emission-cadence/ASSIMILATION.md
|
||||||
|
- infospace/standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md
|
||||||
|
- infospace/schemas/emission-cadence.schema.yaml
|
||||||
|
state_hub_workstream_id: "78f879cf-f097-5ee5-8f6a-15e34209822d"
|
||||||
|
---
|
||||||
|
|
||||||
|
# ITC-WP-0018 — EmissionCadenceDeclaration Semantic Contract
|
||||||
|
|
||||||
|
## Goal
|
||||||
|
|
||||||
|
Adopt the King’s Guard handover as the ecosystem-wide, versioned semantic
|
||||||
|
contract for declaring expected stream emission, while leaving NetKingdom
|
||||||
|
security obligations in the importing NetKingdom profile.
|
||||||
|
|
||||||
|
## T01 — Review ownership and assimilate the handover
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: ITC-WP-0018-T01
|
||||||
|
status: done
|
||||||
|
priority: high
|
||||||
|
state_hub_task_id: "b6cba288-1edf-557c-b692-cd24058fb9d6"
|
||||||
|
```
|
||||||
|
|
||||||
|
Preserve the handed-over draft, compare its concepts with the existing
|
||||||
|
Observability and Governance models, and record the authorized `adapt`
|
||||||
|
disposition from `GH-DEC-2026-004`.
|
||||||
|
|
||||||
|
## T02 — Publish the generic contract and validation schema
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: ITC-WP-0018-T02
|
||||||
|
status: done
|
||||||
|
priority: high
|
||||||
|
state_hub_task_id: "cca8a6e6-03fe-50a1-9f0d-84cbc8b92cac"
|
||||||
|
```
|
||||||
|
|
||||||
|
Publish the generic forms, fields, validation semantics, compatibility rules,
|
||||||
|
and a non-authoritative worked example. Do not encode the NetKingdom rule that
|
||||||
|
rare load-bearing classes require heartbeat plus reconciliation.
|
||||||
|
|
||||||
|
## T03 — Register, retrieve, validate, and announce
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: ITC-WP-0018-T03
|
||||||
|
status: done
|
||||||
|
priority: high
|
||||||
|
state_hub_task_id: "9df9fd50-26e0-531e-a0a2-9f92eed5f2b3"
|
||||||
|
```
|
||||||
|
|
||||||
|
Register the artifact and schema, regenerate retrieval assets, run the full
|
||||||
|
validation and test suite, and notify the handing-over and deciding repositories.
|
||||||
|
|
||||||
|
## Acceptance
|
||||||
|
|
||||||
|
- InfoTechCanon is the sole owner of `EmissionCadenceDeclaration` semantics.
|
||||||
|
- The schema validates both generic forms and rejects incomplete form payloads.
|
||||||
|
- NetKingdom-specific evidence classes and MUST/SHOULD policy are not defined here.
|
||||||
|
- The artifact is discoverable through the CLI/JSON/API retrieval surfaces.
|
||||||
|
- Generated assets, validation, tests, work records, and State Hub agree.
|
||||||
|
|
||||||
|
## Result
|
||||||
|
|
||||||
|
Completed 2026-09-04 in canon 0.7.0. The handed-over draft was adapted into the
|
||||||
|
generic standard and schema, the security-profile boundary was preserved, the
|
||||||
|
worked example and structural validation were published, and all retrieval
|
||||||
|
assets were regenerated. `make validate` reports 0 errors and 0 warnings;
|
||||||
|
`make test` passes 29 tests.
|
||||||
|
|
@ -2,7 +2,7 @@ repository: info-tech-canon
|
||||||
type: workplan-registry
|
type: workplan-registry
|
||||||
status: active
|
status: active
|
||||||
created: "2026-05-23"
|
created: "2026-05-23"
|
||||||
updated: "2026-06-08"
|
updated: "2026-09-05"
|
||||||
|
|
||||||
implementation_decisions:
|
implementation_decisions:
|
||||||
infospace_root: infospace/
|
infospace_root: infospace/
|
||||||
|
|
@ -16,6 +16,17 @@ implementation_decisions:
|
||||||
consumer_workplans_live_in_consumer_repos: true
|
consumer_workplans_live_in_consumer_repos: true
|
||||||
|
|
||||||
workplans:
|
workplans:
|
||||||
|
- id: INFO-WP-0019
|
||||||
|
title: Conformance, reproducible consumption, and maintenance
|
||||||
|
status: blocked
|
||||||
|
priority: high
|
||||||
|
path: workplans/INFO-WP-0019-conformance-and-maintenance.md
|
||||||
|
depends_on: [ITC-WP-0018]
|
||||||
|
produces:
|
||||||
|
- reusable declaration validation and coverage
|
||||||
|
- deterministic contract bundles
|
||||||
|
- freshness checks and portable consumption
|
||||||
|
|
||||||
- id: ITC-WP-0001
|
- id: ITC-WP-0001
|
||||||
title: Infospace Scaffold And Seed Placement
|
title: Infospace Scaffold And Seed Placement
|
||||||
status: finished
|
status: finished
|
||||||
|
|
@ -231,3 +242,35 @@ workplans:
|
||||||
- models/governance/evidence-basis.yaml
|
- models/governance/evidence-basis.yaml
|
||||||
- EvidenceBasis section in ITC-GOV
|
- EvidenceBasis section in ITC-GOV
|
||||||
- CAP-R10 on CapabilityConsumption
|
- CAP-R10 on CapabilityConsumption
|
||||||
|
|
||||||
|
- id: ITC-WP-0016
|
||||||
|
title: PracticePattern language and InterfaceDeprecationStrangler
|
||||||
|
status: finished
|
||||||
|
priority: high
|
||||||
|
path: workplans/ITC-WP-0016-practice-pattern-language.md
|
||||||
|
depends_on: []
|
||||||
|
produces:
|
||||||
|
- PracticePattern scheme
|
||||||
|
- InterfaceDeprecationStrangler pattern
|
||||||
|
|
||||||
|
- id: ITC-WP-0017
|
||||||
|
title: AgenticDrivesFunctional PracticePattern
|
||||||
|
status: finished
|
||||||
|
priority: medium
|
||||||
|
path: workplans/ITC-WP-0017-agentic-drives-functional.md
|
||||||
|
depends_on:
|
||||||
|
- ITC-WP-0016
|
||||||
|
produces:
|
||||||
|
- AgenticDrivesFunctional pattern
|
||||||
|
|
||||||
|
- id: ITC-WP-0018
|
||||||
|
title: EmissionCadenceDeclaration semantic contract
|
||||||
|
status: finished
|
||||||
|
priority: high
|
||||||
|
path: workplans/ITC-WP-0018-emission-cadence-contract.md
|
||||||
|
depends_on: []
|
||||||
|
produces:
|
||||||
|
- Emission Cadence Standard
|
||||||
|
- EmissionCadenceDeclaration schema
|
||||||
|
- qonto-assistant worked example
|
||||||
|
- emission-cadence assimilation record
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue