ssot-contracts 0.2.16.dev1__tar.gz → 0.2.17.dev1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/PKG-INFO +2 -2
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/README.md +1 -1
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/pyproject.toml +1 -1
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/contract_data.py +1 -1
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/generated/python/tui_metadata.py +1 -1
- ssot_contracts-0.2.17.dev1/src/ssot_contracts/schema/adr.schema.json +1 -0
- ssot_contracts-0.2.17.dev1/src/ssot_contracts/schema/registry.schema.json +1 -0
- ssot_contracts-0.2.17.dev1/src/ssot_contracts/schema/spec.schema.json +1 -0
- ssot_contracts-0.2.17.dev1/src/ssot_contracts/templates/adr/ADR-0617-feature-implementation-claim-ceilings.yaml +44 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/adr/manifest.json +18 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/registry.full.json +1 -1
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/registry.minimal.json +1 -1
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/specs/SPEC-0600-registry-core.yaml +8 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/specs/SPEC-0607-repo-policy.yaml +8 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/specs/SPEC-0610-file-tree.yaml +2 -1
- ssot_contracts-0.2.17.dev1/src/ssot_contracts/templates/specs/SPEC-0617-feature-implementation-claim-ceilings.yaml +53 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/specs/manifest.json +25 -3
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts.egg-info/PKG-INFO +2 -2
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts.egg-info/SOURCES.txt +2 -0
- ssot_contracts-0.2.16.dev1/src/ssot_contracts/schema/adr.schema.json +0 -1
- ssot_contracts-0.2.16.dev1/src/ssot_contracts/schema/registry.schema.json +0 -1
- ssot_contracts-0.2.16.dev1/src/ssot_contracts/schema/spec.schema.json +0 -1
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/setup.cfg +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/__init__.py +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/generated/__init__.py +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/generated/python/__init__.py +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/generated/python/cli_metadata.py +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/generated/python/enums.py +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/generated/python/ids.py +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/schema/__init__.py +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/schema/boundary.snapshot.schema.json +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/schema/certification.report.schema.json +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/schema/graph.export.schema.json +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/schema/published.snapshot.schema.json +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/schema/release.snapshot.schema.json +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/schema/validation.report.schema.json +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/__init__.py +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/adr/ADR-0600-canonical-json-registry.yaml +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/adr/ADR-0601-features-are-targetable-units.yaml +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/adr/ADR-0602-issues-are-plannable-work-items.yaml +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/adr/ADR-0603-entity-centric-registry-derived-graph.yaml +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/adr/ADR-0604-normalized-prefixed-ids.yaml +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/adr/ADR-0605-claim-status-vs-tier.yaml +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/adr/ADR-0606-feature-implementation-vs-lifecycle.yaml +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/adr/ADR-0607-immutable-boundary-and-release-snapshots.yaml +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/adr/ADR-0608-fail-closed-guards.yaml +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/adr/ADR-0609-generated-projections-are-non-canonical.yaml +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/adr/ADR-0610-explicit-schema-versioning.yaml +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/adr/ADR-0611-portable-core-repo-specific-evidence-adapters.yaml +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/adr/ADR-0612-ssot-path-and-filename-length-limits.yaml +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/adr/ADR-0613-profiles-as-reusable-feature-bundles.yaml +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/adr/ADR-0614-specs-own-typed-adr-links.yaml +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/adr/ADR-0615-downstream-assurance-language-ceilings.yaml +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/adr/ADR-0616-out-of-bounds-implementation-disposition.yaml +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/adr/__init__.py +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/specs/SPEC-0601-cli.yaml +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/specs/SPEC-0602-graph-model.yaml +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/specs/SPEC-0603-feature-lifecycle.yaml +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/specs/SPEC-0604-claim-statuses.yaml +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/specs/SPEC-0605-claim-tiers.yaml +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/specs/SPEC-0606-snapshots-and-reports.yaml +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/specs/SPEC-0608-gates-and-fences.yaml +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/specs/SPEC-0609-id-normalization.yaml +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/specs/SPEC-0611-planning-horizons.yaml +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/specs/SPEC-0612-python-api.yaml +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/specs/SPEC-0613-ssot-path-length-policy.yaml +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/specs/SPEC-0614-profile-evaluation-and-boundary-resolution.yaml +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/specs/SPEC-0615-typed-spec-to-adr-linking.yaml +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/specs/SPEC-0616-out-of-bounds-implementation-disposition.yaml +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/specs/__init__.py +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts.egg-info/dependency_links.txt +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts.egg-info/requires.txt +0 -0
- {ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ssot-contracts
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.17.dev1
|
|
4
4
|
Summary: Canonical schemas, templates, manifests, and generated Python contract artifacts for SSOT.
|
|
5
5
|
Author-email: Jacob Stewart <jacob@swarmauri.com>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -30,7 +30,7 @@ Description-Content-Type: text/markdown
|
|
|
30
30
|
Requires-Dist: tomli>=2.0.1; python_version < "3.11"
|
|
31
31
|
|
|
32
32
|
<div align="center">
|
|
33
|
-
<h1
|
|
33
|
+
<h1>🔷 ssot-contracts</h1>
|
|
34
34
|
<p><strong>Canonical schemas, templates, manifests, and generated contract metadata for SSOT.</strong></p>
|
|
35
35
|
</div>
|
|
36
36
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ssot-contracts"
|
|
7
|
-
version = "0.2.
|
|
7
|
+
version = "0.2.17.dev1"
|
|
8
8
|
description = "Canonical schemas, templates, manifests, and generated Python contract artifacts for SSOT."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10,<3.14"
|
|
@@ -4,7 +4,7 @@ from ssot_contracts.contract_data import CONTRACT_DATA
|
|
|
4
4
|
|
|
5
5
|
ENTITY_SECTIONS = tuple((section["key"], section["label"]) for section in CONTRACT_DATA["entity_sections"])
|
|
6
6
|
ENTITY_VIEW_SECTIONS = {
|
|
7
|
-
"features": ("id", "title", "implementation_status", "horizon"),
|
|
7
|
+
"features": ("id", "title", "effective_status", "implementation_status", "horizon"),
|
|
8
8
|
"profiles": ("id", "title", "status"),
|
|
9
9
|
"tests": ("id", "title", "status"),
|
|
10
10
|
"claims": ("id", "title", "status"),
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"$defs":{"normalizedId":{"maxLength":128,"pattern":"^[a-z][a-z0-9-]*:[a-z0-9][a-z0-9._-]*$","type":"string"},"normalizedIdList":{"items":{"$ref":"#/$defs/normalizedId"},"type":"array"}},"$id":"https://example.invalid/ssot-registry/adr.schema.json","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":true,"properties":{"body":{"minLength":1,"type":"string"},"decision_date":{"type":["string","null"]},"id":{"$ref":"#/$defs/normalizedId"},"kind":{"const":"adr"},"number":{"minimum":1,"type":"integer"},"origin":{"enum":["ssot-core","ssot-origin","extension-pack","repo-local"]},"references":{"items":{"type":"string"},"type":"array"},"schema_version":{"pattern":"^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$","type":"string"},"slug":{"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","type":"string"},"status":{"enum":["draft","in_review","accepted","rejected","superseded","withdrawn","retired"]},"status_notes":{"items":{"type":"object"},"type":"array"},"summary":{"minLength":1,"type":"string"},"superseded_by":{"$ref":"#/$defs/normalizedIdList"},"supersedes":{"$ref":"#/$defs/normalizedIdList"},"tags":{"items":{"type":"string"},"type":"array"},"title":{"minLength":1,"type":"string"}},"required":["schema_version","kind","id","number","slug","title","status","origin","summary","body"],"type":"object"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"$defs":{"adr":{"additionalProperties":true,"properties":{"content_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"id":{"$ref":"#/$defs/normalizedId"},"immutable":{"type":"boolean"},"managed":{"type":"boolean"},"number":{"minimum":1,"type":"integer"},"origin":{"enum":["ssot-core","ssot-origin","extension-pack","repo-local"]},"package_version":{"minLength":1,"type":"string"},"path":{"minLength":1,"type":"string"},"slug":{"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","type":"string"},"status":{"$ref":"#/$defs/documentStatus"},"status_notes":{"items":{"$ref":"#/$defs/statusNote"},"type":"array"},"superseded_by":{"$ref":"#/$defs/stringList"},"supersedes":{"$ref":"#/$defs/stringList"},"title":{"minLength":1,"type":"string"}},"required":["id","number","slug","title","path","origin","managed","immutable","package_version","content_sha256","status","supersedes","superseded_by","status_notes"],"type":"object"},"boundary":{"additionalProperties":true,"properties":{"body":{"type":"string"},"feature_ids":{"$ref":"#/$defs/stringList"},"frozen":{"type":"boolean"},"id":{"$ref":"#/$defs/normalizedId"},"profile_ids":{"items":{"type":"string"},"type":"array"},"status":{"enum":["draft","active","frozen","retired"]},"title":{"minLength":1,"type":"string"}},"required":["id","title","status","frozen","feature_ids","profile_ids"],"type":"object"},"claim":{"additionalProperties":true,"properties":{"body":{"type":"string"},"description":{"type":"string"},"evidence_ids":{"$ref":"#/$defs/stringList"},"feature_ids":{"$ref":"#/$defs/stringList"},"id":{"$ref":"#/$defs/normalizedId"},"kind":{"minLength":1,"type":"string"},"status":{"enum":["proposed","declared","implemented","asserted","evidenced","certified","promoted","published","blocked","retired"]},"test_ids":{"$ref":"#/$defs/stringList"},"tier":{"enum":["T0","T1","T2","T3","T4"]},"title":{"minLength":1,"type":"string"}},"required":["id","title","status","tier","kind","description","feature_ids","test_ids","evidence_ids"],"type":"object"},"documentIdReservations":{"additionalProperties":false,"properties":{"adr":{"items":{"$ref":"#/$defs/documentReservationRange"},"type":"array"},"spec":{"items":{"$ref":"#/$defs/documentReservationRange"},"type":"array"}},"required":["adr","spec"],"type":"object"},"documentReservationRange":{"additionalProperties":true,"properties":{"assignable_by_repo":{"type":"boolean"},"deletable":{"type":"boolean"},"end":{"minimum":1,"type":"integer"},"immutable":{"type":"boolean"},"owner":{"minLength":1,"type":"string"},"start":{"minimum":1,"type":"integer"}},"required":["owner","start","end","immutable","deletable","assignable_by_repo"],"type":"object"},"documentStatus":{"enum":["draft","in_review","accepted","rejected","superseded","withdrawn","retired"]},"evidence":{"additionalProperties":true,"properties":{"body":{"type":"string"},"claim_ids":{"$ref":"#/$defs/stringList"},"id":{"$ref":"#/$defs/normalizedId"},"kind":{"minLength":1,"type":"string"},"path":{"minLength":1,"type":"string"},"status":{"enum":["planned","collected","passed","failed","stale"]},"test_ids":{"$ref":"#/$defs/stringList"},"tier":{"enum":["T0","T1","T2","T3","T4"]},"title":{"minLength":1,"type":"string"}},"required":["id","title","status","kind","tier","path","claim_ids","test_ids"],"type":"object"},"feature":{"additionalProperties":true,"properties":{"body":{"type":"string"},"claim_ids":{"$ref":"#/$defs/stringList"},"description":{"type":"string"},"id":{"$ref":"#/$defs/normalizedId"},"implementation_status":{"enum":["absent","partial","implemented"]},"lifecycle":{"$ref":"#/$defs/featureLifecycle"},"plan":{"$ref":"#/$defs/featurePlan"},"requires":{"$ref":"#/$defs/stringList"},"spec_ids":{"$ref":"#/$defs/stringList"},"test_ids":{"$ref":"#/$defs/stringList"},"title":{"minLength":1,"type":"string"}},"required":["id","title","description","implementation_status","lifecycle","plan","spec_ids","claim_ids","test_ids"],"type":"object"},"featureLifecycle":{"additionalProperties":true,"properties":{"effective_release_id":{"type":["string","null"]},"note":{"type":["string","null"]},"replacement_feature_ids":{"$ref":"#/$defs/stringList"},"stage":{"enum":["active","deprecated","obsolete","removed"]}},"required":["stage","replacement_feature_ids","note"],"type":"object"},"featurePlan":{"additionalProperties":true,"properties":{"horizon":{"enum":["current","next","future","explicit","backlog","out_of_bounds"]},"out_of_bounds_disposition":{"enum":["prohibited","tolerated",null],"type":["string","null"]},"slot":{"type":["string","null"]},"target_claim_tier":{"enum":["T0","T1","T2","T3","T4",null],"type":["string","null"]},"target_lifecycle_stage":{"enum":["active","deprecated","obsolete","removed"]}},"required":["horizon","slot","target_claim_tier","target_lifecycle_stage"],"type":"object"},"guardPolicies":{"additionalProperties":true,"type":"object"},"issue":{"additionalProperties":true,"properties":{"body":{"type":"string"},"claim_ids":{"$ref":"#/$defs/stringList"},"description":{"type":"string"},"evidence_ids":{"$ref":"#/$defs/stringList"},"feature_ids":{"$ref":"#/$defs/stringList"},"id":{"$ref":"#/$defs/normalizedId"},"plan":{"$ref":"#/$defs/issuePlan"},"release_blocking":{"type":"boolean"},"risk_ids":{"$ref":"#/$defs/stringList"},"severity":{"enum":["low","medium","high","critical"]},"status":{"enum":["open","in_progress","blocked","resolved","closed"]},"test_ids":{"$ref":"#/$defs/stringList"},"title":{"minLength":1,"type":"string"}},"required":["id","title","status","severity","description","plan","feature_ids","claim_ids","test_ids","evidence_ids","risk_ids","release_blocking"],"type":"object"},"issuePlan":{"additionalProperties":true,"properties":{"horizon":{"enum":["current","next","future","explicit","backlog","out_of_bounds"]},"slot":{"type":["string","null"]}},"required":["horizon","slot"],"type":"object"},"normalizedId":{"maxLength":128,"pattern":"^[a-z][a-z0-9-]*:[a-z0-9][a-z0-9._-]*$","type":"string"},"paths":{"additionalProperties":true,"properties":{"adr_root":{"minLength":1,"type":"string"},"cache_root":{"minLength":1,"type":"string"},"evidence_root":{"minLength":1,"type":"string"},"graph_root":{"minLength":1,"type":"string"},"release_root":{"minLength":1,"type":"string"},"report_root":{"minLength":1,"type":"string"},"schema_root":{"minLength":1,"type":"string"},"spec_root":{"minLength":1,"type":"string"},"ssot_root":{"minLength":1,"type":"string"}},"required":["ssot_root","schema_root","adr_root","spec_root","graph_root","evidence_root","release_root","report_root","cache_root"],"type":"object"},"profile":{"additionalProperties":false,"properties":{"body":{"type":"string"},"claim_tier":{"enum":["T0","T1","T2","T3","T4",null],"type":["string","null"]},"description":{"type":"string"},"evaluation":{"additionalProperties":false,"properties":{"allow_feature_override_tier":{"type":"boolean"},"mode":{"enum":["all_features_must_pass"]}},"required":["mode","allow_feature_override_tier"],"type":"object"},"feature_ids":{"$ref":"#/$defs/stringList"},"id":{"$ref":"#/$defs/normalizedId"},"kind":{"enum":["capability","certification","deployment","interoperability"]},"profile_ids":{"$ref":"#/$defs/stringList"},"status":{"enum":["draft","active","retired"]},"title":{"type":"string"}},"required":["id","title","description","status","kind","feature_ids","profile_ids","claim_tier","evaluation"],"type":"object"},"program":{"additionalProperties":true,"properties":{"active_boundary_id":{"$ref":"#/$defs/normalizedId"},"active_release_id":{"$ref":"#/$defs/normalizedId"}},"required":["active_boundary_id","active_release_id"],"type":"object"},"release":{"additionalProperties":true,"properties":{"body":{"type":"string"},"boundary_id":{"$ref":"#/$defs/normalizedId"},"boundary_ids":{"$ref":"#/$defs/stringList"},"claim_ids":{"$ref":"#/$defs/stringList"},"evidence_ids":{"$ref":"#/$defs/stringList"},"id":{"$ref":"#/$defs/normalizedId"},"status":{"enum":["draft","candidate","certified","promoted","published","revoked"]},"version":{"minLength":1,"type":"string"}},"required":["id","version","status","boundary_id","boundary_ids","claim_ids","evidence_ids"],"type":"object"},"repo":{"additionalProperties":true,"properties":{"id":{"$ref":"#/$defs/normalizedId"},"kind":{"enum":["ssot-core","ssot-origin","extension-pack","repo-local"]},"name":{"minLength":1,"type":"string"},"version":{"minLength":1,"type":"string"}},"required":["id","name","version","kind"],"type":"object"},"risk":{"additionalProperties":true,"properties":{"body":{"type":"string"},"claim_ids":{"$ref":"#/$defs/stringList"},"description":{"type":"string"},"evidence_ids":{"$ref":"#/$defs/stringList"},"feature_ids":{"$ref":"#/$defs/stringList"},"id":{"$ref":"#/$defs/normalizedId"},"issue_ids":{"$ref":"#/$defs/stringList"},"release_blocking":{"type":"boolean"},"severity":{"enum":["low","medium","high","critical"]},"status":{"enum":["active","mitigated","accepted","retired"]},"test_ids":{"$ref":"#/$defs/stringList"},"title":{"minLength":1,"type":"string"}},"required":["id","title","status","severity","description","feature_ids","claim_ids","test_ids","evidence_ids","issue_ids","release_blocking"],"type":"object"},"spec":{"additionalProperties":true,"properties":{"adr_ids":{"$ref":"#/$defs/stringList"},"content_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"id":{"$ref":"#/$defs/normalizedId"},"immutable":{"type":"boolean"},"kind":{"enum":["normative","operational","governance","local-policy"]},"managed":{"type":"boolean"},"number":{"minimum":1,"type":"integer"},"origin":{"enum":["ssot-core","ssot-origin","extension-pack","repo-local"]},"package_version":{"minLength":1,"type":"string"},"path":{"minLength":1,"type":"string"},"slug":{"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","type":"string"},"status":{"$ref":"#/$defs/documentStatus"},"status_notes":{"items":{"$ref":"#/$defs/statusNote"},"type":"array"},"superseded_by":{"$ref":"#/$defs/stringList"},"supersedes":{"$ref":"#/$defs/stringList"},"title":{"minLength":1,"type":"string"}},"required":["id","number","slug","title","path","origin","managed","immutable","package_version","content_sha256","kind","adr_ids","status","supersedes","superseded_by","status_notes"],"type":"object"},"statusNote":{"additionalProperties":false,"properties":{"actor":{"minLength":1,"type":"string"},"at":{"minLength":1,"type":"string"},"note":{"minLength":1,"type":"string"},"reason":{"minLength":1,"type":"string"},"status":{"$ref":"#/$defs/documentStatus"}},"required":["status","note","at"],"type":"object"},"stringList":{"items":{"$ref":"#/$defs/normalizedId"},"type":"array"},"test":{"additionalProperties":true,"properties":{"body":{"type":"string"},"claim_ids":{"$ref":"#/$defs/stringList"},"evidence_ids":{"$ref":"#/$defs/stringList"},"execution":{"$ref":"#/$defs/testExecution"},"feature_ids":{"$ref":"#/$defs/stringList"},"id":{"$ref":"#/$defs/normalizedId"},"kind":{"minLength":1,"type":"string"},"path":{"minLength":1,"type":"string"},"status":{"enum":["planned","passing","failing","blocked","skipped"]},"title":{"minLength":1,"type":"string"}},"required":["id","title","status","kind","path","feature_ids","claim_ids","evidence_ids"],"type":"object"},"testExecution":{"additionalProperties":false,"properties":{"argv":{"items":{"type":"string"},"minItems":1,"type":"array"},"cwd":{"minLength":1,"type":"string"},"env":{"additionalProperties":{"type":"string"},"type":"object"},"mode":{"const":"command"},"success":{"$ref":"#/$defs/testExecutionSuccess"},"timeout_seconds":{"exclusiveMinimum":0,"type":"integer"}},"required":["mode","argv","cwd","env","timeout_seconds","success"],"type":"object"},"testExecutionSuccess":{"additionalProperties":false,"properties":{"expected":{"type":"integer"},"type":{"const":"exit_code"}},"required":["type","expected"],"type":"object"},"tooling":{"additionalProperties":true,"properties":{"initialized_with_version":{"minLength":1,"type":"string"},"last_upgraded_from_version":{"minLength":1,"type":"string"},"ssot_registry_version":{"minLength":1,"type":"string"}},"required":["ssot_registry_version","initialized_with_version","last_upgraded_from_version"],"type":"object"}},"$id":"https://example.invalid/ssot-registry/registry.schema.json","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"allOf":[{"if":{"properties":{"repo":{"properties":{"kind":{"const":"repo-local"}},"required":["kind"],"type":"object"}}},"then":{"properties":{"adrs":{"not":{"contains":{"properties":{"origin":{"const":"ssot-core"}},"required":["origin"],"type":"object"}}},"specs":{"not":{"contains":{"properties":{"origin":{"const":"ssot-core"}},"required":["origin"],"type":"object"}}}}}}],"properties":{"adrs":{"items":{"$ref":"#/$defs/adr"},"type":"array"},"boundaries":{"items":{"$ref":"#/$defs/boundary"},"type":"array"},"claims":{"items":{"$ref":"#/$defs/claim"},"type":"array"},"document_id_reservations":{"$ref":"#/$defs/documentIdReservations"},"evidence":{"items":{"$ref":"#/$defs/evidence"},"type":"array"},"features":{"items":{"$ref":"#/$defs/feature"},"type":"array"},"guard_policies":{"$ref":"#/$defs/guardPolicies"},"issues":{"items":{"$ref":"#/$defs/issue"},"type":"array"},"paths":{"$ref":"#/$defs/paths"},"profiles":{"items":{"$ref":"#/$defs/profile"},"type":"array"},"program":{"$ref":"#/$defs/program"},"releases":{"items":{"$ref":"#/$defs/release"},"type":"array"},"repo":{"$ref":"#/$defs/repo"},"risks":{"items":{"$ref":"#/$defs/risk"},"type":"array"},"schema_version":{"const":"0.4.0"},"specs":{"items":{"$ref":"#/$defs/spec"},"type":"array"},"tests":{"items":{"$ref":"#/$defs/test"},"type":"array"},"tooling":{"$ref":"#/$defs/tooling"}},"required":["schema_version","repo","tooling","paths","program","guard_policies","document_id_reservations","features","profiles","tests","claims","evidence","issues","risks","boundaries","releases","adrs","specs"],"title":"ssot-registry canonical registry","type":"object"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"$defs":{"normalizedId":{"maxLength":128,"pattern":"^[a-z][a-z0-9-]*:[a-z0-9][a-z0-9._-]*$","type":"string"},"normalizedIdList":{"items":{"$ref":"#/$defs/normalizedId"},"type":"array"}},"$id":"https://example.invalid/ssot-registry/spec.schema.json","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":true,"properties":{"adr_ids":{"$ref":"#/$defs/normalizedIdList"},"body":{"minLength":1,"type":"string"},"decision_date":{"type":["string","null"]},"id":{"$ref":"#/$defs/normalizedId"},"kind":{"const":"spec"},"number":{"minimum":1,"type":"integer"},"origin":{"enum":["ssot-core","ssot-origin","extension-pack","repo-local"]},"references":{"items":{"type":"string"},"type":"array"},"schema_version":{"pattern":"^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$","type":"string"},"slug":{"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","type":"string"},"spec_kind":{"enum":["normative","operational","governance","local-policy"]},"status":{"enum":["draft","in_review","accepted","rejected","superseded","withdrawn","retired"]},"status_notes":{"items":{"type":"object"},"type":"array"},"summary":{"minLength":1,"type":"string"},"superseded_by":{"$ref":"#/$defs/normalizedIdList"},"supersedes":{"$ref":"#/$defs/normalizedIdList"},"tags":{"items":{"type":"string"},"type":"array"},"title":{"minLength":1,"type":"string"}},"required":["schema_version","kind","id","number","slug","title","status","origin","summary","body","spec_kind","adr_ids"],"type":"object"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
body: |-
|
|
2
|
+
## Context
|
|
3
|
+
|
|
4
|
+
Feature implementation status, claim lifecycle status, and claim assurance tier are separate fields. That separation is useful, but it can overstate implementation when a feature has multiple active linked claims and only one of them satisfies the target tier.
|
|
5
|
+
|
|
6
|
+
`T0` is inventory-level assurance. A `T0` claim records declared intent, scope, or placeholder support; it does not prove working behavior. Therefore a feature with an active required `T0` claim must not be marked `implemented`.
|
|
7
|
+
|
|
8
|
+
## Decision
|
|
9
|
+
|
|
10
|
+
Feature implementation promotion is capped by active required linked claims.
|
|
11
|
+
|
|
12
|
+
All active linked claims on a feature are required for feature implementation closure. Retired claims are ignored. A stronger linked claim cannot override a weaker active required claim.
|
|
13
|
+
|
|
14
|
+
A feature may be marked `implemented` only when:
|
|
15
|
+
|
|
16
|
+
- linked tests pass,
|
|
17
|
+
- required features are implemented,
|
|
18
|
+
- every active required linked claim satisfies the feature's effective target tier,
|
|
19
|
+
- no active required linked claim is `T0`.
|
|
20
|
+
|
|
21
|
+
If an active required `T0` claim is linked to a feature, the highest allowed feature `implementation_status` is `partial`. If all linked support is planned or placeholder-only, the highest allowed feature `implementation_status` is `absent`.
|
|
22
|
+
|
|
23
|
+
## Consequences
|
|
24
|
+
|
|
25
|
+
Automated status synchronization must use all-pass claim precedence for feature implementation promotion.
|
|
26
|
+
|
|
27
|
+
Validation must reject manually edited registries that mark a feature `implemented` while an active required linked claim is `T0` or below the feature target tier.
|
|
28
|
+
|
|
29
|
+
Registries that need non-blocking explanatory claims must model that as a later governed schema capability. Until that exists, active linked claims are required closure inputs.
|
|
30
|
+
decision_date: null
|
|
31
|
+
id: "adr:0617"
|
|
32
|
+
kind: "adr"
|
|
33
|
+
number: 617
|
|
34
|
+
origin: "ssot-origin"
|
|
35
|
+
references: []
|
|
36
|
+
schema_version: "0.2.0"
|
|
37
|
+
slug: "feature-implementation-claim-ceilings"
|
|
38
|
+
status: "accepted"
|
|
39
|
+
status_notes: []
|
|
40
|
+
summary: "Feature implementation promotion is capped by active required linked claims; active T0 claims keep features below implemented."
|
|
41
|
+
superseded_by: []
|
|
42
|
+
supersedes: []
|
|
43
|
+
tags: []
|
|
44
|
+
title: "Feature implementation is capped by active required claims"
|
|
@@ -304,5 +304,23 @@
|
|
|
304
304
|
"supersedes": [],
|
|
305
305
|
"superseded_by": [],
|
|
306
306
|
"status_notes": []
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
"id": "adr:0617",
|
|
310
|
+
"number": 617,
|
|
311
|
+
"slug": "feature-implementation-claim-ceilings",
|
|
312
|
+
"title": "Feature implementation is capped by active required claims",
|
|
313
|
+
"filename": "ADR-0617-feature-implementation-claim-ceilings.yaml",
|
|
314
|
+
"target_path": ".ssot/adr/ADR-0617-feature-implementation-claim-ceilings.yaml",
|
|
315
|
+
"sha256": "1e21944c47759757773e66f5bbfaae8801a33bca966c69772d3a31543062078e",
|
|
316
|
+
"origin": "ssot-origin",
|
|
317
|
+
"reservation_owner": "ssot-origin",
|
|
318
|
+
"immutable": true,
|
|
319
|
+
"minimum_schema_version": "0.2.0",
|
|
320
|
+
"introduced_in": "0.2.13",
|
|
321
|
+
"status": "accepted",
|
|
322
|
+
"supersedes": [],
|
|
323
|
+
"superseded_by": [],
|
|
324
|
+
"status_notes": []
|
|
307
325
|
}
|
|
308
326
|
]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"adrs":[],"boundaries":[{"feature_ids":["feat:rfc.9000.connection-migration"],"frozen":true,"id":"bnd:2026q2.core","profile_ids":[],"status":"frozen","title":"2026 Q2 core boundary"}],"claims":[{"description":"Connection migration conforms to the targeted behavior.","evidence_ids":["evd:t3.rfc.9000.connection-migration.bundle"],"feature_ids":["feat:rfc.9000.connection-migration"],"id":"clm:rfc.9000.connection-migration.t3","kind":"conformance","status":"asserted","test_ids":["tst:pytest.rfc.9000.connection-migration"],"tier":"T3","title":"RFC 9000 connection migration claim"}],"document_id_reservations":{"adr":[{"assignable_by_repo":false,"deletable":false,"end":599,"immutable":true,"owner":"ssot-core","start":1},{"assignable_by_repo":false,"deletable":false,"end":999,"immutable":true,"owner":"ssot-origin","start":600},{"assignable_by_repo":true,"deletable":true,"end":4999,"immutable":false,"owner":"repo-local","start":1000}],"spec":[{"assignable_by_repo":false,"deletable":false,"end":599,"immutable":true,"owner":"ssot-core","start":1},{"assignable_by_repo":false,"deletable":false,"end":999,"immutable":true,"owner":"ssot-origin","start":600},{"assignable_by_repo":true,"deletable":true,"end":4999,"immutable":false,"owner":"repo-local","start":1000}]},"evidence":[{"claim_ids":["clm:rfc.9000.connection-migration.t3"],"id":"evd:t3.rfc.9000.connection-migration.bundle","kind":"bundle","path":".ssot/evidence/bundles/evd__t3.rfc.9000.connection-migration.bundle","status":"passed","test_ids":["tst:pytest.rfc.9000.connection-migration"],"tier":"T3","title":"Tier 3 connection migration evidence bundle"}],"features":[{"claim_ids":["clm:rfc.9000.connection-migration.t3"],"description":"Implements QUIC connection migration behavior.","id":"feat:rfc.9000.connection-migration","implementation_status":"implemented","lifecycle":{"note":null,"replacement_feature_ids":[],"stage":"active"},"plan":{"horizon":"current","slot":null,"target_claim_tier":"T3","target_lifecycle_stage":"active"},"requires":[],"spec_ids":[],"test_ids":["tst:pytest.rfc.9000.connection-migration"],"title":"RFC 9000 connection migration"}],"guard_policies":{"certification":{"forbid_active_release_blocking_risks":true,"forbid_open_release_blocking_issues":true,"require_boundary_features_current_or_explicit":true,"require_feature_target_tiers_met":true,"require_frozen_boundary":true,"require_release_claim_coverage_for_boundary_features":true,"require_release_status_draft_or_candidate":true},"claim_closure":{"forbid_failed_or_stale_evidence":true,"require_claim_evidence_tier_alignment":true,"require_implemented_features":true,"require_linked_evidence_passing":true,"require_linked_tests_passing":true},"lifecycle":{"forbid_obsolete_or_removed_in_active_boundary":true,"require_feature_absent_for_removed":true,"require_replacement_or_note_for_deprecation":true},"promotion":{"require_release_snapshot_hashes":true,"require_release_status_certified":true},"publication":{"require_release_status_promoted":true}},"issues":[],"paths":{"adr_root":".ssot/adr","cache_root":".ssot/cache","evidence_root":".ssot/evidence","graph_root":".ssot/graphs","release_root":".ssot/releases","report_root":".ssot/reports","schema_root":".ssot/schemas","spec_root":".ssot/specs","ssot_root":".ssot"},"profiles":[],"program":{"active_boundary_id":"bnd:2026q2.core","active_release_id":"rel:1.2.0"},"releases":[{"boundary_id":"bnd:2026q2.core","boundary_ids":["bnd:2026q2.core"],"claim_ids":["clm:rfc.9000.connection-migration.t3"],"evidence_ids":["evd:t3.rfc.9000.connection-migration.bundle"],"id":"rel:1.2.0","status":"candidate","version":"1.2.0"}],"repo":{"id":"repo:advanced-example","kind":"repo-local","name":"advanced-example","version":"1.2.0"},"risks":[],"schema_version":"0.
|
|
1
|
+
{"adrs":[],"boundaries":[{"feature_ids":["feat:rfc.9000.connection-migration"],"frozen":true,"id":"bnd:2026q2.core","profile_ids":[],"status":"frozen","title":"2026 Q2 core boundary"}],"claims":[{"description":"Connection migration conforms to the targeted behavior.","evidence_ids":["evd:t3.rfc.9000.connection-migration.bundle"],"feature_ids":["feat:rfc.9000.connection-migration"],"id":"clm:rfc.9000.connection-migration.t3","kind":"conformance","status":"asserted","test_ids":["tst:pytest.rfc.9000.connection-migration"],"tier":"T3","title":"RFC 9000 connection migration claim"}],"document_id_reservations":{"adr":[{"assignable_by_repo":false,"deletable":false,"end":599,"immutable":true,"owner":"ssot-core","start":1},{"assignable_by_repo":false,"deletable":false,"end":999,"immutable":true,"owner":"ssot-origin","start":600},{"assignable_by_repo":true,"deletable":true,"end":4999,"immutable":false,"owner":"repo-local","start":1000}],"spec":[{"assignable_by_repo":false,"deletable":false,"end":599,"immutable":true,"owner":"ssot-core","start":1},{"assignable_by_repo":false,"deletable":false,"end":999,"immutable":true,"owner":"ssot-origin","start":600},{"assignable_by_repo":true,"deletable":true,"end":4999,"immutable":false,"owner":"repo-local","start":1000}]},"evidence":[{"claim_ids":["clm:rfc.9000.connection-migration.t3"],"id":"evd:t3.rfc.9000.connection-migration.bundle","kind":"bundle","path":".ssot/evidence/bundles/evd__t3.rfc.9000.connection-migration.bundle","status":"passed","test_ids":["tst:pytest.rfc.9000.connection-migration"],"tier":"T3","title":"Tier 3 connection migration evidence bundle"}],"features":[{"claim_ids":["clm:rfc.9000.connection-migration.t3"],"description":"Implements QUIC connection migration behavior.","id":"feat:rfc.9000.connection-migration","implementation_status":"implemented","lifecycle":{"note":null,"replacement_feature_ids":[],"stage":"active"},"plan":{"horizon":"current","slot":null,"target_claim_tier":"T3","target_lifecycle_stage":"active"},"requires":[],"spec_ids":[],"test_ids":["tst:pytest.rfc.9000.connection-migration"],"title":"RFC 9000 connection migration"}],"guard_policies":{"certification":{"forbid_active_release_blocking_risks":true,"forbid_open_release_blocking_issues":true,"require_boundary_features_current_or_explicit":true,"require_feature_target_tiers_met":true,"require_frozen_boundary":true,"require_release_claim_coverage_for_boundary_features":true,"require_release_status_draft_or_candidate":true},"claim_closure":{"forbid_failed_or_stale_evidence":true,"require_claim_evidence_tier_alignment":true,"require_implemented_features":true,"require_linked_evidence_passing":true,"require_linked_tests_passing":true},"lifecycle":{"forbid_obsolete_or_removed_in_active_boundary":true,"require_feature_absent_for_removed":true,"require_replacement_or_note_for_deprecation":true},"promotion":{"require_release_snapshot_hashes":true,"require_release_status_certified":true},"publication":{"require_release_status_promoted":true}},"issues":[],"paths":{"adr_root":".ssot/adr","cache_root":".ssot/cache","evidence_root":".ssot/evidence","graph_root":".ssot/graphs","release_root":".ssot/releases","report_root":".ssot/reports","schema_root":".ssot/schemas","spec_root":".ssot/specs","ssot_root":".ssot"},"profiles":[],"program":{"active_boundary_id":"bnd:2026q2.core","active_release_id":"rel:1.2.0"},"releases":[{"boundary_id":"bnd:2026q2.core","boundary_ids":["bnd:2026q2.core"],"claim_ids":["clm:rfc.9000.connection-migration.t3"],"evidence_ids":["evd:t3.rfc.9000.connection-migration.bundle"],"id":"rel:1.2.0","status":"candidate","version":"1.2.0"}],"repo":{"id":"repo:advanced-example","kind":"repo-local","name":"advanced-example","version":"1.2.0"},"risks":[],"schema_version":"0.4.0","specs":[],"tests":[{"claim_ids":["clm:rfc.9000.connection-migration.t3"],"evidence_ids":["evd:t3.rfc.9000.connection-migration.bundle"],"feature_ids":["feat:rfc.9000.connection-migration"],"id":"tst:pytest.rfc.9000.connection-migration","kind":"pytest","path":"tests/test_connection_migration.py","status":"passing","title":"Connection migration regression suite"}],"tooling":{"initialized_with_version":"0.2.1","last_upgraded_from_version":"0.2.1","ssot_registry_version":"0.2.1"}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"adrs":[],"boundaries":[{"feature_ids":[],"frozen":false,"id":"bnd:default","profile_ids":[],"status":"draft","title":"Default boundary"}],"claims":[],"document_id_reservations":{"adr":[{"assignable_by_repo":false,"deletable":false,"end":599,"immutable":true,"owner":"ssot-core","start":1},{"assignable_by_repo":false,"deletable":false,"end":999,"immutable":true,"owner":"ssot-origin","start":600},{"assignable_by_repo":true,"deletable":true,"end":4999,"immutable":false,"owner":"repo-local","start":1000}],"spec":[{"assignable_by_repo":false,"deletable":false,"end":599,"immutable":true,"owner":"ssot-core","start":1},{"assignable_by_repo":false,"deletable":false,"end":999,"immutable":true,"owner":"ssot-origin","start":600},{"assignable_by_repo":true,"deletable":true,"end":4999,"immutable":false,"owner":"repo-local","start":1000}]},"evidence":[],"features":[],"guard_policies":{"certification":{"forbid_active_release_blocking_risks":true,"forbid_open_release_blocking_issues":true,"require_boundary_features_current_or_explicit":true,"require_feature_target_tiers_met":true,"require_frozen_boundary":true,"require_release_claim_coverage_for_boundary_features":true,"require_release_status_draft_or_candidate":true},"claim_closure":{"forbid_failed_or_stale_evidence":true,"require_claim_evidence_tier_alignment":true,"require_implemented_features":true,"require_linked_evidence_passing":true,"require_linked_tests_passing":true},"lifecycle":{"forbid_obsolete_or_removed_in_active_boundary":true,"require_feature_absent_for_removed":true,"require_replacement_or_note_for_deprecation":true},"promotion":{"require_release_snapshot_hashes":true,"require_release_status_certified":true},"publication":{"require_release_status_promoted":true}},"issues":[],"paths":{"adr_root":".ssot/adr","cache_root":".ssot/cache","evidence_root":".ssot/evidence","graph_root":".ssot/graphs","release_root":".ssot/releases","report_root":".ssot/reports","schema_root":".ssot/schemas","spec_root":".ssot/specs","ssot_root":".ssot"},"profiles":[],"program":{"active_boundary_id":"bnd:default","active_release_id":"rel:0.1.0"},"releases":[{"boundary_id":"bnd:default","boundary_ids":["bnd:default"],"claim_ids":[],"evidence_ids":[],"id":"rel:0.1.0","status":"draft","version":"0.1.0"}],"repo":{"id":"repo:minimal-example","kind":"repo-local","name":"minimal-example","version":"0.1.0"},"risks":[],"schema_version":"0.
|
|
1
|
+
{"adrs":[],"boundaries":[{"feature_ids":[],"frozen":false,"id":"bnd:default","profile_ids":[],"status":"draft","title":"Default boundary"}],"claims":[],"document_id_reservations":{"adr":[{"assignable_by_repo":false,"deletable":false,"end":599,"immutable":true,"owner":"ssot-core","start":1},{"assignable_by_repo":false,"deletable":false,"end":999,"immutable":true,"owner":"ssot-origin","start":600},{"assignable_by_repo":true,"deletable":true,"end":4999,"immutable":false,"owner":"repo-local","start":1000}],"spec":[{"assignable_by_repo":false,"deletable":false,"end":599,"immutable":true,"owner":"ssot-core","start":1},{"assignable_by_repo":false,"deletable":false,"end":999,"immutable":true,"owner":"ssot-origin","start":600},{"assignable_by_repo":true,"deletable":true,"end":4999,"immutable":false,"owner":"repo-local","start":1000}]},"evidence":[],"features":[],"guard_policies":{"certification":{"forbid_active_release_blocking_risks":true,"forbid_open_release_blocking_issues":true,"require_boundary_features_current_or_explicit":true,"require_feature_target_tiers_met":true,"require_frozen_boundary":true,"require_release_claim_coverage_for_boundary_features":true,"require_release_status_draft_or_candidate":true},"claim_closure":{"forbid_failed_or_stale_evidence":true,"require_claim_evidence_tier_alignment":true,"require_implemented_features":true,"require_linked_evidence_passing":true,"require_linked_tests_passing":true},"lifecycle":{"forbid_obsolete_or_removed_in_active_boundary":true,"require_feature_absent_for_removed":true,"require_replacement_or_note_for_deprecation":true},"promotion":{"require_release_snapshot_hashes":true,"require_release_status_certified":true},"publication":{"require_release_status_promoted":true}},"issues":[],"paths":{"adr_root":".ssot/adr","cache_root":".ssot/cache","evidence_root":".ssot/evidence","graph_root":".ssot/graphs","release_root":".ssot/releases","report_root":".ssot/reports","schema_root":".ssot/schemas","spec_root":".ssot/specs","ssot_root":".ssot"},"profiles":[],"program":{"active_boundary_id":"bnd:default","active_release_id":"rel:0.1.0"},"releases":[{"boundary_id":"bnd:default","boundary_ids":["bnd:default"],"claim_ids":[],"evidence_ids":[],"id":"rel:0.1.0","status":"draft","version":"0.1.0"}],"repo":{"id":"repo:minimal-example","kind":"repo-local","name":"minimal-example","version":"0.1.0"},"risks":[],"schema_version":"0.4.0","specs":[],"tests":[],"tooling":{"initialized_with_version":"0.2.1","last_upgraded_from_version":"0.2.1","ssot_registry_version":"0.2.1"}}
|
|
@@ -6,6 +6,7 @@ body: |-
|
|
|
6
6
|
|
|
7
7
|
- `ssot-core`
|
|
8
8
|
- `ssot-origin`
|
|
9
|
+
- `extension-pack`
|
|
9
10
|
- `repo-local`
|
|
10
11
|
|
|
11
12
|
## Top Level Sections
|
|
@@ -41,8 +42,15 @@ body: |-
|
|
|
41
42
|
|
|
42
43
|
- `ssot-core`
|
|
43
44
|
- `ssot-origin`
|
|
45
|
+
- `extension-pack`
|
|
44
46
|
- `repo-local`
|
|
45
47
|
|
|
48
|
+
Provenance SHALL distinguish authority from distribution. In particular:
|
|
49
|
+
|
|
50
|
+
- `origin` identifies who governs the document truth surface
|
|
51
|
+
- packaging or installability does not by itself imply `ssot-origin`
|
|
52
|
+
- packaged extension catalogs SHALL remain `origin: extension-pack`
|
|
53
|
+
|
|
46
54
|
SPEC `kind` is a non-provenance label and MUST be one of:
|
|
47
55
|
|
|
48
56
|
- `normative`
|
|
@@ -7,6 +7,7 @@ body: |-
|
|
|
7
7
|
## Origin Model
|
|
8
8
|
|
|
9
9
|
- `ssot-origin`: packaged contract docs synced from `ssot-registry` and immutable in operator repos.
|
|
10
|
+
- `extension-pack`: packaged external ADR/SPEC docs synced from trusted extension catalogs and immutable in operator repos.
|
|
10
11
|
- `repo-local`: docs authored by your repository and editable locally.
|
|
11
12
|
- `ssot-core`: upstream-only governance and not permitted in operator repositories.
|
|
12
13
|
|
|
@@ -15,6 +16,13 @@ body: |-
|
|
|
15
16
|
- `1..599` is reserved for upstream `ssot-core` governance.
|
|
16
17
|
- `600..999` is reserved for packaged `ssot-origin` docs.
|
|
17
18
|
- `1000..4999` is assignable to `repo-local` docs.
|
|
19
|
+
- `extension-pack` docs SHALL use explicit catalog-owned reservations and SHALL NOT consume repo-local reservations by default.
|
|
20
|
+
|
|
21
|
+
## Packaged Catalog Policy
|
|
22
|
+
|
|
23
|
+
- `ssot-origin` packaged docs are trusted built-in catalog content.
|
|
24
|
+
- `extension-pack` packaged docs are opt-in and trust-gated.
|
|
25
|
+
- Untrusted extension-pack catalogs SHALL fail closed during sync.
|
|
18
26
|
|
|
19
27
|
## Required Locations
|
|
20
28
|
|
|
@@ -5,7 +5,8 @@ body: |-
|
|
|
5
5
|
- ADR files SHALL be stored under `.ssot/adr`.
|
|
6
6
|
- SPEC files SHALL be stored under `.ssot/specs`.
|
|
7
7
|
- `.ssot/registry.json` SHALL track ADR/SPEC metadata in top-level `adrs` and `specs` sections.
|
|
8
|
-
- Synced packaged documents use `origin: ssot-origin` and are immutable.
|
|
8
|
+
- Synced official packaged documents use `origin: ssot-origin` and are immutable.
|
|
9
|
+
- Synced trusted external packaged documents use `origin: extension-pack` and are immutable.
|
|
9
10
|
- Repository-authored documents use `origin: repo-local` and are mutable.
|
|
10
11
|
- `origin: ssot-core` is upstream-only and is not valid in operator repositories.
|
|
11
12
|
decision_date: null
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
adr_ids:
|
|
2
|
+
- "adr:0617"
|
|
3
|
+
body: |-
|
|
4
|
+
## Overview
|
|
5
|
+
|
|
6
|
+
Feature implementation status SHALL be derived and validated through active required claim ceilings.
|
|
7
|
+
|
|
8
|
+
## Active Required Claims
|
|
9
|
+
|
|
10
|
+
For feature implementation closure, active required claims are all linked `feature.claim_ids` whose claim status is not `retired`.
|
|
11
|
+
|
|
12
|
+
Until a first-class non-blocking claim role exists, every non-retired linked claim SHALL be treated as required for feature implementation closure.
|
|
13
|
+
|
|
14
|
+
## Implementation Status Derivation
|
|
15
|
+
|
|
16
|
+
Automated status synchronization SHALL set a feature to `implemented` only when:
|
|
17
|
+
|
|
18
|
+
1. the feature has at least one active required linked claim,
|
|
19
|
+
2. every active required linked claim has a tier other than `T0`,
|
|
20
|
+
3. every active required linked claim is at or above the feature's `plan.target_claim_tier` when that target is present,
|
|
21
|
+
4. every active required linked claim has status `evidenced` or higher after claim synchronization,
|
|
22
|
+
5. every linked test is `passing`,
|
|
23
|
+
6. every required feature is `implemented`.
|
|
24
|
+
|
|
25
|
+
If any active required linked claim is `T0`, the feature SHALL NOT be synchronized to `implemented`; the highest synchronized status is `partial` unless all support is planned or placeholder-only.
|
|
26
|
+
|
|
27
|
+
If a feature has mixed active required claims and any one of them fails the closure requirements, the feature SHALL NOT be synchronized to `implemented`.
|
|
28
|
+
|
|
29
|
+
## Validation
|
|
30
|
+
|
|
31
|
+
Registry validation SHALL reject a feature with `implementation_status: implemented` when any active required linked claim is `T0` or below the feature's target claim tier.
|
|
32
|
+
|
|
33
|
+
Claim lifecycle status normalization remains the responsibility of automated status synchronization.
|
|
34
|
+
|
|
35
|
+
## Profile Evaluation
|
|
36
|
+
|
|
37
|
+
Profile and boundary-oriented feature evaluation SHALL use the same all-active-required-claims precedence. A feature with an active required `T0` claim SHALL fail feature-pass evaluation even if another linked claim is stronger.
|
|
38
|
+
decision_date: null
|
|
39
|
+
id: "spc:0617"
|
|
40
|
+
kind: "spec"
|
|
41
|
+
number: 617
|
|
42
|
+
origin: "ssot-origin"
|
|
43
|
+
references: []
|
|
44
|
+
schema_version: "0.2.0"
|
|
45
|
+
slug: "feature-implementation-claim-ceilings"
|
|
46
|
+
spec_kind: "normative"
|
|
47
|
+
status: "accepted"
|
|
48
|
+
status_notes: []
|
|
49
|
+
summary: "Feature implementation status is derived and validated through active required claim ceilings."
|
|
50
|
+
superseded_by: []
|
|
51
|
+
supersedes: []
|
|
52
|
+
tags: []
|
|
53
|
+
title: "Feature implementation claim ceilings"
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"title": "Registry core",
|
|
7
7
|
"filename": "SPEC-0600-registry-core.yaml",
|
|
8
8
|
"target_path": ".ssot/specs/SPEC-0600-registry-core.yaml",
|
|
9
|
-
"sha256": "
|
|
9
|
+
"sha256": "2d3b4e58d718ecc89c17b757587ddce9ef7a6b96b200ae4bbd746196b21ba09f",
|
|
10
10
|
"origin": "ssot-origin",
|
|
11
11
|
"reservation_owner": "ssot-origin",
|
|
12
12
|
"immutable": true,
|
|
@@ -139,7 +139,7 @@
|
|
|
139
139
|
"title": "Repository policy",
|
|
140
140
|
"filename": "SPEC-0607-repo-policy.yaml",
|
|
141
141
|
"target_path": ".ssot/specs/SPEC-0607-repo-policy.yaml",
|
|
142
|
-
"sha256": "
|
|
142
|
+
"sha256": "24dfb7e108a2182bf9884e325698034f989e683496287818deda273cf426cec5",
|
|
143
143
|
"origin": "ssot-origin",
|
|
144
144
|
"reservation_owner": "ssot-origin",
|
|
145
145
|
"immutable": true,
|
|
@@ -196,7 +196,7 @@
|
|
|
196
196
|
"title": "File tree",
|
|
197
197
|
"filename": "SPEC-0610-file-tree.yaml",
|
|
198
198
|
"target_path": ".ssot/specs/SPEC-0610-file-tree.yaml",
|
|
199
|
-
"sha256": "
|
|
199
|
+
"sha256": "b1b00db672c7b5e5a2184fc3cb581dbc62f5994ad86efdd56c93facbc844a3cc",
|
|
200
200
|
"origin": "ssot-origin",
|
|
201
201
|
"reservation_owner": "ssot-origin",
|
|
202
202
|
"immutable": true,
|
|
@@ -327,5 +327,27 @@
|
|
|
327
327
|
"adr_ids": [
|
|
328
328
|
"adr:0616"
|
|
329
329
|
]
|
|
330
|
+
},
|
|
331
|
+
{
|
|
332
|
+
"id": "spc:0617",
|
|
333
|
+
"number": 617,
|
|
334
|
+
"slug": "feature-implementation-claim-ceilings",
|
|
335
|
+
"title": "Feature implementation claim ceilings",
|
|
336
|
+
"filename": "SPEC-0617-feature-implementation-claim-ceilings.yaml",
|
|
337
|
+
"target_path": ".ssot/specs/SPEC-0617-feature-implementation-claim-ceilings.yaml",
|
|
338
|
+
"sha256": "059fb567584a9ec0e05ef23cbf0affd61d7d86faa1fe0958f82b15119ab91b6f",
|
|
339
|
+
"origin": "ssot-origin",
|
|
340
|
+
"reservation_owner": "ssot-origin",
|
|
341
|
+
"immutable": true,
|
|
342
|
+
"minimum_schema_version": "0.2.0",
|
|
343
|
+
"introduced_in": "0.2.13",
|
|
344
|
+
"status": "accepted",
|
|
345
|
+
"supersedes": [],
|
|
346
|
+
"superseded_by": [],
|
|
347
|
+
"status_notes": [],
|
|
348
|
+
"kind": "normative",
|
|
349
|
+
"adr_ids": [
|
|
350
|
+
"adr:0617"
|
|
351
|
+
]
|
|
330
352
|
}
|
|
331
353
|
]
|
{ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts.egg-info/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ssot-contracts
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.17.dev1
|
|
4
4
|
Summary: Canonical schemas, templates, manifests, and generated Python contract artifacts for SSOT.
|
|
5
5
|
Author-email: Jacob Stewart <jacob@swarmauri.com>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -30,7 +30,7 @@ Description-Content-Type: text/markdown
|
|
|
30
30
|
Requires-Dist: tomli>=2.0.1; python_version < "3.11"
|
|
31
31
|
|
|
32
32
|
<div align="center">
|
|
33
|
-
<h1
|
|
33
|
+
<h1>🔷 ssot-contracts</h1>
|
|
34
34
|
<p><strong>Canonical schemas, templates, manifests, and generated contract metadata for SSOT.</strong></p>
|
|
35
35
|
</div>
|
|
36
36
|
|
{ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts.egg-info/SOURCES.txt
RENAMED
|
@@ -43,6 +43,7 @@ src/ssot_contracts/templates/adr/ADR-0613-profiles-as-reusable-feature-bundles.y
|
|
|
43
43
|
src/ssot_contracts/templates/adr/ADR-0614-specs-own-typed-adr-links.yaml
|
|
44
44
|
src/ssot_contracts/templates/adr/ADR-0615-downstream-assurance-language-ceilings.yaml
|
|
45
45
|
src/ssot_contracts/templates/adr/ADR-0616-out-of-bounds-implementation-disposition.yaml
|
|
46
|
+
src/ssot_contracts/templates/adr/ADR-0617-feature-implementation-claim-ceilings.yaml
|
|
46
47
|
src/ssot_contracts/templates/adr/__init__.py
|
|
47
48
|
src/ssot_contracts/templates/adr/manifest.json
|
|
48
49
|
src/ssot_contracts/templates/specs/SPEC-0600-registry-core.yaml
|
|
@@ -62,5 +63,6 @@ src/ssot_contracts/templates/specs/SPEC-0613-ssot-path-length-policy.yaml
|
|
|
62
63
|
src/ssot_contracts/templates/specs/SPEC-0614-profile-evaluation-and-boundary-resolution.yaml
|
|
63
64
|
src/ssot_contracts/templates/specs/SPEC-0615-typed-spec-to-adr-linking.yaml
|
|
64
65
|
src/ssot_contracts/templates/specs/SPEC-0616-out-of-bounds-implementation-disposition.yaml
|
|
66
|
+
src/ssot_contracts/templates/specs/SPEC-0617-feature-implementation-claim-ceilings.yaml
|
|
65
67
|
src/ssot_contracts/templates/specs/__init__.py
|
|
66
68
|
src/ssot_contracts/templates/specs/manifest.json
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"$defs":{"normalizedId":{"maxLength":128,"pattern":"^[a-z][a-z0-9-]*:[a-z0-9][a-z0-9._-]*$","type":"string"},"normalizedIdList":{"items":{"$ref":"#/$defs/normalizedId"},"type":"array"}},"$id":"https://example.invalid/ssot-registry/adr.schema.json","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":true,"properties":{"body":{"minLength":1,"type":"string"},"decision_date":{"type":["string","null"]},"id":{"$ref":"#/$defs/normalizedId"},"kind":{"const":"adr"},"number":{"minimum":1,"type":"integer"},"origin":{"enum":["ssot-core","ssot-origin","repo-local"]},"references":{"items":{"type":"string"},"type":"array"},"schema_version":{"pattern":"^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$","type":"string"},"slug":{"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","type":"string"},"status":{"enum":["draft","in_review","accepted","rejected","superseded","withdrawn","retired"]},"status_notes":{"items":{"type":"object"},"type":"array"},"summary":{"minLength":1,"type":"string"},"superseded_by":{"$ref":"#/$defs/normalizedIdList"},"supersedes":{"$ref":"#/$defs/normalizedIdList"},"tags":{"items":{"type":"string"},"type":"array"},"title":{"minLength":1,"type":"string"}},"required":["schema_version","kind","id","number","slug","title","status","origin","summary","body"],"type":"object"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"$defs":{"adr":{"additionalProperties":true,"properties":{"content_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"id":{"$ref":"#/$defs/normalizedId"},"immutable":{"type":"boolean"},"managed":{"type":"boolean"},"number":{"minimum":1,"type":"integer"},"origin":{"enum":["ssot-core","ssot-origin","repo-local"]},"package_version":{"minLength":1,"type":"string"},"path":{"minLength":1,"type":"string"},"slug":{"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","type":"string"},"status":{"$ref":"#/$defs/documentStatus"},"status_notes":{"items":{"$ref":"#/$defs/statusNote"},"type":"array"},"superseded_by":{"$ref":"#/$defs/stringList"},"supersedes":{"$ref":"#/$defs/stringList"},"title":{"minLength":1,"type":"string"}},"required":["id","number","slug","title","path","origin","managed","immutable","package_version","content_sha256","status","supersedes","superseded_by","status_notes"],"type":"object"},"boundary":{"additionalProperties":true,"properties":{"feature_ids":{"$ref":"#/$defs/stringList"},"frozen":{"type":"boolean"},"id":{"$ref":"#/$defs/normalizedId"},"profile_ids":{"items":{"type":"string"},"type":"array"},"status":{"enum":["draft","active","frozen","retired"]},"title":{"minLength":1,"type":"string"}},"required":["id","title","status","frozen","feature_ids","profile_ids"],"type":"object"},"claim":{"additionalProperties":true,"properties":{"description":{"type":"string"},"evidence_ids":{"$ref":"#/$defs/stringList"},"feature_ids":{"$ref":"#/$defs/stringList"},"id":{"$ref":"#/$defs/normalizedId"},"kind":{"minLength":1,"type":"string"},"status":{"enum":["proposed","declared","implemented","asserted","evidenced","certified","promoted","published","blocked","retired"]},"test_ids":{"$ref":"#/$defs/stringList"},"tier":{"enum":["T0","T1","T2","T3","T4"]},"title":{"minLength":1,"type":"string"}},"required":["id","title","status","tier","kind","description","feature_ids","test_ids","evidence_ids"],"type":"object"},"documentIdReservations":{"additionalProperties":false,"properties":{"adr":{"items":{"$ref":"#/$defs/documentReservationRange"},"type":"array"},"spec":{"items":{"$ref":"#/$defs/documentReservationRange"},"type":"array"}},"required":["adr","spec"],"type":"object"},"documentReservationRange":{"additionalProperties":true,"properties":{"assignable_by_repo":{"type":"boolean"},"deletable":{"type":"boolean"},"end":{"minimum":1,"type":"integer"},"immutable":{"type":"boolean"},"owner":{"minLength":1,"type":"string"},"start":{"minimum":1,"type":"integer"}},"required":["owner","start","end","immutable","deletable","assignable_by_repo"],"type":"object"},"documentStatus":{"enum":["draft","in_review","accepted","rejected","superseded","withdrawn","retired"]},"evidence":{"additionalProperties":true,"properties":{"claim_ids":{"$ref":"#/$defs/stringList"},"id":{"$ref":"#/$defs/normalizedId"},"kind":{"minLength":1,"type":"string"},"path":{"minLength":1,"type":"string"},"status":{"enum":["planned","collected","passed","failed","stale"]},"test_ids":{"$ref":"#/$defs/stringList"},"tier":{"enum":["T0","T1","T2","T3","T4"]},"title":{"minLength":1,"type":"string"}},"required":["id","title","status","kind","tier","path","claim_ids","test_ids"],"type":"object"},"feature":{"additionalProperties":true,"properties":{"claim_ids":{"$ref":"#/$defs/stringList"},"description":{"type":"string"},"id":{"$ref":"#/$defs/normalizedId"},"implementation_status":{"enum":["absent","partial","implemented"]},"lifecycle":{"$ref":"#/$defs/featureLifecycle"},"plan":{"$ref":"#/$defs/featurePlan"},"requires":{"$ref":"#/$defs/stringList"},"spec_ids":{"$ref":"#/$defs/stringList"},"test_ids":{"$ref":"#/$defs/stringList"},"title":{"minLength":1,"type":"string"}},"required":["id","title","description","implementation_status","lifecycle","plan","spec_ids","claim_ids","test_ids"],"type":"object"},"featureLifecycle":{"additionalProperties":true,"properties":{"effective_release_id":{"type":["string","null"]},"note":{"type":["string","null"]},"replacement_feature_ids":{"$ref":"#/$defs/stringList"},"stage":{"enum":["active","deprecated","obsolete","removed"]}},"required":["stage","replacement_feature_ids","note"],"type":"object"},"featurePlan":{"additionalProperties":true,"properties":{"horizon":{"enum":["current","next","future","explicit","backlog","out_of_bounds"]},"out_of_bounds_disposition":{"enum":["prohibited","tolerated",null],"type":["string","null"]},"slot":{"type":["string","null"]},"target_claim_tier":{"enum":["T0","T1","T2","T3","T4",null],"type":["string","null"]},"target_lifecycle_stage":{"enum":["active","deprecated","obsolete","removed"]}},"required":["horizon","slot","target_claim_tier","target_lifecycle_stage"],"type":"object"},"guardPolicies":{"additionalProperties":true,"type":"object"},"issue":{"additionalProperties":true,"properties":{"claim_ids":{"$ref":"#/$defs/stringList"},"description":{"type":"string"},"evidence_ids":{"$ref":"#/$defs/stringList"},"feature_ids":{"$ref":"#/$defs/stringList"},"id":{"$ref":"#/$defs/normalizedId"},"plan":{"$ref":"#/$defs/issuePlan"},"release_blocking":{"type":"boolean"},"risk_ids":{"$ref":"#/$defs/stringList"},"severity":{"enum":["low","medium","high","critical"]},"status":{"enum":["open","in_progress","blocked","resolved","closed"]},"test_ids":{"$ref":"#/$defs/stringList"},"title":{"minLength":1,"type":"string"}},"required":["id","title","status","severity","description","plan","feature_ids","claim_ids","test_ids","evidence_ids","risk_ids","release_blocking"],"type":"object"},"issuePlan":{"additionalProperties":true,"properties":{"horizon":{"enum":["current","next","future","explicit","backlog","out_of_bounds"]},"slot":{"type":["string","null"]}},"required":["horizon","slot"],"type":"object"},"normalizedId":{"maxLength":128,"pattern":"^[a-z][a-z0-9-]*:[a-z0-9][a-z0-9._-]*$","type":"string"},"paths":{"additionalProperties":true,"properties":{"adr_root":{"minLength":1,"type":"string"},"cache_root":{"minLength":1,"type":"string"},"evidence_root":{"minLength":1,"type":"string"},"graph_root":{"minLength":1,"type":"string"},"release_root":{"minLength":1,"type":"string"},"report_root":{"minLength":1,"type":"string"},"schema_root":{"minLength":1,"type":"string"},"spec_root":{"minLength":1,"type":"string"},"ssot_root":{"minLength":1,"type":"string"}},"required":["ssot_root","schema_root","adr_root","spec_root","graph_root","evidence_root","release_root","report_root","cache_root"],"type":"object"},"profile":{"additionalProperties":false,"properties":{"claim_tier":{"enum":["T0","T1","T2","T3","T4",null],"type":["string","null"]},"description":{"type":"string"},"evaluation":{"additionalProperties":false,"properties":{"allow_feature_override_tier":{"type":"boolean"},"mode":{"enum":["all_features_must_pass"]}},"required":["mode","allow_feature_override_tier"],"type":"object"},"feature_ids":{"$ref":"#/$defs/stringList"},"id":{"$ref":"#/$defs/normalizedId"},"kind":{"enum":["capability","certification","deployment","interoperability"]},"profile_ids":{"$ref":"#/$defs/stringList"},"status":{"enum":["draft","active","retired"]},"title":{"type":"string"}},"required":["id","title","description","status","kind","feature_ids","profile_ids","claim_tier","evaluation"],"type":"object"},"program":{"additionalProperties":true,"properties":{"active_boundary_id":{"$ref":"#/$defs/normalizedId"},"active_release_id":{"$ref":"#/$defs/normalizedId"}},"required":["active_boundary_id","active_release_id"],"type":"object"},"release":{"additionalProperties":true,"properties":{"boundary_id":{"$ref":"#/$defs/normalizedId"},"boundary_ids":{"$ref":"#/$defs/stringList"},"claim_ids":{"$ref":"#/$defs/stringList"},"evidence_ids":{"$ref":"#/$defs/stringList"},"id":{"$ref":"#/$defs/normalizedId"},"status":{"enum":["draft","candidate","certified","promoted","published","revoked"]},"version":{"minLength":1,"type":"string"}},"required":["id","version","status","boundary_id","boundary_ids","claim_ids","evidence_ids"],"type":"object"},"repo":{"additionalProperties":true,"properties":{"id":{"$ref":"#/$defs/normalizedId"},"kind":{"enum":["ssot-core","ssot-origin","repo-local"]},"name":{"minLength":1,"type":"string"},"version":{"minLength":1,"type":"string"}},"required":["id","name","version","kind"],"type":"object"},"risk":{"additionalProperties":true,"properties":{"claim_ids":{"$ref":"#/$defs/stringList"},"description":{"type":"string"},"evidence_ids":{"$ref":"#/$defs/stringList"},"feature_ids":{"$ref":"#/$defs/stringList"},"id":{"$ref":"#/$defs/normalizedId"},"issue_ids":{"$ref":"#/$defs/stringList"},"release_blocking":{"type":"boolean"},"severity":{"enum":["low","medium","high","critical"]},"status":{"enum":["active","mitigated","accepted","retired"]},"test_ids":{"$ref":"#/$defs/stringList"},"title":{"minLength":1,"type":"string"}},"required":["id","title","status","severity","description","feature_ids","claim_ids","test_ids","evidence_ids","issue_ids","release_blocking"],"type":"object"},"spec":{"additionalProperties":true,"properties":{"adr_ids":{"$ref":"#/$defs/stringList"},"content_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"id":{"$ref":"#/$defs/normalizedId"},"immutable":{"type":"boolean"},"kind":{"enum":["normative","operational","governance","local-policy"]},"managed":{"type":"boolean"},"number":{"minimum":1,"type":"integer"},"origin":{"enum":["ssot-core","ssot-origin","repo-local"]},"package_version":{"minLength":1,"type":"string"},"path":{"minLength":1,"type":"string"},"slug":{"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","type":"string"},"status":{"$ref":"#/$defs/documentStatus"},"status_notes":{"items":{"$ref":"#/$defs/statusNote"},"type":"array"},"superseded_by":{"$ref":"#/$defs/stringList"},"supersedes":{"$ref":"#/$defs/stringList"},"title":{"minLength":1,"type":"string"}},"required":["id","number","slug","title","path","origin","managed","immutable","package_version","content_sha256","kind","adr_ids","status","supersedes","superseded_by","status_notes"],"type":"object"},"statusNote":{"additionalProperties":false,"properties":{"actor":{"minLength":1,"type":"string"},"at":{"minLength":1,"type":"string"},"note":{"minLength":1,"type":"string"},"reason":{"minLength":1,"type":"string"},"status":{"$ref":"#/$defs/documentStatus"}},"required":["status","note","at"],"type":"object"},"stringList":{"items":{"$ref":"#/$defs/normalizedId"},"type":"array"},"test":{"additionalProperties":true,"properties":{"claim_ids":{"$ref":"#/$defs/stringList"},"evidence_ids":{"$ref":"#/$defs/stringList"},"execution":{"$ref":"#/$defs/testExecution"},"feature_ids":{"$ref":"#/$defs/stringList"},"id":{"$ref":"#/$defs/normalizedId"},"kind":{"minLength":1,"type":"string"},"path":{"minLength":1,"type":"string"},"status":{"enum":["planned","passing","failing","blocked","skipped"]},"title":{"minLength":1,"type":"string"}},"required":["id","title","status","kind","path","feature_ids","claim_ids","evidence_ids"],"type":"object"},"testExecution":{"additionalProperties":false,"properties":{"argv":{"items":{"type":"string"},"minItems":1,"type":"array"},"cwd":{"minLength":1,"type":"string"},"env":{"additionalProperties":{"type":"string"},"type":"object"},"mode":{"const":"command"},"success":{"$ref":"#/$defs/testExecutionSuccess"},"timeout_seconds":{"exclusiveMinimum":0,"type":"integer"}},"required":["mode","argv","cwd","env","timeout_seconds","success"],"type":"object"},"testExecutionSuccess":{"additionalProperties":false,"properties":{"expected":{"type":"integer"},"type":{"const":"exit_code"}},"required":["type","expected"],"type":"object"},"tooling":{"additionalProperties":true,"properties":{"initialized_with_version":{"minLength":1,"type":"string"},"last_upgraded_from_version":{"minLength":1,"type":"string"},"ssot_registry_version":{"minLength":1,"type":"string"}},"required":["ssot_registry_version","initialized_with_version","last_upgraded_from_version"],"type":"object"}},"$id":"https://example.invalid/ssot-registry/registry.schema.json","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"allOf":[{"if":{"properties":{"repo":{"properties":{"kind":{"const":"repo-local"}},"required":["kind"],"type":"object"}}},"then":{"properties":{"adrs":{"not":{"contains":{"properties":{"origin":{"const":"ssot-core"}},"required":["origin"],"type":"object"}}},"specs":{"not":{"contains":{"properties":{"origin":{"const":"ssot-core"}},"required":["origin"],"type":"object"}}}}}}],"properties":{"adrs":{"items":{"$ref":"#/$defs/adr"},"type":"array"},"boundaries":{"items":{"$ref":"#/$defs/boundary"},"type":"array"},"claims":{"items":{"$ref":"#/$defs/claim"},"type":"array"},"document_id_reservations":{"$ref":"#/$defs/documentIdReservations"},"evidence":{"items":{"$ref":"#/$defs/evidence"},"type":"array"},"features":{"items":{"$ref":"#/$defs/feature"},"type":"array"},"guard_policies":{"$ref":"#/$defs/guardPolicies"},"issues":{"items":{"$ref":"#/$defs/issue"},"type":"array"},"paths":{"$ref":"#/$defs/paths"},"profiles":{"items":{"$ref":"#/$defs/profile"},"type":"array"},"program":{"$ref":"#/$defs/program"},"releases":{"items":{"$ref":"#/$defs/release"},"type":"array"},"repo":{"$ref":"#/$defs/repo"},"risks":{"items":{"$ref":"#/$defs/risk"},"type":"array"},"schema_version":{"const":"0.3.0"},"specs":{"items":{"$ref":"#/$defs/spec"},"type":"array"},"tests":{"items":{"$ref":"#/$defs/test"},"type":"array"},"tooling":{"$ref":"#/$defs/tooling"}},"required":["schema_version","repo","tooling","paths","program","guard_policies","document_id_reservations","features","profiles","tests","claims","evidence","issues","risks","boundaries","releases","adrs","specs"],"title":"ssot-registry canonical registry","type":"object"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"$defs":{"normalizedId":{"maxLength":128,"pattern":"^[a-z][a-z0-9-]*:[a-z0-9][a-z0-9._-]*$","type":"string"},"normalizedIdList":{"items":{"$ref":"#/$defs/normalizedId"},"type":"array"}},"$id":"https://example.invalid/ssot-registry/spec.schema.json","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":true,"properties":{"adr_ids":{"$ref":"#/$defs/normalizedIdList"},"body":{"minLength":1,"type":"string"},"decision_date":{"type":["string","null"]},"id":{"$ref":"#/$defs/normalizedId"},"kind":{"const":"spec"},"number":{"minimum":1,"type":"integer"},"origin":{"enum":["ssot-core","ssot-origin","repo-local"]},"references":{"items":{"type":"string"},"type":"array"},"schema_version":{"pattern":"^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$","type":"string"},"slug":{"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","type":"string"},"spec_kind":{"enum":["normative","operational","governance","local-policy"]},"status":{"enum":["draft","in_review","accepted","rejected","superseded","withdrawn","retired"]},"status_notes":{"items":{"type":"object"},"type":"array"},"summary":{"minLength":1,"type":"string"},"superseded_by":{"$ref":"#/$defs/normalizedIdList"},"supersedes":{"$ref":"#/$defs/normalizedIdList"},"tags":{"items":{"type":"string"},"type":"array"},"title":{"minLength":1,"type":"string"}},"required":["schema_version","kind","id","number","slug","title","status","origin","summary","body","spec_kind","adr_ids"],"type":"object"}
|
|
File without changes
|
|
File without changes
|
{ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/generated/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/generated/python/ids.py
RENAMED
|
File without changes
|
{ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/schema/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts/templates/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts.egg-info/requires.txt
RENAMED
|
File without changes
|
{ssot_contracts-0.2.16.dev1 → ssot_contracts-0.2.17.dev1}/src/ssot_contracts.egg-info/top_level.txt
RENAMED
|
File without changes
|