ssot-contracts 0.2.19.dev2__tar.gz → 0.2.20.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.
Files changed (102) hide show
  1. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/PKG-INFO +1 -1
  2. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/pyproject.toml +1 -1
  3. ssot_contracts-0.2.20.dev1/src/ssot_contracts/templates/adr/ADR-0628-ssot-mcp-cli-surface-delegation.yaml +43 -0
  4. ssot_contracts-0.2.20.dev1/src/ssot_contracts/templates/adr/ADR-0629-ssot-mcp-worker-repair-authority.yaml +21 -0
  5. ssot_contracts-0.2.20.dev1/src/ssot_contracts/templates/adr/ADR-0630-scoped-maturation-claims-and-blockers.yaml +21 -0
  6. ssot_contracts-0.2.20.dev1/src/ssot_contracts/templates/adr/ADR-0631-mcp-mediated-upgrade-uses-current-runtime.yaml +21 -0
  7. ssot_contracts-0.2.20.dev1/src/ssot_contracts/templates/adr/ADR-0632-targeted-repair-with-baseline-validation-drift.yaml +21 -0
  8. ssot_contracts-0.2.20.dev1/src/ssot_contracts/templates/adr/ADR-0633-public-registry-save-validates-before-write.yaml +27 -0
  9. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/adr/manifest.json +138 -0
  10. ssot_contracts-0.2.20.dev1/src/ssot_contracts/templates/specs/SPEC-0629-ssot-mcp-cli-surface-contract.yaml +72 -0
  11. ssot_contracts-0.2.20.dev1/src/ssot_contracts/templates/specs/SPEC-0630-ssot-mcp-registry-repair-authority.yaml +24 -0
  12. ssot_contracts-0.2.20.dev1/src/ssot_contracts/templates/specs/SPEC-0631-scoped-maturation-blocker-contract.yaml +24 -0
  13. ssot_contracts-0.2.20.dev1/src/ssot_contracts/templates/specs/SPEC-0632-mcp-upgrade-delegation-contract.yaml +25 -0
  14. ssot_contracts-0.2.20.dev1/src/ssot_contracts/templates/specs/SPEC-0633-targeted-scaffold-repair-contract.yaml +24 -0
  15. ssot_contracts-0.2.20.dev1/src/ssot_contracts/templates/specs/SPEC-0634-worker-actionability-and-repair-loop.yaml +26 -0
  16. ssot_contracts-0.2.20.dev1/src/ssot_contracts/templates/specs/SPEC-0635-registry-save-validation-contract.yaml +37 -0
  17. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/specs/manifest.json +193 -0
  18. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts.egg-info/PKG-INFO +1 -1
  19. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts.egg-info/SOURCES.txt +13 -0
  20. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/README.md +0 -0
  21. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/setup.cfg +0 -0
  22. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/__init__.py +0 -0
  23. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/contract_data.py +0 -0
  24. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/generated/__init__.py +0 -0
  25. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/generated/python/__init__.py +0 -0
  26. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/generated/python/cli_metadata.py +0 -0
  27. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/generated/python/enums.py +0 -0
  28. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/generated/python/ids.py +0 -0
  29. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/generated/python/tui_metadata.py +0 -0
  30. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/schema/__init__.py +0 -0
  31. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/schema/adr.schema.json +0 -0
  32. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/schema/boundary.snapshot.schema.json +0 -0
  33. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/schema/certification.report.schema.json +0 -0
  34. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/schema/graph.export.schema.json +0 -0
  35. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/schema/published.snapshot.schema.json +0 -0
  36. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/schema/registry.schema.json +0 -0
  37. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/schema/release.snapshot.schema.json +0 -0
  38. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/schema/spec.schema.json +0 -0
  39. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/schema/validation.report.schema.json +0 -0
  40. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/__init__.py +0 -0
  41. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/adr/ADR-0600-canonical-json-registry.yaml +0 -0
  42. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/adr/ADR-0601-features-are-targetable-units.yaml +0 -0
  43. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/adr/ADR-0602-issues-are-plannable-work-items.yaml +0 -0
  44. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/adr/ADR-0603-entity-centric-registry-derived-graph.yaml +0 -0
  45. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/adr/ADR-0604-normalized-prefixed-ids.yaml +0 -0
  46. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/adr/ADR-0605-claim-status-vs-tier.yaml +0 -0
  47. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/adr/ADR-0606-feature-implementation-vs-lifecycle.yaml +0 -0
  48. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/adr/ADR-0607-immutable-boundary-and-release-snapshots.yaml +0 -0
  49. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/adr/ADR-0608-fail-closed-guards.yaml +0 -0
  50. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/adr/ADR-0609-generated-projections-are-non-canonical.yaml +0 -0
  51. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/adr/ADR-0610-explicit-schema-versioning.yaml +0 -0
  52. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/adr/ADR-0611-portable-core-repo-specific-evidence-adapters.yaml +0 -0
  53. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/adr/ADR-0612-ssot-path-and-filename-length-limits.yaml +0 -0
  54. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/adr/ADR-0613-profiles-as-reusable-feature-bundles.yaml +0 -0
  55. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/adr/ADR-0614-specs-own-typed-adr-links.yaml +0 -0
  56. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/adr/ADR-0615-downstream-assurance-language-ceilings.yaml +0 -0
  57. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/adr/ADR-0616-out-of-bounds-implementation-disposition.yaml +0 -0
  58. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/adr/ADR-0617-feature-implementation-claim-ceilings.yaml +0 -0
  59. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/adr/ADR-0618-local-release-assurance-remains-ssot-native.yaml +0 -0
  60. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/adr/ADR-0619-content-addressed-governed-source-snapshots.yaml +0 -0
  61. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/adr/ADR-0620-local-evidence-bundles-are-derived-release-artifacts.yaml +0 -0
  62. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/adr/ADR-0621-general-rules-of-interpretation.yaml +0 -0
  63. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/adr/ADR-0622-definitions-govern-ssot-vocabulary.yaml +0 -0
  64. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/adr/ADR-0625-claim-tier-gates-and-core-promotion.yaml +0 -0
  65. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/adr/ADR-0626-externally-authored-validation-as-t4.yaml +0 -0
  66. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/adr/ADR-0627-feature-parent-links-are-inventory-composition.yaml +0 -0
  67. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/adr/__init__.py +0 -0
  68. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/registry.full.json +0 -0
  69. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/registry.minimal.json +0 -0
  70. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/specs/SPEC-0600-registry-core.yaml +0 -0
  71. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/specs/SPEC-0601-cli.yaml +0 -0
  72. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/specs/SPEC-0602-graph-model.yaml +0 -0
  73. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/specs/SPEC-0603-feature-lifecycle.yaml +0 -0
  74. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/specs/SPEC-0604-claim-statuses.yaml +0 -0
  75. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/specs/SPEC-0605-claim-tiers.yaml +0 -0
  76. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/specs/SPEC-0606-snapshots-and-reports.yaml +0 -0
  77. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/specs/SPEC-0607-repo-policy.yaml +0 -0
  78. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/specs/SPEC-0608-gates-and-fences.yaml +0 -0
  79. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/specs/SPEC-0609-id-normalization.yaml +0 -0
  80. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/specs/SPEC-0610-file-tree.yaml +0 -0
  81. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/specs/SPEC-0611-planning-horizons.yaml +0 -0
  82. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/specs/SPEC-0612-python-api.yaml +0 -0
  83. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/specs/SPEC-0613-ssot-path-length-policy.yaml +0 -0
  84. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/specs/SPEC-0614-profile-evaluation-and-boundary-resolution.yaml +0 -0
  85. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/specs/SPEC-0615-typed-spec-to-adr-linking.yaml +0 -0
  86. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/specs/SPEC-0616-out-of-bounds-implementation-disposition.yaml +0 -0
  87. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/specs/SPEC-0617-feature-implementation-claim-ceilings.yaml +0 -0
  88. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/specs/SPEC-0618-local-release-assurance-candidate-scope.yaml +0 -0
  89. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/specs/SPEC-0619-governed-source-snapshot-contract.yaml +0 -0
  90. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/specs/SPEC-0620-local-evidence-bundle-contract.yaml +0 -0
  91. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/specs/SPEC-0621-output-artifact-manifest-contract.yaml +0 -0
  92. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/specs/SPEC-0622-local-release-verification-and-gate-contract.yaml +0 -0
  93. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/specs/SPEC-0623-general-rules-of-interpretation.yaml +0 -0
  94. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/specs/SPEC-0624-ssot-definitions.yaml +0 -0
  95. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/specs/SPEC-0625-claim-tier-gates.yaml +0 -0
  96. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/specs/SPEC-0626-external-validation-evidence.yaml +0 -0
  97. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/specs/SPEC-0627-feature-parent-link-contract.yaml +0 -0
  98. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/specs/SPEC-0628-feature-parent-cli-contract.yaml +0 -0
  99. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts/templates/specs/__init__.py +0 -0
  100. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts.egg-info/dependency_links.txt +0 -0
  101. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.dev1}/src/ssot_contracts.egg-info/requires.txt +0 -0
  102. {ssot_contracts-0.2.19.dev2 → ssot_contracts-0.2.20.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.19.dev2
3
+ Version: 0.2.20.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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "ssot-contracts"
7
- version = "0.2.19.dev2"
7
+ version = "0.2.20.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.15"
@@ -0,0 +1,43 @@
1
+ schema_version: "0.7.0"
2
+ kind: "adr"
3
+ id: "adr:0628"
4
+ number: 628
5
+ slug: "ssot-mcp-cli-surface-delegation"
6
+ title: "SSOT MCP delegates the complete CLI surface safely"
7
+ status: "draft"
8
+ origin: "ssot-origin"
9
+ decision_date: null
10
+ tags: []
11
+ summary: "Codex workers and other MCP clients sometimes need registry operations that already exist in the `ssot-registry` CLI but are not yet exposed as dedicated structured MCP tools. Workers must not hand-edit `.ssot/registry.json`, so MCP needs a complete, safe CLI delegation surface for discovery and execution."
12
+ supersedes: []
13
+ superseded_by: []
14
+ status_notes:
15
+ -
16
+ status: "draft"
17
+ note: "Created to govern safe SSOT CLI delegation through ssot-mcp."
18
+ at: "2026-05-20T16:21:19Z"
19
+ references: []
20
+ body: |-
21
+ ## Context
22
+
23
+ Codex workers and other MCP clients sometimes need registry operations that already exist in the `ssot-registry` CLI but are not yet exposed as dedicated structured MCP tools. Workers must not hand-edit `.ssot/registry.json`, so MCP needs a complete, safe CLI delegation surface for discovery and execution.
24
+
25
+ The CLI parser also handles help, version, and invalid argument flows by exiting through argparse. If those exits escape an MCP tool call, the MCP transport can close and strand workers.
26
+
27
+ ## Decision
28
+
29
+ `ssot-mcp` exposes the full `ssot-registry` CLI surface as an optional MCP compatibility layer.
30
+
31
+ The MCP server provides a discovery tool that reports global flags, top-level commands, subcommand paths, and flags by command path. It also provides a CLI execution tool that accepts argv tokens after `ssot-registry` and supports global flags, commands, command flags, subcommands, and subcommand flags.
32
+
33
+ Help, version, and invalid-argument parser exits are contained and returned as normal tool results with `passed`, `exit_code`, `stdout`, and `stderr`. They must not close the MCP transport.
34
+
35
+ Dedicated structured MCP tools remain preferred for common registry CRUD, search, link, and worker-control operations, but CLI delegation is the required fallback for full parity with the CLI.
36
+
37
+ ## Consequences
38
+
39
+ Workers can discover and invoke the live CLI surface through MCP without shelling out and without hand-editing registry files.
40
+
41
+ MCP clients can recover from invalid CLI arguments because failures are data, not transport failures.
42
+
43
+ The CLI remains the broad compatibility surface while purpose-built MCP tools can continue to grow over time.
@@ -0,0 +1,21 @@
1
+ schema_version: "0.7.0"
2
+ kind: "adr"
3
+ id: "adr:0629"
4
+ number: 629
5
+ slug: "ssot-mcp-worker-repair-authority"
6
+ title: "SSOT MCP workers may request registry repair authority"
7
+ status: "draft"
8
+ origin: "ssot-origin"
9
+ decision_date: null
10
+ tags: []
11
+ summary: "Decision: SSOT MCP workers may request creation, update, deletion, listing, search, linking, unlinking, CLI delegation, and repair of SSOT registry entities through ssot-mcp. Workers still must not hand-edit .ssot/registry.json. Rationale: pull-worker campaigns must be able to backfill lower-tier claim tranches, repair missing target-tier claim wiring, and resolve blocker rows without requiring direct registry edits or operator-only intervention."
12
+ supersedes: []
13
+ superseded_by: []
14
+ status_notes:
15
+ -
16
+ status: "draft"
17
+ note: "Created to govern SSOT MCP worker repair and scoped maturation behavior."
18
+ at: "2026-05-20T17:45:14Z"
19
+ references: []
20
+ body: |-
21
+ Decision: SSOT MCP workers may request creation, update, deletion, listing, search, linking, unlinking, CLI delegation, and repair of SSOT registry entities through ssot-mcp. Workers still must not hand-edit .ssot/registry.json. Rationale: pull-worker campaigns must be able to backfill lower-tier claim tranches, repair missing target-tier claim wiring, and resolve blocker rows without requiring direct registry edits or operator-only intervention.
@@ -0,0 +1,21 @@
1
+ schema_version: "0.7.0"
2
+ kind: "adr"
3
+ id: "adr:0630"
4
+ number: 630
5
+ slug: "scoped-maturation-claims-and-blockers"
6
+ title: "Scoped maturation claims ignore unrelated blockers"
7
+ status: "draft"
8
+ origin: "ssot-origin"
9
+ decision_date: null
10
+ tags: []
11
+ summary: "Decision: scoped maturation pulls are evaluated only against the requested feature, profile, or boundary scope. Open blockers outside that scope must not prevent targeted work from receiving a lease. Rationale: global backlog blockers caused targeted workers to churn even after the selected feature had been repaired."
12
+ supersedes: []
13
+ superseded_by: []
14
+ status_notes:
15
+ -
16
+ status: "draft"
17
+ note: "Created to govern SSOT MCP worker repair and scoped maturation behavior."
18
+ at: "2026-05-20T17:45:15Z"
19
+ references: []
20
+ body: |-
21
+ Decision: scoped maturation pulls are evaluated only against the requested feature, profile, or boundary scope. Open blockers outside that scope must not prevent targeted work from receiving a lease. Rationale: global backlog blockers caused targeted workers to churn even after the selected feature had been repaired.
@@ -0,0 +1,21 @@
1
+ schema_version: "0.7.0"
2
+ kind: "adr"
3
+ id: "adr:0631"
4
+ number: 631
5
+ slug: "mcp-mediated-upgrade-uses-current-runtime"
6
+ title: "MCP mediated upgrade uses the current runtime"
7
+ status: "draft"
8
+ origin: "ssot-origin"
9
+ decision_date: null
10
+ tags: []
11
+ summary: "Decision: ssot-mcp delegated upgrade calls use the currently running ssot-mcp binary and installed ssot-core runtime. MCP upgrade normalization must not attempt to install, resolve, or treat schema versions as PyPI package versions. It should refresh packaged ADR and SPEC documents during upgrade."
12
+ supersedes: []
13
+ superseded_by: []
14
+ status_notes:
15
+ -
16
+ status: "draft"
17
+ note: "Created to govern SSOT MCP worker repair and scoped maturation behavior."
18
+ at: "2026-05-20T17:45:16Z"
19
+ references: []
20
+ body: |-
21
+ Decision: ssot-mcp delegated upgrade calls use the currently running ssot-mcp binary and installed ssot-core runtime. MCP upgrade normalization must not attempt to install, resolve, or treat schema versions as PyPI package versions. It should refresh packaged ADR and SPEC documents during upgrade.
@@ -0,0 +1,21 @@
1
+ schema_version: "0.7.0"
2
+ kind: "adr"
3
+ id: "adr:0632"
4
+ number: 632
5
+ slug: "targeted-repair-with-baseline-validation-drift"
6
+ title: "Targeted repair can proceed with unrelated baseline drift"
7
+ status: "draft"
8
+ origin: "ssot-origin"
9
+ decision_date: null
10
+ tags: []
11
+ summary: "Decision: targeted SSOT repair may proceed in a repository that already has unrelated validation drift when the repair introduces no new validation failures. Rationale: workers must be able to repair the blocker they own without being forced to mutate unrelated registry state outside the slice."
12
+ supersedes: []
13
+ superseded_by: []
14
+ status_notes:
15
+ -
16
+ status: "draft"
17
+ note: "Created to govern SSOT MCP worker repair and scoped maturation behavior."
18
+ at: "2026-05-20T17:45:17Z"
19
+ references: []
20
+ body: |-
21
+ Decision: targeted SSOT repair may proceed in a repository that already has unrelated validation drift when the repair introduces no new validation failures. Rationale: workers must be able to repair the blocker they own without being forced to mutate unrelated registry state outside the slice.
@@ -0,0 +1,27 @@
1
+ schema_version: "0.7.0"
2
+ kind: "adr"
3
+ id: "adr:0633"
4
+ number: 633
5
+ slug: "public-registry-save-validates-before-write"
6
+ title: "Public registry save validates before write"
7
+ status: "accepted"
8
+ origin: "ssot-origin"
9
+ decision_date: null
10
+ tags: []
11
+ summary: "`save_registry` is the public Python API for writing `.ssot/registry.json`. Before this decision, that public surface only serialized the write under the registry JSON lock. Most mutation APIs validated before calling it, but a direct import could still persist invalid registry state."
12
+ supersedes: []
13
+ superseded_by: []
14
+ status_notes: []
15
+ references: []
16
+ body: |-
17
+ ## Context
18
+
19
+ `save_registry` is the public Python API for writing `.ssot/registry.json`. Before this decision, that public surface only serialized the write under the registry JSON lock. Most mutation APIs validated before calling it, but a direct import could still persist invalid registry state.
20
+
21
+ ## Decision
22
+
23
+ The public/default registry save API shall validate the candidate registry document before persistence and fail closed on validation errors. Lock-only persistence remains available only through an explicitly named unchecked helper for bootstrap, migration, and targeted repair flows that have their own surrounding validation policy.
24
+
25
+ ## Consequences
26
+
27
+ Default callers cannot bypass registry validation by importing the save helper directly. Exceptional flows remain possible, but their unchecked behavior is visible in code review and can be constrained by regression tests.
@@ -490,5 +490,143 @@
490
490
  "status": "accepted"
491
491
  }
