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.
Files changed (30) hide show
  1. {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/PKG-INFO +9 -4
  2. {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/README.md +6 -1
  3. {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/pyproject.toml +3 -3
  4. {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/feature_cmd.py +25 -7
  5. {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli.egg-info/PKG-INFO +9 -4
  6. ssot_cli-0.1.9.dev1/src/ssot_cli.egg-info/requires.txt +5 -0
  7. ssot_cli-0.1.7/src/ssot_cli.egg-info/requires.txt +0 -5
  8. {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/setup.cfg +0 -0
  9. {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/__init__.py +0 -0
  10. {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/adr_cmd.py +0 -0
  11. {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/boundary_cmd.py +0 -0
  12. {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/claim_cmd.py +0 -0
  13. {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/common.py +0 -0
  14. {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/evidence_cmd.py +0 -0
  15. {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/graph_cmd.py +0 -0
  16. {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/init_cmd.py +0 -0
  17. {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/issue_cmd.py +0 -0
  18. {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/main.py +0 -0
  19. {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/profile_cmd.py +0 -0
  20. {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/registry_cmd.py +0 -0
  21. {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/release_cmd.py +0 -0
  22. {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/risk_cmd.py +0 -0
  23. {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/spec_cmd.py +0 -0
  24. {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/test_cmd.py +0 -0
  25. {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/upgrade_cmd.py +0 -0
  26. {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli/validate_cmd.py +0 -0
  27. {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli.egg-info/SOURCES.txt +0 -0
  28. {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli.egg-info/dependency_links.txt +0 -0
  29. {ssot_cli-0.1.7 → ssot_cli-0.1.9.dev1}/src/ssot_cli.egg-info/entry_points.txt +0 -0
  30. {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.7
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.12
28
- Requires-Dist: ssot-core<0.3.0,>=0.2.12
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"
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.12,<0.3.0",
15
- "ssot-core>=0.2.12,<0.3.0",
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 CLAIM_TIERS, FEATURE_IMPLEMENTATION_STATUSES, FEATURE_LIFECYCLE_STAGES, PLANNING_HORIZONS
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.7
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.12
28
- Requires-Dist: ssot-core<0.3.0,>=0.2.12
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
@@ -0,0 +1,5 @@
1
+ ssot-contracts<0.3.0,>=0.2.14.dev1
2
+ ssot-core<0.3.0,>=0.2.14.dev1
3
+
4
+ [:python_version < "3.11"]
5
+ tomli>=2.0.1
@@ -1,5 +0,0 @@
1
- ssot-contracts<0.3.0,>=0.2.12
2
- ssot-core<0.3.0,>=0.2.12
3
-
4
- [:python_version < "3.11"]
5
- tomli>=2.0.1
File without changes