ssot-cli 0.1.7__tar.gz → 0.1.9.dev1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/PKG-INFO +9 -4
- {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/README.md +6 -1
- {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/pyproject.toml +3 -3
- {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/feature_cmd.py +25 -7
- {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli.egg-info/PKG-INFO +9 -4
- ssot_cli-0.1.9.dev1/src/ssot_cli.egg-info/requires.txt +5 -0
- ssot_cli-0.1.7/src/ssot_cli.egg-info/requires.txt +0 -5
- {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/setup.cfg +0 -0
- {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/__init__.py +0 -0
- {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/adr_cmd.py +0 -0
- {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/boundary_cmd.py +0 -0
- {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/claim_cmd.py +0 -0
- {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/common.py +0 -0
- {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/evidence_cmd.py +0 -0
- {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/graph_cmd.py +0 -0
- {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/init_cmd.py +0 -0
- {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/issue_cmd.py +0 -0
- {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/main.py +0 -0
- {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/profile_cmd.py +0 -0
- {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/registry_cmd.py +0 -0
- {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/release_cmd.py +0 -0
- {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/risk_cmd.py +0 -0
- {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/spec_cmd.py +0 -0
- {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/test_cmd.py +0 -0
- {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/upgrade_cmd.py +0 -0
- {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/validate_cmd.py +0 -0
- {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli.egg-info/SOURCES.txt +0 -0
- {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli.egg-info/dependency_links.txt +0 -0
- {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli.egg-info/entry_points.txt +0 -0
- {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ssot-cli
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.9.dev1
|
|
4
4
|
Summary: Primary CLI distribution for ssot-registry.
|
|
5
5
|
Author-email: Jacob Stewart <jacob@swarmauri.com>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -24,8 +24,8 @@ Classifier: Topic :: Software Development :: Quality Assurance
|
|
|
24
24
|
Classifier: Topic :: Utilities
|
|
25
25
|
Requires-Python: <3.14,>=3.10
|
|
26
26
|
Description-Content-Type: text/markdown
|
|
27
|
-
Requires-Dist: ssot-contracts<0.3.0,>=0.2.
|
|
28
|
-
Requires-Dist: ssot-core<0.3.0,>=0.2.
|
|
27
|
+
Requires-Dist: ssot-contracts<0.3.0,>=0.2.14.dev1
|
|
28
|
+
Requires-Dist: ssot-core<0.3.0,>=0.2.14.dev1
|
|
29
29
|
Requires-Dist: tomli>=2.0.1; python_version < "3.11"
|
|
30
30
|
|
|
31
31
|
<div align="center">
|
|
@@ -313,6 +313,7 @@ ssot-registry feature create [path]
|
|
|
313
313
|
--replacement-feature-id [REPLACEMENT_FEATURE_ID ...]
|
|
314
314
|
--note NOTE
|
|
315
315
|
--horizon {backlog,current,explicit,future,next,out_of_bounds}
|
|
316
|
+
--out-of-bounds-disposition {prohibited,tolerated}
|
|
316
317
|
--claim-tier {T0,T1,T2,T3,T4}
|
|
317
318
|
--target-lifecycle-stage {active,deprecated,obsolete,removed}
|
|
318
319
|
--slot SLOT
|
|
@@ -349,6 +350,7 @@ ssot-registry feature unlink [path]
|
|
|
349
350
|
ssot-registry feature plan [path]
|
|
350
351
|
--ids IDS [IDS ...] (required)
|
|
351
352
|
--horizon {backlog,current,explicit,future,next,out_of_bounds} (required)
|
|
353
|
+
--out-of-bounds-disposition {prohibited,tolerated}
|
|
352
354
|
--claim-tier {T0,T1,T2,T3,T4}
|
|
353
355
|
--target-lifecycle-stage {active,deprecated,obsolete,removed}
|
|
354
356
|
--slot SLOT
|
|
@@ -803,7 +805,7 @@ ssot-registry release revoke [path]
|
|
|
803
805
|
|
|
804
806
|
Subcommands:
|
|
805
807
|
|
|
806
|
-
- `export`
|
|
808
|
+
- `export`, `sync-statuses`
|
|
807
809
|
|
|
808
810
|
```text
|
|
809
811
|
ssot-registry graph export [path]
|
|
@@ -821,6 +823,9 @@ Subcommands:
|
|
|
821
823
|
ssot-registry registry export [path]
|
|
822
824
|
--format {json,csv,df,yaml,toml} (required)
|
|
823
825
|
--output OUTPUT
|
|
826
|
+
|
|
827
|
+
ssot-registry registry sync-statuses [path]
|
|
828
|
+
--dry-run
|
|
824
829
|
```
|
|
825
830
|
|
|
826
831
|
## Example workflows
|
|
@@ -283,6 +283,7 @@ ssot-registry feature create [path]
|
|
|
283
283
|
--replacement-feature-id [REPLACEMENT_FEATURE_ID ...]
|
|
284
284
|
--note NOTE
|
|
285
285
|
--horizon {backlog,current,explicit,future,next,out_of_bounds}
|
|
286
|
+
--out-of-bounds-disposition {prohibited,tolerated}
|
|
286
287
|
--claim-tier {T0,T1,T2,T3,T4}
|
|
287
288
|
--target-lifecycle-stage {active,deprecated,obsolete,removed}
|
|
288
289
|
--slot SLOT
|
|
@@ -319,6 +320,7 @@ ssot-registry feature unlink [path]
|
|
|
319
320
|
ssot-registry feature plan [path]
|
|
320
321
|
--ids IDS [IDS ...] (required)
|
|
321
322
|
--horizon {backlog,current,explicit,future,next,out_of_bounds} (required)
|
|
323
|
+
--out-of-bounds-disposition {prohibited,tolerated}
|
|
322
324
|
--claim-tier {T0,T1,T2,T3,T4}
|
|
323
325
|
--target-lifecycle-stage {active,deprecated,obsolete,removed}
|
|
324
326
|
--slot SLOT
|
|
@@ -773,7 +775,7 @@ ssot-registry release revoke [path]
|
|
|
773
775
|
|
|
774
776
|
Subcommands:
|
|
775
777
|
|
|
776
|
-
- `export`
|
|
778
|
+
- `export`, `sync-statuses`
|
|
777
779
|
|
|
778
780
|
```text
|
|
779
781
|
ssot-registry graph export [path]
|
|
@@ -791,6 +793,9 @@ Subcommands:
|
|
|
791
793
|
ssot-registry registry export [path]
|
|
792
794
|
--format {json,csv,df,yaml,toml} (required)
|
|
793
795
|
--output OUTPUT
|
|
796
|
+
|
|
797
|
+
ssot-registry registry sync-statuses [path]
|
|
798
|
+
--dry-run
|
|
794
799
|
```
|
|
795
800
|
|
|
796
801
|
## Example workflows
|
|
@@ -4,15 +4,15 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ssot-cli"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.9.dev1"
|
|
8
8
|
description = "Primary CLI distribution for ssot-registry."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10,<3.14"
|
|
11
11
|
license = "Apache-2.0"
|
|
12
12
|
authors = [{ name = "Jacob Stewart", email = "jacob@swarmauri.com" }]
|
|
13
13
|
dependencies = [
|
|
14
|
-
"ssot-contracts>=0.2.
|
|
15
|
-
"ssot-core>=0.2.
|
|
14
|
+
"ssot-contracts>=0.2.14.dev1,<0.3.0",
|
|
15
|
+
"ssot-core>=0.2.14.dev1,<0.3.0",
|
|
16
16
|
"tomli>=2.0.1; python_version < '3.11'",
|
|
17
17
|
]
|
|
18
18
|
keywords = ["ssot", "cli", "registry", "governance", "release-management", "validation", "developer-tools"]
|
|
@@ -2,7 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
import argparse
|
|
4
4
|
|
|
5
|
-
from ssot_contracts.generated.python.enums import
|
|
5
|
+
from ssot_contracts.generated.python.enums import (
|
|
6
|
+
CLAIM_TIERS,
|
|
7
|
+
FEATURE_IMPLEMENTATION_STATUSES,
|
|
8
|
+
FEATURE_LIFECYCLE_STAGES,
|
|
9
|
+
OUT_OF_BOUNDS_DISPOSITIONS,
|
|
10
|
+
PLANNING_HORIZONS,
|
|
11
|
+
)
|
|
6
12
|
from ssot_registry.api import (
|
|
7
13
|
create_entity,
|
|
8
14
|
delete_entity,
|
|
@@ -47,6 +53,7 @@ def register_feature(subparsers: argparse._SubParsersAction) -> None:
|
|
|
47
53
|
create.add_argument("--replacement-feature-id", nargs="*", default=[], help="Replacement feature ids if this feature is being deprecated or removed.")
|
|
48
54
|
create.add_argument("--note", default=None, help="Lifecycle note explaining replacement or status context.")
|
|
49
55
|
create.add_argument("--horizon", choices=sorted(PLANNING_HORIZONS), default="backlog", help="Planning horizon that determines when the feature is expected to land.")
|
|
56
|
+
create.add_argument("--out-of-bounds-disposition", choices=sorted(OUT_OF_BOUNDS_DISPOSITIONS), default=None, help="Required when a non-absent feature is out_of_bounds; tolerated means acceptable non-target support, prohibited means removal is required.")
|
|
50
57
|
create.add_argument("--claim-tier", choices=sorted(CLAIM_TIERS), default=None, help="Target assurance tier expected for claims tied to this feature.")
|
|
51
58
|
create.add_argument("--target-lifecycle-stage", choices=sorted(FEATURE_LIFECYCLE_STAGES), default="active", help="Planned future lifecycle target for this feature.")
|
|
52
59
|
create.add_argument("--slot", default=None, help="Explicit planning slot label when the horizon is schedule-driven.")
|
|
@@ -107,6 +114,12 @@ def register_feature(subparsers: argparse._SubParsersAction) -> None:
|
|
|
107
114
|
help="Planning horizon to assign.",
|
|
108
115
|
)
|
|
109
116
|
plan.add_argument("--claim-tier", choices=sorted(CLAIM_TIERS), default=None, help="Target claim tier for the selected features.")
|
|
117
|
+
plan.add_argument(
|
|
118
|
+
"--out-of-bounds-disposition",
|
|
119
|
+
choices=sorted(OUT_OF_BOUNDS_DISPOSITIONS),
|
|
120
|
+
default=None,
|
|
121
|
+
help="Disposition for non-absent out_of_bounds features.",
|
|
122
|
+
)
|
|
110
123
|
plan.add_argument(
|
|
111
124
|
"--target-lifecycle-stage",
|
|
112
125
|
choices=sorted(FEATURE_LIFECYCLE_STAGES),
|
|
@@ -136,6 +149,15 @@ def _build_links(args: argparse.Namespace) -> dict[str, list[str]]:
|
|
|
136
149
|
|
|
137
150
|
|
|
138
151
|
def run_create(args: argparse.Namespace) -> dict[str, object]:
|
|
152
|
+
plan = {
|
|
153
|
+
"horizon": args.horizon,
|
|
154
|
+
"slot": args.slot,
|
|
155
|
+
"target_claim_tier": args.claim_tier,
|
|
156
|
+
"target_lifecycle_stage": args.target_lifecycle_stage,
|
|
157
|
+
}
|
|
158
|
+
if args.out_of_bounds_disposition is not None:
|
|
159
|
+
plan["out_of_bounds_disposition"] = args.out_of_bounds_disposition
|
|
160
|
+
|
|
139
161
|
row = {
|
|
140
162
|
"id": args.id,
|
|
141
163
|
"title": args.title,
|
|
@@ -146,12 +168,7 @@ def run_create(args: argparse.Namespace) -> dict[str, object]:
|
|
|
146
168
|
"replacement_feature_ids": args.replacement_feature_id,
|
|
147
169
|
"note": args.note,
|
|
148
170
|
},
|
|
149
|
-
"plan":
|
|
150
|
-
"horizon": args.horizon,
|
|
151
|
-
"slot": args.slot,
|
|
152
|
-
"target_claim_tier": args.claim_tier,
|
|
153
|
-
"target_lifecycle_stage": args.target_lifecycle_stage,
|
|
154
|
-
},
|
|
171
|
+
"plan": plan,
|
|
155
172
|
"spec_ids": args.spec_ids,
|
|
156
173
|
"claim_ids": args.claim_ids,
|
|
157
174
|
"test_ids": args.test_ids,
|
|
@@ -201,6 +218,7 @@ def run_plan(args: argparse.Namespace) -> dict[str, object]:
|
|
|
201
218
|
claim_tier=args.claim_tier,
|
|
202
219
|
slot=args.slot,
|
|
203
220
|
target_lifecycle_stage=args.target_lifecycle_stage,
|
|
221
|
+
out_of_bounds_disposition=args.out_of_bounds_disposition,
|
|
204
222
|
)
|
|
205
223
|
|
|
206
224
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ssot-cli
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.9.dev1
|
|
4
4
|
Summary: Primary CLI distribution for ssot-registry.
|
|
5
5
|
Author-email: Jacob Stewart <jacob@swarmauri.com>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -24,8 +24,8 @@ Classifier: Topic :: Software Development :: Quality Assurance
|
|
|
24
24
|
Classifier: Topic :: Utilities
|
|
25
25
|
Requires-Python: <3.14,>=3.10
|
|
26
26
|
Description-Content-Type: text/markdown
|
|
27
|
-
Requires-Dist: ssot-contracts<0.3.0,>=0.2.
|
|
28
|
-
Requires-Dist: ssot-core<0.3.0,>=0.2.
|
|
27
|
+
Requires-Dist: ssot-contracts<0.3.0,>=0.2.14.dev1
|
|
28
|
+
Requires-Dist: ssot-core<0.3.0,>=0.2.14.dev1
|
|
29
29
|
Requires-Dist: tomli>=2.0.1; python_version < "3.11"
|
|
30
30
|
|
|
31
31
|
<div align="center">
|
|
@@ -313,6 +313,7 @@ ssot-registry feature create [path]
|
|
|
313
313
|
--replacement-feature-id [REPLACEMENT_FEATURE_ID ...]
|
|
314
314
|
--note NOTE
|
|
315
315
|
--horizon {backlog,current,explicit,future,next,out_of_bounds}
|
|
316
|
+
--out-of-bounds-disposition {prohibited,tolerated}
|
|
316
317
|
--claim-tier {T0,T1,T2,T3,T4}
|
|
317
318
|
--target-lifecycle-stage {active,deprecated,obsolete,removed}
|
|
318
319
|
--slot SLOT
|
|
@@ -349,6 +350,7 @@ ssot-registry feature unlink [path]
|
|
|
349
350
|
ssot-registry feature plan [path]
|
|
350
351
|
--ids IDS [IDS ...] (required)
|
|
351
352
|
--horizon {backlog,current,explicit,future,next,out_of_bounds} (required)
|
|
353
|
+
--out-of-bounds-disposition {prohibited,tolerated}
|
|
352
354
|
--claim-tier {T0,T1,T2,T3,T4}
|
|
353
355
|
--target-lifecycle-stage {active,deprecated,obsolete,removed}
|
|
354
356
|
--slot SLOT
|
|
@@ -803,7 +805,7 @@ ssot-registry release revoke [path]
|
|
|
803
805
|
|
|
804
806
|
Subcommands:
|
|
805
807
|
|
|
806
|
-
- `export`
|
|
808
|
+
- `export`, `sync-statuses`
|
|
807
809
|
|
|
808
810
|
```text
|
|
809
811
|
ssot-registry graph export [path]
|
|
@@ -821,6 +823,9 @@ Subcommands:
|
|
|
821
823
|
ssot-registry registry export [path]
|
|
822
824
|
--format {json,csv,df,yaml,toml} (required)
|
|
823
825
|
--output OUTPUT
|
|
826
|
+
|
|
827
|
+
ssot-registry registry sync-statuses [path]
|
|
828
|
+
--dry-run
|
|
824
829
|
```
|
|
825
830
|
|
|
826
831
|
## Example workflows
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|