492
492
  ]
493
+ },
494
+ {
495
+ "id": "adr:0628",
496
+ "number": 628,
497
+ "slug": "ssot-mcp-cli-surface-delegation",
498
+ "title": "SSOT MCP delegates the complete CLI surface safely",
499
+ "filename": "ADR-0628-ssot-mcp-cli-surface-delegation.yaml",
500
+ "target_path": ".ssot/adr/ADR-0628-ssot-mcp-cli-surface-delegation.yaml",
501
+ "sha256": "a3ca30d0bd5e9685d4cf6c07ace4ea1b83f0f3970cd67d32178e14e7b46243e7",
502
+ "origin": "ssot-origin",
503
+ "reservation_owner": "ssot-origin",
504
+ "immutable": true,
505
+ "minimum_schema_version": "0.7.0",
506
+ "introduced_in": "0.2.10",
507
+ "status": "draft",
508
+ "supersedes": [],
509
+ "superseded_by": [],
510
+ "status_notes": [
511
+ {
512
+ "at": "2026-05-20T16:21:19Z",
513
+ "note": "Created to govern safe SSOT CLI delegation through ssot-mcp.",
514
+ "status": "draft"
515
+ }
516
+ ]
517
+ },
518
+ {
519
+ "id": "adr:0629",
520
+ "number": 629,
521
+ "slug": "ssot-mcp-worker-repair-authority",
522
+ "title": "SSOT MCP workers may request registry repair authority",
523
+ "filename": "ADR-0629-ssot-mcp-worker-repair-authority.yaml",
524
+ "target_path": ".ssot/adr/ADR-0629-ssot-mcp-worker-repair-authority.yaml",
525
+ "sha256": "21edaa8a7a927f1de3792ff9f24cff4313c97fa26f98b869ce13e764590fd555",
526
+ "origin": "ssot-origin",
527
+ "reservation_owner": "ssot-origin",
528
+ "immutable": true,
529
+ "minimum_schema_version": "0.7.0",
530
+ "introduced_in": "0.2.10",
531
+ "status": "draft",
532
+ "supersedes": [],
533
+ "superseded_by": [],
534
+ "status_notes": [
535
+ {
536
+ "at": "2026-05-20T17:45:14Z",
537
+ "note": "Created to govern SSOT MCP worker repair and scoped maturation behavior.",
538
+ "status": "draft"
539
+ }
540
+ ]
541
+ },
542
+ {
543
+ "id": "adr:0630",
544
+ "number": 630,
545
+ "slug": "scoped-maturation-claims-and-blockers",
546
+ "title": "Scoped maturation claims ignore unrelated blockers",
547
+ "filename": "ADR-0630-scoped-maturation-claims-and-blockers.yaml",
548
+ "target_path": ".ssot/adr/ADR-0630-scoped-maturation-claims-and-blockers.yaml",
549
+ "sha256": "ac082de9184093c3d74987ca4b8577e9e9f559e6e4b25699ee9e2ce4d905be5f",
550
+ "origin": "ssot-origin",
551
+ "reservation_owner": "ssot-origin",
552
+ "immutable": true,
553
+ "minimum_schema_version": "0.7.0",
554
+ "introduced_in": "0.2.10",
555
+ "status": "draft",
556
+ "supersedes": [],
557
+ "superseded_by": [],
558
+ "status_notes": [
559
+ {
560
+ "at": "2026-05-20T17:45:15Z",
561
+ "note": "Created to govern SSOT MCP worker repair and scoped maturation behavior.",
562
+ "status": "draft"
563
+ }
564
+ ]
565
+ },
566
+ {
567
+ "id": "adr:0631",
568
+ "number": 631,
569
+ "slug": "mcp-mediated-upgrade-uses-current-runtime",
570
+ "title": "MCP mediated upgrade uses the current runtime",
571
+ "filename": "ADR-0631-mcp-mediated-upgrade-uses-current-runtime.yaml",
572
+ "target_path": ".ssot/adr/ADR-0631-mcp-mediated-upgrade-uses-current-runtime.yaml",
573
+ "sha256": "bbf48aec20dc35d89d79cb1011e9a62326c0c19aa0ff9429c6f82fcaf954aa0a",
574
+ "origin": "ssot-origin",
575
+ "reservation_owner": "ssot-origin",
576
+ "immutable": true,
577
+ "minimum_schema_version": "0.7.0",
578
+ "introduced_in": "0.2.10",
579
+ "status": "draft",
580
+ "supersedes": [],
581
+ "superseded_by": [],
582
+ "status_notes": [
583
+ {
584
+ "at": "2026-05-20T17:45:16Z",
585
+ "note": "Created to govern SSOT MCP worker repair and scoped maturation behavior.",
586
+ "status": "draft"
587
+ }
588
+ ]
589
+ },
590
+ {
591
+ "id": "adr:0632",
592
+ "number": 632,
593
+ "slug": "targeted-repair-with-baseline-validation-drift",
594
+ "title": "Targeted repair can proceed with unrelated baseline drift",
595
+ "filename": "ADR-0632-targeted-repair-with-baseline-validation-drift.yaml",
596
+ "target_path": ".ssot/adr/ADR-0632-targeted-repair-with-baseline-validation-drift.yaml",
597
+ "sha256": "1bdcd5b8632632610f518105ecac0300794bccb7b86c7be09a6c4e9916bde625",
598
+ "origin": "ssot-origin",
599
+ "reservation_owner": "ssot-origin",
600
+ "immutable": true,
601
+ "minimum_schema_version": "0.7.0",
602
+ "introduced_in": "0.2.10",
603
+ "status": "draft",
604
+ "supersedes": [],
605
+ "superseded_by": [],
606
+ "status_notes": [
607
+ {
608
+ "at": "2026-05-20T17:45:17Z",
609
+ "note": "Created to govern SSOT MCP worker repair and scoped maturation behavior.",
610
+ "status": "draft"
611
+ }
612
+ ]
613
+ },
614
+ {
615
+ "id": "adr:0633",
616
+ "number": 633,
617
+ "slug": "public-registry-save-validates-before-write",
618
+ "title": "Public registry save validates before write",
619
+ "filename": "ADR-0633-public-registry-save-validates-before-write.yaml",
620
+ "target_path": ".ssot/adr/ADR-0633-public-registry-save-validates-before-write.yaml",
621
+ "sha256": "7df0543232c6e0f3a076d7c8475153650acd4cbfa18fd9a53644e0e295834b6c",
622
+ "origin": "ssot-origin",
623
+ "reservation_owner": "ssot-origin",
624
+ "immutable": true,
625
+ "minimum_schema_version": "0.7.0",
626
+ "introduced_in": "0.2.10",
627
+ "status": "accepted",
628
+ "supersedes": [],
629
+ "superseded_by": [],
630
+ "status_notes": []
493
631
  }
494
632
  ]
@@ -0,0 +1,72 @@
1
+ schema_version: "0.7.0"
2
+ kind: "spec"
3
+ id: "spc:0629"
4
+ number: 629
5
+ slug: "ssot-mcp-cli-surface-contract"
6
+ title: "SSOT MCP CLI surface contract"
7
+ status: "draft"
8
+ origin: "ssot-origin"
9
+ decision_date: null
10
+ tags: []
11
+ summary: "Define the SSOT MCP contract for discovering and safely executing the complete `ssot-registry` CLI surface through MCP tools."
12
+ supersedes: []
13
+ superseded_by: []
14
+ status_notes:
15
+ -
16
+ status: "draft"
17
+ note: "Created to define full SSOT CLI delegation through ssot-mcp."
18
+ at: "2026-05-20T16:21:38Z"
19
+ references: []
20
+ body: |-
21
+ ## Purpose
22
+
23
+ Define the SSOT MCP contract for discovering and safely executing the complete `ssot-registry` CLI surface through MCP tools.
24
+
25
+ ## Required MCP Tools
26
+
27
+ `get_ssot_cli_surface` SHALL return:
28
+
29
+ - `passed`
30
+ - `global_flags`
31
+ - `top_level_commands`
32
+ - `subcommand_paths`
33
+ - `flags_by_path`
34
+
35
+ `run_ssot_cli` SHALL accept argv tokens after `ssot-registry` and SHALL support:
36
+
37
+ - global flags
38
+ - top-level commands
39
+ - command flags
40
+ - subcommands
41
+ - subcommand flags
42
+ - help requests
43
+ - version requests
44
+ - invalid-argument requests
45
+
46
+ ## Execution Result Contract
47
+
48
+ `run_ssot_cli` SHALL return a structured result with:
49
+
50
+ - `passed`
51
+ - `exit_code`
52
+ - `args`
53
+ - `output`
54
+ - `stdout`
55
+ - `stderr`
56
+
57
+ If stdout is JSON, `output` SHOULD contain the parsed JSON payload. If stdout is not JSON, `output` MAY contain the raw stdout text.
58
+
59
+ ## Parser Exit Containment
60
+
61
+ The MCP server SHALL catch CLI parser exits, including argparse `SystemExit`, and return them as normal tool results. Help, version, and invalid-argument flows SHALL NOT close the MCP transport.
62
+
63
+ ## Repository Resolution
64
+
65
+ When `ssot-mcp` is pinned to a repository, `run_ssot_cli` SHALL execute against the pinned repository unless an explicit different repo is rejected by policy. In explicit repo-per-call mode, non-metadata CLI operations SHALL require a repo argument. Metadata-only operations such as help, version, and CLI surface discovery MAY run without a repo.
66
+
67
+ ## Mutation Notification
68
+
69
+ Successful CLI operations that can mutate registry state SHOULD emit a `registry_updated` event so workers can refresh context.
70
+ spec_kind: "operational"
71
+ adr_ids:
72
+ - "adr:0628"
@@ -0,0 +1,24 @@
1
+ schema_version: "0.7.0"
2
+ kind: "spec"
3
+ id: "spc:0630"
4
+ number: 630
5
+ slug: "ssot-mcp-registry-repair-authority"
6
+ title: "SSOT MCP registry repair authority"
7
+ status: "draft"
8
+ origin: "ssot-origin"
9
+ decision_date: null
10
+ tags: []
11
+ summary: "This specification defines the SSOT MCP registry repair authority surface. ssot-mcp SHALL expose registry get, list, search, create, update, delete, link, unlink, CLI delegation, target-claim scaffold repair, blocked-transition repair, and bulk blocked-transition repair. Workers SHALL use these tools instead of hand-editing registry files. Repair responses SHALL report changed entity ids, validation result, and retry guidance."
12
+ supersedes: []
13
+ superseded_by: []
14
+ status_notes:
15
+ -
16
+ status: "draft"
17
+ note: "Created to govern SSOT MCP scoped repair and worker maturation behavior."
18
+ at: "2026-05-20T17:45:19Z"
19
+ references: []
20
+ body: |-
21
+ This specification defines the SSOT MCP registry repair authority surface. ssot-mcp SHALL expose registry get, list, search, create, update, delete, link, unlink, CLI delegation, target-claim scaffold repair, blocked-transition repair, and bulk blocked-transition repair. Workers SHALL use these tools instead of hand-editing registry files. Repair responses SHALL report changed entity ids, validation result, and retry guidance.
22
+ spec_kind: "operational"
23
+ adr_ids:
24
+ - "adr:0629"
@@ -0,0 +1,24 @@
1
+ schema_version: "0.7.0"
2
+ kind: "spec"
3
+ id: "spc:0631"
4
+ number: 631
5
+ slug: "scoped-maturation-blocker-contract"
6
+ title: "Scoped maturation blocker contract"
7
+ status: "draft"
8
+ origin: "ssot-origin"
9
+ decision_date: null
10
+ tags: []
11
+ summary: "This specification defines scoped maturation behavior. claim_next_maturation_slice SHALL honor feature_ids, profile_ids, and boundary_ids. Blocked transitions outside the resolved scope SHALL NOT prevent a scoped claim from receiving a lease. Campaign status for a scoped campaign SHALL report scoped incomplete and blocked counts. Global blocked backlog SHALL NOT leak into targeted work responses."
12
+ supersedes: []
13
+ superseded_by: []
14
+ status_notes:
15
+ -
16
+ status: "draft"
17
+ note: "Created to govern SSOT MCP scoped repair and worker maturation behavior."
18
+ at: "2026-05-20T17:45:20Z"
19
+ references: []
20
+ body: |-
21
+ This specification defines scoped maturation behavior. claim_next_maturation_slice SHALL honor feature_ids, profile_ids, and boundary_ids. Blocked transitions outside the resolved scope SHALL NOT prevent a scoped claim from receiving a lease. Campaign status for a scoped campaign SHALL report scoped incomplete and blocked counts. Global blocked backlog SHALL NOT leak into targeted work responses.
22
+ spec_kind: "operational"
23
+ adr_ids:
24
+ - "adr:0630"
@@ -0,0 +1,25 @@
1
+ schema_version: "0.7.0"
2
+ kind: "spec"
3
+ id: "spc:0632"
4
+ number: 632
5
+ slug: "mcp-upgrade-delegation-contract"
6
+ title: "MCP upgrade delegation contract"
7
+ status: "draft"
8
+ origin: "ssot-origin"
9
+ decision_date: null
10
+ tags: []
11
+ summary: "This specification defines MCP upgrade delegation. When run_ssot_cli delegates upgrade, ssot-mcp SHALL use the currently running binary and installed runtime. It SHALL ignore target-version values supplied to MCP upgrade calls, SHALL add sync-docs when absent, SHALL return normalized_args and warnings, and SHALL NOT attempt package installation or PyPI resolution."
12
+ supersedes: []
13
+ superseded_by: []
14
+ status_notes:
15
+ -
16
+ status: "draft"
17
+ note: "Created to govern SSOT MCP scoped repair and worker maturation behavior."
18
+ at: "2026-05-20T17:45:21Z"
19
+ references: []
20
+ body: |-
21
+ This specification defines MCP upgrade delegation. When run_ssot_cli delegates upgrade, ssot-mcp SHALL use the currently running binary and installed runtime. It SHALL ignore target-version values supplied to MCP upgrade calls, SHALL add sync-docs when absent, SHALL return normalized_args and warnings, and SHALL NOT attempt package installation or PyPI resolution.
22
+ spec_kind: "operational"
23
+ adr_ids:
24
+ - "adr:0631"
25
+ - "adr:0628"
@@ -0,0 +1,24 @@
1
+ schema_version: "0.7.0"
2
+ kind: "spec"
3
+ id: "spc:0633"
4
+ number: 633
5
+ slug: "targeted-scaffold-repair-contract"
6
+ title: "Targeted scaffold repair contract"
7
+ status: "draft"
8
+ origin: "ssot-origin"
9
+ decision_date: null
10
+ tags: []
11
+ summary: "This specification defines targeted scaffold repair. scaffold_target_claim_wiring SHALL compare baseline validation failures against post-repair validation failures. The repair MAY persist when no new validation failures are introduced, even if baseline validation remains dirty. Responses SHALL expose validation_clean, baseline_validation, validation, and new_validation_failures."
12
+ supersedes: []
13
+ superseded_by: []
14
+ status_notes:
15
+ -
16
+ status: "draft"
17
+ note: "Created to govern SSOT MCP scoped repair and worker maturation behavior."
18
+ at: "2026-05-20T17:45:22Z"
19
+ references: []
20
+ body: |-
21
+ This specification defines targeted scaffold repair. scaffold_target_claim_wiring SHALL compare baseline validation failures against post-repair validation failures. The repair MAY persist when no new validation failures are introduced, even if baseline validation remains dirty. Responses SHALL expose validation_clean, baseline_validation, validation, and new_validation_failures.
22
+ spec_kind: "operational"
23
+ adr_ids:
24
+ - "adr:0632"
@@ -0,0 +1,26 @@
1
+ schema_version: "0.7.0"
2
+ kind: "spec"
3
+ id: "spc:0634"
4
+ number: 634
5
+ slug: "worker-actionability-and-repair-loop"
6
+ title: "Worker actionability and repair loop"
7
+ status: "draft"
8
+ origin: "ssot-origin"
9
+ decision_date: null
10
+ tags: []
11
+ summary: "This specification defines worker behavior for blocked slices. When claim_next_maturation_slice returns kind=blocked, workers SHALL inspect reason and problem_detail, invoke recommended SSOT MCP repair tools when applicable, retry the scoped claim, and abandon only when the blocker is not repairable through MCP, the lease is stale, or honest claim elevation is impossible."
12
+ supersedes: []
13
+ superseded_by: []
14
+ status_notes:
15
+ -
16
+ status: "draft"
17
+ note: "Created to govern SSOT MCP scoped repair and worker maturation behavior."
18
+ at: "2026-05-20T17:45:23Z"
19
+ references: []
20
+ body: |-
21
+ This specification defines worker behavior for blocked slices. When claim_next_maturation_slice returns kind=blocked, workers SHALL inspect reason and problem_detail, invoke recommended SSOT MCP repair tools when applicable, retry the scoped claim, and abandon only when the blocker is not repairable through MCP, the lease is stale, or honest claim elevation is impossible.
22
+ spec_kind: "operational"
23
+ adr_ids:
24
+ - "adr:0629"
25
+ - "adr:0630"
26
+ - "adr:0632"
@@ -0,0 +1,37 @@
1
+ schema_version: "0.7.0"
2
+ kind: "spec"
3
+ id: "spc:0635"
4
+ number: 635
5
+ slug: "registry-save-validation-contract"
6
+ title: "Registry save validation contract"
7
+ status: "accepted"
8
+ origin: "ssot-origin"
9
+ decision_date: null
10
+ tags: []
11
+ summary: "This SPEC defines the validation contract for public `.ssot/registry.json` save operations."
12
+ supersedes: []
13
+ superseded_by: []
14
+ status_notes: []
15
+ references: []
16
+ body: |-
17
+ ## Scope
18
+
19
+ This SPEC defines the validation contract for public `.ssot/registry.json` save operations.
20
+
21
+ ## Requirements
22
+
23
+ - The public/default `save_registry` API shall validate a candidate registry document before persistence.
24
+ - Validation shall use the same registry validator used by explicit validation commands.
25
+ - Validation failures shall fail closed and shall not replace the existing registry file.
26
+ - The public save API shall infer the repository root from `.ssot/registry.json` when a caller does not provide one.
27
+ - Lock acquisition and atomic replace semantics shall still protect the final write operation.
28
+ - Lock-only persistence shall be available only through an explicitly named unchecked helper.
29
+ - Unchecked persistence shall be reserved for bootstrap, migration, and targeted repair flows with separately documented validation policy.
30
+ - Regression tests shall prove that direct public save rejects invalid payloads and that unchecked save use remains limited to documented callers.
31
+
32
+ ## Out of Scope
33
+
34
+ This SPEC does not change the registry schema, graph export format, release snapshot format, or repo-local automation configuration. Repo-local post-mutation validation remains a separate automation layer.
35
+ spec_kind: "operational"
36
+ adr_ids:
37
+ - "adr:0633"
@@ -650,5 +650,198 @@
650
650
  "adr_ids": [
651
651
  "adr:0627"
652
652
  ]
653
+ },
654
+ {
655
+ "id": "spc:0629",
656
+ "number": 629,
657
+ "slug": "ssot-mcp-cli-surface-contract",
658
+ "title": "SSOT MCP CLI surface contract",
659
+ "filename": "SPEC-0629-ssot-mcp-cli-surface-contract.yaml",
660
+ "target_path": ".ssot/specs/SPEC-0629-ssot-mcp-cli-surface-contract.yaml",
661
+ "sha256": "00d75a03c3b235d97e6a543bf3828ac8a0aa08d217fcdb3013e23490f99b4c66",
662
+ "origin": "ssot-origin",
663
+ "reservation_owner": "ssot-origin",
664
+ "immutable": true,
665
+ "minimum_schema_version": "0.7.0",
666
+ "introduced_in": "0.2.10",
667
+ "status": "draft",
668
+ "supersedes": [],
669
+ "superseded_by": [],
670
+ "status_notes": [
671
+ {
672
+ "at": "2026-05-20T16:21:38Z",
673
+ "note": "Created to define full SSOT CLI delegation through ssot-mcp.",
674
+ "status": "draft"
675
+ }
676
+ ],
677
+ "kind": "operational",
678
+ "adr_ids": [
679
+ "adr:0628"
680
+ ]
681
+ },
682
+ {
683
+ "id": "spc:0630",
684
+ "number": 630,
685
+ "slug": "ssot-mcp-registry-repair-authority",
686
+ "title": "SSOT MCP registry repair authority",
687
+ "filename": "SPEC-0630-ssot-mcp-registry-repair-authority.yaml",
688
+ "target_path": ".ssot/specs/SPEC-0630-ssot-mcp-registry-repair-authority.yaml",
689
+ "sha256": "f20e69acdda6e849cf6cbacee2f63ed4545187a9afa033906b3e5c2388b108b4",
690
+ "origin": "ssot-origin",
691
+ "reservation_owner": "ssot-origin",
692
+ "immutable": true,
693
+ "minimum_schema_version": "0.7.0",
694
+ "introduced_in": "0.2.10",
695
+ "status": "draft",
696
+ "supersedes": [],
697
+ "superseded_by": [],
698
+ "status_notes": [
699
+ {
700
+ "at": "2026-05-20T17:45:19Z",
701
+ "note": "Created to govern SSOT MCP scoped repair and worker maturation behavior.",
702
+ "status": "draft"
703
+ }
704
+ ],
705
+ "kind": "operational",
706
+ "adr_ids": [
707
+ "adr:0629"
708
+ ]
709
+ },
710
+ {
711
+ "id": "spc:0631",
712
+ "number": 631,
713
+ "slug": "scoped-maturation-blocker-contract",
714
+ "title": "Scoped maturation blocker contract",
715
+ "filename": "SPEC-0631-scoped-maturation-blocker-contract.yaml",
716
+ "target_path": ".ssot/specs/SPEC-0631-scoped-maturation-blocker-contract.yaml",
717
+ "sha256": "5f254419a626ec8bbb4c496400856e531e82a5042a1cf4a96e68f994714ccf91",
718
+ "origin": "ssot-origin",
719
+ "reservation_owner": "ssot-origin",
720
+ "immutable": true,
721
+ "minimum_schema_version": "0.7.0",
722
+ "introduced_in": "0.2.10",
723
+ "status": "draft",
724
+ "supersedes": [],
725
+ "superseded_by": [],
726
+ "status_notes": [
727
+ {
728
+ "at": "2026-05-20T17:45:20Z",
729
+ "note": "Created to govern SSOT MCP scoped repair and worker maturation behavior.",
730
+ "status": "draft"
731
+ }
732
+ ],
733
+ "kind": "operational",
734
+ "adr_ids": [
735
+ "adr:0630"
736
+ ]
737
+ },
738
+ {
739
+ "id": "spc:0632",
740
+ "number": 632,
741
+ "slug": "mcp-upgrade-delegation-contract",
742
+ "title": "MCP upgrade delegation contract",
743
+ "filename": "SPEC-0632-mcp-upgrade-delegation-contract.yaml",
744
+ "target_path": ".ssot/specs/SPEC-0632-mcp-upgrade-delegation-contract.yaml",
745
+ "sha256": "498421694a5810454488ff83615fee2eb0dbc219b30f36be60d2bee01cf8776b",
746
+ "origin": "ssot-origin",
747
+ "reservation_owner": "ssot-origin",
748
+ "immutable": true,
749
+ "minimum_schema_version": "0.7.0",
750
+ "introduced_in": "0.2.10",
751
+ "status": "draft",
752
+ "supersedes": [],
753
+ "superseded_by": [],
754
+ "status_notes": [
755
+ {
756
+ "at": "2026-05-20T17:45:21Z",
757
+ "note": "Created to govern SSOT MCP scoped repair and worker maturation behavior.",
758
+ "status": "draft"
759
+ }
760
+ ],
761
+ "kind": "operational",
762
+ "adr_ids": [
763
+ "adr:0631",
764
+ "adr:0628"
765
+ ]
766
+ },
767
+ {
768
+ "id": "spc:0633",
769
+ "number": 633,
770
+ "slug": "targeted-scaffold-repair-contract",
771
+ "title": "Targeted scaffold repair contract",
772
+ "filename": "SPEC-0633-targeted-scaffold-repair-contract.yaml",
773
+ "target_path": ".ssot/specs/SPEC-0633-targeted-scaffold-repair-contract.yaml",
774
+ "sha256": "82105e8e4ea6bb4be30a5d29db1d240b870213615c8b0b71b2cfecfd5367cbd9",
775
+ "origin": "ssot-origin",
776
+ "reservation_owner": "ssot-origin",
777
+ "immutable": true,
778
+ "minimum_schema_version": "0.7.0",
779
+ "introduced_in": "0.2.10",
780
+ "status": "draft",
781
+ "supersedes": [],
782
+ "superseded_by": [],
783
+ "status_notes": [
784
+ {
785
+ "at": "2026-05-20T17:45:22Z",
786
+ "note": "Created to govern SSOT MCP scoped repair and worker maturation behavior.",
787
+ "status": "draft"
788
+ }
789
+ ],
790
+ "kind": "operational",
791
+ "adr_ids": [
792
+ "adr:0632"
793
+ ]
794
+ },
795
+ {
796
+ "id": "spc:0634",
797
+ "number": 634,
798
+ "slug": "worker-actionability-and-repair-loop",
799
+ "title": "Worker actionability and repair loop",
800
+ "filename": "SPEC-0634-worker-actionability-and-repair-loop.yaml",
801
+ "target_path": ".ssot/specs/SPEC-0634-worker-actionability-and-repair-loop.yaml",
802
+ "sha256": "1fd5ad770004e8a736ca398c18f12e7b849880c76a05e93bb71659218a44e787",
803
+ "origin": "ssot-origin",
804
+ "reservation_owner": "ssot-origin",
805
+ "immutable": true,
806
+ "minimum_schema_version": "0.7.0",
807
+ "introduced_in": "0.2.10",
808
+ "status": "draft",
809
+ "supersedes": [],
810
+ "superseded_by": [],
811
+ "status_notes": [
812
+ {
813
+ "at": "2026-05-20T17:45:23Z",
814
+ "note": "Created to govern SSOT MCP scoped repair and worker maturation behavior.",
815
+ "status": "draft"
816
+ }
817
+ ],
818
+ "kind": "operational",
819
+ "adr_ids": [
820
+ "adr:0629",
821
+ "adr:0630",
822
+ "adr:0632"
823
+ ]
824
+ },
825
+ {
826
+ "id": "spc:0635",
827
+ "number": 635,
828
+ "slug": "registry-save-validation-contract",
829
+ "title": "Registry save validation contract",
830
+ "filename": "SPEC-0635-registry-save-validation-contract.yaml",
831
+ "target_path": ".ssot/specs/SPEC-0635-registry-save-validation-contract.yaml",
832
+ "sha256": "7eb90a861c39f042c4f85afc354d4bf91848ac080f9f303ccf38bd8697bcc3af",
833
+ "origin": "ssot-origin",
834
+ "reservation_owner": "ssot-origin",
835
+ "immutable": true,
836
+ "minimum_schema_version": "0.7.0",
837
+ "introduced_in": "0.2.10",
838
+ "status": "accepted",
839
+ "supersedes": [],
840
+ "superseded_by": [],
841
+ "status_notes": [],
842
+ "kind": "operational",
843
+ "adr_ids": [
844
+ "adr:0633"
845
+ ]
653
846
  }
654
847
  ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ssot-contracts
3
- Version: 0.2.19.dev2
3
+ Version: 0.2.20.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
@@ -52,6 +52,12 @@ src/ssot_contracts/templates/adr/ADR-0622-definitions-govern-ssot-vocabulary.yam
52
52
  src/ssot_contracts/templates/adr/ADR-0625-claim-tier-gates-and-core-promotion.yaml
53
53
  src/ssot_contracts/templates/adr/ADR-0626-externally-authored-validation-as-t4.yaml
54
54
  src/ssot_contracts/templates/adr/ADR-0627-feature-parent-links-are-inventory-composition.yaml
55
+ src/ssot_contracts/templates/adr/ADR-0628-ssot-mcp-cli-surface-delegation.yaml
56
+ src/ssot_contracts/templates/adr/ADR-0629-ssot-mcp-worker-repair-authority.yaml
57
+ src/ssot_contracts/templates/adr/ADR-0630-scoped-maturation-claims-and-blockers.yaml
58
+ src/ssot_contracts/templates/adr/ADR-0631-mcp-mediated-upgrade-uses-current-runtime.yaml
59
+ src/ssot_contracts/templates/adr/ADR-0632-targeted-repair-with-baseline-validation-drift.yaml
60
+ src/ssot_contracts/templates/adr/ADR-0633-public-registry-save-validates-before-write.yaml
55
61
  src/ssot_contracts/templates/adr/__init__.py
