ssot-core 0.2.7__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_core-0.2.7/PKG-INFO +935 -0
- ssot_core-0.2.7/README.md +895 -0
- ssot_core-0.2.7/pyproject.toml +59 -0
- ssot_core-0.2.7/setup.cfg +4 -0
- ssot_core-0.2.7/src/ssot_core.egg-info/PKG-INFO +935 -0
- ssot_core-0.2.7/src/ssot_core.egg-info/SOURCES.txt +115 -0
- ssot_core-0.2.7/src/ssot_core.egg-info/dependency_links.txt +1 -0
- ssot_core-0.2.7/src/ssot_core.egg-info/requires.txt +5 -0
- ssot_core-0.2.7/src/ssot_core.egg-info/top_level.txt +1 -0
- ssot_core-0.2.7/src/ssot_registry/__init__.py +3 -0
- ssot_core-0.2.7/src/ssot_registry/__main__.py +4 -0
- ssot_core-0.2.7/src/ssot_registry/api/__init__.py +102 -0
- ssot_core-0.2.7/src/ssot_registry/api/boundary.py +55 -0
- ssot_core-0.2.7/src/ssot_registry/api/claims.py +35 -0
- ssot_core-0.2.7/src/ssot_registry/api/documents.py +599 -0
- ssot_core-0.2.7/src/ssot_registry/api/entity_ops.py +323 -0
- ssot_core-0.2.7/src/ssot_registry/api/evidence.py +64 -0
- ssot_core-0.2.7/src/ssot_registry/api/graph.py +57 -0
- ssot_core-0.2.7/src/ssot_registry/api/init.py +52 -0
- ssot_core-0.2.7/src/ssot_registry/api/lifecycle.py +66 -0
- ssot_core-0.2.7/src/ssot_registry/api/load.py +13 -0
- ssot_core-0.2.7/src/ssot_registry/api/plan.py +72 -0
- ssot_core-0.2.7/src/ssot_registry/api/profile_eval.py +175 -0
- ssot_core-0.2.7/src/ssot_registry/api/profile_resolution.py +33 -0
- ssot_core-0.2.7/src/ssot_registry/api/registry.py +21 -0
- ssot_core-0.2.7/src/ssot_registry/api/release.py +219 -0
- ssot_core-0.2.7/src/ssot_registry/api/save.py +9 -0
- ssot_core-0.2.7/src/ssot_registry/api/upgrade.py +589 -0
- ssot_core-0.2.7/src/ssot_registry/api/validate.py +55 -0
- ssot_core-0.2.7/src/ssot_registry/cli/__init__.py +5 -0
- ssot_core-0.2.7/src/ssot_registry/cli/adr_cmd.py +2 -0
- ssot_core-0.2.7/src/ssot_registry/cli/boundary_cmd.py +2 -0
- ssot_core-0.2.7/src/ssot_registry/cli/claim_cmd.py +2 -0
- ssot_core-0.2.7/src/ssot_registry/cli/common.py +1 -0
- ssot_core-0.2.7/src/ssot_registry/cli/evidence_cmd.py +2 -0
- ssot_core-0.2.7/src/ssot_registry/cli/feature_cmd.py +2 -0
- ssot_core-0.2.7/src/ssot_registry/cli/graph_cmd.py +2 -0
- ssot_core-0.2.7/src/ssot_registry/cli/init_cmd.py +2 -0
- ssot_core-0.2.7/src/ssot_registry/cli/issue_cmd.py +2 -0
- ssot_core-0.2.7/src/ssot_registry/cli/main.py +39 -0
- ssot_core-0.2.7/src/ssot_registry/cli/profile_cmd.py +2 -0
- ssot_core-0.2.7/src/ssot_registry/cli/registry_cmd.py +2 -0
- ssot_core-0.2.7/src/ssot_registry/cli/release_cmd.py +2 -0
- ssot_core-0.2.7/src/ssot_registry/cli/risk_cmd.py +2 -0
- ssot_core-0.2.7/src/ssot_registry/cli/spec_cmd.py +2 -0
- ssot_core-0.2.7/src/ssot_registry/cli/test_cmd.py +2 -0
- ssot_core-0.2.7/src/ssot_registry/cli/upgrade_cmd.py +2 -0
- ssot_core-0.2.7/src/ssot_registry/cli/validate_cmd.py +2 -0
- ssot_core-0.2.7/src/ssot_registry/graph/__init__.py +7 -0
- ssot_core-0.2.7/src/ssot_registry/graph/export_dot.py +1 -0
- ssot_core-0.2.7/src/ssot_registry/graph/export_json.py +1 -0
- ssot_core-0.2.7/src/ssot_registry/guards/__init__.py +23 -0
- ssot_core-0.2.7/src/ssot_registry/guards/certification.py +152 -0
- ssot_core-0.2.7/src/ssot_registry/guards/claim_closure.py +93 -0
- ssot_core-0.2.7/src/ssot_registry/guards/document_lifecycle.py +68 -0
- ssot_core-0.2.7/src/ssot_registry/guards/document_supersession.py +82 -0
- ssot_core-0.2.7/src/ssot_registry/guards/feature_requirements.py +81 -0
- ssot_core-0.2.7/src/ssot_registry/guards/lifecycle.py +54 -0
- ssot_core-0.2.7/src/ssot_registry/guards/profile_requirements.py +43 -0
- ssot_core-0.2.7/src/ssot_registry/guards/promotion.py +41 -0
- ssot_core-0.2.7/src/ssot_registry/guards/publication.py +31 -0
- ssot_core-0.2.7/src/ssot_registry/model/__init__.py +53 -0
- ssot_core-0.2.7/src/ssot_registry/model/boundary.py +12 -0
- ssot_core-0.2.7/src/ssot_registry/model/claim.py +15 -0
- ssot_core-0.2.7/src/ssot_registry/model/document.py +107 -0
- ssot_core-0.2.7/src/ssot_registry/model/enums.py +117 -0
- ssot_core-0.2.7/src/ssot_registry/model/evidence.py +14 -0
- ssot_core-0.2.7/src/ssot_registry/model/feature.py +15 -0
- ssot_core-0.2.7/src/ssot_registry/model/ids.py +11 -0
- ssot_core-0.2.7/src/ssot_registry/model/issue.py +18 -0
- ssot_core-0.2.7/src/ssot_registry/model/profile.py +15 -0
- ssot_core-0.2.7/src/ssot_registry/model/registry.py +171 -0
- ssot_core-0.2.7/src/ssot_registry/model/release.py +12 -0
- ssot_core-0.2.7/src/ssot_registry/model/risk.py +17 -0
- ssot_core-0.2.7/src/ssot_registry/model/test.py +14 -0
- ssot_core-0.2.7/src/ssot_registry/reports/__init__.py +9 -0
- ssot_core-0.2.7/src/ssot_registry/reports/certification_report.py +11 -0
- ssot_core-0.2.7/src/ssot_registry/reports/summary.py +6 -0
- ssot_core-0.2.7/src/ssot_registry/reports/validation_report.py +12 -0
- ssot_core-0.2.7/src/ssot_registry/schema/__init__.py +0 -0
- ssot_core-0.2.7/src/ssot_registry/schema/adr.schema.json +105 -0
- ssot_core-0.2.7/src/ssot_registry/schema/boundary.snapshot.schema.json +15 -0
- ssot_core-0.2.7/src/ssot_registry/schema/certification.report.schema.json +11 -0
- ssot_core-0.2.7/src/ssot_registry/schema/graph.export.schema.json +54 -0
- ssot_core-0.2.7/src/ssot_registry/schema/published.snapshot.schema.json +17 -0
- ssot_core-0.2.7/src/ssot_registry/schema/registry.schema.json +1190 -0
- ssot_core-0.2.7/src/ssot_registry/schema/release.snapshot.schema.json +20 -0
- ssot_core-0.2.7/src/ssot_registry/schema/spec.schema.json +114 -0
- ssot_core-0.2.7/src/ssot_registry/schema/validation.report.schema.json +12 -0
- ssot_core-0.2.7/src/ssot_registry/snapshots/__init__.py +9 -0
- ssot_core-0.2.7/src/ssot_registry/snapshots/boundary_snapshot.py +33 -0
- ssot_core-0.2.7/src/ssot_registry/snapshots/hashing.py +9 -0
- ssot_core-0.2.7/src/ssot_registry/snapshots/published_snapshot.py +37 -0
- ssot_core-0.2.7/src/ssot_registry/snapshots/release_snapshot.py +52 -0
- ssot_core-0.2.7/src/ssot_registry/templates/__init__.py +0 -0
- ssot_core-0.2.7/src/ssot_registry/templates/registry.full.json +223 -0
- ssot_core-0.2.7/src/ssot_registry/templates/registry.minimal.json +142 -0
- ssot_core-0.2.7/src/ssot_registry/util/__init__.py +18 -0
- ssot_core-0.2.7/src/ssot_registry/util/document_io.py +592 -0
- ssot_core-0.2.7/src/ssot_registry/util/errors.py +10 -0
- ssot_core-0.2.7/src/ssot_registry/util/formatting.py +155 -0
- ssot_core-0.2.7/src/ssot_registry/util/fs.py +59 -0
- ssot_core-0.2.7/src/ssot_registry/util/jsonio.py +19 -0
- ssot_core-0.2.7/src/ssot_registry/util/time.py +7 -0
- ssot_core-0.2.7/src/ssot_registry/validators/__init__.py +24 -0
- ssot_core-0.2.7/src/ssot_registry/validators/bidirectional.py +20 -0
- ssot_core-0.2.7/src/ssot_registry/validators/coverage.py +76 -0
- ssot_core-0.2.7/src/ssot_registry/validators/documents.py +242 -0
- ssot_core-0.2.7/src/ssot_registry/validators/filesystem.py +94 -0
- ssot_core-0.2.7/src/ssot_registry/validators/identity.py +56 -0
- ssot_core-0.2.7/src/ssot_registry/validators/lifecycle.py +27 -0
- ssot_core-0.2.7/src/ssot_registry/validators/promotion.py +3 -0
- ssot_core-0.2.7/src/ssot_registry/validators/references.py +48 -0
- ssot_core-0.2.7/src/ssot_registry/validators/reservations.py +53 -0
- ssot_core-0.2.7/src/ssot_registry/validators/structure.py +307 -0
- ssot_core-0.2.7/src/ssot_registry/validators/tiers.py +30 -0
- ssot_core-0.2.7/src/ssot_registry/version.py +46 -0
ssot_core-0.2.7/PKG-INFO
ADDED
|
@@ -0,0 +1,935 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ssot-core
|
|
3
|
+
Version: 0.2.7
|
|
4
|
+
Summary: Core Python runtime, registry model, validation, and release workflow APIs for SSOT.
|
|
5
|
+
Author-email: Jacob Stewart <jacob@swarmauri.com>
|
|
6
|
+
License-Expression: Apache-2.0
|
|
7
|
+
Project-URL: Homepage, https://github.com/groupsum/ssot-registry
|
|
8
|
+
Project-URL: Repository, https://github.com/groupsum/ssot-registry
|
|
9
|
+
Project-URL: Issues, https://github.com/groupsum/ssot-registry/issues
|
|
10
|
+
Keywords: ssot,core,registry,validation,release-management,governance,compliance
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Intended Audience :: Information Technology
|
|
15
|
+
Classifier: Intended Audience :: Science/Research
|
|
16
|
+
Classifier: Natural Language :: English
|
|
17
|
+
Classifier: Operating System :: OS Independent
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
24
|
+
Classifier: Topic :: Database
|
|
25
|
+
Classifier: Topic :: File Formats :: JSON
|
|
26
|
+
Classifier: Topic :: File Formats :: JSON :: JSON Schema
|
|
27
|
+
Classifier: Topic :: Scientific/Engineering :: Information Analysis
|
|
28
|
+
Classifier: Topic :: Software Development :: Documentation
|
|
29
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
30
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
31
|
+
Classifier: Topic :: Software Development :: Quality Assurance
|
|
32
|
+
Classifier: Topic :: Software Development :: Testing
|
|
33
|
+
Classifier: Topic :: System :: Archiving
|
|
34
|
+
Classifier: Topic :: Utilities
|
|
35
|
+
Requires-Python: <3.14,>=3.10
|
|
36
|
+
Description-Content-Type: text/markdown
|
|
37
|
+
Requires-Dist: ssot-contracts==0.2.7
|
|
38
|
+
Requires-Dist: ssot-views==0.2.7
|
|
39
|
+
Requires-Dist: tomli>=2.0.1; python_version < "3.11"
|
|
40
|
+
|
|
41
|
+
<div align="center">
|
|
42
|
+
<h1>🔷 ssot-core</h1>
|
|
43
|
+
<p><strong>Core Python runtime, registry model, validation, and release workflow APIs for SSOT.</strong></p>
|
|
44
|
+
</div>
|
|
45
|
+
|
|
46
|
+
<div align="center">
|
|
47
|
+
<a href="https://pypi.org/project/ssot-core/"><img src="https://img.shields.io/pypi/v/ssot-core?label=PyPI%20version" alt="PyPI version" /></a>
|
|
48
|
+
<a href="https://pypi.org/project/ssot-core/"><img src="https://img.shields.io/pypi/pyversions/ssot-core?label=Python" alt="Supported Python versions" /></a>
|
|
49
|
+
<a href="https://pepy.tech/project/ssot-core"><img src="https://static.pepy.tech/badge/ssot-core" alt="Downloads" /></a>
|
|
50
|
+
<a href="https://hits.sh/github.com/groupsum/ssot-registry/"><img src="https://hits.sh/github.com/groupsum/ssot-registry.svg?style=flat-square" alt="Hits" /></a>
|
|
51
|
+
</div>
|
|
52
|
+
|
|
53
|
+
`ssot-core` is the core Python runtime package for SSOT.
|
|
54
|
+
|
|
55
|
+
It owns the canonical registry model, core APIs for loading and mutating registries, validation and guard logic, planning and release workflows, and the domain operations that `ssot-cli` and `ssot-tui` build on top of.
|
|
56
|
+
|
|
57
|
+
- GitHub: https://github.com/groupsum/ssot-registry
|
|
58
|
+
|
|
59
|
+
## Core model
|
|
60
|
+
|
|
61
|
+
`ssot-core` treats `.ssot/registry.json` as the canonical machine-readable source of truth for:
|
|
62
|
+
|
|
63
|
+
- features
|
|
64
|
+
- profiles
|
|
65
|
+
- tests
|
|
66
|
+
- claims
|
|
67
|
+
- evidence
|
|
68
|
+
- issues
|
|
69
|
+
- risks
|
|
70
|
+
- boundaries
|
|
71
|
+
- releases
|
|
72
|
+
- ADRs
|
|
73
|
+
- specs
|
|
74
|
+
|
|
75
|
+
Everything else is derived from it.
|
|
76
|
+
|
|
77
|
+
### Boundaries vs releases
|
|
78
|
+
|
|
79
|
+
Boundaries are not releases.
|
|
80
|
+
|
|
81
|
+
- A boundary is the frozen scope of features and profiles for a delivery unit.
|
|
82
|
+
- Freezing a boundary validates the registry, locks that scope, and emits a boundary snapshot.
|
|
83
|
+
- A release references a frozen boundary and then bundles the claims and evidence used for certify, promote, publish, and revoke workflows.
|
|
84
|
+
|
|
85
|
+
If you omit this distinction, releases look redundant. They are not: boundaries freeze scope; releases attest and ship against that frozen scope.
|
|
86
|
+
|
|
87
|
+
## Canonical format
|
|
88
|
+
|
|
89
|
+
`.ssot/registry.json` remains the canonical machine-readable registry.
|
|
90
|
+
|
|
91
|
+
ADR and SPEC companion documents are canonically authored as YAML for readability, and may also be stored as JSON when a repository prefers machine-oriented document files. Markdown, CSV, DOT, SQLite, reports, and snapshots are derived projections.
|
|
92
|
+
|
|
93
|
+
## Install
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
python -m pip install ssot-core # core library/runtime only
|
|
97
|
+
python -m pip install ssot-cli # primary CLI distribution + ssot-core
|
|
98
|
+
python -m pip install ssot-registry # umbrella bundle: ssot-core + ssot-cli
|
|
99
|
+
python -m pip install "ssot-registry[tui]" # optional TUI bundle
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
For local development:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
python -m pip install -e pkgs/ssot-core
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
`ssot_registry` remains the canonical import package. The import module ships from `ssot-core`, while CLI entry points ship from `ssot-cli`.
|
|
109
|
+
|
|
110
|
+
## What this package owns
|
|
111
|
+
|
|
112
|
+
- the canonical `.ssot/registry.json` data model
|
|
113
|
+
- runtime APIs under `ssot_registry.api`
|
|
114
|
+
- validators, guards, graph builders, reports, and snapshot generation
|
|
115
|
+
- planning, profile evaluation, evidence verification, document lifecycle, and release gating logic
|
|
116
|
+
|
|
117
|
+
## Python API examples
|
|
118
|
+
|
|
119
|
+
Initialize and validate a repository:
|
|
120
|
+
|
|
121
|
+
```python
|
|
122
|
+
from ssot_registry.api import initialize_repo, validate_registry
|
|
123
|
+
|
|
124
|
+
initialize_repo(".", repo_id="demo-repo", repo_name="Demo Repo", version="0.1.0")
|
|
125
|
+
report = validate_registry(".")
|
|
126
|
+
print(report["passed"])
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Load and save a registry:
|
|
130
|
+
|
|
131
|
+
```python
|
|
132
|
+
from ssot_registry.api import load_registry, save_registry
|
|
133
|
+
|
|
134
|
+
registry_path, repo_root, registry = load_registry(".")
|
|
135
|
+
save_registry(registry_path, registry)
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Freeze a boundary and export a graph:
|
|
139
|
+
|
|
140
|
+
```python
|
|
141
|
+
from ssot_registry.api import export_graph, freeze_boundary
|
|
142
|
+
|
|
143
|
+
freeze_boundary(".", boundary_id="bnd:demo.v0")
|
|
144
|
+
graph_result = export_graph(".", "json")
|
|
145
|
+
print(graph_result["output_path"])
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Representative API areas currently exposed from `ssot_registry.api` include:
|
|
149
|
+
|
|
150
|
+
- repository initialization, load, save, validate, and upgrade
|
|
151
|
+
- entity CRUD and linking operations
|
|
152
|
+
- document creation, synchronization, supersession, and reservations
|
|
153
|
+
- feature planning and lifecycle updates
|
|
154
|
+
- profile evaluation and profile resolution
|
|
155
|
+
- evidence verification and claim evaluation
|
|
156
|
+
- boundary freezing and release certification, promotion, publication, and revocation
|
|
157
|
+
- graph and registry export
|
|
158
|
+
|
|
159
|
+
## CLI quick reference
|
|
160
|
+
|
|
161
|
+
Install `ssot-cli` for the primary command surface. The same parser is available under:
|
|
162
|
+
|
|
163
|
+
- `ssot`
|
|
164
|
+
- `ssot-cli`
|
|
165
|
+
- `ssot-registry`
|
|
166
|
+
|
|
167
|
+
Examples in the long-form reference below use `ssot-registry`, but every command can be invoked with any of the three executable names.
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
ssot --help
|
|
171
|
+
ssot-cli --help
|
|
172
|
+
ssot-registry --help
|
|
173
|
+
ssot-registry profile --help
|
|
174
|
+
ssot-registry feature --help
|
|
175
|
+
ssot-registry boundary --help
|
|
176
|
+
ssot-registry release --help
|
|
177
|
+
ssot-registry graph --help
|
|
178
|
+
ssot-registry registry --help
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## Screenshots
|
|
182
|
+
|
|
183
|
+
CLI screenshots from `ssot-cli`:
|
|
184
|
+
|
|
185
|
+

|
|
186
|
+
|
|
187
|
+

|
|
188
|
+
|
|
189
|
+
TUI screenshots from `ssot-tui`:
|
|
190
|
+
|
|
191
|
+

|
|
192
|
+
|
|
193
|
+

|
|
194
|
+
|
|
195
|
+

|
|
196
|
+
|
|
197
|
+

|
|
198
|
+
|
|
199
|
+
## CLI conventions
|
|
200
|
+
|
|
201
|
+
- Most commands accept `[path]` as an optional positional argument. Default is current directory (`.`).
|
|
202
|
+
- Prefer `ssot ...` in new automation and examples; `ssot-registry ...` remains a compatibility alias.
|
|
203
|
+
- IDs are normalized prefixed identifiers such as `feat:*`, `prf:*`, `clm:*`, `tst:*`, `evd:*`, `iss:*`, `rsk:*`, `bnd:*`, `rel:*`, `adr:*`, and `spc:*`.
|
|
204
|
+
- Commands emit JSON by default; use `--output-format {json,csv,df,yaml,toml}` for alternate renderings.
|
|
205
|
+
- Use `--output-file PATH` to save rendered command output to disk.
|
|
206
|
+
- Non-zero exit code indicates an operation failure or failed checks.
|
|
207
|
+
|
|
208
|
+
## Command surface
|
|
209
|
+
|
|
210
|
+
### Top-level commands
|
|
211
|
+
|
|
212
|
+
- `init`
|
|
213
|
+
- `validate`
|
|
214
|
+
- `upgrade`
|
|
215
|
+
- `adr`
|
|
216
|
+
- `spec`
|
|
217
|
+
- `feature`
|
|
218
|
+
- `profile`
|
|
219
|
+
- `test`
|
|
220
|
+
- `issue`
|
|
221
|
+
- `claim`
|
|
222
|
+
- `evidence`
|
|
223
|
+
- `risk`
|
|
224
|
+
- `boundary`
|
|
225
|
+
- `release`
|
|
226
|
+
- `graph`
|
|
227
|
+
- `registry`
|
|
228
|
+
|
|
229
|
+
### `init`
|
|
230
|
+
|
|
231
|
+
```text
|
|
232
|
+
ssot-registry init [path]
|
|
233
|
+
--repo-id REPO_ID
|
|
234
|
+
--repo-name REPO_NAME
|
|
235
|
+
--version VERSION
|
|
236
|
+
--force
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### `validate`
|
|
240
|
+
|
|
241
|
+
```text
|
|
242
|
+
ssot-registry validate [path]
|
|
243
|
+
--write-report
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
### `upgrade`
|
|
247
|
+
|
|
248
|
+
```text
|
|
249
|
+
ssot-registry upgrade [path]
|
|
250
|
+
--target-version VERSION
|
|
251
|
+
--sync-docs
|
|
252
|
+
--write-report
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
### `adr`
|
|
256
|
+
|
|
257
|
+
Subcommands:
|
|
258
|
+
|
|
259
|
+
- `create`, `get`, `list`, `update`, `set-status`, `supersede`, `delete`, `sync`
|
|
260
|
+
- `reserve create`, `reserve list`
|
|
261
|
+
|
|
262
|
+
```text
|
|
263
|
+
ssot-registry adr create [path]
|
|
264
|
+
--title TITLE (required)
|
|
265
|
+
--slug SLUG (required)
|
|
266
|
+
--body-file BODY_FILE (required)
|
|
267
|
+
--number NUMBER
|
|
268
|
+
--status {draft,in_review,accepted,rejected,withdrawn,superseded,retired}
|
|
269
|
+
--note NOTE
|
|
270
|
+
--origin {repo-local,ssot-origin,ssot-core}
|
|
271
|
+
--reserve-range RANGE_NAME
|
|
272
|
+
|
|
273
|
+
ssot-registry adr get [path]
|
|
274
|
+
--id ID (required)
|
|
275
|
+
|
|
276
|
+
ssot-registry adr list [path]
|
|
277
|
+
|
|
278
|
+
ssot-registry adr update [path]
|
|
279
|
+
--id ID (required)
|
|
280
|
+
--title TITLE
|
|
281
|
+
--body-file BODY_FILE
|
|
282
|
+
--status {draft,in_review,accepted,rejected,withdrawn,superseded,retired}
|
|
283
|
+
--note NOTE
|
|
284
|
+
|
|
285
|
+
ssot-registry adr set-status [path]
|
|
286
|
+
--id ID (required)
|
|
287
|
+
--status {draft,in_review,accepted,rejected,withdrawn,superseded,retired} (required)
|
|
288
|
+
--note NOTE
|
|
289
|
+
|
|
290
|
+
ssot-registry adr supersede [path]
|
|
291
|
+
--id ID (required)
|
|
292
|
+
--supersedes IDS [IDS ...] (required)
|
|
293
|
+
--note NOTE
|
|
294
|
+
|
|
295
|
+
ssot-registry adr delete [path]
|
|
296
|
+
--id ID (required)
|
|
297
|
+
|
|
298
|
+
ssot-registry adr sync [path]
|
|
299
|
+
|
|
300
|
+
ssot-registry adr reserve create [path]
|
|
301
|
+
--name NAME (required)
|
|
302
|
+
--start START (required)
|
|
303
|
+
--end END (required)
|
|
304
|
+
|
|
305
|
+
ssot-registry adr reserve list [path]
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
### `spec`
|
|
309
|
+
|
|
310
|
+
Subcommands:
|
|
311
|
+
|
|
312
|
+
- `create`, `get`, `list`, `update`, `set-status`, `supersede`, `delete`, `sync`
|
|
313
|
+
- `reserve create`, `reserve list`
|
|
314
|
+
|
|
315
|
+
```text
|
|
316
|
+
ssot-registry spec create [path]
|
|
317
|
+
--title TITLE (required)
|
|
318
|
+
--slug SLUG (required)
|
|
319
|
+
--body-file BODY_FILE (required)
|
|
320
|
+
--number NUMBER
|
|
321
|
+
--origin {repo-local,ssot-origin,ssot-core}
|
|
322
|
+
--kind {normative,operational,governance,local-policy}
|
|
323
|
+
--status {draft,in_review,accepted,rejected,withdrawn,superseded,retired}
|
|
324
|
+
--note NOTE
|
|
325
|
+
--reserve-range RANGE_NAME
|
|
326
|
+
|
|
327
|
+
ssot-registry spec get [path]
|
|
328
|
+
--id ID (required)
|
|
329
|
+
|
|
330
|
+
ssot-registry spec list [path]
|
|
331
|
+
|
|
332
|
+
ssot-registry spec update [path]
|
|
333
|
+
--id ID (required)
|
|
334
|
+
--title TITLE
|
|
335
|
+
--body-file BODY_FILE
|
|
336
|
+
--kind {normative,operational,governance,local-policy}
|
|
337
|
+
--status {draft,in_review,accepted,rejected,withdrawn,superseded,retired}
|
|
338
|
+
--note NOTE
|
|
339
|
+
|
|
340
|
+
ssot-registry spec set-status [path]
|
|
341
|
+
--id ID (required)
|
|
342
|
+
--status {draft,in_review,accepted,rejected,withdrawn,superseded,retired} (required)
|
|
343
|
+
--note NOTE
|
|
344
|
+
|
|
345
|
+
ssot-registry spec supersede [path]
|
|
346
|
+
--id ID (required)
|
|
347
|
+
--supersedes IDS [IDS ...] (required)
|
|
348
|
+
--note NOTE
|
|
349
|
+
|
|
350
|
+
ssot-registry spec delete [path]
|
|
351
|
+
--id ID (required)
|
|
352
|
+
|
|
353
|
+
ssot-registry spec sync [path]
|
|
354
|
+
|
|
355
|
+
ssot-registry spec reserve create [path]
|
|
356
|
+
--name NAME (required)
|
|
357
|
+
--start START (required)
|
|
358
|
+
--end END (required)
|
|
359
|
+
|
|
360
|
+
ssot-registry spec reserve list [path]
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
### `feature`
|
|
364
|
+
|
|
365
|
+
Subcommands:
|
|
366
|
+
|
|
367
|
+
- `create`, `get`, `list`, `update`, `delete`, `link`, `unlink`, `plan`
|
|
368
|
+
- `lifecycle set`
|
|
369
|
+
|
|
370
|
+
```text
|
|
371
|
+
ssot-registry feature create [path]
|
|
372
|
+
--id ID (required)
|
|
373
|
+
--title TITLE (required)
|
|
374
|
+
--description DESCRIPTION
|
|
375
|
+
--implementation-status {absent,implemented,partial}
|
|
376
|
+
--lifecycle-stage {active,deprecated,obsolete,removed}
|
|
377
|
+
--replacement-feature-id [REPLACEMENT_FEATURE_ID ...]
|
|
378
|
+
--note NOTE
|
|
379
|
+
--horizon {backlog,current,explicit,future,next,out_of_bounds}
|
|
380
|
+
--claim-tier {T0,T1,T2,T3,T4}
|
|
381
|
+
--target-lifecycle-stage {active,deprecated,obsolete,removed}
|
|
382
|
+
--slot SLOT
|
|
383
|
+
--claim-ids [CLAIM_IDS ...]
|
|
384
|
+
--test-ids [TEST_IDS ...]
|
|
385
|
+
--requires [REQUIRES ...]
|
|
386
|
+
|
|
387
|
+
ssot-registry feature get [path]
|
|
388
|
+
--id ID (required)
|
|
389
|
+
|
|
390
|
+
ssot-registry feature list [path]
|
|
391
|
+
|
|
392
|
+
ssot-registry feature update [path]
|
|
393
|
+
--id ID (required)
|
|
394
|
+
--title TITLE
|
|
395
|
+
--description DESCRIPTION
|
|
396
|
+
--implementation-status {absent,implemented,partial}
|
|
397
|
+
|
|
398
|
+
ssot-registry feature delete [path]
|
|
399
|
+
--id ID (required)
|
|
400
|
+
|
|
401
|
+
ssot-registry feature link [path]
|
|
402
|
+
--id ID (required)
|
|
403
|
+
--claim-ids [CLAIM_IDS ...]
|
|
404
|
+
--test-ids [TEST_IDS ...]
|
|
405
|
+
--requires [REQUIRES ...]
|
|
406
|
+
|
|
407
|
+
ssot-registry feature unlink [path]
|
|
408
|
+
--id ID (required)
|
|
409
|
+
--claim-ids [CLAIM_IDS ...]
|
|
410
|
+
--test-ids [TEST_IDS ...]
|
|
411
|
+
--requires [REQUIRES ...]
|
|
412
|
+
|
|
413
|
+
ssot-registry feature plan [path]
|
|
414
|
+
--ids IDS [IDS ...] (required)
|
|
415
|
+
--horizon {backlog,current,explicit,future,next,out_of_bounds} (required)
|
|
416
|
+
--claim-tier {T0,T1,T2,T3,T4}
|
|
417
|
+
--target-lifecycle-stage {active,deprecated,obsolete,removed}
|
|
418
|
+
--slot SLOT
|
|
419
|
+
|
|
420
|
+
ssot-registry feature lifecycle set [path]
|
|
421
|
+
--ids IDS [IDS ...] (required)
|
|
422
|
+
--stage {active,deprecated,obsolete,removed} (required)
|
|
423
|
+
--replacement-feature-id [REPLACEMENT_FEATURE_ID ...]
|
|
424
|
+
--effective-release-id EFFECTIVE_RELEASE_ID
|
|
425
|
+
--note NOTE
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
### `profile`
|
|
429
|
+
|
|
430
|
+
Subcommands:
|
|
431
|
+
|
|
432
|
+
- `create`, `get`, `list`, `update`, `delete`, `link`, `unlink`, `evaluate`, `verify`
|
|
433
|
+
|
|
434
|
+
```text
|
|
435
|
+
ssot-registry profile create [path]
|
|
436
|
+
--id ID (required)
|
|
437
|
+
--title TITLE (required)
|
|
438
|
+
--description DESCRIPTION
|
|
439
|
+
--status {draft,active,retired}
|
|
440
|
+
--kind {capability,certification,deployment,interoperability}
|
|
441
|
+
--feature-ids [FEATURE_IDS ...]
|
|
442
|
+
--profile-ids [PROFILE_IDS ...]
|
|
443
|
+
--claim-tier {T0,T1,T2,T3,T4}
|
|
444
|
+
--allow-feature-override-tier | --no-allow-feature-override-tier
|
|
445
|
+
|
|
446
|
+
ssot-registry profile get [path]
|
|
447
|
+
--id ID (required)
|
|
448
|
+
|
|
449
|
+
ssot-registry profile list [path]
|
|
450
|
+
|
|
451
|
+
ssot-registry profile update [path]
|
|
452
|
+
--id ID (required)
|
|
453
|
+
--title TITLE
|
|
454
|
+
--description DESCRIPTION
|
|
455
|
+
--status {draft,active,retired}
|
|
456
|
+
--kind {capability,certification,deployment,interoperability}
|
|
457
|
+
--claim-tier {T0,T1,T2,T3,T4}
|
|
458
|
+
|
|
459
|
+
ssot-registry profile delete [path]
|
|
460
|
+
--id ID (required)
|
|
461
|
+
|
|
462
|
+
ssot-registry profile link [path]
|
|
463
|
+
--id ID (required)
|
|
464
|
+
--feature-ids [FEATURE_IDS ...]
|
|
465
|
+
--profile-ids [PROFILE_IDS ...]
|
|
466
|
+
|
|
467
|
+
ssot-registry profile unlink [path]
|
|
468
|
+
--id ID (required)
|
|
469
|
+
--feature-ids [FEATURE_IDS ...]
|
|
470
|
+
--profile-ids [PROFILE_IDS ...]
|
|
471
|
+
|
|
472
|
+
ssot-registry profile evaluate [path]
|
|
473
|
+
--profile-id PROFILE_ID (required)
|
|
474
|
+
|
|
475
|
+
ssot-registry profile verify [path]
|
|
476
|
+
--profile-id PROFILE_ID (required)
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
### `test`
|
|
480
|
+
|
|
481
|
+
Subcommands:
|
|
482
|
+
|
|
483
|
+
- `create`, `get`, `list`, `update`, `delete`, `link`, `unlink`
|
|
484
|
+
|
|
485
|
+
```text
|
|
486
|
+
ssot-registry test create [path]
|
|
487
|
+
--id ID (required)
|
|
488
|
+
--title TITLE (required)
|
|
489
|
+
--status {planned,passing,failing,blocked,skipped}
|
|
490
|
+
--kind KIND (required)
|
|
491
|
+
--test-path TEST_PATH (required)
|
|
492
|
+
--feature-ids [FEATURE_IDS ...]
|
|
493
|
+
--claim-ids [CLAIM_IDS ...]
|
|
494
|
+
--evidence-ids [EVIDENCE_IDS ...]
|
|
495
|
+
|
|
496
|
+
ssot-registry test get [path]
|
|
497
|
+
--id ID (required)
|
|
498
|
+
|
|
499
|
+
ssot-registry test list [path]
|
|
500
|
+
|
|
501
|
+
ssot-registry test update [path]
|
|
502
|
+
--id ID (required)
|
|
503
|
+
--title TITLE
|
|
504
|
+
--status {planned,passing,failing,blocked,skipped}
|
|
505
|
+
--kind KIND
|
|
506
|
+
--test-path TEST_PATH
|
|
507
|
+
|
|
508
|
+
ssot-registry test delete [path]
|
|
509
|
+
--id ID (required)
|
|
510
|
+
|
|
511
|
+
ssot-registry test link [path]
|
|
512
|
+
--id ID (required)
|
|
513
|
+
--feature-ids [FEATURE_IDS ...]
|
|
514
|
+
--claim-ids [CLAIM_IDS ...]
|
|
515
|
+
--evidence-ids [EVIDENCE_IDS ...]
|
|
516
|
+
|
|
517
|
+
ssot-registry test unlink [path]
|
|
518
|
+
--id ID (required)
|
|
519
|
+
--feature-ids [FEATURE_IDS ...]
|
|
520
|
+
--claim-ids [CLAIM_IDS ...]
|
|
521
|
+
--evidence-ids [EVIDENCE_IDS ...]
|
|
522
|
+
```
|
|
523
|
+
|
|
524
|
+
### `issue`
|
|
525
|
+
|
|
526
|
+
Subcommands:
|
|
527
|
+
|
|
528
|
+
- `create`, `get`, `list`, `update`, `delete`, `link`, `unlink`, `plan`, `close`, `reopen`
|
|
529
|
+
|
|
530
|
+
```text
|
|
531
|
+
ssot-registry issue create [path]
|
|
532
|
+
--id ID (required)
|
|
533
|
+
--title TITLE (required)
|
|
534
|
+
--status {open,in_progress,blocked,resolved,closed}
|
|
535
|
+
--severity {low,medium,high,critical}
|
|
536
|
+
--description DESCRIPTION
|
|
537
|
+
--horizon {current,next,future,explicit,backlog,out_of_bounds}
|
|
538
|
+
--slot SLOT
|
|
539
|
+
--feature-ids [FEATURE_IDS ...]
|
|
540
|
+
--claim-ids [CLAIM_IDS ...]
|
|
541
|
+
--test-ids [TEST_IDS ...]
|
|
542
|
+
--evidence-ids [EVIDENCE_IDS ...]
|
|
543
|
+
--risk-ids [RISK_IDS ...]
|
|
544
|
+
--release-blocking | --no-release-blocking
|
|
545
|
+
|
|
546
|
+
ssot-registry issue get [path]
|
|
547
|
+
--id ID (required)
|
|
548
|
+
|
|
549
|
+
ssot-registry issue list [path]
|
|
550
|
+
|
|
551
|
+
ssot-registry issue update [path]
|
|
552
|
+
--id ID (required)
|
|
553
|
+
--title TITLE
|
|
554
|
+
--severity {low,medium,high,critical}
|
|
555
|
+
--description DESCRIPTION
|
|
556
|
+
--release-blocking | --no-release-blocking
|
|
557
|
+
|
|
558
|
+
ssot-registry issue delete [path]
|
|
559
|
+
--id ID (required)
|
|
560
|
+
|
|
561
|
+
ssot-registry issue link [path]
|
|
562
|
+
--id ID (required)
|
|
563
|
+
--feature-ids [FEATURE_IDS ...]
|
|
564
|
+
--claim-ids [CLAIM_IDS ...]
|
|
565
|
+
--test-ids [TEST_IDS ...]
|
|
566
|
+
--evidence-ids [EVIDENCE_IDS ...]
|
|
567
|
+
--risk-ids [RISK_IDS ...]
|
|
568
|
+
|
|
569
|
+
ssot-registry issue unlink [path]
|
|
570
|
+
--id ID (required)
|
|
571
|
+
--feature-ids [FEATURE_IDS ...]
|
|
572
|
+
--claim-ids [CLAIM_IDS ...]
|
|
573
|
+
--test-ids [TEST_IDS ...]
|
|
574
|
+
--evidence-ids [EVIDENCE_IDS ...]
|
|
575
|
+
--risk-ids [RISK_IDS ...]
|
|
576
|
+
|
|
577
|
+
ssot-registry issue plan [path]
|
|
578
|
+
--ids IDS [IDS ...] (required)
|
|
579
|
+
--horizon {current,next,future,explicit,backlog,out_of_bounds} (required)
|
|
580
|
+
--slot SLOT
|
|
581
|
+
|
|
582
|
+
ssot-registry issue close [path]
|
|
583
|
+
--id ID (required)
|
|
584
|
+
|
|
585
|
+
ssot-registry issue reopen [path]
|
|
586
|
+
--id ID (required)
|
|
587
|
+
```
|
|
588
|
+
|
|
589
|
+
### `claim`
|
|
590
|
+
|
|
591
|
+
Subcommands:
|
|
592
|
+
|
|
593
|
+
- `create`, `get`, `list`, `update`, `delete`, `link`, `unlink`, `evaluate`, `set-status`, `set-tier`
|
|
594
|
+
|
|
595
|
+
```text
|
|
596
|
+
ssot-registry claim create [path]
|
|
597
|
+
--id ID (required)
|
|
598
|
+
--title TITLE (required)
|
|
599
|
+
--status {proposed,declared,implemented,asserted,evidenced,certified,promoted,published,blocked,retired}
|
|
600
|
+
--tier {T0,T1,T2,T3,T4}
|
|
601
|
+
--kind KIND (required)
|
|
602
|
+
--description DESCRIPTION
|
|
603
|
+
--feature-ids [FEATURE_IDS ...]
|
|
604
|
+
--test-ids [TEST_IDS ...]
|
|
605
|
+
--evidence-ids [EVIDENCE_IDS ...]
|
|
606
|
+
|
|
607
|
+
ssot-registry claim get [path]
|
|
608
|
+
--id ID (required)
|
|
609
|
+
|
|
610
|
+
ssot-registry claim list [path]
|
|
611
|
+
|
|
612
|
+
ssot-registry claim update [path]
|
|
613
|
+
--id ID (required)
|
|
614
|
+
--title TITLE
|
|
615
|
+
--kind KIND
|
|
616
|
+
--description DESCRIPTION
|
|
617
|
+
|
|
618
|
+
ssot-registry claim delete [path]
|
|
619
|
+
--id ID (required)
|
|
620
|
+
|
|
621
|
+
ssot-registry claim link [path]
|
|
622
|
+
--id ID (required)
|
|
623
|
+
--feature-ids [FEATURE_IDS ...]
|
|
624
|
+
--test-ids [TEST_IDS ...]
|
|
625
|
+
--evidence-ids [EVIDENCE_IDS ...]
|
|
626
|
+
|
|
627
|
+
ssot-registry claim unlink [path]
|
|
628
|
+
--id ID (required)
|
|
629
|
+
--feature-ids [FEATURE_IDS ...]
|
|
630
|
+
--test-ids [TEST_IDS ...]
|
|
631
|
+
--evidence-ids [EVIDENCE_IDS ...]
|
|
632
|
+
|
|
633
|
+
ssot-registry claim evaluate [path]
|
|
634
|
+
--claim-id CLAIM_ID
|
|
635
|
+
|
|
636
|
+
ssot-registry claim set-status [path]
|
|
637
|
+
--id ID (required)
|
|
638
|
+
--status {proposed,declared,implemented,asserted,evidenced,certified,promoted,published,blocked,retired} (required)
|
|
639
|
+
|
|
640
|
+
ssot-registry claim set-tier [path]
|
|
641
|
+
--id ID (required)
|
|
642
|
+
--tier {T0,T1,T2,T3,T4} (required)
|
|
643
|
+
```
|
|
644
|
+
|
|
645
|
+
### `evidence`
|
|
646
|
+
|
|
647
|
+
Subcommands:
|
|
648
|
+
|
|
649
|
+
- `create`, `get`, `list`, `update`, `delete`, `link`, `unlink`, `verify`
|
|
650
|
+
|
|
651
|
+
```text
|
|
652
|
+
ssot-registry evidence create [path]
|
|
653
|
+
--id ID (required)
|
|
654
|
+
--title TITLE (required)
|
|
655
|
+
--status {planned,collected,passed,failed,stale}
|
|
656
|
+
--kind KIND (required)
|
|
657
|
+
--tier {T0,T1,T2,T3,T4}
|
|
658
|
+
--evidence-path EVIDENCE_PATH (required)
|
|
659
|
+
--claim-ids [CLAIM_IDS ...]
|
|
660
|
+
--test-ids [TEST_IDS ...]
|
|
661
|
+
|
|
662
|
+
ssot-registry evidence get [path]
|
|
663
|
+
--id ID (required)
|
|
664
|
+
|
|
665
|
+
ssot-registry evidence list [path]
|
|
666
|
+
|
|
667
|
+
ssot-registry evidence update [path]
|
|
668
|
+
--id ID (required)
|
|
669
|
+
--title TITLE
|
|
670
|
+
--status {planned,collected,passed,failed,stale}
|
|
671
|
+
--kind KIND
|
|
672
|
+
--tier {T0,T1,T2,T3,T4}
|
|
673
|
+
--evidence-path EVIDENCE_PATH
|
|
674
|
+
|
|
675
|
+
ssot-registry evidence delete [path]
|
|
676
|
+
--id ID (required)
|
|
677
|
+
|
|
678
|
+
ssot-registry evidence link [path]
|
|
679
|
+
--id ID (required)
|
|
680
|
+
--claim-ids [CLAIM_IDS ...]
|
|
681
|
+
--test-ids [TEST_IDS ...]
|
|
682
|
+
|
|
683
|
+
ssot-registry evidence unlink [path]
|
|
684
|
+
--id ID (required)
|
|
685
|
+
--claim-ids [CLAIM_IDS ...]
|
|
686
|
+
--test-ids [TEST_IDS ...]
|
|
687
|
+
|
|
688
|
+
ssot-registry evidence verify [path]
|
|
689
|
+
--evidence-id EVIDENCE_ID
|
|
690
|
+
```
|
|
691
|
+
|
|
692
|
+
### `risk`
|
|
693
|
+
|
|
694
|
+
Subcommands:
|
|
695
|
+
|
|
696
|
+
- `create`, `get`, `list`, `update`, `delete`, `link`, `unlink`, `mitigate`, `accept`, `retire`
|
|
697
|
+
|
|
698
|
+
```text
|
|
699
|
+
ssot-registry risk create [path]
|
|
700
|
+
--id ID (required)
|
|
701
|
+
--title TITLE (required)
|
|
702
|
+
--status {active,mitigated,accepted,retired}
|
|
703
|
+
--severity {low,medium,high,critical}
|
|
704
|
+
--description DESCRIPTION
|
|
705
|
+
--feature-ids [FEATURE_IDS ...]
|
|
706
|
+
--claim-ids [CLAIM_IDS ...]
|
|
707
|
+
--test-ids [TEST_IDS ...]
|
|
708
|
+
--evidence-ids [EVIDENCE_IDS ...]
|
|
709
|
+
--issue-ids [ISSUE_IDS ...]
|
|
710
|
+
--release-blocking | --no-release-blocking
|
|
711
|
+
|
|
712
|
+
ssot-registry risk get [path]
|
|
713
|
+
--id ID (required)
|
|
714
|
+
|
|
715
|
+
ssot-registry risk list [path]
|
|
716
|
+
|
|
717
|
+
ssot-registry risk update [path]
|
|
718
|
+
--id ID (required)
|
|
719
|
+
--title TITLE
|
|
720
|
+
--severity {low,medium,high,critical}
|
|
721
|
+
--description DESCRIPTION
|
|
722
|
+
--release-blocking | --no-release-blocking
|
|
723
|
+
|
|
724
|
+
ssot-registry risk delete [path]
|
|
725
|
+
--id ID (required)
|
|
726
|
+
|
|
727
|
+
ssot-registry risk link [path]
|
|
728
|
+
--id ID (required)
|
|
729
|
+
--feature-ids [FEATURE_IDS ...]
|
|
730
|
+
--claim-ids [CLAIM_IDS ...]
|
|
731
|
+
--test-ids [TEST_IDS ...]
|
|
732
|
+
--evidence-ids [EVIDENCE_IDS ...]
|
|
733
|
+
--issue-ids [ISSUE_IDS ...]
|
|
734
|
+
|
|
735
|
+
ssot-registry risk unlink [path]
|
|
736
|
+
--id ID (required)
|
|
737
|
+
--feature-ids [FEATURE_IDS ...]
|
|
738
|
+
--claim-ids [CLAIM_IDS ...]
|
|
739
|
+
--test-ids [TEST_IDS ...]
|
|
740
|
+
--evidence-ids [EVIDENCE_IDS ...]
|
|
741
|
+
--issue-ids [ISSUE_IDS ...]
|
|
742
|
+
|
|
743
|
+
ssot-registry risk mitigate [path]
|
|
744
|
+
--id ID (required)
|
|
745
|
+
|
|
746
|
+
ssot-registry risk accept [path]
|
|
747
|
+
--id ID (required)
|
|
748
|
+
|
|
749
|
+
ssot-registry risk retire [path]
|
|
750
|
+
--id ID (required)
|
|
751
|
+
```
|
|
752
|
+
|
|
753
|
+
### `boundary`
|
|
754
|
+
|
|
755
|
+
Subcommands:
|
|
756
|
+
|
|
757
|
+
- `create`, `get`, `list`, `update`, `delete`
|
|
758
|
+
- `add-feature`, `remove-feature`, `add-profile`, `remove-profile`
|
|
759
|
+
- `freeze`
|
|
760
|
+
|
|
761
|
+
```text
|
|
762
|
+
ssot-registry boundary create [path]
|
|
763
|
+
--id ID (required)
|
|
764
|
+
--title TITLE (required)
|
|
765
|
+
--status {draft,active,frozen,retired}
|
|
766
|
+
--frozen | --no-frozen
|
|
767
|
+
--feature-ids [FEATURE_IDS ...]
|
|
768
|
+
--profile-ids [PROFILE_IDS ...]
|
|
769
|
+
|
|
770
|
+
ssot-registry boundary get [path]
|
|
771
|
+
--id ID (required)
|
|
772
|
+
|
|
773
|
+
ssot-registry boundary list [path]
|
|
774
|
+
|
|
775
|
+
ssot-registry boundary update [path]
|
|
776
|
+
--id ID (required)
|
|
777
|
+
--title TITLE
|
|
778
|
+
--status {draft,active,frozen,retired}
|
|
779
|
+
--frozen | --no-frozen
|
|
780
|
+
|
|
781
|
+
ssot-registry boundary delete [path]
|
|
782
|
+
--id ID (required)
|
|
783
|
+
|
|
784
|
+
ssot-registry boundary add-feature [path]
|
|
785
|
+
--id ID (required)
|
|
786
|
+
--feature-ids FEATURE_IDS [FEATURE_IDS ...] (required)
|
|
787
|
+
|
|
788
|
+
ssot-registry boundary remove-feature [path]
|
|
789
|
+
--id ID (required)
|
|
790
|
+
--feature-ids FEATURE_IDS [FEATURE_IDS ...] (required)
|
|
791
|
+
|
|
792
|
+
ssot-registry boundary add-profile [path]
|
|
793
|
+
--id ID (required)
|
|
794
|
+
--profile-ids PROFILE_IDS [PROFILE_IDS ...] (required)
|
|
795
|
+
|
|
796
|
+
ssot-registry boundary remove-profile [path]
|
|
797
|
+
--id ID (required)
|
|
798
|
+
--profile-ids PROFILE_IDS [PROFILE_IDS ...] (required)
|
|
799
|
+
|
|
800
|
+
ssot-registry boundary freeze [path]
|
|
801
|
+
--boundary-id BOUNDARY_ID
|
|
802
|
+
```
|
|
803
|
+
|
|
804
|
+
### `release`
|
|
805
|
+
|
|
806
|
+
Subcommands:
|
|
807
|
+
|
|
808
|
+
- `create`, `get`, `list`, `update`, `delete`
|
|
809
|
+
- `add-claim`, `remove-claim`, `add-evidence`, `remove-evidence`
|
|
810
|
+
- `certify`, `promote`, `publish`, `revoke`
|
|
811
|
+
|
|
812
|
+
```text
|
|
813
|
+
ssot-registry release create [path]
|
|
814
|
+
--id ID (required)
|
|
815
|
+
--version VERSION (required)
|
|
816
|
+
--status {draft,candidate,certified,promoted,published,revoked}
|
|
817
|
+
--boundary-id BOUNDARY_ID (required)
|
|
818
|
+
--claim-ids [CLAIM_IDS ...]
|
|
819
|
+
--evidence-ids [EVIDENCE_IDS ...]
|
|
820
|
+
|
|
821
|
+
ssot-registry release get [path]
|
|
822
|
+
--id ID (required)
|
|
823
|
+
|
|
824
|
+
ssot-registry release list [path]
|
|
825
|
+
|
|
826
|
+
ssot-registry release update [path]
|
|
827
|
+
--id ID (required)
|
|
828
|
+
--version VERSION
|
|
829
|
+
--status {draft,candidate,certified,promoted,published,revoked}
|
|
830
|
+
--boundary-id BOUNDARY_ID
|
|
831
|
+
|
|
832
|
+
ssot-registry release delete [path]
|
|
833
|
+
--id ID (required)
|
|
834
|
+
|
|
835
|
+
ssot-registry release add-claim [path]
|
|
836
|
+
--id ID (required)
|
|
837
|
+
--claim-ids CLAIM_IDS [CLAIM_IDS ...] (required)
|
|
838
|
+
|
|
839
|
+
ssot-registry release remove-claim [path]
|
|
840
|
+
--id ID (required)
|
|
841
|
+
--claim-ids CLAIM_IDS [CLAIM_IDS ...] (required)
|
|
842
|
+
|
|
843
|
+
ssot-registry release add-evidence [path]
|
|
844
|
+
--id ID (required)
|
|
845
|
+
--evidence-ids EVIDENCE_IDS [EVIDENCE_IDS ...] (required)
|
|
846
|
+
|
|
847
|
+
ssot-registry release remove-evidence [path]
|
|
848
|
+
--id ID (required)
|
|
849
|
+
--evidence-ids EVIDENCE_IDS [EVIDENCE_IDS ...] (required)
|
|
850
|
+
|
|
851
|
+
ssot-registry release certify [path]
|
|
852
|
+
--release-id RELEASE_ID
|
|
853
|
+
--write-report
|
|
854
|
+
|
|
855
|
+
ssot-registry release promote [path]
|
|
856
|
+
--release-id RELEASE_ID
|
|
857
|
+
|
|
858
|
+
ssot-registry release publish [path]
|
|
859
|
+
--release-id RELEASE_ID
|
|
860
|
+
|
|
861
|
+
ssot-registry release revoke [path]
|
|
862
|
+
--release-id RELEASE_ID (required)
|
|
863
|
+
--reason REASON (required)
|
|
864
|
+
```
|
|
865
|
+
|
|
866
|
+
### `graph`
|
|
867
|
+
|
|
868
|
+
Subcommands:
|
|
869
|
+
|
|
870
|
+
- `export`
|
|
871
|
+
|
|
872
|
+
```text
|
|
873
|
+
ssot-registry graph export [path]
|
|
874
|
+
--format {json,dot,png,svg} (required)
|
|
875
|
+
--output OUTPUT
|
|
876
|
+
```
|
|
877
|
+
|
|
878
|
+
### `registry`
|
|
879
|
+
|
|
880
|
+
Subcommands:
|
|
881
|
+
|
|
882
|
+
- `export`
|
|
883
|
+
|
|
884
|
+
```text
|
|
885
|
+
ssot-registry registry export [path]
|
|
886
|
+
--format {json,csv,df,yaml,toml} (required)
|
|
887
|
+
--output OUTPUT
|
|
888
|
+
```
|
|
889
|
+
|
|
890
|
+
## End-to-end examples
|
|
891
|
+
|
|
892
|
+
### Initialize and inspect a repo
|
|
893
|
+
|
|
894
|
+
```bash
|
|
895
|
+
ssot-registry init . --repo-id repo:demo.app --repo-name "Demo App" --version 0.1.0
|
|
896
|
+
ssot-registry validate . --write-report
|
|
897
|
+
ssot-registry feature list .
|
|
898
|
+
ssot-registry profile list .
|
|
899
|
+
ssot-registry adr list .
|
|
900
|
+
ssot-registry spec list .
|
|
901
|
+
```
|
|
902
|
+
|
|
903
|
+
### Freeze scope and release against it
|
|
904
|
+
|
|
905
|
+
```bash
|
|
906
|
+
ssot-registry boundary create . --id bnd:demo.v0 --title "Demo v0 scope" --feature-ids feat:demo.login --profile-ids prf:demo.core
|
|
907
|
+
ssot-registry boundary freeze . --boundary-id bnd:demo.v0
|
|
908
|
+
ssot-registry release create . --id rel:0.1.0 --version 0.1.0 --boundary-id bnd:demo.v0 --claim-ids clm:demo.login.t1 --evidence-ids evd:demo.login.pytest
|
|
909
|
+
ssot-registry release certify . --release-id rel:0.1.0 --write-report
|
|
910
|
+
ssot-registry release promote . --release-id rel:0.1.0
|
|
911
|
+
ssot-registry release publish . --release-id rel:0.1.0
|
|
912
|
+
```
|
|
913
|
+
|
|
914
|
+
### Graphs and exports
|
|
915
|
+
|
|
916
|
+
```bash
|
|
917
|
+
ssot-registry graph export . --format json --output .ssot/graphs/registry.graph.json
|
|
918
|
+
ssot-registry graph export . --format dot --output .ssot/graphs/registry.graph.dot
|
|
919
|
+
ssot-registry registry export . --format toml --output .ssot/exports/registry.toml
|
|
920
|
+
```
|
|
921
|
+
|
|
922
|
+
## Documentation map
|
|
923
|
+
|
|
924
|
+
- Specifications: `.ssot/specs/`
|
|
925
|
+
- Architecture decisions: `.ssot/adr/`
|
|
926
|
+
- Examples: `examples/`
|
|
927
|
+
- Source code: `pkgs/*/src/`
|
|
928
|
+
|
|
929
|
+
## Package relationships
|
|
930
|
+
|
|
931
|
+
- Package type: core runtime/library package
|
|
932
|
+
- Depends on: `ssot-contracts`, `ssot-views`
|
|
933
|
+
- Consumed by: `ssot-cli`, `ssot-tui`, direct Python integrations, and automation
|
|
934
|
+
|
|
935
|
+
If you are embedding SSOT behavior inside Python code, this is the package to import. If you need the primary CLI distribution, install `ssot-cli` alongside it.
|