Implement canon conformance and maintenance optimizations
Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a06e82-3e08-7042-a79d-438ac6eed8db
This commit is contained in:
parent
a2e7f22d8d
commit
b081d39da1
64 changed files with 4491 additions and 373 deletions
1090
.repo-manager/index.json
Normal file
1090
.repo-manager/index.json
Normal file
File diff suppressed because it is too large
Load diff
39
CHANGELOG.md
39
CHANGELOG.md
|
|
@ -15,6 +15,45 @@ semantics.
|
|||
|
||||
---
|
||||
|
||||
## 0.7.0 — 2026-09-04
|
||||
|
||||
### Added — ecosystem-wide EmissionCadenceDeclaration contract
|
||||
|
||||
**Change.** Added the draft `ITC-EMISSION-CADENCE` standard and JSON Schema
|
||||
contract version `0.1`. The contract defines source-authored expected-rate,
|
||||
heartbeat, and reconciliation cadence semantics, namespaced profile extensions,
|
||||
strict form validation, and compatibility rules. A schema-valid
|
||||
`qonto-assistant` worked example demonstrates both forms without claiming to be
|
||||
the source-owned live declaration.
|
||||
|
||||
**Ownership.** InfoTechCanon owns the generic forms, fields, validation, and
|
||||
evolution under `GH-DEC-2026-004`. NetKingdom owns its importing security
|
||||
profile, including evidence-class policy and stronger requirements for rare
|
||||
load-bearing streams. Sources own instances; observers own evaluation and
|
||||
findings.
|
||||
|
||||
**Rationale.** Stream silence cannot be evaluated from event contents alone,
|
||||
and a Staff-layer consumer must not own the Taxonomy contract it evaluates.
|
||||
The split preserves one owner per semantic layer without turning NetKingdom
|
||||
security doctrine into an ecosystem-wide rule.
|
||||
|
||||
**Provenance.** King's Guard draft 0.1.0, frozen under
|
||||
`assimilation/emission-cadence`; disposition `adapt`; `ITC-WP-0018`.
|
||||
|
||||
**Breaking:** no. This is a new draft artifact and schema.
|
||||
|
||||
**Validation.** The built-in example is checked against JSON Schema Draft 2020-12;
|
||||
negative tests cover missing/ambiguous windows, missing intermittent mechanisms,
|
||||
and unnamespaced profile fields. `make validate` reports 0 errors and 0 warnings;
|
||||
`make test` passes 29 tests.
|
||||
|
||||
**Completed illustration.** The Small-SaaS profile now includes the optional
|
||||
ITC-CAP requirement/provision record left by `ITC-WP-0014-T04`. Its four
|
||||
requirements are joined to catalog-valid provisions and evidence and meet their
|
||||
declared maturity floors.
|
||||
|
||||
---
|
||||
|
||||
## 0.6.0 — 2026-08-15
|
||||
|
||||
### Frozen — ITC-CAP draft; AttributeValueType catalog; joinable review
|
||||
|
|
|
|||
30
INTENT.md
30
INTENT.md
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
14
Makefile
14
Makefile
|
|
@ -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
|
||||
|
|
|
|||
13
README.md
13
README.md
|
|
@ -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
308
SCOPE.md
|
|
@ -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/` | Intent–Scope–Purposes, PracticePattern scheme, InterfaceDeprecationStrangler, and AgenticDrivesFunctional. |
|
||||
| Mappings and assimilation | Mapping artifacts and source-preserving workspaces for IT Capability Canon and Emission Cadence, including comparisons, dispositions, gaps, and open questions. |
|
||||
| `infospace/evaluations/` | Evaluation/comparison packs for user-engine, railiance-fabric, repo-scoping, and repository-layout. These prepare adoption and review; they do not certify deployed consumers. |
|
||||
| CARING Kubernetes RBAC benchmark | Native-concept mappings, structured access descriptors, findings, conflicts, and proposed improvements. |
|
||||
| `infospace/agent/` | Generated retrieval indexes and artifact briefs, consumer briefs, interface-card template, alignment review kit, and consumer workplan template. |
|
||||
|
||||
The current kernel consists of:
|
||||
The root is the service and governance shell. `seeds/` preserves provenance.
|
||||
`incoming/`, `demand/`, and `feedback/` distinguish source material, consumer
|
||||
needs, and utility evidence. Workplans and intake records track work;
|
||||
`history/` holds dated assessments. Generated navigation lives under
|
||||
`infospace/indexes/`, `infospace/views/`, and `infospace/agent/`.
|
||||
|
||||
```text
|
||||
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).
|
||||
|
|
|
|||
|
|
@ -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 |
|
||||
|
|
|
|||
29
canon.yaml
29
canon.yaml
|
|
@ -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
86
docs/canon-consumption.md
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
# Reproducible canon consumption
|
||||
|
||||
The Python service and canon corpus have independent versions. Install the
|
||||
service into a virtual environment and supply a pinned corpus checkout with
|
||||
`--root /path/to/corpus/infospace` or `INFO_TECH_CANON_ROOT`. Source-tree users
|
||||
may use `make` targets; `BENCH_SOURCE` is an optional development override.
|
||||
Installed use does not depend on adjacent source directories.
|
||||
|
||||
## Installation boundary
|
||||
|
||||
The service requires Python 3.12+, PyYAML, jsonschema, and the reference-data
|
||||
modules of infospace-bench 0.1.0. Its distribution is discovered through Python's
|
||||
installed module search path. A narrow adapter avoids executing the upstream
|
||||
initializer, which imports unrelated database/engine integrations.
|
||||
|
||||
The upstream bench distribution still declares workstation-specific dependencies
|
||||
for its full application. Until its owner separates the reference-data package,
|
||||
use reviewed local wheels and install the narrow service dependencies explicitly:
|
||||
|
||||
```bash
|
||||
python3 -m venv /path/to/venv
|
||||
/path/to/venv/bin/pip install PyYAML jsonschema
|
||||
/path/to/venv/bin/pip install --no-deps --no-index /path/to/infospace_bench-0.1.0-py3-none-any.whl /path/to/info_tech_canon-0.1.0-py3-none-any.whl
|
||||
/path/to/venv/bin/info-tech-canon --root /path/to/canon/infospace inspect
|
||||
```
|
||||
|
||||
Pin wheel hashes and the corpus revision in consumer deployment records.
|
||||
This procedure supports canon reference operations, not the complete bench
|
||||
application. A normal transitive dependency installation remains an upstream
|
||||
packaging limitation. The corpus is supplied separately and includes its root
|
||||
governance files and provenance inputs (including `seeds/` and `demand/`) when
|
||||
whole-repository validation is required.
|
||||
|
||||
## Declaration and bundle workflow
|
||||
|
||||
```bash
|
||||
info-tech-canon --root /path/to/canon/infospace emission-review /path/to/source-declaration.yaml
|
||||
info-tech-canon --root /path/to/canon/infospace export-emission-contract /path/to/bundles
|
||||
```
|
||||
|
||||
The export contains the standard, schema, illustrative example, and a manifest
|
||||
of SHA-256 file hashes. Its tar filename contains the archive SHA-256. Identical
|
||||
inputs produce identical bytes; a different contract produces a different name.
|
||||
Existing different contents at the computed path cause failure. The export is
|
||||
a local artifact, not evidence of remote publication or independent adoption.
|
||||
|
||||
The shared validator accepts YAML or JSON, applies the schema, and additionally
|
||||
checks unique `source_id` values. A schema-only consumer must implement that
|
||||
uniqueness check too. Unsupported versions and malformed forms fail. Validation
|
||||
does not assess operational truth or importing-profile policy.
|
||||
|
||||
## Independent adoption gate
|
||||
|
||||
File owner-authored results under `feedback/` using its existing intake process.
|
||||
Each implementation's evidence must include:
|
||||
|
||||
- source repository, accountable owner, implementation revision, declaration path;
|
||||
- contract version, bundle SHA-256, and schema SHA-256;
|
||||
- importing consumer/profile revision and its additional policy checks;
|
||||
- positive result for the actual source-owned declaration;
|
||||
- negative results for unsupported versions, duplicate IDs, missing windows,
|
||||
and malformed heartbeat/reconciliation forms;
|
||||
- distinction between locally tested behavior and observed deployed behavior,
|
||||
with evidence references and dates for each claim.
|
||||
|
||||
Two records must represent independently implemented sources; copying the
|
||||
illustrative example twice does not count. A human/owner review must assess
|
||||
independence and operational claims. Draft promotion remains pending in
|
||||
INFO-WP-0019-T06 until this evidence exists. No new profile or pattern should
|
||||
be created solely to fill an inventory: use recurring consumer demand and
|
||||
recorded CARING gaps to select the next semantic work.
|
||||
|
||||
## Maintenance and coverage
|
||||
|
||||
`validation-coverage` lists artifact checks and unproven properties.
|
||||
`scope-inventory` derives counts and model/standard IDs from the registry.
|
||||
`make check-generated` renders in a temporary copy and reports missing/stale
|
||||
assets without repairing the checkout. `make refresh` performs regeneration.
|
||||
`make check` runs tests, freshness, canon validation, and profile validation.
|
||||
Work-record projections remain owned by `statehub fix-consistency`.
|
||||
|
||||
Validation reports written with `validate --write` include UTC time, Git
|
||||
revision, dirty status, and a digest of all infospace files except validation
|
||||
reports. The digest captures uncommitted corpus changes; Git revision alone
|
||||
does not. `benchmark-reads` measures ten uncached inspections. Use measurements
|
||||
and an explicit latency target before introducing a cache.
|
||||
193
history/2026-09-05_002437+0200-scope-against-intent.md
Normal file
193
history/2026-09-05_002437+0200-scope-against-intent.md
Normal file
|
|
@ -0,0 +1,193 @@
|
|||
# Scope against intent — repository review
|
||||
|
||||
Review date: 2026-09-05, Europe/Berlin.
|
||||
Evidence timestamp: 2026-09-04T22:24:37Z (2026-09-05T00:24:37+02:00).
|
||||
Base commit: `78e917e366dfc26f9abdf92240006bbea7922751`.
|
||||
Basis: current working tree, including pre-existing modified and untracked
|
||||
files; the commit alone does not reproduce this assessment.
|
||||
|
||||
## Assessment
|
||||
|
||||
Implemented scope substantially advances the intent: there is a usable canon
|
||||
service, connected artifact corpus, generated retrieval assets, executable
|
||||
profile examples, and concrete assimilation results. The old `SCOPE.md`
|
||||
materially understated this by describing validation, schemas, indexes,
|
||||
profiles, and agent briefs as future work and showing obsolete root-level paths.
|
||||
|
||||
The principal remaining gap is assurance that declared semantic contracts
|
||||
support independent integration. Passing repository checks demonstrates local
|
||||
consistency within their coverage; it does not establish exhaustive concept
|
||||
ownership, compatibility across versions, or consumer adoption. The Taxonomy
|
||||
boundary is coherent with the service: serving and checking artifacts supports
|
||||
that role. No reviewed implementation establishes ownership of consumer runtime state.
|
||||
|
||||
`SCOPE.md` was rewritten to describe the implemented baseline, current paths,
|
||||
ownership boundaries, maturity, dependencies, and limits. Existing implementation
|
||||
changes were preserved. Recommendations below were not implemented by this review.
|
||||
|
||||
## Changes reviewed
|
||||
|
||||
Recent commits include the NetKingdom layering note and source reference,
|
||||
work-record identifiers, intake creation, and index maintenance. The working
|
||||
tree incorporates the layering clarification into the body of `INTENT.md`.
|
||||
The original interoperability commitments remain intact.
|
||||
|
||||
The main uncommitted implementation adds Emission Cadence: a generic standard,
|
||||
JSON Schema, adapted example, source-preserving assimilation workspace, artifact
|
||||
registration, retrieval assets, validation, and negative tests. `canon.yaml`
|
||||
and `CHANGELOG.md` advance the canon to `0.7.0` while retaining draft status.
|
||||
The contract supports two cadence forms and namespaced profile extensions.
|
||||
Its worked example explicitly disclaims being the source-owned live declaration.
|
||||
|
||||
The other substantive addition completes the Small-SaaS capability illustration
|
||||
and marks ITC-WP-0014-T04 done. Workplan/index, intake, and `.repo-manager/`
|
||||
metadata changes are work-management surfaces, not additional semantic
|
||||
capabilities. ITC-WP-0018 records local Emission Cadence work as finished.
|
||||
Local workplans scanned are marked finished; this does not close promotion
|
||||
questions retained in canon artifacts.
|
||||
|
||||
## Verification and limits
|
||||
|
||||
| Check run | Result |
|
||||
| --- | --- |
|
||||
| `make test` | 29 passed in 6.47 seconds. |
|
||||
| `PYTHONPATH=src python3 -m info_tech_canon validate` | Pass; 76 artifacts, 315 relationships, zero errors/warnings. |
|
||||
| `PYTHONPATH=src python3 -m info_tech_canon profile validate small-saas` | Pass; 15 artifacts and 15 payloads, zero errors/warnings. |
|
||||
| `generation.concept_ownership(load_context())` | 129 entries, zero cross-owner conflicts; one same-owner duplicate for AgenticDrivesFunctional. |
|
||||
|
||||
Validation ran without rewriting `infospace/validation/latest.json`. Ownership
|
||||
entries include artifact titles and explicitly declared concepts, rather than
|
||||
129 independently extracted semantic definitions. The duplicate is not an
|
||||
ownership conflict.
|
||||
|
||||
The State Hub returned no active domain workplans. Its inbox contained a
|
||||
2026-09-04 NetKingdom request awaiting the published Emission Cadence contract
|
||||
and stable locator (message `13f55e9c-5660-4a30-9bfe-4c546f5064f8`), which was
|
||||
read and marked read. This shows a pending handoff at message time, not proof
|
||||
that adoption remains blocked today. No consumer repositories, remote release
|
||||
publication, or deployed integrations were verified. External standards were
|
||||
not audited; this is a repository-local assessment.
|
||||
|
||||
## Coverage against intent
|
||||
|
||||
| Intent commitment | Repository evidence | Assessment and gap |
|
||||
| --- | --- | --- |
|
||||
| Clear owner for every canonical concept | Models, owned_concepts, generated ownership index | Partial. Titles and explicit frontmatter do not cover every concept in prose. |
|
||||
| Import instead of redefine | Artifact relationships, import matrix, ownership boundaries, capability anchor mappings | Partial. Comprehensive concept-level import/redefinition enforcement is absent. |
|
||||
| Explicit, versioned, scoped, justified external mappings | Mapping artifacts, assimilation comparisons, CARING RBAC benchmark | Partial. Mapping schema requires only id/title/source/target; versions, scope, and rationale are not mandatory. Candidate mappings are not a complete external-standard mapping corpus. |
|
||||
| Assimilation produces gaps, conflicts, mappings, proposals | IT Capability Canon and Emission Cadence workspaces; CARING findings | Substantially present. Retained proposals and questions need follow-through. |
|
||||
| Patterns explain practical combinations | PracticePattern scheme, two practice patterns, Intent–Scope–Purposes | Present but narrow; expand from recurring consumer evidence. |
|
||||
| Profiles constrain concrete implementations | Executable Small-SaaS profile and capability illustration | Present for one local proof; independent behavior and compatibility remain unverified. |
|
||||
| Useful to humans and agents | Markdown, CLI/API, graph/views, retrieval indexes, briefs, alignment kit | Strong local support; portability and freshness checks remain gaps. |
|
||||
| Preserve provenance, compatibility, rationale | Frozen sources, changelog, versions, mapping rationale, draft gates | Partial. Policies exist; immutable distribution and cross-version consumer evidence were not demonstrated. |
|
||||
| Initial kernel, models, formats, and subsystem interface examples | Kernel, models, schemas, profile proofs, interface-card template and expectation packs | Most structures exist; a template does not establish independently owned interface declarations. |
|
||||
| Taxonomy ownership without runtime-state ownership | Updated intent, cadence ownership section, local read-only API | Aligned. Operational policy, scheduling, and observation stay with consumer owners. |
|
||||
|
||||
## Gaps and closure criteria
|
||||
|
||||
### G1 — Semantic validation coverage (high)
|
||||
|
||||
Evidence: [validation.py](../src/info_tech_canon/validation.py),
|
||||
[generation.py](../src/info_tech_canon/generation.py), and
|
||||
[mapping schema](../infospace/schemas/mapping.schema.yaml).
|
||||
Required schemas are generally checked for presence; selected families receive
|
||||
specialized checks. No general pass proves every registered payload conforms
|
||||
to its declared schema. Ownership generation reads titles and frontmatter;
|
||||
general Markdown links are not comprehensively validated by the reviewed local
|
||||
validator.
|
||||
|
||||
Closure: publish a validation-coverage inventory, bind supported artifact kinds
|
||||
to schemas, and enforce concept ownership/import references and mapping metadata
|
||||
with representative negative cases. Explicitly label unsupported checks so
|
||||
zero errors cannot be mistaken for full semantic conformance.
|
||||
|
||||
### G2 — CARING conformance (high)
|
||||
|
||||
The [benchmark findings](../infospace/standards/caring/benchmarks/kubernetes-rbac/findings-and-canon-pressure.yaml)
|
||||
explicitly identify a missing CARINGAccessDescriptor schema, effective-access
|
||||
derivation rules, tenant-boundary evidence profile, and DerivedCapability
|
||||
ownership pressure. Structured examples do not prove deployed effective access.
|
||||
|
||||
Closure: formalize descriptors and representative derivation rules, resolve
|
||||
ownership, and exercise workload-mediated access, secrets, and tenant-boundary
|
||||
cases. Keep operational evaluation with the relevant consumer.
|
||||
|
||||
### G3 — Consumer adoption and contract distribution (high)
|
||||
|
||||
The [Emission Cadence standard](../infospace/standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md)
|
||||
distinguishes example validity from operational truth. `canon.yaml` requires
|
||||
two independent source implementations before draft promotion. The validator
|
||||
checks the bundled example; there is no general Emission Cadence CLI command
|
||||
accepting arbitrary consumer declarations analogous to `capability-review`.
|
||||
|
||||
Closure: provide an immutable, version-addressable contract bundle and reusable
|
||||
validator covering both JSON Schema and unique source_id semantics. Capture
|
||||
two source-owned declarations and importing-consumer results, including
|
||||
unsupported-version rejection. Retain the evidence owner and tested canon
|
||||
revision. Do not infer publication from a local changelog entry.
|
||||
|
||||
### G4 — Portable service consumption (medium)
|
||||
|
||||
[pyproject.toml](../pyproject.toml) declares an absolute local infospace-bench
|
||||
dependency; [bench.py](../src/info_tech_canon/bench.py) loads modules from a
|
||||
sibling source checkout. The service locates canon data relative to its code.
|
||||
Local tests do not prove a wheel installed elsewhere can find its dependency
|
||||
or corpus.
|
||||
|
||||
Closure: use a reproducible dependency source, normal package imports, and an
|
||||
explicit corpus location/package-data contract. Demonstrate installation and
|
||||
inspection in a clean environment without the workstation directory layout.
|
||||
|
||||
### G5 — Freshness and lifecycle visibility (medium)
|
||||
|
||||
The old scope contradicted implemented features.
|
||||
[WORK-RECORDS.md](../WORK-RECORDS.md) still lists ITC-WP-0014-T04 as todo,
|
||||
while its working-tree workplan says done. Package and canon versions differ
|
||||
without explanation in the previous scope. The generated validation report
|
||||
has no source revision or execution timestamp.
|
||||
|
||||
Closure: regenerate work-record projections from owner files, document version
|
||||
surfaces, and add deterministic generated-asset freshness checks and validation
|
||||
revision/timestamp evidence. The scope rewrite resolves the scope-description
|
||||
part; projection maintenance remains a recommendation.
|
||||
|
||||
### G6 — Remaining semantic pressure (medium, demand driven)
|
||||
|
||||
[IT Capability Canon open questions](../infospace/assimilation/it-capability-canon/open-questions.md)
|
||||
retain canon-wide state qualifiers, continuity/recovery ownership, and structural
|
||||
models behind commerce/intelligence capabilities.
|
||||
[Capability anchor mappings](../infospace/mappings/capability-anchors.yaml)
|
||||
record low-confidence recovery/continuity alignment and unmapped domains.
|
||||
|
||||
Closure: resolve owners where consumers need structural contracts, record
|
||||
rationale and compatibility impact, and preserve explicit deferral where only
|
||||
a capability identifier is needed. Intent does not require inventing every
|
||||
possible domain model now.
|
||||
|
||||
## Possible optimizations
|
||||
|
||||
1. **Prioritize reusable conformance over corpus expansion.** Start with G1 and
|
||||
the cadence validator/bundle in G3. This advances integration by declared
|
||||
contract and makes draft promotion evidence tangible.
|
||||
2. **Reduce metadata drift.** Define authoritative inputs and derive navigation,
|
||||
work-record projections, and a small scope inventory from them. Check that
|
||||
regeneration produces no unexpected diff; retain human-authored judgments.
|
||||
3. **Organize validation by contract.** The roughly 2,040-line validator embeds
|
||||
many pack-specific ID sets and checks. Factor reusable shape, reference, and
|
||||
provenance checks into common code and keep specialized semantics alongside
|
||||
contracts. Preserve meaningful negative tests during refactoring.
|
||||
4. **Make consumption reproducible.** Fix the sibling-loader dependency and
|
||||
prove clean installation before expanding the HTTP service. Immutable
|
||||
artifacts let consumers pin inputs without a live canon runtime dependency.
|
||||
5. **Use consumer evidence to select the next profile or pattern.** Complete
|
||||
the two-source cadence proof and target CARING's recorded gaps before adding
|
||||
speculative catalogs. Route needs through demand and utility results through
|
||||
feedback, preserving ownership.
|
||||
6. **Measure before caching.** service.load_context() reloads the infospace for
|
||||
many operations. If repeated API reads become material, benchmark parsing
|
||||
cost and consider revision-keyed snapshots with explicit invalidation.
|
||||
No performance bottleneck was measured in this review.
|
||||
|
||||
Suggested order: conformance coverage and adoption proof, freshness and
|
||||
portability, then targeted semantic expansion. These are follow-up options,
|
||||
not changes to the repository's runtime responsibilities.
|
||||
87
history/2026-09-05_optimization-implementation.md
Normal file
87
history/2026-09-05_optimization-implementation.md
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
# Optimization implementation — 2026-09-05
|
||||
|
||||
Workplan: [INFO-WP-0019](../workplans/INFO-WP-0019-conformance-and-maintenance.md).
|
||||
Registered State Hub UUID: `b29261ba-c1e4-5533-8185-ab2d5b433685`.
|
||||
Implements the local optimization recommendations from the timestamped scope
|
||||
assessment. Existing uncommitted changes were retained.
|
||||
|
||||
## Delivered
|
||||
|
||||
- `contracts.py`: shared JSON Schema validation and Emission Cadence semantics;
|
||||
arbitrary YAML/JSON declaration review; duplicate source-ID detection robust
|
||||
to malformed field types; schema bindings for mapping artifacts.
|
||||
- `service.py`: explicit ownership conflicts fail validation; reports describe
|
||||
coverage limits; capability operations respect the selected corpus root.
|
||||
- `maintenance.py`: non-mutating comparison of generated projections,
|
||||
registry-derived scope inventory, deterministic content-addressed contract
|
||||
export, validation timestamp/revision/dirty-state/corpus-digest evidence,
|
||||
and repeated-read measurement.
|
||||
- CLI commands: `emission-review`, `validation-coverage`, `scope-inventory`,
|
||||
`check-generated`, `export-emission-contract`, and `benchmark-reads`.
|
||||
- Installed bench discovery and independently selected corpus root replace
|
||||
hardcoded workstation lookup. The narrow loader remains necessary because
|
||||
upstream initialization imports unrelated database integrations.
|
||||
- `make check`, `make check-generated`, and `make refresh` expose maintenance
|
||||
workflows. State Hub refreshes work-record projections from source files.
|
||||
- [Consumption documentation](../docs/canon-consumption.md) defines portable
|
||||
installation, contract pinning, independent adoption evidence, and demand-led
|
||||
selection of future profiles/patterns. README and SCOPE describe the changes.
|
||||
|
||||
## Verification
|
||||
|
||||
`make check` passed 36 tests in 22.42 seconds, verified 77 generated assets,
|
||||
and passed canon validation (76 artifacts/315 relationships) and Small-SaaS
|
||||
validation (15 payloads), both without errors or warnings.
|
||||
|
||||
Seven new tests cover malformed declarations, unsupported versions and duplicate
|
||||
IDs, stale/missing projections without source mutation, deterministic bundle
|
||||
bytes and corruption refusal, mapping schema enforcement, explicit ownership
|
||||
conflicts, report digest behavior, selected-root capability loading, and a
|
||||
missing schema producing a validation finding.
|
||||
|
||||
A fresh virtual environment under `/tmp/itc-install-SOoIlF/` installed PyYAML
|
||||
6.0.3, jsonschema 4.26.0 and their dependencies, plus locally built canon and
|
||||
bench wheels using `--no-deps`. With PYTHONPATH unset and an independent corpus
|
||||
copy, installed CLI inspection, canon validation, and emission review passed.
|
||||
The initial corpus copy omitted two demand provenance files; validation correctly
|
||||
reported them missing. Including `demand/` completed the proof. Full transitive
|
||||
bench installation remains outside this narrow proof because its upstream
|
||||
metadata still names workstation paths. No sibling source files were changed.
|
||||
|
||||
Contract export produced:
|
||||
|
||||
`dist/contracts/emission-cadence-0.1-972c0b6701d1693f6bb297a2feef34bcdb5ef04f3c906882e6f5e0afa5261e01.tar`
|
||||
|
||||
The filename is its SHA-256. The manifest records schema, standard, and example
|
||||
hashes and the additional uniqueness check. The build output is gitignored;
|
||||
recreate it with `export-emission-contract dist/contracts`. This is a local
|
||||
distribution artifact, not remote release publication.
|
||||
|
||||
Ten uncached inspections measured median **788.05 ms**, maximum **1241.92 ms**
|
||||
on this workstation during concurrent verification. These measurements do not
|
||||
establish a production SLA. No cache was added without a workload and latency
|
||||
target. Ruff was unavailable; no lint result is claimed.
|
||||
|
||||
## Remaining boundaries
|
||||
|
||||
T01–T05 are done; T06 waits for two independent source owners' implementation
|
||||
and consumer evidence. The workplan remains blocked rather than declaring
|
||||
draft promotion complete. No external messages or consumer writes were made.
|
||||
The original CARING calculus, complete concept extraction, comprehensive mapping
|
||||
metadata, and cross-version interoperability gaps are not claimed closed by
|
||||
this implementation; coverage output explicitly preserves these limits.
|
||||
|
||||
State Hub registration succeeded. Its consistency helper also commits/pushes
|
||||
its own generated consistency changes. Advisories include the documented
|
||||
INFO-WP convention conflicting with the registry's ITC-WP prefix, existing
|
||||
classification warnings, and intake-index lookup trouble. These do not prevent
|
||||
the new workplan and six tasks from being registered.
|
||||
|
||||
Final synchronization encountered two State Hub repository-query timeouts.
|
||||
The five completed task statuses and blocked workplan status were then updated
|
||||
and confirmed through their individual REST endpoints. WORK-RECORDS.md was
|
||||
regenerated using State Hub's own offline `_generate_work_record_index`
|
||||
renderer, preserving the file-authoritative projection. Progress receipt:
|
||||
`deab32a8-7642-440c-896c-e37783084757`. A full consistency sweep still needs
|
||||
re-running when the repository-query path recovers; registration and final
|
||||
task statuses have already been confirmed.
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
---
|
||||
id: agent-brief/example-emission-cadence-qonto-assistant
|
||||
artifact_id: example/emission-cadence/qonto-assistant
|
||||
source_path: standards/emission-cadence/examples/qonto-assistant.yaml
|
||||
source_kind: example
|
||||
generated: true
|
||||
---
|
||||
|
||||
<!-- GENERATED by info_tech_canon; do not edit by hand. -->
|
||||
|
||||
# Agent Brief: Qonto Assistant Emission Cadence Worked Example
|
||||
|
||||
- Artifact ID: `example/emission-cadence/qonto-assistant`
|
||||
- Kind: `example`
|
||||
- Canonical path: `standards/emission-cadence/examples/qonto-assistant.yaml`
|
||||
- Full source: `standards/emission-cadence/examples/qonto-assistant.yaml`
|
||||
- Summary: Canon-side example artifact: Qonto Assistant Emission Cadence Worked Example.
|
||||
|
||||
## Retrieval Hints
|
||||
|
||||
Imports and anchors:
|
||||
- `standard/emission-cadence`
|
||||
|
||||
## Owned Concepts
|
||||
|
||||
- `Qonto Assistant Emission Cadence Worked Example`
|
||||
|
||||
## Related Distinctions
|
||||
|
||||
No common distinction is anchored directly on this artifact.
|
||||
29
infospace/agent/briefs/mapping-emission-cadence-handover.md
Normal file
29
infospace/agent/briefs/mapping-emission-cadence-handover.md
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
---
|
||||
id: agent-brief/mapping-emission-cadence-handover
|
||||
artifact_id: mapping/emission-cadence-handover
|
||||
source_path: assimilation/emission-cadence/mappings.yaml
|
||||
source_kind: mapping
|
||||
generated: true
|
||||
---
|
||||
|
||||
<!-- GENERATED by info_tech_canon; do not edit by hand. -->
|
||||
|
||||
# Agent Brief: Emission cadence handover mappings
|
||||
|
||||
- Artifact ID: `mapping/emission-cadence-handover`
|
||||
- Kind: `mapping`
|
||||
- Canonical path: `assimilation/emission-cadence/mappings.yaml`
|
||||
- Full source: `assimilation/emission-cadence/mappings.yaml`
|
||||
- Summary: Mapping artifact connecting canon surfaces: Emission cadence handover mappings.
|
||||
|
||||
## Retrieval Hints
|
||||
|
||||
No imports or anchors recorded.
|
||||
|
||||
## Owned Concepts
|
||||
|
||||
- `Emission cadence handover mappings`
|
||||
|
||||
## Related Distinctions
|
||||
|
||||
No common distinction is anchored directly on this artifact.
|
||||
37
infospace/agent/briefs/standard-emission-cadence.md
Normal file
37
infospace/agent/briefs/standard-emission-cadence.md
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
---
|
||||
id: agent-brief/standard-emission-cadence
|
||||
artifact_id: standard/emission-cadence
|
||||
source_path: standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md
|
||||
source_kind: standard
|
||||
generated: true
|
||||
---
|
||||
|
||||
<!-- GENERATED by info_tech_canon; do not edit by hand. -->
|
||||
|
||||
# Agent Brief: InfoTechCanon Emission Cadence Standard
|
||||
|
||||
- Artifact ID: `standard/emission-cadence`
|
||||
- Kind: `standard`
|
||||
- Canonical path: `standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md`
|
||||
- Full source: `standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md`
|
||||
- Summary: Cross-cutting canon standard: InfoTechCanon Emission Cadence Standard.
|
||||
|
||||
## Retrieval Hints
|
||||
|
||||
Imports and anchors:
|
||||
- `kernel/itc-core`
|
||||
- `model/governance`
|
||||
- `model/observability`
|
||||
|
||||
## Owned Concepts
|
||||
|
||||
- `EmissionCadenceDeclaration`
|
||||
- `EmissionCadenceForm`
|
||||
- `ExpectedRateCadence`
|
||||
- `HeartbeatCadence`
|
||||
- `InfoTechCanon Emission Cadence Standard`
|
||||
- `ReconciliationCadence`
|
||||
|
||||
## Related Distinctions
|
||||
|
||||
No common distinction is anchored directly on this artifact.
|
||||
|
|
@ -5,8 +5,8 @@
|
|||
This brief summarizes the current canon service surface for agents.
|
||||
|
||||
- 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`
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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`
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
79
infospace/assimilation/emission-cadence/ASSIMILATION.md
Normal file
79
infospace/assimilation/emission-cadence/ASSIMILATION.md
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
# Assimilation — EmissionCadenceDeclaration
|
||||
|
||||
**Status:** Closed
|
||||
**Disposition:** Adapt
|
||||
**Source:** King's Guard Taxonomy draft 0.1.0
|
||||
**Authority:** `GH-DEC-2026-004` / State Hub decision
|
||||
`89c73f45-d07b-40ea-b428-5a7375ce4b09`
|
||||
|
||||
## Scope
|
||||
|
||||
This assimilation covers the generic, ecosystem-wide shape by which a source
|
||||
declares an expected emission cadence for an event class. It does not absorb
|
||||
the NetKingdom security profile: evidence-class policy, MUST/SHOULD obligations,
|
||||
and the rule requiring heartbeat plus reconciliation for rare load-bearing
|
||||
classes remain owned by NetKingdom.
|
||||
|
||||
## Findings
|
||||
|
||||
- The Observability Model already owns `Signal`, `SignalSource`, `Event`,
|
||||
`EventSource`, and the missing-signal pattern. It does not own a portable
|
||||
source declaration for the expected arrival of an event class.
|
||||
- The Governance Model already owns `Finding`. A cadence declaration names
|
||||
detection conditions but does not redefine the finding record or lifecycle.
|
||||
- The handover contains two useful generic forms: an expected count over a
|
||||
window, and a positive heartbeat and/or count reconciliation for streams
|
||||
whose meaningful events are intermittent.
|
||||
- `evidence_class`, security modality, and required combinations are importing
|
||||
profile concerns rather than generic cadence semantics.
|
||||
|
||||
## DecisionRecord
|
||||
|
||||
### Context
|
||||
|
||||
King's Guard needs a stable contract to evaluate silence but is a Staff-layer
|
||||
consumer, not the Taxonomy owner. Gate House assigned the generic contract to
|
||||
InfoTechCanon and the NetKingdom security profile to `net-kingdom`.
|
||||
|
||||
### Decision
|
||||
|
||||
Adapt the draft into `standard/emission-cadence` and schema version `0.1`.
|
||||
Preserve its two form names and field meanings. Make profile classifications
|
||||
optional extension data, and let the heartbeat-or-reconciliation form contain
|
||||
either mechanism or both. Publish strict validation for the generic core and a
|
||||
namespaced `extensions` object for profile-owned additions.
|
||||
|
||||
### Options Considered
|
||||
|
||||
- Keep the schema in King's Guard — rejected because a consumer would own the
|
||||
semantics it evaluates.
|
||||
- Put the whole contract in NetKingdom — rejected because generic cadence is
|
||||
reusable outside that security estate.
|
||||
- Joint ownership — rejected because version authority would be ambiguous.
|
||||
- Adapt the generic core here and import it from a NetKingdom profile — chosen.
|
||||
|
||||
### Rationale
|
||||
|
||||
The split follows the repository's Taxonomy role and Core's single-owner rule.
|
||||
Allowing heartbeat, reconciliation, or both keeps the generic form useful while
|
||||
leaving NetKingdom free to require the stronger combination.
|
||||
|
||||
### Consequences
|
||||
|
||||
- Sources own their declaration instances and emission behavior.
|
||||
- Observers own evaluation and findings, not the declaration schema.
|
||||
- Importing profiles may require fields or combinations but may not change the
|
||||
generic fields' meanings.
|
||||
- King's Guard's draft becomes provenance rather than a competing contract.
|
||||
|
||||
### Review Trigger
|
||||
|
||||
Review the draft after two independent source implementations, or when an
|
||||
importing profile needs a third cadence form that cannot be expressed through
|
||||
extensions without changing generic semantics.
|
||||
|
||||
## Result
|
||||
|
||||
The source was adapted, not copied into the canon. The resulting standard,
|
||||
schema, and worked example are registered in canon 0.7.0 and validated by the
|
||||
service surface.
|
||||
18
infospace/assimilation/emission-cadence/assimilation.yaml
Normal file
18
infospace/assimilation/emission-cadence/assimilation.yaml
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
id: assimilation/emission-cadence
|
||||
title: Assimilation — EmissionCadenceDeclaration handover
|
||||
source: King's Guard Emission-cadence declaration Taxonomy draft
|
||||
source_version: "0.1.0"
|
||||
source_type: internal-draft
|
||||
source_files:
|
||||
- source/EmissionCadenceDeclaration.md
|
||||
requested_by: gate-house
|
||||
status: closed
|
||||
disposition: adapt
|
||||
impacts:
|
||||
- model/observability
|
||||
- model/governance
|
||||
- standard/emission-cadence
|
||||
decision:
|
||||
authority: GH-DEC-2026-004
|
||||
decided_by: Bernd Worsch
|
||||
decided_at: "2026-09-04T00:55:29Z"
|
||||
12
infospace/assimilation/emission-cadence/comparison-matrix.md
Normal file
12
infospace/assimilation/emission-cadence/comparison-matrix.md
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
# Comparison matrix — EmissionCadenceDeclaration
|
||||
|
||||
| Source concept | Canon comparison | Disposition |
|
||||
| --- | --- | --- |
|
||||
| EmissionCadenceDeclaration | Missing portable declaration contract | Add standard-owned concept |
|
||||
| expected-rate | Missing bounded-count declaration | Add generic form |
|
||||
| heartbeat | ITC-OBS has missing-signal semantics, but no source declaration | Add form component; import observability terms |
|
||||
| reconciliation | Missing source/observer count comparison declaration | Add form component |
|
||||
| finding | ITC-GOV already owns the assessment outcome | Import; do not redefine |
|
||||
| evidence_class | NetKingdom security viewpoint | Leave to importing profile via extensions |
|
||||
| load-bearing MUST/SHOULD rules | NetKingdom doctrine | Exclude from generic standard |
|
||||
| King's Guard evaluation behavior | Consumer implementation | Exclude from canon contract |
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
source: KG-DRAFT-EMISSION-CADENCE
|
||||
concepts:
|
||||
- id: emission-cadence-declaration
|
||||
source_term: EmissionCadenceDeclaration
|
||||
definition: A source-authored statement of expected event-class emission.
|
||||
classification: missing_concept
|
||||
proposed_owner: standard/emission-cadence
|
||||
- id: expected-rate-cadence
|
||||
source_term: expected-rate
|
||||
definition: A minimum event count expected within a bounded window.
|
||||
classification: missing_concept
|
||||
proposed_owner: standard/emission-cadence
|
||||
- id: heartbeat-cadence
|
||||
source_term: heartbeat
|
||||
definition: A positive liveness claim expected within an interval.
|
||||
classification: broader_than_existing
|
||||
existing_anchor: model/observability
|
||||
proposed_owner: standard/emission-cadence
|
||||
- id: reconciliation-cadence
|
||||
source_term: reconciliation
|
||||
definition: A comparison between source-side and observer-side event counts.
|
||||
classification: missing_concept
|
||||
proposed_owner: standard/emission-cadence
|
||||
- id: evidence-class
|
||||
source_term: evidence_class
|
||||
definition: Security importance assigned to an emitted event class.
|
||||
classification: viewpoint_difference
|
||||
disposition: importing-profile-extension
|
||||
- id: finding
|
||||
source_term: finding
|
||||
definition: The observer outcome produced by a cadence breach.
|
||||
classification: already_covered
|
||||
existing_anchor: model/governance
|
||||
25
infospace/assimilation/emission-cadence/mappings.yaml
Normal file
25
infospace/assimilation/emission-cadence/mappings.yaml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
id: mapping/emission-cadence-handover
|
||||
title: Emission cadence handover mappings
|
||||
source: KG-DRAFT-EMISSION-CADENCE
|
||||
target: standard/emission-cadence
|
||||
mappings:
|
||||
- source_concept: EmissionCadenceDeclaration
|
||||
target_concept: EmissionCadenceDeclaration
|
||||
mapping_type: adapted
|
||||
- source_concept: expected-rate
|
||||
target_concept: ExpectedRateCadence
|
||||
mapping_type: equivalent
|
||||
- source_concept: heartbeat
|
||||
target_concept: HeartbeatCadence
|
||||
mapping_type: adapted
|
||||
- source_concept: reconciliation
|
||||
target_concept: ReconciliationCadence
|
||||
mapping_type: adapted
|
||||
- source_concept: finding
|
||||
target: model/governance
|
||||
target_concept: Finding
|
||||
mapping_type: imports
|
||||
- source_concept: event_class
|
||||
target: model/observability
|
||||
target_concept: EventType
|
||||
mapping_type: imports
|
||||
14
infospace/assimilation/emission-cadence/open-questions.md
Normal file
14
infospace/assimilation/emission-cadence/open-questions.md
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
# Open questions — EmissionCadenceDeclaration
|
||||
|
||||
No question blocks adoption.
|
||||
|
||||
The following promotion questions remain for the draft's future review:
|
||||
|
||||
1. Do two independent source implementations need interval tolerance or grace
|
||||
fields in the generic core, or can profiles carry them in `extensions`?
|
||||
2. Should schema 1.0 retain the handed-over name `sources` for cadence entries,
|
||||
or migrate to the clearer `cadences` with explicit compatibility tooling?
|
||||
3. Does reconciliation eventually need a generic typed counter-selector
|
||||
language, or are owner-defined field references sufficient?
|
||||
|
||||
These are review triggers, not deferred implementation tasks.
|
||||
12
infospace/assimilation/emission-cadence/proposed-changes.md
Normal file
12
infospace/assimilation/emission-cadence/proposed-changes.md
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
# Proposed changes — resolved
|
||||
|
||||
1. Publish a draft Emission Cadence Standard under `infospace/standards/`.
|
||||
2. Publish and register `emission-cadence.schema.yaml`.
|
||||
3. Include one schema-valid worked example derived from the handed-over
|
||||
`qonto-assistant` fixture without claiming it is the source-owned instance.
|
||||
4. Add structural validation for the schema and example.
|
||||
5. Register the standard and assimilation in all retrieval surfaces.
|
||||
6. Bump the canon minor version and record compatibility rules.
|
||||
|
||||
All proposals were accepted under `GH-DEC-2026-004` and implemented by
|
||||
`ITC-WP-0018`.
|
||||
17
infospace/assimilation/emission-cadence/source-summary.md
Normal file
17
infospace/assimilation/emission-cadence/source-summary.md
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
# Source summary — EmissionCadenceDeclaration draft
|
||||
|
||||
The King's Guard draft proposes a source-authored declaration that makes stream
|
||||
silence observable. It distinguishes two forms:
|
||||
|
||||
- `expected-rate`: an event-class minimum over a time window;
|
||||
- `heartbeat-or-reconciliation`: a positive liveness assertion, a comparison of
|
||||
source and observed counts, or both.
|
||||
|
||||
The draft was written against `qonto-assistant` and the Gate House approval
|
||||
emission contract. It assigns evaluation to King's Guard and explicitly asks a
|
||||
Taxonomy repository to own the schema.
|
||||
|
||||
Security-specific content associates event classes with `attributive` or
|
||||
`load-bearing` evidence and requires the stronger form for rare, load-bearing
|
||||
events. That policy is part of the source context, not the generic core adopted
|
||||
by InfoTechCanon.
|
||||
|
|
@ -0,0 +1,134 @@
|
|||
---
|
||||
title: Emission-cadence declaration (Taxonomy draft)
|
||||
document_id: KG-DRAFT-EMISSION-CADENCE
|
||||
version: 0.1.0
|
||||
status: Draft-for-handover
|
||||
date: 2026-09-01
|
||||
drafter: kings-guard
|
||||
owner: Taxonomy
|
||||
worked_example: qonto-assistant
|
||||
reference_instance: GH-WP-0002-T04
|
||||
reference_source_declaration: approval-engine/cadence.yaml
|
||||
statute: net-kingdom/canon/standards/security-layer-model_v0.7.md
|
||||
sections: ["9.6", "17"]
|
||||
classification: Public
|
||||
---
|
||||
|
||||
# Emission-cadence declaration — Taxonomy draft
|
||||
|
||||
kings-guard drafts this artifact because it is the only consumer of
|
||||
silence-as-signal and cannot implement §9.6 without a declared cadence.
|
||||
**Ownership stays with Taxonomy.** This file is a handover, not an internal
|
||||
schema. Inventing a local shape and keeping it here would be the drift
|
||||
§17 exists to prevent.
|
||||
|
||||
Proposed Taxonomy homes, neither of which has assented (§17):
|
||||
|
||||
- `info-tech-canon` — ecosystem-wide semantic contracts
|
||||
- `net-kingdom` — NetKingdom standards of record
|
||||
|
||||
gate-house already named the heartbeat form as doctrine in
|
||||
`docs/contracts/approval-emission-detection.md` (`GH-WP-0002-T04`). The
|
||||
reference source declaration is `approval-engine/cadence.yaml`. This draft
|
||||
covers **both** forms, because one does not substitute for the other.
|
||||
|
||||
## 1. Why this belongs alongside the security genome
|
||||
|
||||
A source already declares intended healthy operation as a `security_genome`:
|
||||
purpose, permitted capabilities, egress, tolerances. Expected emission cadence
|
||||
is a claim of the same kind — a statement of intent about the evidence the
|
||||
source will publish, not a measurement kings-guard takes of it.
|
||||
|
||||
Putting the declaration next to the genome keeps three properties:
|
||||
|
||||
1. **The class is the source's declaration.** Load-bearing versus attributive
|
||||
is not inferred by the observer from event contents.
|
||||
2. **The form follows the class.** Volume classes declare an expected rate.
|
||||
Low-volume load-bearing classes declare a heartbeat or reconciliation.
|
||||
Rate monitoring is forbidden for the latter: a suppressed month of
|
||||
revocations is indistinguishable from a quiet one.
|
||||
3. **Silence becomes observable without Tooling contact.** The source
|
||||
publishes the stream, including the positive claim that can itself go
|
||||
missing. kings-guard compares what arrived against what was declared.
|
||||
|
||||
## 2. Both forms
|
||||
|
||||
### 2.1 Expected rate — volume classes
|
||||
|
||||
Use when the class has a rate that can drop.
|
||||
|
||||
```yaml
|
||||
form: expected-rate
|
||||
event_class: <name>
|
||||
evidence_class: attributive | load-bearing
|
||||
window: 24h
|
||||
expected_min: <integer>
|
||||
drop_below: finding
|
||||
```
|
||||
|
||||
A drop below `expected_min` in `window` is a finding about the **stream**,
|
||||
not about any record's contents.
|
||||
|
||||
Load-bearing volume classes MUST declare this form (or the heartbeat form
|
||||
if they are in fact low-volume). Attributive sources SHOULD.
|
||||
|
||||
### 2.2 Heartbeat or reconciliation — low-volume load-bearing classes
|
||||
|
||||
Use when the valuable event is rare: revocations, denials, containment
|
||||
actions. Rate monitoring cannot work. The required property is a **positive
|
||||
claim that can itself go missing**.
|
||||
|
||||
Reference instance: `GH-WP-0002-T04` / `approval-engine/cadence.yaml`.
|
||||
Form is heartbeat **plus** reconciliation, not rate monitoring.
|
||||
|
||||
```yaml
|
||||
form: heartbeat-or-reconciliation
|
||||
event_class: <name>
|
||||
evidence_class: load-bearing
|
||||
rate_monitoring: forbidden
|
||||
heartbeat:
|
||||
event_class: <name>.heartbeat # or a dedicated heartbeat class
|
||||
interval: 24h
|
||||
assertion: nothing-to-report
|
||||
missing: finding
|
||||
reconciliation:
|
||||
compare_local: source transition counts per class
|
||||
compare_observed: evidence-engine counts per class
|
||||
divergence: finding
|
||||
undrained_local: lag-not-divergence
|
||||
```
|
||||
|
||||
A missing heartbeat, or a reconciliation divergence, is a finding about the
|
||||
stream. None of these are informational logs.
|
||||
|
||||
## 3. Worked example — `qonto-assistant`
|
||||
|
||||
The one real source this draft is written against.
|
||||
|
||||
| Event class | Evidence class | Form | Why |
|
||||
| --- | --- | --- | --- |
|
||||
| `audit.allow` | attributive | expected-rate (SHOULD) | Forensic reconstruction; no control branches on presence. Completeness is not claimed. The rate row is here so the volume form is specified, not because qonto traffic is currently a meaningful volume class. |
|
||||
| `audit.deny` | load-bearing | heartbeat-or-reconciliation (MUST) | Deny-escalation and posture branch on deny presence/absence. Statute §9.6 names denials as load-bearing. Denials are infrequent, so rate monitoring is the wrong form. |
|
||||
| `audit.heartbeat` | load-bearing | the positive claim | `nothing-to-report` plus per-class counts since the previous heartbeat. |
|
||||
|
||||
Machine-readable worked example consumed by the local evaluator (draft-shaped,
|
||||
not a competing schema): `src/kings_guard/fixtures/qonto_assistant_cadence.json`.
|
||||
|
||||
Until `qonto-assistant` publishes the declaration and emits heartbeats, no
|
||||
argument may assume this surface is live on that source. kings-guard can
|
||||
still observe the audit events it does emit; stream completeness for the
|
||||
deny class stays `unknown` or `degraded` until the positive claim exists.
|
||||
|
||||
## 4. Consumer obligations (kings-guard)
|
||||
|
||||
- Copy the declared evidence class onto each observation; do not infer it.
|
||||
- Evaluate the stream against the declaration, not only each record.
|
||||
- Carry completeness separately from record richness in posture output.
|
||||
- Treat stream findings as distinct from content findings.
|
||||
- Open no Tooling client to obtain the stream. The source publishes it.
|
||||
|
||||
## 5. Handover
|
||||
|
||||
Sent to `gate-house`, `net-kingdom`, and `info-tech-canon` for ownership.
|
||||
kings-guard will consume whatever Taxonomy publishes; it will not fork this
|
||||
draft into a private schema.
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
root: infospace
|
||||
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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -0,0 +1,68 @@
|
|||
id: small-saas/capability-requirements/production
|
||||
kind: capability-requirement-set
|
||||
title: Small SaaS Production Capability Requirements
|
||||
profile: small-saas
|
||||
record_id: small-saas-production-capabilities
|
||||
requires:
|
||||
- capability: identity.authorization
|
||||
profile: rbac
|
||||
minimum_maturity: D4
|
||||
targets:
|
||||
policy_coverage:
|
||||
value: all-tenant-routes
|
||||
- capability: data.transactional
|
||||
profile: relational
|
||||
minimum_maturity: D4
|
||||
targets:
|
||||
durability:
|
||||
value: production-approved
|
||||
- capability: integration.api
|
||||
profile: request-response
|
||||
minimum_maturity: D4
|
||||
targets:
|
||||
compatibility:
|
||||
value: versioned-contract
|
||||
- capability: operations.observability
|
||||
profile: events
|
||||
minimum_maturity: D3
|
||||
targets:
|
||||
coverage:
|
||||
value: tenant-access-and-service-health
|
||||
provisions:
|
||||
- provider: small-saas/control/namespace-per-tenant
|
||||
capability: identity.authorization
|
||||
profile: rbac
|
||||
maturity: D4
|
||||
evidence:
|
||||
- hook: policy_tests
|
||||
basis: measured
|
||||
source: small-saas/evidence/access-review-2026-05
|
||||
- provider: small-saas/dataset/subscription-ledger
|
||||
capability: data.transactional
|
||||
profile: relational
|
||||
maturity: D4
|
||||
evidence:
|
||||
- hook: durability_tests
|
||||
basis: measured
|
||||
source: small-saas/evidence/access-review-2026-05
|
||||
- provider: small-saas/service/billing-portal
|
||||
capability: integration.api
|
||||
profile: request-response
|
||||
maturity: D4
|
||||
evidence:
|
||||
- hook: contract_tests
|
||||
basis: measured
|
||||
source: small-saas/evidence/access-review-2026-05
|
||||
- provider: small-saas/deployment/production
|
||||
capability: operations.observability
|
||||
profile: events
|
||||
maturity: D3
|
||||
evidence:
|
||||
- hook: telemetry_coverage
|
||||
basis: measured
|
||||
source: small-saas/evidence/access-review-2026-05
|
||||
relationships:
|
||||
- type: instantiates
|
||||
target: profile/small-saas
|
||||
- type: applies_to
|
||||
target: small-saas/service/billing-portal
|
||||
|
|
@ -22,6 +22,7 @@ required_standards:
|
|||
- model/devsecops
|
||||
- model/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
|
||||
|
|
|
|||
159
infospace/schemas/emission-cadence.schema.yaml
Normal file
159
infospace/schemas/emission-cadence.schema.yaml
Normal file
|
|
@ -0,0 +1,159 @@
|
|||
$schema: https://json-schema.org/draft/2020-12/schema
|
||||
$id: https://info-tech-canon.local/schemas/emission-cadence.schema.yaml
|
||||
title: InfoTechCanon EmissionCadenceDeclaration 0.1
|
||||
description: Generic source-authored event emission cadence declaration.
|
||||
type: object
|
||||
required:
|
||||
- schema_version
|
||||
- declaration_id
|
||||
- source
|
||||
- sources
|
||||
properties:
|
||||
schema_version:
|
||||
const: "0.1"
|
||||
declaration_id:
|
||||
$ref: "#/$defs/non_empty_string"
|
||||
source:
|
||||
$ref: "#/$defs/non_empty_string"
|
||||
stream_id:
|
||||
$ref: "#/$defs/non_empty_string"
|
||||
sources:
|
||||
type: array
|
||||
minItems: 1
|
||||
items:
|
||||
$ref: "#/$defs/cadence_entry"
|
||||
extensions:
|
||||
$ref: "#/$defs/extensions"
|
||||
additionalProperties: false
|
||||
$defs:
|
||||
non_empty_string:
|
||||
type: string
|
||||
minLength: 1
|
||||
duration:
|
||||
type: string
|
||||
pattern: "^(?:P(?=\\d|T\\d)(?:\\d+D)?(?:T(?:\\d+H)?(?:\\d+M)?(?:\\d+S)?)?|[1-9][0-9]*(?:s|m|h|d))$"
|
||||
extensions:
|
||||
type: object
|
||||
minProperties: 1
|
||||
propertyNames:
|
||||
pattern: "^[a-z][a-z0-9.-]*$"
|
||||
additionalProperties:
|
||||
type: object
|
||||
heartbeat:
|
||||
type: object
|
||||
required:
|
||||
- event_class
|
||||
- assertion
|
||||
- missing
|
||||
properties:
|
||||
event_class:
|
||||
$ref: "#/$defs/non_empty_string"
|
||||
interval:
|
||||
$ref: "#/$defs/duration"
|
||||
interval_seconds:
|
||||
type: integer
|
||||
minimum: 1
|
||||
assertion:
|
||||
$ref: "#/$defs/non_empty_string"
|
||||
missing:
|
||||
$ref: "#/$defs/non_empty_string"
|
||||
extensions:
|
||||
$ref: "#/$defs/extensions"
|
||||
oneOf:
|
||||
- required: [interval]
|
||||
not:
|
||||
required: [interval_seconds]
|
||||
- required: [interval_seconds]
|
||||
not:
|
||||
required: [interval]
|
||||
additionalProperties: false
|
||||
reconciliation:
|
||||
type: object
|
||||
required:
|
||||
- compare_local
|
||||
- compare_observed
|
||||
- divergence
|
||||
properties:
|
||||
compare_local:
|
||||
$ref: "#/$defs/non_empty_string"
|
||||
compare_observed:
|
||||
$ref: "#/$defs/non_empty_string"
|
||||
divergence:
|
||||
$ref: "#/$defs/non_empty_string"
|
||||
undrained_local:
|
||||
$ref: "#/$defs/non_empty_string"
|
||||
extensions:
|
||||
$ref: "#/$defs/extensions"
|
||||
additionalProperties: false
|
||||
cadence_entry:
|
||||
type: object
|
||||
required:
|
||||
- source_id
|
||||
- event_class
|
||||
- form
|
||||
properties:
|
||||
source_id:
|
||||
$ref: "#/$defs/non_empty_string"
|
||||
source_system:
|
||||
$ref: "#/$defs/non_empty_string"
|
||||
event_class:
|
||||
$ref: "#/$defs/non_empty_string"
|
||||
form:
|
||||
enum:
|
||||
- expected-rate
|
||||
- heartbeat-or-reconciliation
|
||||
window:
|
||||
$ref: "#/$defs/duration"
|
||||
window_seconds:
|
||||
type: integer
|
||||
minimum: 1
|
||||
expected_min:
|
||||
type: integer
|
||||
minimum: 0
|
||||
drop_below:
|
||||
$ref: "#/$defs/non_empty_string"
|
||||
heartbeat:
|
||||
$ref: "#/$defs/heartbeat"
|
||||
reconciliation:
|
||||
$ref: "#/$defs/reconciliation"
|
||||
extensions:
|
||||
$ref: "#/$defs/extensions"
|
||||
allOf:
|
||||
- if:
|
||||
properties:
|
||||
form:
|
||||
const: expected-rate
|
||||
required: [form]
|
||||
then:
|
||||
required:
|
||||
- expected_min
|
||||
- drop_below
|
||||
oneOf:
|
||||
- required: [window]
|
||||
not:
|
||||
anyOf:
|
||||
- required: [window_seconds]
|
||||
- required: [heartbeat]
|
||||
- required: [reconciliation]
|
||||
- required: [window_seconds]
|
||||
not:
|
||||
anyOf:
|
||||
- required: [window]
|
||||
- required: [heartbeat]
|
||||
- required: [reconciliation]
|
||||
- if:
|
||||
properties:
|
||||
form:
|
||||
const: heartbeat-or-reconciliation
|
||||
required: [form]
|
||||
then:
|
||||
anyOf:
|
||||
- required: [heartbeat]
|
||||
- required: [reconciliation]
|
||||
not:
|
||||
anyOf:
|
||||
- required: [window]
|
||||
- required: [window_seconds]
|
||||
- required: [expected_min]
|
||||
- required: [drop_below]
|
||||
additionalProperties: false
|
||||
|
|
@ -25,3 +25,5 @@ schemas:
|
|||
path: capability-record.schema.yaml
|
||||
- id: attribute-value-type
|
||||
path: attribute-value-type.schema.yaml
|
||||
- id: emission-cadence
|
||||
path: emission-cadence.schema.yaml
|
||||
|
|
|
|||
|
|
@ -0,0 +1,214 @@
|
|||
---
|
||||
id: itc-emission-cadence:EmissionCadenceDeclaration
|
||||
title: InfoTechCanon Emission Cadence Standard
|
||||
short_name: ITC-EMISSION-CADENCE
|
||||
type: standard
|
||||
standard_family: InfoTechCanon
|
||||
repository_context: info-tech-canon
|
||||
recommended_path: standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md
|
||||
status: draft
|
||||
version: 0.1.0
|
||||
schema_version: "0.1"
|
||||
canonical_owner: InfoTechCanonEmissionCadenceStandard
|
||||
namespace: itc-emission-cadence
|
||||
classification: standard
|
||||
primary_cluster: observability-contract
|
||||
imports:
|
||||
- InfoTechCanonCore
|
||||
- InfoTechCanonObservabilityModel
|
||||
- InfoTechCanonGovernanceModel
|
||||
related:
|
||||
- InfoTechCanonSecurityModel
|
||||
owned_concepts:
|
||||
- EmissionCadenceDeclaration
|
||||
- EmissionCadenceForm
|
||||
- ExpectedRateCadence
|
||||
- HeartbeatCadence
|
||||
- ReconciliationCadence
|
||||
provenance:
|
||||
source_version: 0.1.0
|
||||
source_file: infospace/assimilation/emission-cadence/source/EmissionCadenceDeclaration.md
|
||||
assimilation: assimilation/emission-cadence
|
||||
decision: GH-DEC-2026-004
|
||||
created_at: "2026-09-04"
|
||||
updated_at: "2026-09-04"
|
||||
---
|
||||
|
||||
# InfoTechCanon Emission Cadence Standard
|
||||
|
||||
**Short Name:** `ITC-EMISSION-CADENCE`
|
||||
**Document Status:** Draft
|
||||
**Version:** 0.1.0
|
||||
**Schema Version:** `0.1`
|
||||
|
||||
## 1. Purpose
|
||||
|
||||
This standard defines `EmissionCadenceDeclaration`: a machine-readable,
|
||||
source-authored claim about when records of an event class are expected to be
|
||||
emitted. It lets an observer evaluate a stream's silence separately from the
|
||||
contents and richness of records that did arrive.
|
||||
|
||||
The declaration describes intended emission. It is not a measurement, a health
|
||||
result, or proof that every event was emitted.
|
||||
|
||||
## 2. Ownership boundary
|
||||
|
||||
InfoTechCanon owns the generic forms, fields, validation semantics,
|
||||
compatibility rules, and evolution of this contract.
|
||||
|
||||
Other owners retain their own responsibilities:
|
||||
|
||||
- a source owns each declaration instance and the behavior it declares;
|
||||
- an observer owns measurement, evaluation, and resulting findings;
|
||||
- an importing profile owns domain policy: which classes must declare cadence,
|
||||
which form is required, and any stronger combination or threshold rules;
|
||||
- ITC-OBS owns `Event`, `EventType`, `EventSource`, and missing-signal semantics;
|
||||
- ITC-GOV owns `Finding` and its lifecycle.
|
||||
|
||||
In particular, this standard does not define `attributive` or `load-bearing`
|
||||
evidence, does not require cadence for any security class, and does not require
|
||||
heartbeat and reconciliation together. Those are NetKingdom security-profile
|
||||
rules, not ecosystem-wide semantics.
|
||||
|
||||
## 3. Declaration envelope
|
||||
|
||||
A declaration contains:
|
||||
|
||||
| Field | Requirement | Meaning |
|
||||
| --- | --- | --- |
|
||||
| `schema_version` | required | Contract version understood by the producer. This draft uses `0.1`. |
|
||||
| `declaration_id` | required | Stable identifier for the declaration instance. |
|
||||
| `source` | required | Source system that owns the emission claim. |
|
||||
| `stream_id` | optional | Stable stream identifier when the source publishes more than one stream. |
|
||||
| `sources` | required | One or more event-class cadence entries. The name is retained from the handed-over 0.1 draft. |
|
||||
| `extensions` | optional | Namespaced, profile-owned data that does not change generic field meanings. |
|
||||
|
||||
Every entry in `sources` has a stable `source_id`, an `event_class`, and exactly
|
||||
one generic `form`. A declaration must not contain duplicate `source_id` values.
|
||||
|
||||
## 4. Forms
|
||||
|
||||
### 4.1 `expected-rate`
|
||||
|
||||
`ExpectedRateCadence` says that at least `expected_min` records of an event class
|
||||
are expected in each `window`.
|
||||
|
||||
```yaml
|
||||
source_id: example.audit
|
||||
event_class: audit.recorded
|
||||
form: expected-rate
|
||||
window: PT24H
|
||||
expected_min: 1
|
||||
drop_below: finding
|
||||
```
|
||||
|
||||
The window may be an ISO 8601 duration (`PT24H`) or a positive compact duration
|
||||
using `s`, `m`, `h`, or `d` (`24h`). A producer that cannot use duration strings
|
||||
may provide `window_seconds` instead, but must not provide both.
|
||||
|
||||
Evaluation is performed per complete window unless an importing profile defines
|
||||
a grace rule. A count below `expected_min` satisfies the condition named by
|
||||
`drop_below`. The string names an observer-owned outcome; it does not create or
|
||||
change the ITC-GOV Finding concept.
|
||||
|
||||
### 4.2 `heartbeat-or-reconciliation`
|
||||
|
||||
This form describes one or both of the following mechanisms:
|
||||
|
||||
- `heartbeat`: a positive assertion expected within an interval, so the
|
||||
assertion can itself be missing;
|
||||
- `reconciliation`: references to source-side and observer-side counts whose
|
||||
divergence is evaluated.
|
||||
|
||||
At least one mechanism is required by the generic contract. An importing
|
||||
profile may require both.
|
||||
|
||||
```yaml
|
||||
source_id: example.denials
|
||||
event_class: audit.denied
|
||||
form: heartbeat-or-reconciliation
|
||||
heartbeat:
|
||||
event_class: audit.heartbeat
|
||||
interval: PT24H
|
||||
assertion: nothing-to-report
|
||||
missing: finding
|
||||
reconciliation:
|
||||
compare_local: source_transition_counts.audit.denied
|
||||
compare_observed: evidence_counts.audit.denied
|
||||
divergence: finding
|
||||
undrained_local: lag-not-divergence
|
||||
```
|
||||
|
||||
`heartbeat.interval` follows the same duration rules as the expected-rate
|
||||
window; `interval_seconds` is the alternative integer representation.
|
||||
`compare_local` and `compare_observed` are owner-defined references. This draft
|
||||
does not define a query language for them.
|
||||
|
||||
## 5. Extensions and profiles
|
||||
|
||||
Generic objects are closed: unknown fields fail schema validation. Additional
|
||||
profile data belongs in an `extensions` mapping keyed by an owner-controlled
|
||||
namespace. For example:
|
||||
|
||||
```yaml
|
||||
extensions:
|
||||
netkingdom:
|
||||
evidence_class: load-bearing
|
||||
rate_monitoring: forbidden
|
||||
```
|
||||
|
||||
An extension may narrow use of the generic contract. It must not redefine a
|
||||
generic field, change the meaning of a form, or make an instance that fails the
|
||||
generic schema valid.
|
||||
|
||||
## 6. Validation semantics
|
||||
|
||||
The normative machine contract is
|
||||
`infospace/schemas/emission-cadence.schema.yaml`.
|
||||
|
||||
A conforming generic declaration:
|
||||
|
||||
1. validates against that schema;
|
||||
2. has at least one cadence entry;
|
||||
3. has unique `source_id` values;
|
||||
4. uses one duration representation for each window or interval;
|
||||
5. supplies only expected-rate fields for `expected-rate` entries;
|
||||
6. supplies heartbeat, reconciliation, or both for
|
||||
`heartbeat-or-reconciliation` entries; and
|
||||
7. carries profile-owned data only under a namespaced `extensions` key.
|
||||
|
||||
Schema validation establishes declaration shape, not operational truth.
|
||||
Observers must not infer that a stream is complete merely because its
|
||||
declaration is valid.
|
||||
|
||||
## 7. Compatibility and evolution
|
||||
|
||||
The document version and `schema_version` use semantic versioning with the
|
||||
schema's major and minor represented on the wire.
|
||||
|
||||
- Patch releases clarify prose or validation without changing accepted data.
|
||||
- Minor releases add optional fields or forms. Producers may opt in; consumers
|
||||
must not silently interpret an unknown form as a known one.
|
||||
- Major releases may rename, remove, or change field semantics and require an
|
||||
explicit migration note.
|
||||
|
||||
During the `0.x` draft period, incompatible changes remain possible but must be
|
||||
recorded in the repo changelog and accompanied by migration guidance. A
|
||||
consumer must reject an unsupported `schema_version`; it must not guess.
|
||||
|
||||
## 8. Worked example
|
||||
|
||||
`examples/qonto-assistant.yaml` is a schema-valid transformation of the King's
|
||||
Guard handover example. It demonstrates both forms and the profile-extension
|
||||
boundary. It is not the source-owned `qonto-assistant` declaration and makes no
|
||||
claim about live emission or observation.
|
||||
|
||||
## 9. Conformance
|
||||
|
||||
A producer conforms to this standard when its published declaration validates
|
||||
against the named schema and accurately identifies the source and event class
|
||||
it owns. A consumer conforms when it preserves the generic semantics, rejects
|
||||
unsupported versions and forms, and keeps observation results separate from
|
||||
the source's declaration.
|
||||
|
||||
Profile conformance is additional and is assessed by the profile owner.
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
# Worked example only. qonto-assistant owns its live declaration; this file
|
||||
# makes no claim that this cadence is currently emitted or observed.
|
||||
schema_version: "0.1"
|
||||
declaration_id: qonto-assistant.audit.example
|
||||
source: qonto-assistant
|
||||
stream_id: qonto-assistant.audit
|
||||
sources:
|
||||
- source_id: qonto-assistant.audit.allow
|
||||
event_class: audit.allow
|
||||
form: expected-rate
|
||||
window: PT24H
|
||||
expected_min: 1
|
||||
drop_below: finding
|
||||
extensions:
|
||||
netkingdom:
|
||||
evidence_class: attributive
|
||||
completeness_claimed: false
|
||||
example_only: true
|
||||
- source_id: qonto-assistant.audit.deny
|
||||
event_class: audit.deny
|
||||
form: heartbeat-or-reconciliation
|
||||
heartbeat:
|
||||
event_class: audit.heartbeat
|
||||
interval: PT24H
|
||||
assertion: nothing-to-report
|
||||
missing: finding
|
||||
reconciliation:
|
||||
compare_local: source_transition_counts.audit.deny
|
||||
compare_observed: evidence_counts.audit.deny
|
||||
divergence: finding
|
||||
undrained_local: lag-not-divergence
|
||||
extensions:
|
||||
netkingdom:
|
||||
evidence_class: load-bearing
|
||||
rate_monitoring: forbidden
|
||||
completeness_claimed: true
|
||||
|
|
@ -1,14 +1,496 @@
|
|||
{
|
||||
"coverage": {
|
||||
"artifacts": [
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "assimilation/emission-cadence",
|
||||
"kind": "assimilation",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "assimilation/it-capability-canon",
|
||||
"kind": "assimilation",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "benchmark/caring/kubernetes-rbac",
|
||||
"kind": "benchmark-workspace",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "benchmark/caring/kubernetes-rbac/access-descriptors",
|
||||
"kind": "access-descriptor-set",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "benchmark/caring/kubernetes-rbac/caring-mapping",
|
||||
"kind": "caring-mapping",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "benchmark/caring/kubernetes-rbac/findings",
|
||||
"kind": "benchmark-findings",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "benchmark/caring/kubernetes-rbac/native-concepts",
|
||||
"kind": "native-concept-map",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "capability-catalog/itc-cap",
|
||||
"kind": "capability-catalog",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "catalog/attribute-value-types",
|
||||
"kind": "concept-catalog",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "catalog/evidence-basis",
|
||||
"kind": "concept-catalog",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "comparison/repo-scoping/canon-benefit-analysis",
|
||||
"kind": "benefit-analysis",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "comparison/repo-scoping/consumer-workplan-brief",
|
||||
"kind": "consumer-workplan-brief",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "comparison/repo-scoping/extension-candidates",
|
||||
"kind": "extension-candidate-set",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "comparison/repo-scoping/frame",
|
||||
"kind": "comparison-frame",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "comparison/repo-scoping/report",
|
||||
"kind": "comparison-report",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "concept-catalog/purpose-demand",
|
||||
"kind": "concept-catalog",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "conformance/railiance-fabric",
|
||||
"kind": "conformance-pack",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "conformance/railiance-fabric/consumer-workplan-brief",
|
||||
"kind": "consumer-workplan-brief",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "conformance/railiance-fabric/entity-edge-capture-criteria",
|
||||
"kind": "capture-criteria",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "conformance/railiance-fabric/mapping-expectations",
|
||||
"kind": "mapping-expectation",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "conformance/railiance-fabric/visualization-examples",
|
||||
"kind": "visualization-example-set",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "evaluation/user-engine",
|
||||
"kind": "evaluation-pack",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "evaluation/user-engine/consumer-workplan-brief",
|
||||
"kind": "consumer-workplan-brief",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "evaluation/user-engine/interface-card-expectations",
|
||||
"kind": "interface-card-expectation",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "evaluation/user-engine/questions",
|
||||
"kind": "evaluation-question-set",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "evaluation/user-engine/small-saas-alignment",
|
||||
"kind": "profile-alignment",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "example/consumer-purpose-portfolio",
|
||||
"kind": "example",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "example/emission-cadence/qonto-assistant",
|
||||
"kind": "example",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "kernel/itc-core",
|
||||
"kind": "kernel",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "kernel/itc-kernel-map",
|
||||
"kind": "kernel",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "schema-and-references",
|
||||
"id": "mapping/capability-anchors",
|
||||
"kind": "mapping",
|
||||
"schema": "mapping.schema.yaml"
|
||||
},
|
||||
{
|
||||
"checks": "schema-and-references",
|
||||
"id": "mapping/emission-cadence-handover",
|
||||
"kind": "mapping",
|
||||
"schema": "mapping.schema.yaml"
|
||||
},
|
||||
{
|
||||
"checks": "schema-and-references",
|
||||
"id": "mapping/purpose-demand-governance-candidates",
|
||||
"kind": "mapping",
|
||||
"schema": "mapping.schema.yaml"
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "model/access-control",
|
||||
"kind": "model",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "model/capability",
|
||||
"kind": "model",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "model/data",
|
||||
"kind": "model",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "model/devsecops",
|
||||
"kind": "model",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "model/governance",
|
||||
"kind": "model",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "model/information-space",
|
||||
"kind": "model",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "model/landscape",
|
||||
"kind": "model",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "model/network",
|
||||
"kind": "model",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "model/observability",
|
||||
"kind": "model",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "model/organization",
|
||||
"kind": "model",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "model/purpose-demand-extension",
|
||||
"kind": "model-extension",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "model/security",
|
||||
"kind": "model",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "model/task",
|
||||
"kind": "model",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "pattern/intent-scope-purposes",
|
||||
"kind": "pattern",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "practice-pattern/agentic-drives-functional",
|
||||
"kind": "practice-pattern",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "practice-pattern/interface-deprecation-strangler",
|
||||
"kind": "practice-pattern",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "practice/intake-and-assimilation",
|
||||
"kind": "practice",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "profile/small-saas",
|
||||
"kind": "profile",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "review-kit/alignment",
|
||||
"kind": "alignment-review-kit",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "review-kit/alignment/model-selection-guide",
|
||||
"kind": "model-selection-guide",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "review-kit/alignment/schema",
|
||||
"kind": "alignment-review-schema",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "review-kit/alignment/scorecard",
|
||||
"kind": "alignment-scorecard",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "review-kit/alignment/workflow",
|
||||
"kind": "alignment-review-workflow",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "review-kit/alignment/workplan-template",
|
||||
"kind": "consumer-workplan-template",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "scheme/practice-pattern",
|
||||
"kind": "practice-pattern-scheme",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "small-saas/capability-requirements/production",
|
||||
"kind": "profile-artifact",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "small-saas/control/namespace-per-tenant",
|
||||
"kind": "profile-artifact",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "small-saas/dataset/subscription-ledger",
|
||||
"kind": "profile-artifact",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "small-saas/deployment/production",
|
||||
"kind": "profile-artifact",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "small-saas/evidence/access-review-2026-05",
|
||||
"kind": "profile-artifact",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "small-saas/incident/cross-tenant-access-attempt",
|
||||
"kind": "profile-artifact",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "small-saas/policy/tenant-isolation",
|
||||
"kind": "profile-artifact",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "small-saas/service/billing-portal",
|
||||
"kind": "profile-artifact",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "small-saas/system/billing-system",
|
||||
"kind": "profile-artifact",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "small-saas/task/onboard-tenant",
|
||||
"kind": "profile-artifact",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "small-saas/team/platform",
|
||||
"kind": "profile-artifact",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "small-saas/tenant/acme",
|
||||
"kind": "profile-artifact",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "small-saas/tenant/globex",
|
||||
"kind": "profile-artifact",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "small-saas/user/ada-admin",
|
||||
"kind": "profile-artifact",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "standard/caring",
|
||||
"kind": "standard",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "standard/emission-cadence",
|
||||
"kind": "standard",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "standard/repository-layout",
|
||||
"kind": "standard",
|
||||
"schema": null
|
||||
},
|
||||
{
|
||||
"checks": "structural-or-specialized",
|
||||
"id": "standard/tagging",
|
||||
"kind": "standard",
|
||||
"schema": null
|
||||
}
|
||||
],
|
||||
"not_proven": [
|
||||
"ownership of concepts only in prose",
|
||||
"all Markdown links",
|
||||
"consumer adoption",
|
||||
"cross-version interoperability",
|
||||
"CARING effective access",
|
||||
"mapping rationale completeness"
|
||||
],
|
||||
"ok": true,
|
||||
"specialized": [
|
||||
"capability catalog/record",
|
||||
"practice pattern",
|
||||
"emission cadence example",
|
||||
"consumer packs"
|
||||
]
|
||||
},
|
||||
"details": {
|
||||
"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,
|
||||
|
|
|
|||
|
|
@ -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` |
|
||||
|
|
|
|||
|
|
@ -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`
|
||||
|
|
|
|||
|
|
@ -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`
|
||||
|
|
|
|||
|
|
@ -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` | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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`
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
```
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
||||
|
|
|
|||
82
src/info_tech_canon/contracts.py
Normal file
82
src/info_tech_canon/contracts.py
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
"""Reusable declaration checks. Shape validity never proves operational truth."""
|
||||
|
||||
from collections import Counter
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
from jsonschema import Draft202012Validator
|
||||
from jsonschema.exceptions import SchemaError
|
||||
import yaml
|
||||
|
||||
from .paths import infospace_root
|
||||
|
||||
|
||||
def schema_errors(instance: Any, schema: dict) -> list[dict]:
|
||||
try:
|
||||
Draft202012Validator.check_schema(schema)
|
||||
except SchemaError as exc:
|
||||
return [{"code": "invalid_schema", "message": exc.message}]
|
||||
return [
|
||||
{"code": "schema_violation", "instance_path": "/".join(map(str, e.path)),
|
||||
"message": e.message}
|
||||
for e in sorted(Draft202012Validator(schema).iter_errors(instance),
|
||||
key=lambda e: tuple(map(str, e.path)))
|
||||
]
|
||||
|
||||
|
||||
def emission_errors(instance: Any, schema: dict) -> list[dict]:
|
||||
errors = schema_errors(instance, schema)
|
||||
if isinstance(instance, dict) and isinstance(instance.get("sources"), list):
|
||||
counts = Counter(entry.get("source_id") for entry in instance["sources"]
|
||||
if isinstance(entry, dict) and isinstance(entry.get("source_id"), str))
|
||||
duplicates = sorted(key for key, count in counts.items() if count > 1)
|
||||
if duplicates:
|
||||
errors.append({"code": "duplicate_emission_cadence_source_id",
|
||||
"source_ids": duplicates})
|
||||
return errors
|
||||
|
||||
|
||||
def review_emission(path: str | Path, root: Path | str | None = None) -> dict:
|
||||
from .service import CanonServiceError
|
||||
|
||||
try:
|
||||
schema = yaml.safe_load((infospace_root(root) / "schemas/emission-cadence.schema.yaml").read_text())
|
||||
instance = yaml.safe_load(Path(path).read_text())
|
||||
except (OSError, yaml.YAMLError) as exc:
|
||||
raise CanonServiceError("declaration_unreadable", str(exc)) from exc
|
||||
errors = emission_errors(instance, schema)
|
||||
return {"ok": not errors, "contract": "emission-cadence/0.1", "errors": errors,
|
||||
"operational_truth_assessed": False}
|
||||
|
||||
|
||||
def coverage(context: Any) -> dict:
|
||||
"""Report actual checks and their limits rather than claiming full conformance."""
|
||||
bindings = {"mapping": "mapping.schema.yaml"}
|
||||
rows = []
|
||||
for artifact in sorted(context.infospace.artifacts, key=lambda a: a.id):
|
||||
schema = bindings.get(artifact.kind)
|
||||
rows.append({"id": artifact.id, "kind": artifact.kind, "schema": schema,
|
||||
"checks": "schema-and-references" if schema else "structural-or-specialized"})
|
||||
return {"ok": True, "artifacts": rows,
|
||||
"specialized": ["capability catalog/record", "practice pattern",
|
||||
"emission cadence example", "consumer packs"],
|
||||
"not_proven": ["ownership of concepts only in prose", "all Markdown links",
|
||||
"consumer adoption", "cross-version interoperability",
|
||||
"CARING effective access", "mapping rationale completeness"]}
|
||||
|
||||
|
||||
def bound_artifact_errors(context: Any) -> list[dict]:
|
||||
errors = []
|
||||
try:
|
||||
schema = yaml.safe_load((context.infospace_root / "schemas/mapping.schema.yaml").read_text())
|
||||
except (OSError, yaml.YAMLError) as exc:
|
||||
return [{"code": "mapping_schema_unreadable", "message": str(exc)}]
|
||||
for artifact in context.infospace.artifacts:
|
||||
if artifact.kind != "mapping":
|
||||
continue
|
||||
try:
|
||||
data = yaml.safe_load((context.infospace_root / artifact.path).read_text())
|
||||
errors.extend(dict(error, artifact_id=artifact.id) for error in schema_errors(data, schema))
|
||||
except (OSError, yaml.YAMLError) as exc:
|
||||
errors.append({"code": "mapping_unreadable", "artifact_id": artifact.id, "message": str(exc)})
|
||||
return errors
|
||||
108
src/info_tech_canon/maintenance.py
Normal file
108
src/info_tech_canon/maintenance.py
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
"""Reproducible projections, portable contract exports, and read measurements."""
|
||||
|
||||
from collections import Counter
|
||||
from dataclasses import replace
|
||||
from datetime import datetime, timezone
|
||||
import hashlib
|
||||
import io
|
||||
import json
|
||||
from pathlib import Path
|
||||
import shutil
|
||||
import statistics
|
||||
import subprocess
|
||||
import tarfile
|
||||
import tempfile
|
||||
import time
|
||||
|
||||
from . import generation
|
||||
|
||||
|
||||
def scope_inventory(context) -> dict:
|
||||
return {"artifact_count": len(context.infospace.artifacts),
|
||||
"kinds": dict(sorted(Counter(a.kind for a in context.infospace.artifacts).items())),
|
||||
"standards": sorted(a.id for a in context.infospace.artifacts if a.kind == "standard"),
|
||||
"models": sorted(a.id for a in context.infospace.artifacts if a.kind == "model")}
|
||||
|
||||
|
||||
def check_generated(context) -> dict:
|
||||
"""Render only into a disposable copy; never repair the source as a check."""
|
||||
with tempfile.TemporaryDirectory(prefix="canon-freshness-") as temporary:
|
||||
target = Path(temporary) / "infospace"
|
||||
shutil.copytree(context.infospace_root, target)
|
||||
copied = replace(context, infospace_root=target)
|
||||
files = {}
|
||||
for render in (generation.generate_indexes, generation.generate_tree,
|
||||
generation.generate_agent_briefs):
|
||||
for item in render(copied)["files"]:
|
||||
path = Path(item["path"])
|
||||
files[str(path.relative_to(target))] = path.read_bytes()
|
||||
stale = []
|
||||
for relative, expected in files.items():
|
||||
original = context.infospace_root / relative
|
||||
if not original.is_file() or original.read_bytes() != expected:
|
||||
stale.append(relative)
|
||||
return {"ok": not stale, "checked": len(files), "stale": sorted(stale)}
|
||||
|
||||
|
||||
def source_evidence(root: Path) -> dict:
|
||||
digest = hashlib.sha256()
|
||||
# Include source and generated corpus; exclude reports to avoid self-hashing.
|
||||
for path in sorted(root.rglob("*")):
|
||||
if path.is_file() and "validation" not in path.relative_to(root).parts:
|
||||
digest.update(str(path.relative_to(root)).encode() + b"\0" + path.read_bytes() + b"\0")
|
||||
def git(*args):
|
||||
try:
|
||||
result = subprocess.run(["git", "-C", str(root.parent), *args],
|
||||
capture_output=True, text=True, check=False)
|
||||
except FileNotFoundError:
|
||||
return None
|
||||
return result.stdout.strip() if result.returncode == 0 else None
|
||||
status = git("status", "--porcelain")
|
||||
return {"generated_at": datetime.now(timezone.utc).isoformat(),
|
||||
"revision": git("rev-parse", "HEAD"),
|
||||
"dirty": bool(status) if status is not None else None,
|
||||
"corpus_sha256": digest.hexdigest(),
|
||||
"digest_scope": "all infospace files except validation reports"}
|
||||
|
||||
|
||||
def export_emission_bundle(root: Path, destination: Path) -> dict:
|
||||
"""Content-addressed deterministic tar; a changed contract gets a new name."""
|
||||
paths = ["schemas/emission-cadence.schema.yaml",
|
||||
"standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md",
|
||||
"standards/emission-cadence/examples/qonto-assistant.yaml"]
|
||||
files = {path: (root / path).read_bytes() for path in paths}
|
||||
manifest = {"contract": "emission-cadence/0.1", "status": "draft",
|
||||
"files": {name: hashlib.sha256(data).hexdigest() for name, data in files.items()},
|
||||
"semantic_checks": ["unique source_id in sources"],
|
||||
"adoption_evidence": "Two independent source-owned implementations required; example does not count."}
|
||||
files["manifest.json"] = (json.dumps(manifest, sort_keys=True, indent=2) + "\n").encode()
|
||||
output = io.BytesIO()
|
||||
with tarfile.open(fileobj=output, mode="w", format=tarfile.USTAR_FORMAT) as archive:
|
||||
for name, data in sorted(files.items()):
|
||||
info = tarfile.TarInfo(name)
|
||||
info.size = len(data)
|
||||
info.mode = 0o644
|
||||
archive.addfile(info, io.BytesIO(data))
|
||||
data = output.getvalue()
|
||||
digest = hashlib.sha256(data).hexdigest()
|
||||
destination.mkdir(parents=True, exist_ok=True)
|
||||
path = destination / f"emission-cadence-0.1-{digest}.tar"
|
||||
try:
|
||||
with path.open("xb") as stream:
|
||||
stream.write(data)
|
||||
except FileExistsError:
|
||||
if path.read_bytes() != data:
|
||||
raise ValueError(f"Refusing to overwrite different bundle contents: {path}")
|
||||
return {"ok": True, "path": str(path), "sha256": digest, "manifest": manifest}
|
||||
|
||||
|
||||
def benchmark_reads(root: Path, runs: int = 10) -> dict:
|
||||
from .service import inspect_canon
|
||||
samples = []
|
||||
for _ in range(runs):
|
||||
started = time.perf_counter()
|
||||
inspect_canon(root)
|
||||
samples.append((time.perf_counter() - started) * 1000)
|
||||
return {"ok": True, "operation": "inspect", "runs": runs,
|
||||
"median_ms": statistics.median(samples), "max_ms": max(samples),
|
||||
"cache": "none; benchmark does not establish a production latency requirement"}
|
||||
15
src/info_tech_canon/paths.py
Normal file
15
src/info_tech_canon/paths.py
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
"""Corpus location is independent of the installed Python package."""
|
||||
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def infospace_root(root: Path | str | None = None) -> Path:
|
||||
if root:
|
||||
return Path(root).resolve()
|
||||
if os.environ.get("INFO_TECH_CANON_ROOT"):
|
||||
return Path(os.environ["INFO_TECH_CANON_ROOT"]).resolve()
|
||||
local = Path.cwd() / "infospace"
|
||||
if local.is_dir():
|
||||
return local.resolve()
|
||||
return Path(__file__).resolve().parents[2] / "infospace"
|
||||
|
|
@ -19,10 +19,11 @@ from .bench import (
|
|||
run_collection_checks,
|
||||
)
|
||||
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
|
||||
|
||||
|
|
|
|||
|
|
@ -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]],
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
59
tests/test_emission_cadence.py
Normal file
59
tests/test_emission_cadence.py
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
from copy import deepcopy
|
||||
|
||||
from jsonschema import Draft202012Validator
|
||||
import yaml
|
||||
|
||||
from info_tech_canon.service import DEFAULT_INFOSPACE_ROOT
|
||||
|
||||
|
||||
SCHEMA_PATH = DEFAULT_INFOSPACE_ROOT / "schemas" / "emission-cadence.schema.yaml"
|
||||
EXAMPLE_PATH = (
|
||||
DEFAULT_INFOSPACE_ROOT
|
||||
/ "standards"
|
||||
/ "emission-cadence"
|
||||
/ "examples"
|
||||
/ "qonto-assistant.yaml"
|
||||
)
|
||||
|
||||
|
||||
def _load_yaml(path):
|
||||
return yaml.safe_load(path.read_text(encoding="utf-8"))
|
||||
|
||||
|
||||
def _validator() -> Draft202012Validator:
|
||||
schema = _load_yaml(SCHEMA_PATH)
|
||||
Draft202012Validator.check_schema(schema)
|
||||
return Draft202012Validator(schema)
|
||||
|
||||
|
||||
def test_worked_example_validates() -> None:
|
||||
assert list(_validator().iter_errors(_load_yaml(EXAMPLE_PATH))) == []
|
||||
|
||||
|
||||
def test_expected_rate_requires_one_window_representation() -> None:
|
||||
payload = deepcopy(_load_yaml(EXAMPLE_PATH))
|
||||
rate = payload["sources"][0]
|
||||
rate.pop("window")
|
||||
|
||||
assert list(_validator().iter_errors(payload))
|
||||
|
||||
rate["window"] = "PT24H"
|
||||
rate["window_seconds"] = 86400
|
||||
assert list(_validator().iter_errors(payload))
|
||||
|
||||
|
||||
def test_heartbeat_form_accepts_either_mechanism_but_not_neither() -> None:
|
||||
payload = deepcopy(_load_yaml(EXAMPLE_PATH))
|
||||
intermittent = payload["sources"][1]
|
||||
intermittent.pop("heartbeat")
|
||||
assert list(_validator().iter_errors(payload)) == []
|
||||
|
||||
intermittent.pop("reconciliation")
|
||||
assert list(_validator().iter_errors(payload))
|
||||
|
||||
|
||||
def test_profile_fields_must_be_namespaced_extensions() -> None:
|
||||
payload = deepcopy(_load_yaml(EXAMPLE_PATH))
|
||||
payload["sources"][1]["evidence_class"] = "load-bearing"
|
||||
|
||||
assert list(_validator().iter_errors(payload))
|
||||
116
tests/test_maintenance.py
Normal file
116
tests/test_maintenance.py
Normal file
|
|
@ -0,0 +1,116 @@
|
|||
from copy import deepcopy
|
||||
import hashlib
|
||||
import json
|
||||
from pathlib import Path
|
||||
import shutil
|
||||
import tarfile
|
||||
|
||||
import pytest
|
||||
import yaml
|
||||
|
||||
from info_tech_canon.cli import main
|
||||
from info_tech_canon.maintenance import check_generated, export_emission_bundle, source_evidence
|
||||
from info_tech_canon.service import DEFAULT_INFOSPACE_ROOT, load_context, validate_canon
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def corpus(tmp_path):
|
||||
root = tmp_path / "infospace"
|
||||
shutil.copytree(DEFAULT_INFOSPACE_ROOT, root)
|
||||
return root
|
||||
|
||||
|
||||
def test_emission_cli_checks_versions_duplicates_and_bad_types(tmp_path, capsys):
|
||||
source = DEFAULT_INFOSPACE_ROOT / "standards/emission-cadence/examples/qonto-assistant.yaml"
|
||||
valid = yaml.safe_load(source.read_text())
|
||||
path = tmp_path / "declaration.yaml"
|
||||
path.write_text(yaml.safe_dump(valid))
|
||||
assert main(["emission-review", str(path)]) == 0
|
||||
assert json.loads(capsys.readouterr().out)["operational_truth_assessed"] is False
|
||||
for change in ("version", "duplicate", "bad_type"):
|
||||
data = deepcopy(valid)
|
||||
if change == "version":
|
||||
data["schema_version"] = "99.0"
|
||||
elif change == "duplicate":
|
||||
data["sources"].append(deepcopy(data["sources"][0]))
|
||||
else:
|
||||
data["sources"][0]["source_id"] = ["unhashable"]
|
||||
path.write_text(yaml.safe_dump(data))
|
||||
assert main(["emission-review", str(path)]) == 1
|
||||
payload = json.loads(capsys.readouterr().out)
|
||||
assert payload["errors"]
|
||||
if change == "duplicate":
|
||||
assert payload["errors"][0]["code"] == "duplicate_emission_cadence_source_id"
|
||||
|
||||
|
||||
def test_freshness_detects_missing_and_stale_without_repair(corpus):
|
||||
from info_tech_canon import generation
|
||||
context = load_context(corpus)
|
||||
for render in (generation.generate_indexes, generation.generate_tree, generation.generate_agent_briefs):
|
||||
render(context)
|
||||
assert check_generated(context)["ok"]
|
||||
stale = corpus / "views/by-concept.md"
|
||||
stale.write_text("stale\n")
|
||||
missing = corpus / "agent/retrieval-index.json"
|
||||
missing.unlink()
|
||||
result = check_generated(context)
|
||||
assert not result["ok"]
|
||||
assert "views/by-concept.md" in result["stale"]
|
||||
assert "agent/retrieval-index.json" in result["stale"]
|
||||
assert stale.read_text() == "stale\n"
|
||||
assert not missing.exists()
|
||||
|
||||
|
||||
def test_bundle_is_reproducible_and_refuses_corruption(tmp_path):
|
||||
first = export_emission_bundle(DEFAULT_INFOSPACE_ROOT, tmp_path)
|
||||
second = export_emission_bundle(DEFAULT_INFOSPACE_ROOT, tmp_path)
|
||||
assert first == second
|
||||
path = Path(first["path"])
|
||||
assert hashlib.sha256(path.read_bytes()).hexdigest() == first["sha256"]
|
||||
with tarfile.open(path) as archive:
|
||||
for name, digest in first["manifest"]["files"].items():
|
||||
assert hashlib.sha256(archive.extractfile(name).read()).hexdigest() == digest
|
||||
path.write_bytes(b"corrupted")
|
||||
with pytest.raises(ValueError, match="Refusing"):
|
||||
export_emission_bundle(DEFAULT_INFOSPACE_ROOT, tmp_path)
|
||||
|
||||
|
||||
def test_mapping_schema_and_explicit_ownership_are_enforced(corpus):
|
||||
from info_tech_canon.contracts import bound_artifact_errors
|
||||
mapping = corpus / "mappings/capability-anchors.yaml"
|
||||
data = yaml.safe_load(mapping.read_text())
|
||||
del data["target"]
|
||||
mapping.write_text(yaml.safe_dump(data))
|
||||
assert bound_artifact_errors(load_context(corpus))[0]["code"] == "schema_violation"
|
||||
pattern = corpus / "patterns/AgenticDrivesFunctional.md"
|
||||
text = pattern.read_text()
|
||||
# Reuse another artifact's title as an owned concept to create a real conflict.
|
||||
owner = next(a.title for a in load_context(corpus).infospace.artifacts if a.kind == "kernel")
|
||||
text = text.replace("owned_concepts:", f"owned_concepts:\n - {owner}")
|
||||
pattern.write_text(text)
|
||||
assert any(e["code"] == "concept_ownership_conflict" for e in validate_canon(corpus)["errors"])
|
||||
|
||||
|
||||
def test_evidence_digest_tracks_content_but_excludes_reports(corpus):
|
||||
before = source_evidence(corpus)
|
||||
(corpus / "validation/latest.json").write_text("{}")
|
||||
assert source_evidence(corpus)["corpus_sha256"] == before["corpus_sha256"]
|
||||
(corpus / "mappings/README.md").write_text("changed")
|
||||
assert source_evidence(corpus)["corpus_sha256"] != before["corpus_sha256"]
|
||||
assert before["generated_at"]
|
||||
|
||||
|
||||
def test_explicit_root_controls_capability_catalog(corpus, tmp_path):
|
||||
from info_tech_canon.service import review_capability_record, CanonServiceError
|
||||
(corpus / "models/capability/capabilities.yaml").unlink()
|
||||
record = tmp_path / "record.json"
|
||||
record.write_text('{"record_id":"example", "requires":[], "provisions":[]}')
|
||||
with pytest.raises(CanonServiceError, match="catalog"):
|
||||
review_capability_record(record, corpus)
|
||||
|
||||
|
||||
def test_missing_mapping_schema_is_a_validation_finding(corpus):
|
||||
(corpus / "schemas/mapping.schema.yaml").unlink()
|
||||
payload = validate_canon(corpus)
|
||||
assert not payload["ok"]
|
||||
assert any(e["code"] == "mapping_schema_unreadable" for e in payload["errors"])
|
||||
|
|
@ -25,11 +25,11 @@ def test_inspect_canon_counts_artifact_kinds() -> None:
|
|||
|
||||
assert payload["ok"] is True
|
||||
assert payload["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()
|
||||
|
|
|
|||
132
workplans/INFO-WP-0019-conformance-and-maintenance.md
Normal file
132
workplans/INFO-WP-0019-conformance-and-maintenance.md
Normal file
|
|
@ -0,0 +1,132 @@
|
|||
---
|
||||
id: INFO-WP-0019
|
||||
type: workplan
|
||||
title: "Conformance, reproducible consumption, and maintenance"
|
||||
domain: infotech
|
||||
repo: info-tech-canon
|
||||
status: blocked
|
||||
owner: codex
|
||||
topic_slug: canon-optimization
|
||||
created: "2026-09-05"
|
||||
updated: "2026-09-05"
|
||||
state_hub_workstream_id: "b29261ba-c1e4-5533-8185-ab2d5b433685"
|
||||
---
|
||||
|
||||
# Conformance, reproducible consumption, and maintenance
|
||||
|
||||
Implements the optimization recommendations in
|
||||
`history/2026-09-05_002437+0200-scope-against-intent.md`.
|
||||
Reviewed against the current working tree; authorized by the operator on
|
||||
2026-09-05. Uses the AGENTS.md INFO-WP file convention.
|
||||
|
||||
## Reusable conformance and coverage
|
||||
|
||||
```task
|
||||
id: INFO-WP-0019-T01
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "abc0ed79-009f-5254-a2bf-4dcedd1925e9"
|
||||
```
|
||||
|
||||
Extract shared schema validation and emission-cadence semantics into contract
|
||||
modules. Expose arbitrary declaration validation and explicit coverage through
|
||||
the CLI. Reject unsupported versions, malformed declarations, and duplicate
|
||||
source IDs. Enforce explicit ownership conflicts. Preserve all existing tests.
|
||||
|
||||
## Reproducible contract bundle and adoption gate
|
||||
|
||||
```task
|
||||
id: INFO-WP-0019-T02
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "1ec85dc5-5775-50b6-8066-ac839fd252c9"
|
||||
```
|
||||
|
||||
Provide deterministic, content-addressed export of the cadence contract,
|
||||
schema, and example; refuse overwriting different contents. Define owner-authored
|
||||
adoption evidence requirements and keep draft promotion contingent on two
|
||||
independent implementations. Local examples must not count as adoption evidence.
|
||||
|
||||
## Freshness and evidence
|
||||
|
||||
```task
|
||||
id: INFO-WP-0019-T03
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "e4171772-50bf-58f6-9c87-8eddbef1caa5"
|
||||
```
|
||||
|
||||
Add non-mutating generated-asset checks, reproducible scope inventory, and
|
||||
revision/time/source-digest evidence on validation reports. Refresh work-record
|
||||
projections via State Hub. Check stale and missing generated assets with tests.
|
||||
|
||||
## Portable consumption
|
||||
|
||||
```task
|
||||
id: INFO-WP-0019-T04
|
||||
status: done
|
||||
priority: medium
|
||||
state_hub_task_id: "e258d84d-d969-5032-baef-ae1060843319"
|
||||
```
|
||||
|
||||
Remove hardcoded workstation dependency paths. Resolve an installed bench
|
||||
distribution and an explicit external corpus root. Prove wheel installation
|
||||
and commands from an unrelated directory. Document upstream packaging limits
|
||||
without changing sibling repositories.
|
||||
|
||||
## Measure performance and verify implementation
|
||||
|
||||
```task
|
||||
id: INFO-WP-0019-T05
|
||||
status: done
|
||||
priority: medium
|
||||
state_hub_task_id: "09a585e8-4c67-5143-bc3a-ae47623547ea"
|
||||
```
|
||||
|
||||
Measure repeated reads before deciding whether caching is justified. Run all
|
||||
tests, canon/profile validation, generated freshness checks, and the clean
|
||||
installation proof. Update SCOPE/README and record evidence. Avoid speculative
|
||||
models or runtime expansion.
|
||||
|
||||
## Independent consumer adoption
|
||||
|
||||
```task
|
||||
id: INFO-WP-0019-T06
|
||||
status: wait
|
||||
priority: high
|
||||
state_hub_task_id: "b33aeb8c-ba7c-5094-9902-85565c1e721b"
|
||||
```
|
||||
|
||||
Requires two source owners to provide independently implemented declarations
|
||||
and consumer results pinned to the contract digest. This repo can validate
|
||||
submitted evidence but cannot manufacture source ownership or deployed proof.
|
||||
No external messages or consumer changes are authorized by this workplan.
|
||||
Promotion remains blocked until that evidence arrives.
|
||||
|
||||
## Implementation notes
|
||||
|
||||
T01–T04 implemented in `contracts.py`, `maintenance.py`, `paths.py`, CLI,
|
||||
service integration, and `docs/canon-consumption.md`. Explicit mapping schema
|
||||
bindings and ownership checks improve coverage without claiming exhaustive
|
||||
semantic validation. The normal bench initializer imports unrelated database
|
||||
integrations; installed-module discovery retains the narrow adapter. Clean
|
||||
wheel consumption uses the documented explicit-dependency installation until
|
||||
the upstream owner separates reference-data packaging.
|
||||
|
||||
Registration: State Hub workstream `b29261ba-c1e4-5533-8185-ab2d5b433685`.
|
||||
The consistency tool reports an INFO-WP/ITC-WP prefix advisory: this plan follows
|
||||
the explicit INFO-WP convention in AGENTS.md; existing plans and the registry
|
||||
use ITC-WP. This naming inconsistency does not prevent registration.
|
||||
|
||||
## Verification — 2026-09-05
|
||||
|
||||
`make check`: 36 tests passed (22.42 seconds); all 77 generated assets current;
|
||||
canon validation passed (76 artifacts, 315 relationships); Small-SaaS passed
|
||||
(15 payloads). Installed-wheel inspect, validation, and emission review passed
|
||||
from an unrelated directory with PYTHONPATH unset and a copied corpus.
|
||||
Ten uncached inspections measured median 788.05 ms, maximum 1241.92 ms;
|
||||
caching remains deferred pending a workload/latency requirement.
|
||||
|
||||
Local implementation T01–T05 is complete. Overall status is blocked only on
|
||||
T06's independent owner evidence. See
|
||||
`history/2026-09-05_optimization-implementation.md` for artifacts and limitations.
|
||||
|
|
@ -8,7 +8,7 @@ repo: info-tech-canon
|
|||
status: finished
|
||||
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
|
||||
|
|
|
|||
80
workplans/ITC-WP-0018-emission-cadence-contract.md
Normal file
80
workplans/ITC-WP-0018-emission-cadence-contract.md
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
---
|
||||
id: ITC-WP-0018
|
||||
type: workplan
|
||||
title: "EmissionCadenceDeclaration semantic contract"
|
||||
domain: infotech
|
||||
repo: info-tech-canon
|
||||
status: finished
|
||||
owner: codex
|
||||
topic_slug: emission-cadence
|
||||
priority: high
|
||||
created: "2026-09-04"
|
||||
updated: "2026-09-04"
|
||||
spec_refs:
|
||||
- infospace/assimilation/emission-cadence/ASSIMILATION.md
|
||||
- infospace/standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md
|
||||
- infospace/schemas/emission-cadence.schema.yaml
|
||||
state_hub_workstream_id: "78f879cf-f097-5ee5-8f6a-15e34209822d"
|
||||
---
|
||||
|
||||
# ITC-WP-0018 — EmissionCadenceDeclaration Semantic Contract
|
||||
|
||||
## Goal
|
||||
|
||||
Adopt the King’s Guard handover as the ecosystem-wide, versioned semantic
|
||||
contract for declaring expected stream emission, while leaving NetKingdom
|
||||
security obligations in the importing NetKingdom profile.
|
||||
|
||||
## T01 — Review ownership and assimilate the handover
|
||||
|
||||
```task
|
||||
id: ITC-WP-0018-T01
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "b6cba288-1edf-557c-b692-cd24058fb9d6"
|
||||
```
|
||||
|
||||
Preserve the handed-over draft, compare its concepts with the existing
|
||||
Observability and Governance models, and record the authorized `adapt`
|
||||
disposition from `GH-DEC-2026-004`.
|
||||
|
||||
## T02 — Publish the generic contract and validation schema
|
||||
|
||||
```task
|
||||
id: ITC-WP-0018-T02
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "cca8a6e6-03fe-50a1-9f0d-84cbc8b92cac"
|
||||
```
|
||||
|
||||
Publish the generic forms, fields, validation semantics, compatibility rules,
|
||||
and a non-authoritative worked example. Do not encode the NetKingdom rule that
|
||||
rare load-bearing classes require heartbeat plus reconciliation.
|
||||
|
||||
## T03 — Register, retrieve, validate, and announce
|
||||
|
||||
```task
|
||||
id: ITC-WP-0018-T03
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "9df9fd50-26e0-531e-a0a2-9f92eed5f2b3"
|
||||
```
|
||||
|
||||
Register the artifact and schema, regenerate retrieval assets, run the full
|
||||
validation and test suite, and notify the handing-over and deciding repositories.
|
||||
|
||||
## Acceptance
|
||||
|
||||
- InfoTechCanon is the sole owner of `EmissionCadenceDeclaration` semantics.
|
||||
- The schema validates both generic forms and rejects incomplete form payloads.
|
||||
- NetKingdom-specific evidence classes and MUST/SHOULD policy are not defined here.
|
||||
- The artifact is discoverable through the CLI/JSON/API retrieval surfaces.
|
||||
- Generated assets, validation, tests, work records, and State Hub agree.
|
||||
|
||||
## Result
|
||||
|
||||
Completed 2026-09-04 in canon 0.7.0. The handed-over draft was adapted into the
|
||||
generic standard and schema, the security-profile boundary was preserved, the
|
||||
worked example and structural validation were published, and all retrieval
|
||||
assets were regenerated. `make validate` reports 0 errors and 0 warnings;
|
||||
`make test` passes 29 tests.
|
||||
|
|
@ -2,7 +2,7 @@ repository: info-tech-canon
|
|||
type: workplan-registry
|
||||
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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue