Primary CLI distribution for ssot-registry.
Project description
🔷 ssot-cli
Primary command-line distribution for SSOT workflows.
ssot-cli is the primary command-line distribution for SSOT.
It installs ssot, ssot-cli, and ssot-registry as equivalent executables over the same parser and runtime. The command surface is implemented here, while domain logic lives in ssot-core and shared contract metadata comes from ssot-contracts.
What this package owns
- The primary end-user CLI distribution
- Argument parsing and command registration for the SSOT command surface
- Structured output rendering and file-output conventions for CLI workflows
Install
python -m pip install ssot-cli
For local development:
python -m pip install -e pkgs/ssot-cli
This package depends on ssot-core and ssot-contracts, so installing it gives you the full CLI runtime stack.
Executable names
This package installs three equivalent console scripts:
ssotssot-clissot-registry
Prefer ssot in new automation and documentation. ssot-registry remains a compatibility alias. Every command block below can be invoked with any of the three names.
Boundaries vs releases
Boundaries and releases are intentionally different:
- A boundary defines the scoped set of features and profiles that belong to a candidate delivery unit.
- Freezing a boundary locks that resolved scope and emits a boundary snapshot.
- A release points at a frozen boundary and then bundles claims and evidence for certify, promote, publish, and revoke workflows.
CLI quick reference
ssot --help
ssot-cli --help
ssot-registry --help
ssot profile --help
ssot feature --help
ssot boundary --help
ssot release --help
ssot graph --help
ssot registry --help
Screenshots
Regenerate these assets with python scripts/generate_cli_screenshots.py.
Boundary command help:
CLI conventions
- Most commands accept
[path]as an optional positional argument. Default is current directory (.). - Commands emit structured output by default.
- Global rendering flags apply to all commands:
--output-format {json,csv,df,yaml,toml}
--output-file PATH
- Non-zero exit code indicates an operation failure or failed checks.
Command surface
Top-level commands
initvalidateupgradeadrspecfeatureprofiletestissueclaimevidenceriskboundaryreleasegraphregistry
init
ssot-registry init [path]
--repo-id REPO_ID
--repo-name REPO_NAME
--version VERSION
--force
validate
ssot-registry validate [path]
--write-report
upgrade
ssot-registry upgrade [path]
--target-version VERSION
--sync-docs
--write-report
adr
Subcommands:
create,get,list,update,set-status,supersede,delete,syncreserve create,reserve list
ssot-registry adr create [path]
--title TITLE (required)
--slug SLUG (required)
--body-file BODY_FILE (required)
--number NUMBER
--status {draft,in_review,accepted,rejected,withdrawn,superseded,retired}
--note NOTE
--origin {repo-local,ssot-origin,ssot-core}
--reserve-range RANGE_NAME
ssot-registry adr get [path]
--id ID (required)
ssot-registry adr list [path]
ssot-registry adr update [path]
--id ID (required)
--title TITLE
--body-file BODY_FILE
--status {draft,in_review,accepted,rejected,withdrawn,superseded,retired}
--note NOTE
ssot-registry adr set-status [path]
--id ID (required)
--status {draft,in_review,accepted,rejected,withdrawn,superseded,retired} (required)
--note NOTE
ssot-registry adr supersede [path]
--id ID (required)
--supersedes IDS [IDS ...] (required)
--note NOTE
ssot-registry adr delete [path]
--id ID (required)
ssot-registry adr sync [path]
ssot-registry adr reserve create [path]
--name NAME (required)
--start START (required)
--end END (required)
ssot-registry adr reserve list [path]
spec
Subcommands:
create,get,list,update,set-status,supersede,delete,syncreserve create,reserve list
ssot-registry spec create [path]
--title TITLE (required)
--slug SLUG (required)
--body-file BODY_FILE (required)
--number NUMBER
--origin {repo-local,ssot-origin,ssot-core}
--kind {normative,operational,governance,local-policy}
--status {draft,in_review,accepted,rejected,withdrawn,superseded,retired}
--note NOTE
--reserve-range RANGE_NAME
ssot-registry spec get [path]
--id ID (required)
ssot-registry spec list [path]
ssot-registry spec update [path]
--id ID (required)
--title TITLE
--body-file BODY_FILE
--kind {normative,operational,governance,local-policy}
--status {draft,in_review,accepted,rejected,withdrawn,superseded,retired}
--note NOTE
ssot-registry spec set-status [path]
--id ID (required)
--status {draft,in_review,accepted,rejected,withdrawn,superseded,retired} (required)
--note NOTE
ssot-registry spec supersede [path]
--id ID (required)
--supersedes IDS [IDS ...] (required)
--note NOTE
ssot-registry spec delete [path]
--id ID (required)
ssot-registry spec sync [path]
ssot-registry spec reserve create [path]
--name NAME (required)
--start START (required)
--end END (required)
ssot-registry spec reserve list [path]
feature
Subcommands:
create,get,list,update,delete,link,unlink,planlifecycle set
ssot-registry feature create [path]
--id ID (required)
--title TITLE (required)
--description DESCRIPTION
--implementation-status {absent,implemented,partial}
--lifecycle-stage {active,deprecated,obsolete,removed}
--replacement-feature-id [REPLACEMENT_FEATURE_ID ...]
--note NOTE
--horizon {backlog,current,explicit,future,next,out_of_bounds}
--claim-tier {T0,T1,T2,T3,T4}
--target-lifecycle-stage {active,deprecated,obsolete,removed}
--slot SLOT
--claim-ids [CLAIM_IDS ...]
--test-ids [TEST_IDS ...]
--requires [REQUIRES ...]
ssot-registry feature get [path]
--id ID (required)
ssot-registry feature list [path]
ssot-registry feature update [path]
--id ID (required)
--title TITLE
--description DESCRIPTION
--implementation-status {absent,implemented,partial}
ssot-registry feature delete [path]
--id ID (required)
ssot-registry feature link [path]
--id ID (required)
--claim-ids [CLAIM_IDS ...]
--test-ids [TEST_IDS ...]
--requires [REQUIRES ...]
ssot-registry feature unlink [path]
--id ID (required)
--claim-ids [CLAIM_IDS ...]
--test-ids [TEST_IDS ...]
--requires [REQUIRES ...]
ssot-registry feature plan [path]
--ids IDS [IDS ...] (required)
--horizon {backlog,current,explicit,future,next,out_of_bounds} (required)
--claim-tier {T0,T1,T2,T3,T4}
--target-lifecycle-stage {active,deprecated,obsolete,removed}
--slot SLOT
ssot-registry feature lifecycle set [path]
--ids IDS [IDS ...] (required)
--stage {active,deprecated,obsolete,removed} (required)
--replacement-feature-id [REPLACEMENT_FEATURE_ID ...]
--effective-release-id EFFECTIVE_RELEASE_ID
--note NOTE
profile
Subcommands:
create,get,list,update,delete,link,unlink,evaluate,verify
ssot-registry profile create [path]
--id ID (required)
--title TITLE (required)
--description DESCRIPTION
--status {draft,active,retired}
--kind {capability,certification,deployment,interoperability}
--feature-ids [FEATURE_IDS ...]
--profile-ids [PROFILE_IDS ...]
--claim-tier {T0,T1,T2,T3,T4}
--allow-feature-override-tier | --no-allow-feature-override-tier
ssot-registry profile get [path]
--id ID (required)
ssot-registry profile list [path]
ssot-registry profile update [path]
--id ID (required)
--title TITLE
--description DESCRIPTION
--status {draft,active,retired}
--kind {capability,certification,deployment,interoperability}
--claim-tier {T0,T1,T2,T3,T4}
ssot-registry profile delete [path]
--id ID (required)
ssot-registry profile link [path]
--id ID (required)
--feature-ids [FEATURE_IDS ...]
--profile-ids [PROFILE_IDS ...]
ssot-registry profile unlink [path]
--id ID (required)
--feature-ids [FEATURE_IDS ...]
--profile-ids [PROFILE_IDS ...]
ssot-registry profile evaluate [path]
--profile-id PROFILE_ID (required)
ssot-registry profile verify [path]
--profile-id PROFILE_ID (required)
test
Subcommands:
create,get,list,update,delete,link,unlink
ssot-registry test create [path]
--id ID (required)
--title TITLE (required)
--status {planned,passing,failing,blocked,skipped}
--kind KIND (required)
--test-path TEST_PATH (required)
--feature-ids [FEATURE_IDS ...]
--claim-ids [CLAIM_IDS ...]
--evidence-ids [EVIDENCE_IDS ...]
ssot-registry test get [path]
--id ID (required)
ssot-registry test list [path]
ssot-registry test update [path]
--id ID (required)
--title TITLE
--status {planned,passing,failing,blocked,skipped}
--kind KIND
--test-path TEST_PATH
ssot-registry test delete [path]
--id ID (required)
ssot-registry test link [path]
--id ID (required)
--feature-ids [FEATURE_IDS ...]
--claim-ids [CLAIM_IDS ...]
--evidence-ids [EVIDENCE_IDS ...]
ssot-registry test unlink [path]
--id ID (required)
--feature-ids [FEATURE_IDS ...]
--claim-ids [CLAIM_IDS ...]
--evidence-ids [EVIDENCE_IDS ...]
issue
Subcommands:
create,get,list,update,delete,link,unlink,plan,close,reopen
ssot-registry issue create [path]
--id ID (required)
--title TITLE (required)
--status {open,in_progress,blocked,resolved,closed}
--severity {low,medium,high,critical}
--description DESCRIPTION
--horizon {current,next,future,explicit,backlog,out_of_bounds}
--slot SLOT
--feature-ids [FEATURE_IDS ...]
--claim-ids [CLAIM_IDS ...]
--test-ids [TEST_IDS ...]
--evidence-ids [EVIDENCE_IDS ...]
--risk-ids [RISK_IDS ...]
--release-blocking | --no-release-blocking
ssot-registry issue get [path]
--id ID (required)
ssot-registry issue list [path]
ssot-registry issue update [path]
--id ID (required)
--title TITLE
--severity {low,medium,high,critical}
--description DESCRIPTION
--release-blocking | --no-release-blocking
ssot-registry issue delete [path]
--id ID (required)
ssot-registry issue link [path]
--id ID (required)
--feature-ids [FEATURE_IDS ...]
--claim-ids [CLAIM_IDS ...]
--test-ids [TEST_IDS ...]
--evidence-ids [EVIDENCE_IDS ...]
--risk-ids [RISK_IDS ...]
ssot-registry issue unlink [path]
--id ID (required)
--feature-ids [FEATURE_IDS ...]
--claim-ids [CLAIM_IDS ...]
--test-ids [TEST_IDS ...]
--evidence-ids [EVIDENCE_IDS ...]
--risk-ids [RISK_IDS ...]
ssot-registry issue plan [path]
--ids IDS [IDS ...] (required)
--horizon {current,next,future,explicit,backlog,out_of_bounds} (required)
--slot SLOT
ssot-registry issue close [path]
--id ID (required)
ssot-registry issue reopen [path]
--id ID (required)
claim
Subcommands:
create,get,list,update,delete,link,unlink,evaluate,set-status,set-tier
ssot-registry claim create [path]
--id ID (required)
--title TITLE (required)
--status {proposed,declared,implemented,asserted,evidenced,certified,promoted,published,blocked,retired}
--tier {T0,T1,T2,T3,T4}
--kind KIND (required)
--description DESCRIPTION
--feature-ids [FEATURE_IDS ...]
--test-ids [TEST_IDS ...]
--evidence-ids [EVIDENCE_IDS ...]
ssot-registry claim get [path]
--id ID (required)
ssot-registry claim list [path]
ssot-registry claim update [path]
--id ID (required)
--title TITLE
--kind KIND
--description DESCRIPTION
ssot-registry claim delete [path]
--id ID (required)
ssot-registry claim link [path]
--id ID (required)
--feature-ids [FEATURE_IDS ...]
--test-ids [TEST_IDS ...]
--evidence-ids [EVIDENCE_IDS ...]
ssot-registry claim unlink [path]
--id ID (required)
--feature-ids [FEATURE_IDS ...]
--test-ids [TEST_IDS ...]
--evidence-ids [EVIDENCE_IDS ...]
ssot-registry claim evaluate [path]
--claim-id CLAIM_ID
ssot-registry claim set-status [path]
--id ID (required)
--status {proposed,declared,implemented,asserted,evidenced,certified,promoted,published,blocked,retired} (required)
ssot-registry claim set-tier [path]
--id ID (required)
--tier {T0,T1,T2,T3,T4} (required)
evidence
Subcommands:
create,get,list,update,delete,link,unlink,verify
ssot-registry evidence create [path]
--id ID (required)
--title TITLE (required)
--status {planned,collected,passed,failed,stale}
--kind KIND (required)
--tier {T0,T1,T2,T3,T4}
--evidence-path EVIDENCE_PATH (required)
--claim-ids [CLAIM_IDS ...]
--test-ids [TEST_IDS ...]
ssot-registry evidence get [path]
--id ID (required)
ssot-registry evidence list [path]
ssot-registry evidence update [path]
--id ID (required)
--title TITLE
--status {planned,collected,passed,failed,stale}
--kind KIND
--tier {T0,T1,T2,T3,T4}
--evidence-path EVIDENCE_PATH
ssot-registry evidence delete [path]
--id ID (required)
ssot-registry evidence link [path]
--id ID (required)
--claim-ids [CLAIM_IDS ...]
--test-ids [TEST_IDS ...]
ssot-registry evidence unlink [path]
--id ID (required)
--claim-ids [CLAIM_IDS ...]
--test-ids [TEST_IDS ...]
ssot-registry evidence verify [path]
--evidence-id EVIDENCE_ID
risk
Subcommands:
create,get,list,update,delete,link,unlink,mitigate,accept,retire
ssot-registry risk create [path]
--id ID (required)
--title TITLE (required)
--status {active,mitigated,accepted,retired}
--severity {low,medium,high,critical}
--description DESCRIPTION
--feature-ids [FEATURE_IDS ...]
--claim-ids [CLAIM_IDS ...]
--test-ids [TEST_IDS ...]
--evidence-ids [EVIDENCE_IDS ...]
--issue-ids [ISSUE_IDS ...]
--release-blocking | --no-release-blocking
ssot-registry risk get [path]
--id ID (required)
ssot-registry risk list [path]
ssot-registry risk update [path]
--id ID (required)
--title TITLE
--severity {low,medium,high,critical}
--description DESCRIPTION
--release-blocking | --no-release-blocking
ssot-registry risk delete [path]
--id ID (required)
ssot-registry risk link [path]
--id ID (required)
--feature-ids [FEATURE_IDS ...]
--claim-ids [CLAIM_IDS ...]
--test-ids [TEST_IDS ...]
--evidence-ids [EVIDENCE_IDS ...]
--issue-ids [ISSUE_IDS ...]
ssot-registry risk unlink [path]
--id ID (required)
--feature-ids [FEATURE_IDS ...]
--claim-ids [CLAIM_IDS ...]
--test-ids [TEST_IDS ...]
--evidence-ids [EVIDENCE_IDS ...]
--issue-ids [ISSUE_IDS ...]
ssot-registry risk mitigate [path]
--id ID (required)
ssot-registry risk accept [path]
--id ID (required)
ssot-registry risk retire [path]
--id ID (required)
boundary
Subcommands:
create,get,list,update,deleteadd-feature,remove-feature,add-profile,remove-profilefreeze
ssot-registry boundary create [path]
--id ID (required)
--title TITLE (required)
--status {draft,active,frozen,retired}
--frozen | --no-frozen
--feature-ids [FEATURE_IDS ...]
--profile-ids [PROFILE_IDS ...]
ssot-registry boundary get [path]
--id ID (required)
ssot-registry boundary list [path]
ssot-registry boundary update [path]
--id ID (required)
--title TITLE
--status {draft,active,frozen,retired}
--frozen | --no-frozen
ssot-registry boundary delete [path]
--id ID (required)
ssot-registry boundary add-feature [path]
--id ID (required)
--feature-ids FEATURE_IDS [FEATURE_IDS ...] (required)
ssot-registry boundary remove-feature [path]
--id ID (required)
--feature-ids FEATURE_IDS [FEATURE_IDS ...] (required)
ssot-registry boundary add-profile [path]
--id ID (required)
--profile-ids PROFILE_IDS [PROFILE_IDS ...] (required)
ssot-registry boundary remove-profile [path]
--id ID (required)
--profile-ids PROFILE_IDS [PROFILE_IDS ...] (required)
ssot-registry boundary freeze [path]
--boundary-id BOUNDARY_ID
release
Subcommands:
create,get,list,update,deleteadd-claim,remove-claim,add-evidence,remove-evidencecertify,promote,publish,revoke
ssot-registry release create [path]
--id ID (required)
--version VERSION (required)
--status {draft,candidate,certified,promoted,published,revoked}
--boundary-id BOUNDARY_ID (required)
--claim-ids [CLAIM_IDS ...]
--evidence-ids [EVIDENCE_IDS ...]
ssot-registry release get [path]
--id ID (required)
ssot-registry release list [path]
ssot-registry release update [path]
--id ID (required)
--version VERSION
--status {draft,candidate,certified,promoted,published,revoked}
--boundary-id BOUNDARY_ID
ssot-registry release delete [path]
--id ID (required)
ssot-registry release add-claim [path]
--id ID (required)
--claim-ids CLAIM_IDS [CLAIM_IDS ...] (required)
ssot-registry release remove-claim [path]
--id ID (required)
--claim-ids CLAIM_IDS [CLAIM_IDS ...] (required)
ssot-registry release add-evidence [path]
--id ID (required)
--evidence-ids EVIDENCE_IDS [EVIDENCE_IDS ...] (required)
ssot-registry release remove-evidence [path]
--id ID (required)
--evidence-ids EVIDENCE_IDS [EVIDENCE_IDS ...] (required)
ssot-registry release certify [path]
--release-id RELEASE_ID
--write-report
ssot-registry release promote [path]
--release-id RELEASE_ID
ssot-registry release publish [path]
--release-id RELEASE_ID
ssot-registry release revoke [path]
--release-id RELEASE_ID (required)
--reason REASON (required)
graph
Subcommands:
export
ssot-registry graph export [path]
--format {json,dot,png,svg} (required)
--output OUTPUT
registry
Subcommands:
export
ssot-registry registry export [path]
--format {json,csv,df,yaml,toml} (required)
--output OUTPUT
Example workflows
ssot init . --repo-id repo:demo.app --repo-name "Demo App" --version 0.1.0
ssot validate . --write-report
ssot feature list .
ssot profile list .
ssot boundary list .
ssot boundary create . --id bnd:demo.v0 --title "Demo v0 scope" --feature-ids feat:demo.login --profile-ids prf:demo.core
ssot boundary freeze . --boundary-id bnd:demo.v0
ssot 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
ssot release certify . --release-id rel:0.1.0 --write-report
Package relationships
- Package type: CLI distribution
- Depends on: ssot-core, ssot-contracts
- Related packages: ssot-registry, ssot-tui, ssot-views, ssot-codegen
If you need the command-line interface, this is the package to install.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ssot_cli-0.1.5.tar.gz.
File metadata
- Download URL: ssot_cli-0.1.5.tar.gz
- Upload date:
- Size: 21.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9f0fe3adee4e3ae4180e79ccd509daf9e95084f5b3af1d7b49b9bc6c4d43b33a
|
|
| MD5 |
2f4fcfc7b10b0f5eb32478b3c97aae32
|
|
| BLAKE2b-256 |
39d63cd5d247abbb8c63db6083db5c72e306db12e39d8089a348d74c31b43b1d
|
File details
Details for the file ssot_cli-0.1.5-py3-none-any.whl.
File metadata
- Download URL: ssot_cli-0.1.5-py3-none-any.whl
- Upload date:
- Size: 27.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9f525a9d7573ad9370794377364e73843ef0f331ac2baad0faa08162ebba10c2
|
|
| MD5 |
8a60820af5bf74b33c78cef84bc856b1
|
|
| BLAKE2b-256 |
cf53d65a2b20a1b593ed98a272a0e7440f53ef70d0b09c9ca440914ca021f2d0
|