Implement canon conformance and maintenance optimizations
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 3s

Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a06e82-3e08-7042-a79d-438ac6eed8db
This commit is contained in:
tegwick 2026-09-05 00:50:09 +02:00
parent a2e7f22d8d
commit b081d39da1
64 changed files with 4491 additions and 373 deletions

1090
.repo-manager/index.json Normal file

File diff suppressed because it is too large Load diff

View file

@ -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
### Frozen — ITC-CAP draft; AttributeValueType catalog; joinable review

View file

@ -1,26 +1,25 @@
# 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
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.
## 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
@ -120,4 +119,3 @@ The repository should initially establish:
- 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.

View file

@ -1,5 +1,7 @@
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
@ -17,3 +19,13 @@ agent-briefs:
test:
$(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

View file

@ -14,6 +14,10 @@ The first service surface is intentionally small:
## 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
PYTHONPATH=src python3 -m info_tech_canon inspect
PYTHONPATH=src python3 -m info_tech_canon artifacts
@ -57,6 +61,15 @@ After package installation, the same commands are available through the
## 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
make validate
make index

308
SCOPE.md
View file

@ -1,241 +1,115 @@
# 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,
- define the semantic boundaries between domains,
- preserve orthogonality between concepts,
- provide seed structures for mappings, profiles, patterns, assimilation, validation, and agent use,
- support future machine-readable extraction,
- and act as the first major use case for markdown-based infospaces and related tooling.
The CLI, library, and local read-only HTTP API serve and check those artifacts.
They do not establish ownership of consumer runtime state, enforcement,
observation, or orchestration. NetKingdom owns its security architecture and
importing security profiles. Sources own emission-cadence instances; observers
own evaluation and findings; importing profiles own additional policy requirements.
---
## 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/` | IntentScopePurposes, 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
kernel/
InfoTechCanonCore.md
InfoTechCanonKernelMap.md
```
## Implemented service and checks
### 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,
- concepts,
- concept ownership,
- relationships,
- mappings,
- assimilation,
- profiles,
- patterns,
- validation rules,
- conformance levels,
- versioning,
- provenance,
- agent briefs,
- and Canon Interface Cards.
Dependencies are Python 3.12+, PyYAML, jsonschema, and `infospace-bench`.
The loader discovers an installed bench distribution. An explicit `--root` or
`INFO_TECH_CANON_ROOT` selects a separately supplied corpus. Narrow wheel
installation is supported; upstream bench's full transitive dependency metadata
still contains workstation-specific paths. See
[consumption instructions](docs/canon-consumption.md).
### 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
models/
information-space/
landscape/
organization/
governance/
task/
access-control/
security/
data/
devsecops/
network/
observability/
```
INFO-WP-0019 adds reusable arbitrary Emission Cadence declaration validation,
mapping schema checks, explicit ownership-conflict enforcement, a validation
coverage report, content-addressed contract export, generated-asset freshness
checks, scope inventory, and validation source/time evidence. These mechanisms
do not close the semantic or independent-adoption gaps listed above.
These models define broad domain structures.
## Exclusions and evolution
| Model | Current Responsibility |
|---|---|
| Information Space | Markdown-first knowledge packaging, retrieval, links, chunks, indexes, agent briefs |
| Landscape | IT landscapes, services, systems, runtime resources, infrastructure context |
| 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 |
This repository does not replace external standards, mandate one universal
enterprise model, operate consumer systems, enforce NetKingdom policy, or
provide production observability or authorization services. A complete
ontology and exhaustive external-standard mappings are not current deliverables.
---
## Current Specialized Standards
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.
```
Further semantic coverage, stronger conformance, and consumer adoption are
consistent with intent but require follow-up work. Evidence, gaps, and
optimization options are recorded in the
[2026-09-05 scope assessment](history/2026-09-05_002437+0200-scope-against-intent.md).

View file

@ -9,6 +9,7 @@
| Kind | ID | Status | Lane | Source |
| --- | --- | --- | --- | --- |
| 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-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 |
@ -26,9 +27,16 @@
| 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-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-T02 | 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-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 |
@ -87,7 +95,7 @@
| 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-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-T06 | 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-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 |
| 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 |

View file

@ -1,7 +1,7 @@
repository: info-tech-canon
title: InfoTechCanon
status: service-baseline
version: 0.6.0
version: 0.7.0
description: >
An evolving, markdown-first canon for building interoperable, adaptable,
and extensible information-processing systems.
@ -114,6 +114,17 @@ standards:
title: InfoTechCanonRepositoryLayoutStandard
path: infospace/standards/repository-layout/InfoTechCanonRepositoryLayoutStandard.md
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:
- infospace/
@ -150,6 +161,9 @@ workplans:
- ITC-WP-0013
- ITC-WP-0014
- ITC-WP-0015
- ITC-WP-0016
- ITC-WP-0017
- ITC-WP-0018
feedback:
path: feedback/
@ -166,6 +180,11 @@ assimilation:
disposition: adapt
status: closed
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:
near_term:
@ -178,8 +197,6 @@ first_proofs:
- caring-kubernetes-rbac
next_actions:
- implement ITC-WP-0003 validation and generated views
- implement ITC-WP-0004 small-saas profile proof
- explore ITC-WP-0006 PURPOSES model extension
- 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)
- keep ITC-CAP 0.4.0 frozen; do not change its shape without a new minor
- collect two independent EmissionCadenceDeclaration source implementations
before promoting ITC-EMISSION-CADENCE beyond draft

86
docs/canon-consumption.md Normal file
View 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.

View 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, IntentScopePurposes | 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.

View 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
T01T05 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.

View file

@ -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.

View 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.

View 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.

View file

@ -5,8 +5,8 @@
This brief summarizes the current canon service surface for agents.
- Infospace slug: `canon`
- Artifact count: 71
- Retrieval index items: 71
- Artifact count: 76
- Retrieval index items: 76
- Primary confidence command: `make validate`
- Refresh generated indexes and views with: `make index`
- Refresh agent briefs and interface templates with: `make agent-briefs`

View file

@ -59,8 +59,29 @@
}
],
"infospace": "canon",
"item_count": 71,
"item_count": 76,
"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",
"id": "assimilation/it-capability-canon",
@ -983,6 +1004,27 @@
"title": "Canon-Side Consumer Purpose Portfolio",
"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",
"id": "kernel/itc-core",
@ -1086,6 +1128,33 @@
"title": "ITC-CAP concept mappings to anchoring canon models",
"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",
"id": "mapping/purpose-demand-governance-candidates",
@ -2014,6 +2083,35 @@
"title": "PracticePattern Scheme",
"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",
"id": "small-saas/control/namespace-per-tenant",
@ -2545,6 +2643,50 @@
"title": "InfoTechCanon CARING Access Governance Standard",
"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",
"id": "standard/repository-layout",

View file

@ -4,7 +4,7 @@
Schema: `info-tech-canon.retrieval-index.v1`
Infospace: `canon`
Items: **71**
Items: **76**
## Common Distinctions
@ -17,6 +17,16 @@ Items: **71**
## 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
- ID: `assimilation/it-capability-canon`
@ -277,6 +287,16 @@ Items: **71**
- Imports and anchors: `profile/small-saas`
- 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
- ID: `kernel/itc-core`
@ -307,6 +327,16 @@ Items: **71**
- Imports and anchors: none
- 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
- ID: `mapping/purpose-demand-governance-candidates`
@ -567,6 +597,16 @@ Items: **71**
- Imports and anchors: `kernel/itc-core`
- 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
- 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`
- 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
- ID: `standard/repository-layout`

View file

@ -1,7 +1,21 @@
schema: info-tech-canon.retrieval-index.v1
infospace: canon
item_count: 71
item_count: 76
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
kind: assimilation
title: "Assimilation \u2014 IT Capability Canon (ITCC) v0.1"
@ -595,6 +609,20 @@ items:
- type: uses
target: profile/small-saas
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
kind: kernel
title: InfoTechCanon Core
@ -661,6 +689,24 @@ items:
imports: []
relationships: []
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
kind: mapping
title: Purpose Demand Governance Extension Candidates
@ -1280,6 +1326,25 @@ items:
- type: conforms_to
target: kernel/itc-core
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
kind: profile-artifact
title: Namespace Per Tenant Control
@ -1609,6 +1674,35 @@ items:
- type: imports
target: standard/tagging
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
kind: standard
title: InfoTechCanon Repository Layout Standard

View file

@ -1193,3 +1193,73 @@ artifacts:
target: small-saas/control/namespace-per-tenant
- type: evidenced_by
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

View 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.

View 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"

View 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 |

View file

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

View 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

View 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.

View 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`.

View 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.

View file

@ -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.

View file

@ -1,5 +1,5 @@
root: infospace
file_count: 191
file_count: 208
files:
- path: README.md
directory: .
@ -79,6 +79,9 @@ files:
- path: agent/briefs/example-consumer-purpose-portfolio.md
directory: agent/briefs
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
directory: agent/briefs
name: kernel-itc-core.md
@ -88,6 +91,9 @@ files:
- path: agent/briefs/mapping-capability-anchors.md
directory: agent/briefs
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
directory: agent/briefs
name: mapping-purpose-demand-governance-candidates.md
@ -133,6 +139,9 @@ files:
- path: agent/briefs/pattern-intent-scope-purposes.md
directory: agent/briefs
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
directory: agent/briefs
name: practice-pattern-interface-deprecation-strangler.md
@ -163,6 +172,9 @@ files:
- path: agent/briefs/standard-caring.md
directory: agent/briefs
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
directory: agent/briefs
name: standard-repository-layout.md
@ -217,6 +229,33 @@ files:
- path: assimilation/README.md
directory: assimilation
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
directory: assimilation
name: intake-and-assimilation-practice.md
@ -424,6 +463,9 @@ files:
- path: profiles/README.md
directory: profiles
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
directory: profiles/small-saas/artifacts
name: control.namespace-per-tenant.yaml
@ -496,6 +538,9 @@ files:
- path: schemas/concept.schema.yaml
directory: schemas
name: concept.schema.yaml
- path: schemas/emission-cadence.schema.yaml
directory: schemas
name: emission-cadence.schema.yaml
- path: schemas/index.yaml
directory: schemas
name: index.yaml
@ -538,6 +583,12 @@ files:
- path: standards/caring/benchmarks/kubernetes-rbac/native-concepts.yaml
directory: standards/caring/benchmarks/kubernetes-rbac
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
directory: standards/repository-layout
name: InfoTechCanonRepositoryLayoutStandard.md

View file

@ -1,5 +1,9 @@
concept_count: 119
concept_count: 129
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"
owner: assimilation/it-capability-canon
path: assimilation/it-capability-canon/ASSIMILATION.md
@ -104,6 +108,10 @@ concepts:
owner: example/consumer-purpose-portfolio
path: examples/consumer-purpose-portfolio.yaml
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
owner: kernel/itc-core
path: kernel/InfoTechCanonCore.md
@ -116,6 +124,10 @@ concepts:
owner: mapping/capability-anchors
path: mappings/capability-anchors.yaml
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
owner: mapping/purpose-demand-governance-candidates
path: mappings/purpose-demand-governance-candidates.yaml
@ -338,6 +350,10 @@ concepts:
owner: scheme/practice-pattern
path: patterns/PracticePatternScheme.md
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
owner: small-saas/control/namespace-per-tenant
path: profiles/small-saas/artifacts/control.namespace-per-tenant.yaml
@ -454,6 +470,30 @@ concepts:
owner: standard/caring
path: standards/caring/InfoTechCanonCaringAccessGovernanceStandard.md
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
owner: standard/repository-layout
path: standards/repository-layout/InfoTechCanonRepositoryLayoutStandard.md

View file

@ -1,4 +1,5 @@
artifacts:
- assimilation/emission-cadence
- assimilation/it-capability-canon
- benchmark/caring/kubernetes-rbac
- benchmark/caring/kubernetes-rbac/access-descriptors
@ -25,9 +26,11 @@ artifacts:
- 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
@ -54,6 +57,7 @@ artifacts:
- 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
@ -68,9 +72,14 @@ artifacts:
- small-saas/tenant/globex
- small-saas/user/ada-admin
- standard/caring
- standard/emission-cadence
- standard/repository-layout
- standard/tagging
rows:
- artifact: assimilation/emission-cadence
targets:
kernel/itc-core:
- conforms_to
- artifact: assimilation/it-capability-canon
targets:
kernel/itc-core:
@ -353,6 +362,10 @@ rows:
- illustrates
profile/small-saas:
- uses
- artifact: example/emission-cadence/qonto-assistant
targets:
standard/emission-cadence:
- conforms_to
- artifact: kernel/itc-core
targets: {}
- artifact: kernel/itc-kernel-map
@ -389,6 +402,14 @@ rows:
- maps
- artifact: mapping/capability-anchors
targets: {}
- artifact: mapping/emission-cadence-handover
targets:
model/governance:
- maps
model/observability:
- maps
standard/emission-cadence:
- maps
- artifact: mapping/purpose-demand-governance-candidates
targets:
model/governance:
@ -641,6 +662,14 @@ rows:
targets:
kernel/itc-core:
- 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
targets:
model/security:
@ -801,6 +830,18 @@ rows:
- imports
standard/tagging:
- 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
targets:
kernel/itc-core:

View file

@ -39,6 +39,8 @@ disciplines:
path: standards/caring/InfoTechCanonCaringAccessGovernanceStandard.md
- name: Repository Layout Standard
path: standards/repository-layout/InfoTechCanonRepositoryLayoutStandard.md
- name: Emission Cadence Standard
path: standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md
schemas:
standard: schemas/standard.schema.yaml
practice-pattern: schemas/practice-pattern.schema.yaml
@ -52,6 +54,7 @@ schemas:
capability: schemas/capability.schema.yaml
capability-record: schemas/capability-record.schema.yaml
attribute-value-type: schemas/attribute-value-type.schema.yaml
emission-cadence: schemas/emission-cadence.schema.yaml
workflows: []
viability:
redundancy_ratio:

View file

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

View file

@ -22,6 +22,7 @@ required_standards:
- model/devsecops
- model/network
- model/observability
- model/capability
- standard/tagging
- standard/caring
required_concepts:
@ -87,6 +88,7 @@ artifact_ids:
- small-saas/control/namespace-per-tenant
- small-saas/evidence/access-review-2026-05
- small-saas/incident/cross-tenant-access-attempt
- small-saas/capability-requirements/production
validation_rules:
required_artifact_kinds:
- service

View 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

View file

@ -25,3 +25,5 @@ schemas:
path: capability-record.schema.yaml
- id: attribute-value-type
path: attribute-value-type.schema.yaml
- id: emission-cadence
path: emission-cadence.schema.yaml

View file

@ -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.

View file

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

View file

@ -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": {
"artifact_count": 71,
"relationship_count": 302
"artifact_count": 76,
"relationship_count": 315
},
"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": {
"coherence_components": 1.0,
"consistency_cycles": 0.0,
"coverage_ratio": 1.0,
"granularity_entropy": 4.580874882166957,
"granularity_entropy": 4.582306705233707,
"redundancy_ratio": 0.0
},
"ok": true,

View file

@ -2,10 +2,11 @@
# By Concept
Concept count: **119**
Concept count: **129**
| Concept | Owner | Source |
| --- | --- | --- |
| Assimilation — EmissionCadenceDeclaration handover | `assimilation/emission-cadence` | `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` |
| 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 Small SaaS Alignment Lens | `evaluation/user-engine/small-saas-alignment` | `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 Kernel Map | `kernel/itc-kernel-map` | `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` |
| InfoTechCanon Access Control Model | `model/access-control` | `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/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` |
| Subscription Ledger Dataset | `small-saas/dataset/subscription-ledger` | `artifact_title` |
| Production Deployment | `small-saas/deployment/production` | `artifact_title` |
@ -119,6 +123,12 @@ Concept count: **119**
| CARINGAnalysisFitnessTest | `standard/caring` | `frontmatter.owned_concepts` |
| CARINGAnalysisProcedure | `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` |
| CanonicalRepositoryLayout | `standard/repository-layout` | `frontmatter.owned_concepts` |
| RepositoryDocumentationDirectory | `standard/repository-layout` | `frontmatter.owned_concepts` |

View file

@ -2,6 +2,10 @@
# By Mapping Target
## `assimilation/emission-cadence`
- `standard/emission-cadence` via `derived_from`
## `assimilation/it-capability-canon`
- `model/capability` via `derived_from`
@ -63,6 +67,7 @@
## `kernel/itc-core`
- `assimilation/emission-cadence` via `conforms_to`
- `assimilation/it-capability-canon` via `conforms_to`
- `concept-catalog/purpose-demand` via `conforms_to`
- `kernel/itc-kernel-map` via `maps`
@ -84,6 +89,7 @@
- `review-kit/alignment` via `conforms_to`
- `scheme/practice-pattern` via `conforms_to`
- `standard/caring` via `conforms_to`
- `standard/emission-cadence` via `conforms_to`
- `standard/repository-layout` via `conforms_to`
- `standard/tagging` via `conforms_to`
@ -111,6 +117,7 @@
- `kernel/itc-kernel-map` via `maps`
- `practice-pattern/agentic-drives-functional` via `uses`
- `small-saas/capability-requirements/production` via `uses`
## `model/data`
@ -156,6 +163,7 @@
- `evaluation/user-engine/questions` via `uses`
- `evaluation/user-engine/small-saas-alignment` via `uses`
- `kernel/itc-kernel-map` via `maps`
- `mapping/emission-cadence-handover` via `maps`
- `mapping/purpose-demand-governance-candidates` via `maps`
- `model/access-control` via `uses`
- `model/capability` via `uses`
@ -172,6 +180,7 @@
- `review-kit/alignment/workflow` via `uses`
- `small-saas/policy/tenant-isolation` via `uses`
- `standard/caring` via `imports`
- `standard/emission-cadence` via `imports`
- `standard/repository-layout` via `imports`
## `model/information-space`
@ -215,6 +224,7 @@
- `conformance/railiance-fabric/entity-edge-capture-criteria` via `uses`
- `conformance/railiance-fabric/mapping-expectations` via `maps`
- `kernel/itc-kernel-map` via `maps`
- `mapping/emission-cadence-handover` via `maps`
- `model/capability` via `uses`
- `practice-pattern/agentic-drives-functional` via `uses`
- `practice-pattern/interface-deprecation-strangler` via `uses`
@ -222,6 +232,7 @@
- `review-kit/alignment/model-selection-guide` via `uses`
- `small-saas/evidence/access-review-2026-05` via `uses`
- `standard/caring` via `imports`
- `standard/emission-cadence` via `imports`
## `model/organization`
@ -281,6 +292,7 @@
- `small-saas/control/namespace-per-tenant` via `uses`
- `small-saas/incident/cross-tenant-access-attempt` via `uses`
- `standard/caring` via `imports`
- `standard/emission-cadence` via `related_to`
## `model/task`
@ -325,6 +337,7 @@
- `evaluation/user-engine/small-saas-alignment` via `evaluates`
- `example/consumer-purpose-portfolio` 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/dataset/subscription-ledger` via `instantiates`
- `small-saas/deployment/production` via `instantiates`
@ -375,6 +388,7 @@
## `small-saas/service/billing-portal`
- `small-saas/capability-requirements/production` via `applies_to`
- `small-saas/dataset/subscription-ledger` via `owned_by`
- `small-saas/deployment/production` via `deploys`
@ -420,6 +434,11 @@
- `review-kit/alignment/model-selection-guide` 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`
- `benchmark/caring/kubernetes-rbac` via `uses`

View file

@ -23,6 +23,13 @@
- Path: `standards/caring/InfoTechCanonCaringAccessGovernanceStandard.md`
- Relationships: 11
## InfoTechCanon Emission Cadence Standard
- ID: `standard/emission-cadence`
- Kind: `standard`
- Path: `standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md`
- Relationships: 5
## InfoTechCanon Repository Layout Standard
- ID: `standard/repository-layout`

View file

@ -2,76 +2,81 @@
# 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` |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| `assimilation/it-capability-canon` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `benchmark/caring/kubernetes-rbac` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `stress_tests` | | | `stress_tests` | `stress_tests` | | | `stress_tests` | `stress_tests` | | | `stress_tests` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | `uses` |
| `benchmark/caring/kubernetes-rbac/access-descriptors` | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | `uses` | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | |
| `benchmark/caring/kubernetes-rbac/caring-mapping` | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | `maps` | | | | | | | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | |
| `benchmark/caring/kubernetes-rbac/findings` | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `proposes` | | | | | | | `proposes` | | | | | | | | | | | | | | | | | | | | | | | | | | | `proposes` | | |
| `benchmark/caring/kubernetes-rbac/native-concepts` | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | | | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | |
| `capability-catalog/itc-cap` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `catalog/attribute-value-types` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `catalog/evidence-basis` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `comparison/repo-scoping/canon-benefit-analysis` | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | `maps` | `maps` | | | | | `maps` | | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` |
| `comparison/repo-scoping/consumer-workplan-brief` | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `comparison/repo-scoping/extension-candidates` | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | `proposes` | `proposes` | | | | | `proposes` | | `proposes` | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `comparison/repo-scoping/frame` | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `uses` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `comparison/repo-scoping/report` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | `uses` | | | | | `compares` | | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `concept-catalog/purpose-demand` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `conformance/railiance-fabric` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` |
| `conformance/railiance-fabric/consumer-workplan-brief` | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `conformance/railiance-fabric/entity-edge-capture-criteria` | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `conformance/railiance-fabric/mapping-expectations` | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | `maps` | `maps` | `maps` | | `maps` | `maps` | `maps` | | `maps` | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `conformance/railiance-fabric/visualization-examples` | | | | | | | | | | | | | | | | `part_of` | | `illustrates` | `illustrates` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `evaluation/user-engine` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | `uses` | | `uses` | | | | | `uses` | `uses` | `uses` | `uses` | | | | | `evaluates` | | | | | | | | | | | | | | | | | | | | | `uses` | | |
| `evaluation/user-engine/consumer-workplan-brief` | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `evaluation/user-engine/interface-card-expectations` | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | |
| `evaluation/user-engine/questions` | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | `uses` | | `uses` | | `uses` | | | | | `uses` | `uses` | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `evaluation/user-engine/small-saas-alignment` | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | `uses` | | | | `uses` | | | | | `uses` | | | | | | | | `evaluates` | | | | | | | | | | | | | | | | | | | | | | | |
| `example/consumer-purpose-portfolio` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `illustrates` | | | `illustrates` | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | |
| `kernel/itc-core` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `kernel/itc-kernel-map` | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | | `maps` | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | `maps` |
| `mapping/capability-anchors` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `mapping/purpose-demand-governance-candidates` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | | | `maps` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `model/access-control` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | `uses` | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `model/capability` | `derived_from` | | | | | | `introduces` | | `uses` | | | | | | | | | | | | | | | | | | `conforms_to` | | `introduces` | | | | | | `uses` | | `uses` | | `uses` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `model/data` | | | | | | | | `introduces` | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `model/devsecops` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `model/governance` | | | | | | | | | `introduces` | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `model/information-space` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `model/landscape` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `model/network` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `model/observability` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `model/organization` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `model/purpose-demand-extension` | | | | | | | | | | | | | | | `introduces` | | | | | | | | | | | | `conforms_to` | | | | | | | | `extends` | `uses` | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `model/security` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `model/task` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `pattern/intent-scope-purposes` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `implements` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `practice-pattern/agentic-drives-functional` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | `uses` | | | | `uses` | | | | `uses` | | | `related_to` | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | |
| `practice-pattern/interface-deprecation-strangler` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | `uses` | | | | `uses` | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | |
| `practice/intake-and-assimilation` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `profile/small-saas` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | `requires` | | `requires` | `requires` | `requires` | | `requires` | `requires` | `requires` | `requires` | | `requires` | `requires` | | | | | | | | | | | | | | | | | | | | | | | | | | `requires` | | `requires` |
| `review-kit/alignment` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | `uses` | | | | | | `uses` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | |
| `review-kit/alignment/model-selection-guide` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | `uses` | `uses` | `uses` | `uses` | | | | | `uses` | `part_of` | | | | | | | | | | | | | | | | | | | | `uses` | | `uses` |
| `review-kit/alignment/schema` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `uses` | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | |
| `review-kit/alignment/scorecard` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `uses` | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | |
| `review-kit/alignment/workflow` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `uses` | | `uses` | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | |
| `review-kit/alignment/workplan-template` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | `uses` | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | |
| `scheme/practice-pattern` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `small-saas/control/namespace-per-tenant` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `instantiates` | | | | | | | | | | | `evidenced_by` | | | | | | | | | | `uses` | | |
| `small-saas/dataset/subscription-ledger` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | `instantiates` | | | | | | | | | | | | | `governed_by` | `owned_by` | | | | `partitioned_for` | `partitioned_for` | | | | |
| `small-saas/deployment/production` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | `uses` | | | | | | | | | | `instantiates` | | | | | | | | `implements` | | | | | | `deploys` | | | | `separates` | `separates` | | | | |
| `small-saas/evidence/access-review-2026-05` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | `instantiates` | | | | | | | | | | | | | | | | | | | | | | | |
| `small-saas/incident/cross-tenant-access-attempt` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `instantiates` | | | | | | | | `constrained_by` | | | `evidenced_by` | | | | | | | | | | | | |
| `small-saas/policy/tenant-isolation` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | `instantiates` | | | | | | | | `requires` | | | `evidenced_by` | | | | | | | | | | | | |
| `small-saas/service/billing-portal` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | `instantiates` | | | | | | | | | | | | | | | `part_of` | | `owned_by` | | | | | | |
| `small-saas/system/billing-system` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | `instantiates` | | | | | | | | | | | | | | | | | | `serves` | `serves` | | | | |
| `small-saas/task/onboard-tenant` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | `instantiates` | | | | | | | | | | | | | `governed_by` | | | | `owned_by` | `changes` | | | | | |
| `small-saas/team/platform` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `instantiates` | | | | | | | | | | | | | | | | | | | | | | | |
| `small-saas/tenant/acme` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `instantiates` | | | | | | | | `isolated_by` | | | | | | | | | | | | `represented_by` | | | |
| `small-saas/tenant/globex` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `instantiates` | | | | | | | | `isolated_by` | | | | | | | | | | | | | | | |
| `small-saas/user/ada-admin` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | `uses` | | | | | | | | `instantiates` | | | | | | | | | | | `access_evidenced_by` | | `has_access_under` | | | | `member_of` | | | | | | |
| `standard/caring` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | `imports` | | `imports` | `imports` | `imports` | | | `imports` | `imports` | `imports` | | `imports` | `imports` | | | | | | | | | | | | | | | | | | | | | | | | | | | | `imports` |
| `standard/repository-layout` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | `imports` | `imports` | | | | | | | `imports` | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `standard/tagging` | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | `imports` | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| 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/emission-cadence` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `assimilation/it-capability-canon` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `benchmark/caring/kubernetes-rbac` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `stress_tests` | | | `stress_tests` | `stress_tests` | | | `stress_tests` | `stress_tests` | | | `stress_tests` | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | `uses` |
| `benchmark/caring/kubernetes-rbac/access-descriptors` | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | `uses` | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | |
| `benchmark/caring/kubernetes-rbac/caring-mapping` | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | `maps` | | | | | | | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | |
| `benchmark/caring/kubernetes-rbac/findings` | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `proposes` | | | | | | | `proposes` | | | | | | | | | | | | | | | | | | | | | | | | | | | | `proposes` | | | |
| `benchmark/caring/kubernetes-rbac/native-concepts` | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | | | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | |
| `capability-catalog/itc-cap` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `catalog/attribute-value-types` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `catalog/evidence-basis` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `comparison/repo-scoping/canon-benefit-analysis` | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | `maps` | `maps` | | | | | `maps` | | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` |
| `comparison/repo-scoping/consumer-workplan-brief` | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `comparison/repo-scoping/extension-candidates` | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | `proposes` | `proposes` | | | | | `proposes` | | `proposes` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `comparison/repo-scoping/frame` | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `uses` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `comparison/repo-scoping/report` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | `uses` | | | | | `compares` | | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `concept-catalog/purpose-demand` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `conformance/railiance-fabric` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` |
| `conformance/railiance-fabric/consumer-workplan-brief` | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `conformance/railiance-fabric/entity-edge-capture-criteria` | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `conformance/railiance-fabric/mapping-expectations` | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | `maps` | `maps` | `maps` | | `maps` | `maps` | `maps` | | `maps` | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `conformance/railiance-fabric/visualization-examples` | | | | | | | | | | | | | | | | | `part_of` | | `illustrates` | `illustrates` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `evaluation/user-engine` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | `uses` | | `uses` | | | | | `uses` | `uses` | `uses` | `uses` | | | | | `evaluates` | | | | | | | | | | | | | | | | | | | | | | `uses` | | | |
| `evaluation/user-engine/consumer-workplan-brief` | | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `evaluation/user-engine/interface-card-expectations` | | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | |
| `evaluation/user-engine/questions` | | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | `uses` | | `uses` | | `uses` | | | | | `uses` | `uses` | `uses` | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `evaluation/user-engine/small-saas-alignment` | | | | | | | | | | | | | | | | | | | | | | `part_of` | | | | | | | | | | | | `uses` | | | | `uses` | | | | | `uses` | | | | | | | | `evaluates` | | | | | | | | | | | | | | | | | | | | | | | | | |
| `example/consumer-purpose-portfolio` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `illustrates` | | | `illustrates` | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | |
| `example/emission-cadence/qonto-assistant` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | |
| `kernel/itc-core` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `kernel/itc-kernel-map` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | `maps` | | `maps` | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | `maps` |
| `mapping/capability-anchors` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `mapping/emission-cadence-handover` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | `maps` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | |
| `mapping/purpose-demand-governance-candidates` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `maps` | | | | | | `maps` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `model/access-control` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | `uses` | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `model/capability` | | `derived_from` | | | | | | `introduces` | | `uses` | | | | | | | | | | | | | | | | | | | `conforms_to` | | `introduces` | | | | | | | `uses` | | `uses` | | `uses` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `model/data` | | | | | | | | | `introduces` | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `model/devsecops` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `model/governance` | | | | | | | | | | `introduces` | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `model/information-space` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `model/landscape` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `model/network` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `model/observability` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `model/organization` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `model/purpose-demand-extension` | | | | | | | | | | | | | | | | `introduces` | | | | | | | | | | | | | `conforms_to` | | | | | | | | | `extends` | `uses` | | | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `model/security` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `model/task` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `pattern/intent-scope-purposes` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `implements` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `practice-pattern/agentic-drives-functional` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | `uses` | | | | `uses` | | | | `uses` | | | `related_to` | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | |
| `practice-pattern/interface-deprecation-strangler` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | `uses` | | | | `uses` | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | |
| `practice/intake-and-assimilation` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `profile/small-saas` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | `requires` | | `requires` | `requires` | `requires` | | `requires` | `requires` | `requires` | `requires` | | `requires` | `requires` | | | | | | | | | | | | | | | | | | | | | | | | | | | `requires` | | | `requires` |
| `review-kit/alignment` | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | `uses` | | | | | | `uses` | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | |
| `review-kit/alignment/model-selection-guide` | | | `uses` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | `uses` | `uses` | `uses` | | `uses` | `uses` | `uses` | `uses` | `uses` | `uses` | `uses` | | | | | `uses` | `part_of` | | | | | | | | | | | | | | | | | | | | | `uses` | | | `uses` |
| `review-kit/alignment/schema` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `uses` | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | |
| `review-kit/alignment/scorecard` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `uses` | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | |
| `review-kit/alignment/workflow` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `uses` | | `uses` | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | |
| `review-kit/alignment/workplan-template` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | `uses` | | | | | | `part_of` | | | | | | | | | | | | | | | | | | | | | | | | |
| `scheme/practice-pattern` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `small-saas/capability-requirements/production` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | | `instantiates` | | | | | | | | | | | | | | | `applies_to` | | | | | | | | | | |
| `small-saas/control/namespace-per-tenant` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `instantiates` | | | | | | | | | | | | `evidenced_by` | | | | | | | | | | `uses` | | | |
| `small-saas/dataset/subscription-ledger` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | | | `instantiates` | | | | | | | | | | | | | | `governed_by` | `owned_by` | | | | `partitioned_for` | `partitioned_for` | | | | | |
| `small-saas/deployment/production` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | `uses` | | | | | | | | | | `instantiates` | | | | | | | | | `implements` | | | | | | `deploys` | | | | `separates` | `separates` | | | | | |
| `small-saas/evidence/access-review-2026-05` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | `instantiates` | | | | | | | | | | | | | | | | | | | | | | | | | |
| `small-saas/incident/cross-tenant-access-attempt` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | `instantiates` | | | | | | | | | `constrained_by` | | | `evidenced_by` | | | | | | | | | | | | | |
| `small-saas/policy/tenant-isolation` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | | | `instantiates` | | | | | | | | | `requires` | | | `evidenced_by` | | | | | | | | | | | | | |
| `small-saas/service/billing-portal` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | `instantiates` | | | | | | | | | | | | | | | | `part_of` | | `owned_by` | | | | | | | |
| `small-saas/system/billing-system` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | | | `instantiates` | | | | | | | | | | | | | | | | | | | `serves` | `serves` | | | | | |
| `small-saas/task/onboard-tenant` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | `instantiates` | | | | | | | | | | | | | | `governed_by` | | | | `owned_by` | `changes` | | | | | | |
| `small-saas/team/platform` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `instantiates` | | | | | | | | | | | | | | | | | | | | | | | | | |
| `small-saas/tenant/acme` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `instantiates` | | | | | | | | | `isolated_by` | | | | | | | | | | | | `represented_by` | | | | |
| `small-saas/tenant/globex` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | `instantiates` | | | | | | | | | `isolated_by` | | | | | | | | | | | | | | | | |
| `small-saas/user/ada-admin` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `uses` | | | | | | | | | `uses` | | | | | | | | `instantiates` | | | | | | | | | | | | `access_evidenced_by` | | `has_access_under` | | | | `member_of` | | | | | | | |
| `standard/caring` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | `imports` | | `imports` | `imports` | `imports` | | | `imports` | `imports` | `imports` | | `imports` | `imports` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `imports` |
| `standard/emission-cadence` | `derived_from` | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | `imports` | | | | `imports` | | | `related_to` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `standard/repository-layout` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | `imports` | `imports` | | | | | | | `imports` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| `standard/tagging` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `conforms_to` | | | | | | | | | | | | | | | | | `imports` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |

View file

@ -3,7 +3,7 @@
# Kernel Overview
- Infospace: `canon`
- Artifacts: 71
- Artifacts: 76
## Artifact Kinds
@ -12,7 +12,7 @@
- `alignment-review-schema`: 1
- `alignment-review-workflow`: 1
- `alignment-scorecard`: 1
- `assimilation`: 1
- `assimilation`: 2
- `benchmark-findings`: 1
- `benchmark-workspace`: 1
- `benefit-analysis`: 1
@ -27,11 +27,11 @@
- `consumer-workplan-template`: 1
- `evaluation-pack`: 1
- `evaluation-question-set`: 1
- `example`: 1
- `example`: 2
- `extension-candidate-set`: 1
- `interface-card-expectation`: 1
- `kernel`: 2
- `mapping`: 2
- `mapping`: 3
- `mapping-expectation`: 1
- `model`: 12
- `model-extension`: 1
@ -43,19 +43,20 @@
- `practice-pattern-scheme`: 1
- `profile`: 1
- `profile-alignment`: 1
- `profile-artifact`: 13
- `standard`: 3
- `profile-artifact`: 14
- `standard`: 4
- `visualization-example-set`: 1
## Relationship Types
- `access_evidenced_by`: 1
- `applies_to`: 1
- `changes`: 1
- `compares`: 1
- `conforms_to`: 25
- `conforms_to`: 28
- `constrained_by`: 1
- `deploys`: 1
- `derived_from`: 1
- `derived_from`: 2
- `evaluates`: 2
- `evidenced_by`: 3
- `extends`: 1
@ -63,20 +64,20 @@
- `has_access_under`: 1
- `illustrates`: 4
- `implements`: 2
- `imports`: 14
- `instantiates`: 13
- `imports`: 16
- `instantiates`: 14
- `introduces`: 5
- `isolated_by`: 2
- `maps`: 37
- `maps`: 40
- `member_of`: 1
- `owned_by`: 3
- `part_of`: 22
- `partitioned_for`: 2
- `proposes`: 7
- `related_to`: 1
- `related_to`: 2
- `represented_by`: 1
- `requires`: 13
- `separates`: 2
- `serves`: 2
- `stress_tests`: 6
- `uses`: 125
- `uses`: 126

View file

@ -2,7 +2,7 @@
# Repository Tree
File count: **191**
File count: **208**
- `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.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-kernel-map.md`
- `agent/briefs/mapping-capability-anchors.md`
- `agent/briefs/mapping-emission-cadence-handover.md`
- `agent/briefs/mapping-purpose-demand-governance-candidates.md`
- `agent/briefs/model-access-control.md`
- `agent/briefs/model-capability.md`
@ -48,6 +50,7 @@ File count: **191**
- `agent/briefs/model-security.md`
- `agent/briefs/model-task.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/profile-small-saas.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/scheme-practice-pattern.md`
- `agent/briefs/standard-caring.md`
- `agent/briefs/standard-emission-cadence.md`
- `agent/briefs/standard-repository-layout.md`
- `agent/briefs/standard-tagging.md`
- `agent/consumer-briefs/railiance-fabric.md`
@ -76,6 +80,15 @@ File count: **191**
- `agent/templates/consumer-brief.template.md`
- `artifacts/index.yaml`
- `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/it-capability-canon/ASSIMILATION.md`
- `assimilation/it-capability-canon/assimilation.yaml`
@ -145,6 +158,7 @@ File count: **191**
- `patterns/README.md`
- `patterns/intent-scope-purposes.md`
- `profiles/README.md`
- `profiles/small-saas/artifacts/capability-requirements.yaml`
- `profiles/small-saas/artifacts/control.namespace-per-tenant.yaml`
- `profiles/small-saas/artifacts/dataset.subscription-ledger.yaml`
- `profiles/small-saas/artifacts/deployment.production.yaml`
@ -169,6 +183,7 @@ File count: **191**
- `schemas/capability-record.schema.yaml`
- `schemas/capability.schema.yaml`
- `schemas/concept.schema.yaml`
- `schemas/emission-cadence.schema.yaml`
- `schemas/index.yaml`
- `schemas/interface-card.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/findings-and-canon-pressure.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/tagging/InfoTechCanonTaggingStandard.md`
- `validation/README.md`

View file

@ -7,7 +7,7 @@ id: ITC-IN-0001
kind: intake
title: 'Declaration requested: state this repository''s layer in INTENT.md (security
layer model §11)'
status: open
status: closed
origin: cross-repo
origin_ref: net-kingdom security-layer-model_v0.4 §11
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
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'
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'
```

View file

@ -5,7 +5,8 @@ description = "Practical service surface for the InfoTechCanon infospace."
requires-python = ">=3.12"
dependencies = [
"PyYAML>=6",
"infospace-bench @ file:///home/worsch/infospace-bench",
"jsonschema>=4.10",
"infospace-bench==0.1.0",
]
[project.scripts]

View file

@ -9,9 +9,13 @@ from typing import Any
BENCH_PACKAGE = "_info_tech_canon_infospace_bench"
BENCH_SOURCE_ROOT = (
Path(__file__).resolve().parents[3] / "infospace-bench" / "src" / "infospace_bench"
)
_spec = importlib.util.find_spec("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:

View file

@ -6,6 +6,7 @@ from pathlib import Path
from typing import Any
import yaml
from .paths import infospace_root
REPO_ROOT = Path(__file__).resolve().parents[2]
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]:
catalog_path = path or CATALOG_PATH
catalog_path = path or infospace_root() / "models/capability/capabilities.yaml"
if not catalog_path.is_file():
raise CapabilityReviewError(
"capability_catalog_missing",

View file

@ -113,6 +113,21 @@ def build_parser() -> argparse.ArgumentParser:
capability_review.add_argument("record")
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.add_argument("--host", default="127.0.0.1")
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))
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]:
return profile_inspect(args.profile, _root(args))

View 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

View 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"}

View 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"

View file

@ -19,10 +19,11 @@ from .bench import (
run_collection_checks,
)
from .validation import structural_checks
from .paths import infospace_root
REPO_ROOT = Path(__file__).resolve().parents[2]
DEFAULT_INFOSPACE_ROOT = REPO_ROOT / "infospace"
DEFAULT_INFOSPACE_ROOT = infospace_root()
REVIEW_KIT_COMPONENTS = {
"manifest": "agent/review-kit/review-kit.yaml",
@ -65,18 +66,18 @@ class 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:
infospace = load_infospace(infospace_root)
infospace = load_infospace(resolved_root)
except Exception as exc:
raise CanonServiceError(
"infospace_load_failed",
f"Unable to load infospace at {infospace_root}",
{"root": str(infospace_root), "reason": str(exc)},
f"Unable to load infospace at {resolved_root}",
{"root": str(resolved_root), "reason": str(exc)},
) from exc
return CanonContext(
repo_root=REPO_ROOT,
infospace_root=infospace_root,
repo_root=resolved_root.parent,
infospace_root=resolved_root,
infospace=infospace,
)
@ -217,6 +218,11 @@ def validate_canon(root: Path | str | None = None) -> dict[str, Any]:
structural = structural_checks(context)
errors.extend(structural["errors"])
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 {
"ok": not errors,
@ -224,6 +230,7 @@ def validate_canon(root: Path | str | None = None) -> dict[str, Any]:
"warnings": warnings,
"metrics": checks.metrics,
"details": checks.details,
"coverage": coverage(context),
}
@ -232,6 +239,8 @@ def write_validation_report(
root: Path | str | None = None,
) -> dict[str, Any]:
payload = validate_canon(root)
from .maintenance import source_evidence
payload["evidence"] = source_evidence(infospace_root(root))
path = Path(destination)
path.parent.mkdir(parents=True, exist_ok=True)
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
try:
return review_path(path)
return review_path(path, infospace_root(root) / "models/capability/capabilities.yaml")
except CapabilityReviewError as exc:
raise CanonServiceError(exc.code, exc.message) from exc

View file

@ -56,6 +56,7 @@ REQUIRED_SCHEMAS = (
"capability-record.schema.yaml",
"attribute-value-type.schema.yaml",
"practice-pattern.schema.yaml",
"emission-cadence.schema.yaml",
)
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_infospace_dirs(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_artifact_index(context.repo_root, context.infospace_root, errors)
_check_practice_pattern_assets(
@ -599,11 +601,11 @@ def _check_required_infospace_dirs(
)
def _check_capability_catalog(errors: list[dict[str, Any]]) -> None:
from .capability import check_catalog_contract
def _check_capability_catalog(infospace_root: Path, errors: list[dict[str, Any]]) -> None:
from .capability import check_catalog_contract, load_catalog
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
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(
infospace_root: Path,
errors: list[dict[str, Any]],

View file

@ -62,4 +62,4 @@ def test_api_route_validates_small_saas_profile() -> None:
assert status == HTTPStatus.OK
assert payload["ok"] is True
assert payload["details"]["artifact_count"] == 14
assert payload["details"]["artifact_count"] == 15

View file

@ -11,7 +11,7 @@ def test_cli_inspect_emits_json(capsys) -> None:
assert exit_code == 0
payload = json.loads(capsys.readouterr().out)
assert payload["ok"] is True
assert payload["infospace"]["artifact_count"] == 71
assert payload["infospace"]["artifact_count"] == 76
def test_cli_missing_profile_uses_structured_error(capsys) -> None:

View 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
View 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"])

View file

@ -25,11 +25,11 @@ def test_inspect_canon_counts_artifact_kinds() -> None:
assert payload["ok"] is True
assert payload["infospace"]["slug"] == "canon"
assert payload["infospace"]["artifact_count"] == 71
assert payload["infospace"]["artifact_count"] == 76
assert payload["infospace"]["kinds"] == {
"access-descriptor-set": 1,
"alignment-review-kit": 1,
"assimilation": 1,
"assimilation": 2,
"alignment-review-schema": 1,
"alignment-review-workflow": 1,
"alignment-scorecard": 1,
@ -47,11 +47,11 @@ def test_inspect_canon_counts_artifact_kinds() -> None:
"consumer-workplan-template": 1,
"evaluation-pack": 1,
"evaluation-question-set": 1,
"example": 1,
"example": 2,
"extension-candidate-set": 1,
"interface-card-expectation": 1,
"kernel": 2,
"mapping": 2,
"mapping": 3,
"mapping-expectation": 1,
"model": 12,
"model-extension": 1,
@ -63,15 +63,15 @@ def test_inspect_canon_counts_artifact_kinds() -> None:
"practice-pattern-scheme": 1,
"profile-alignment": 1,
"profile": 1,
"profile-artifact": 13,
"standard": 3,
"profile-artifact": 14,
"standard": 4,
"visualization-example-set": 1,
}
def test_model_and_standard_lists_are_filtered() -> None:
assert list_models()["count"] == 12
assert list_standards()["count"] == 3
assert list_standards()["count"] == 4
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["errors"] == []
assert "warnings" in payload
assert payload["details"]["artifact_count"] == 71
assert payload["details"]["artifact_count"] == 76
def test_graph_exports_relationship_summary() -> None:
payload = artifact_graph()
assert payload["ok"] is True
assert payload["graph"]["node_count"] == 71
assert payload["graph"]["node_count"] == 76
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"]
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:
root = tmp_path / "infospace"
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"
).is_file()
assert (root / "agent" / "briefs" / "review-kit-alignment.md").is_file()
assert (root / "agent" / "briefs" / "standard-emission-cadence.md").is_file()
assert (
root / "agent" / "templates" / "consumer-alignment-workplan.template.md"
).is_file()

View 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
T01T04 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 T01T05 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.

View file

@ -8,7 +8,7 @@ repo: info-tech-canon
status: finished
priority: medium
created: "2026-08-14"
updated: "2026-08-15"
updated: "2026-09-04"
depends_on_workplans:
- ITC-WP-0003
- ITC-WP-0006
@ -102,7 +102,7 @@ entry per source/target pair, registered as `mapping/capability-anchors`.
```task
id: ITC-WP-0014-T04
status: todo
status: done
priority: medium
depends_on: [T02]
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
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
```task

View 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 Kings 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.

View file

@ -2,7 +2,7 @@ repository: info-tech-canon
type: workplan-registry
status: active
created: "2026-05-23"
updated: "2026-06-08"
updated: "2026-09-05"
implementation_decisions:
infospace_root: infospace/
@ -16,6 +16,17 @@ implementation_decisions:
consumer_workplans_live_in_consumer_repos: true
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
title: Infospace Scaffold And Seed Placement
status: finished
@ -231,3 +242,35 @@ workplans:
- models/governance/evidence-basis.yaml
- EvidenceBasis section in ITC-GOV
- 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