56
62
  src/ssot_contracts/templates/adr/manifest.json
57
63
  src/ssot_contracts/templates/specs/SPEC-0600-registry-core.yaml
@@ -83,5 +89,12 @@ src/ssot_contracts/templates/specs/SPEC-0625-claim-tier-gates.yaml
83
89
  src/ssot_contracts/templates/specs/SPEC-0626-external-validation-evidence.yaml
84
90
  src/ssot_contracts/templates/specs/SPEC-0627-feature-parent-link-contract.yaml
85
91
  src/ssot_contracts/templates/specs/SPEC-0628-feature-parent-cli-contract.yaml
92
+ src/ssot_contracts/templates/specs/SPEC-0629-ssot-mcp-cli-surface-contract.yaml
93
+ src/ssot_contracts/templates/specs/SPEC-0630-ssot-mcp-registry-repair-authority.yaml
94
+ src/ssot_contracts/templates/specs/SPEC-0631-scoped-maturation-blocker-contract.yaml
95
+ src/ssot_contracts/templates/specs/SPEC-0632-mcp-upgrade-delegation-contract.yaml
96
+ src/ssot_contracts/templates/specs/SPEC-0633-targeted-scaffold-repair-contract.yaml
97
+ src/ssot_contracts/templates/specs/SPEC-0634-worker-actionability-and-repair-loop.yaml
98
+ src/ssot_contracts/templates/specs/SPEC-0635-registry-save-validation-contract.yaml
86
99
  src/ssot_contracts/templates/specs/__init__.py
87
100
  src/ssot_contracts/templates/specs/manifest.json