specfact-cli 0.42.2__tar.gz → 0.42.3__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 (299) hide show
  1. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/.gitignore +3 -0
  2. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/PKG-INFO +46 -161
  3. specfact_cli-0.42.3/README.md +217 -0
  4. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/pyproject.toml +6 -1
  5. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/__init__.py +1 -1
  6. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/__init__.py +1 -1
  7. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/adapters/ado.py +1651 -1609
  8. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/adapters/backlog_base.py +208 -41
  9. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/adapters/base.py +15 -10
  10. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/adapters/github.py +1342 -1389
  11. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/adapters/openspec.py +199 -199
  12. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/adapters/openspec_parser.py +53 -57
  13. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/adapters/speckit.py +256 -279
  14. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/agents/analyze_agent.py +46 -40
  15. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/agents/plan_agent.py +25 -13
  16. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/agents/registry.py +1 -0
  17. specfact_cli-0.42.3/src/specfact_cli/analyzers/ambiguity_scanner.py +968 -0
  18. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/analyzers/code_analyzer.py +823 -865
  19. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/analyzers/constitution_evidence_extractor.py +161 -89
  20. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/analyzers/contract_extractor.py +34 -31
  21. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/analyzers/graph_analyzer.py +159 -150
  22. specfact_cli-0.42.3/src/specfact_cli/analyzers/relationship_mapper.py +429 -0
  23. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/analyzers/requirement_extractor.py +19 -26
  24. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/analyzers/test_pattern_extractor.py +70 -57
  25. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/backlog/adapters/base.py +9 -1
  26. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/backlog/converter.py +211 -130
  27. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/backlog/filters.py +5 -0
  28. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/backlog/mappers/ado_mapper.py +32 -35
  29. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/backlog/mappers/base.py +13 -11
  30. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/backlog/mappers/github_mapper.py +71 -54
  31. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/cli.py +192 -183
  32. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/commands/__init__.py +20 -0
  33. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/commands/_bundle_shim.py +13 -0
  34. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/common/logger_setup.py +166 -124
  35. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/comparators/plan_comparator.py +208 -162
  36. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/contracts/__init__.py +1 -0
  37. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/contracts/module_interface.py +15 -0
  38. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/enrichers/constitution_enricher.py +73 -58
  39. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/enrichers/plan_enricher.py +100 -121
  40. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/generators/contract_generator.py +77 -53
  41. specfact_cli-0.42.3/src/specfact_cli/generators/openapi_extractor.py +1416 -0
  42. specfact_cli-0.42.3/src/specfact_cli/generators/persona_exporter.py +429 -0
  43. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/generators/plan_generator.py +3 -2
  44. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/generators/protocol_generator.py +5 -4
  45. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/generators/report_generator.py +4 -2
  46. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/generators/test_to_openapi.py +152 -100
  47. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/generators/workflow_generator.py +12 -5
  48. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/groups/codebase_group.py +1 -0
  49. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/groups/govern_group.py +1 -0
  50. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/groups/member_group.py +1 -1
  51. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/groups/project_group.py +2 -1
  52. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/groups/spec_group.py +1 -0
  53. specfact_cli-0.42.3/src/specfact_cli/importers/speckit_converter.py +1100 -0
  54. specfact_cli-0.42.3/src/specfact_cli/importers/speckit_scanner.py +716 -0
  55. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/integrations/specmatic.py +123 -117
  56. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/merge/resolver.py +226 -126
  57. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/migrations/plan_migrator.py +7 -4
  58. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/models/backlog_item.py +7 -8
  59. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/models/bridge.py +17 -9
  60. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/models/change.py +11 -18
  61. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/models/contract.py +3 -1
  62. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/models/deviation.py +5 -5
  63. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/models/dor_config.py +69 -47
  64. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/models/enforcement.py +28 -13
  65. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/models/module_package.py +3 -0
  66. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/models/persona_template.py +1 -2
  67. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/models/plan.py +17 -10
  68. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/models/project.py +390 -370
  69. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/models/sdd.py +10 -8
  70. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/models/task.py +0 -1
  71. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/modes/router.py +12 -3
  72. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/modules/_bundle_import.py +7 -0
  73. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/modules/init/module-package.yaml +3 -3
  74. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/modules/init/src/commands.py +155 -131
  75. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/modules/init/src/first_run_selection.py +2 -0
  76. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/modules/module_io_shim.py +16 -4
  77. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/modules/module_registry/module-package.yaml +3 -3
  78. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/modules/module_registry/src/commands.py +402 -229
  79. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/modules/upgrade/module-package.yaml +3 -3
  80. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/modules/upgrade/src/commands.py +94 -85
  81. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/parsers/persona_importer.py +64 -47
  82. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/registry/alias_manager.py +6 -3
  83. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/registry/bootstrap.py +3 -0
  84. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/registry/bridge_registry.py +20 -12
  85. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/registry/crypto_validator.py +15 -6
  86. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/registry/custom_registries.py +69 -38
  87. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/registry/extension_registry.py +8 -0
  88. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/registry/help_cache.py +21 -4
  89. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/registry/marketplace_client.py +164 -122
  90. specfact_cli-0.42.3/src/specfact_cli/registry/module_discovery.py +175 -0
  91. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/registry/module_grouping.py +4 -1
  92. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/registry/module_installer.py +336 -222
  93. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/registry/module_lifecycle.py +52 -24
  94. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/registry/module_packages.py +697 -428
  95. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/registry/module_security.py +15 -5
  96. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/registry/module_state.py +12 -6
  97. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/registry/registry.py +4 -0
  98. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/runtime.py +27 -4
  99. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/sync/bridge_probe.py +80 -88
  100. specfact_cli-0.42.3/src/specfact_cli/sync/bridge_sync.py +3739 -0
  101. specfact_cli-0.42.3/src/specfact_cli/sync/bridge_sync_openspec_md_parse.py +71 -0
  102. specfact_cli-0.42.3/src/specfact_cli/sync/bridge_sync_requirement_from_proposal.py +351 -0
  103. specfact_cli-0.42.3/src/specfact_cli/sync/bridge_sync_requirement_helpers.py +187 -0
  104. specfact_cli-0.42.3/src/specfact_cli/sync/bridge_sync_tasks_from_proposal.py +315 -0
  105. specfact_cli-0.42.3/src/specfact_cli/sync/bridge_sync_what_changes_format.py +179 -0
  106. specfact_cli-0.42.3/src/specfact_cli/sync/bridge_sync_write_openspec_from_proposal.py +298 -0
  107. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/sync/bridge_watch.py +79 -52
  108. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/sync/change_detector.py +5 -1
  109. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/sync/drift_detector.py +47 -45
  110. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/sync/repository_sync.py +19 -20
  111. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/sync/spec_to_code.py +63 -70
  112. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/sync/watcher.py +29 -14
  113. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/sync/watcher_enhanced.py +40 -17
  114. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/telemetry.py +165 -124
  115. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/templates/registry.py +100 -106
  116. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/templates/specification_templates.py +27 -0
  117. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/utils/acceptance_criteria.py +30 -26
  118. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/utils/bundle_converters.py +1 -0
  119. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/utils/bundle_loader.py +72 -70
  120. specfact_cli-0.42.3/src/specfact_cli/utils/code_change_detector.py +268 -0
  121. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/utils/context_detection.py +82 -70
  122. specfact_cli-0.42.3/src/specfact_cli/utils/contract_predicates.py +179 -0
  123. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/utils/enrichment_context.py +2 -0
  124. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/utils/enrichment_parser.py +222 -227
  125. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/utils/env_manager.py +117 -108
  126. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/utils/feature_keys.py +13 -2
  127. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/utils/git.py +28 -45
  128. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/utils/github_annotations.py +163 -159
  129. specfact_cli-0.42.3/src/specfact_cli/utils/icontract_helpers.py +241 -0
  130. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/utils/ide_setup.py +134 -134
  131. specfact_cli-0.42.3/src/specfact_cli/utils/incremental_check.py +480 -0
  132. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/utils/optional_deps.py +44 -47
  133. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/utils/performance.py +31 -0
  134. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/utils/persona_ownership.py +4 -1
  135. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/utils/progress.py +17 -4
  136. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/utils/progressive_disclosure.py +55 -29
  137. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/utils/sdd_discovery.py +52 -43
  138. specfact_cli-0.42.3/src/specfact_cli/utils/source_scanner.py +717 -0
  139. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/utils/startup_checks.py +205 -167
  140. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/utils/structure.py +168 -124
  141. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/utils/structured_io.py +7 -0
  142. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/utils/suggestions.py +12 -0
  143. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/utils/terminal.py +29 -30
  144. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/utils/yaml_utils.py +33 -35
  145. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/validation/command_audit.py +4 -0
  146. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/validators/agile_validation.py +61 -66
  147. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/validators/change_proposal_integration.py +219 -162
  148. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/validators/cli_first_validator.py +2 -0
  149. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/validators/contract_validator.py +1 -0
  150. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/validators/fsm.py +70 -70
  151. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/validators/repro_checker.py +450 -326
  152. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/validators/schema.py +3 -2
  153. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/validators/sidecar/contract_populator.py +14 -4
  154. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/validators/sidecar/crosshair_runner.py +4 -1
  155. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/validators/sidecar/crosshair_summary.py +144 -121
  156. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/validators/sidecar/dependency_installer.py +12 -3
  157. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/validators/sidecar/framework_detector.py +81 -67
  158. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/validators/sidecar/frameworks/base.py +24 -8
  159. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/validators/sidecar/frameworks/django.py +20 -5
  160. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/validators/sidecar/frameworks/drf.py +20 -5
  161. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/validators/sidecar/frameworks/fastapi.py +35 -19
  162. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/validators/sidecar/frameworks/flask.py +65 -41
  163. specfact_cli-0.42.3/src/specfact_cli/validators/sidecar/harness_generator.py +847 -0
  164. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/validators/sidecar/models.py +13 -3
  165. specfact_cli-0.42.3/src/specfact_cli/validators/sidecar/orchestrator.py +373 -0
  166. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/validators/sidecar/specmatic_runner.py +4 -1
  167. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/validators/sidecar/unannotated_detector.py +16 -4
  168. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/versioning/analyzer.py +50 -40
  169. specfact_cli-0.42.2/README.md +0 -332
  170. specfact_cli-0.42.2/src/specfact_cli/analyzers/ambiguity_scanner.py +0 -961
  171. specfact_cli-0.42.2/src/specfact_cli/analyzers/relationship_mapper.py +0 -529
  172. specfact_cli-0.42.2/src/specfact_cli/generators/openapi_extractor.py +0 -1249
  173. specfact_cli-0.42.2/src/specfact_cli/generators/persona_exporter.py +0 -369
  174. specfact_cli-0.42.2/src/specfact_cli/importers/speckit_converter.py +0 -1131
  175. specfact_cli-0.42.2/src/specfact_cli/importers/speckit_scanner.py +0 -795
  176. specfact_cli-0.42.2/src/specfact_cli/registry/module_discovery.py +0 -135
  177. specfact_cli-0.42.2/src/specfact_cli/sync/bridge_sync.py +0 -4826
  178. specfact_cli-0.42.2/src/specfact_cli/utils/code_change_detector.py +0 -296
  179. specfact_cli-0.42.2/src/specfact_cli/utils/incremental_check.py +0 -425
  180. specfact_cli-0.42.2/src/specfact_cli/utils/source_scanner.py +0 -597
  181. specfact_cli-0.42.2/src/specfact_cli/validators/sidecar/harness_generator.py +0 -773
  182. specfact_cli-0.42.2/src/specfact_cli/validators/sidecar/orchestrator.py +0 -447
  183. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/LICENSE +0 -0
  184. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/resources/keys/README.md +0 -0
  185. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/resources/keys/module-signing-public.pem +0 -0
  186. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/resources/mappings/node-async.yaml +0 -0
  187. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/resources/mappings/python-async.yaml +0 -0
  188. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/resources/mappings/speckit-default.yaml +0 -0
  189. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/resources/prompts/shared/cli-enforcement.md +0 -0
  190. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/resources/prompts/specfact.01-import.md +0 -0
  191. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/resources/prompts/specfact.02-plan.md +0 -0
  192. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/resources/prompts/specfact.03-review.md +0 -0
  193. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/resources/prompts/specfact.04-sdd.md +0 -0
  194. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/resources/prompts/specfact.05-enforce.md +0 -0
  195. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/resources/prompts/specfact.06-sync.md +0 -0
  196. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/resources/prompts/specfact.07-contracts.md +0 -0
  197. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/resources/prompts/specfact.compare.md +0 -0
  198. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/resources/prompts/specfact.validate.md +0 -0
  199. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/resources/schemas/deviation.schema.json +0 -0
  200. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/resources/schemas/plan.schema.json +0 -0
  201. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/resources/schemas/protocol.schema.json +0 -0
  202. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/resources/templates/github-action.yml.j2 +0 -0
  203. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/resources/templates/persona/architect.md.j2 +0 -0
  204. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/resources/templates/persona/developer.md.j2 +0 -0
  205. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/resources/templates/persona/product-owner.md.j2 +0 -0
  206. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/resources/templates/plan.bundle.yaml.j2 +0 -0
  207. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/resources/templates/policies/kanban.yaml +0 -0
  208. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/resources/templates/policies/mixed.yaml +0 -0
  209. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/resources/templates/policies/safe.yaml +0 -0
  210. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/resources/templates/policies/scrum.yaml +0 -0
  211. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/resources/templates/pr-template.md.j2 +0 -0
  212. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/resources/templates/protocol.yaml.j2 +0 -0
  213. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/resources/templates/telemetry.yaml.example +0 -0
  214. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/__main__.py +0 -0
  215. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/adapters/__init__.py +0 -0
  216. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/adapters/registry.py +0 -0
  217. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/agents/__init__.py +0 -0
  218. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/agents/base.py +0 -0
  219. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/agents/sync_agent.py +0 -0
  220. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/analyzers/__init__.py +0 -0
  221. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/analyzers/control_flow_analyzer.py +0 -0
  222. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/backlog/__init__.py +0 -0
  223. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/backlog/adapters/__init__.py +0 -0
  224. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/backlog/mappers/__init__.py +0 -0
  225. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/backlog/mappers/template_config.py +0 -0
  226. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/commands/analyze.py +0 -0
  227. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/commands/contract_cmd.py +0 -0
  228. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/commands/drift.py +0 -0
  229. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/commands/enforce.py +0 -0
  230. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/commands/generate.py +0 -0
  231. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/commands/import_cmd.py +0 -0
  232. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/commands/init.py +0 -0
  233. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/commands/migrate.py +0 -0
  234. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/commands/plan.py +0 -0
  235. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/commands/project_cmd.py +0 -0
  236. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/commands/repro.py +0 -0
  237. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/commands/sdd.py +0 -0
  238. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/commands/spec.py +0 -0
  239. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/commands/sync.py +0 -0
  240. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/commands/update.py +0 -0
  241. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/commands/validate.py +0 -0
  242. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/common/__init__.py +0 -0
  243. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/common/bundle_factory.py +0 -0
  244. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/common/logging_utils.py +0 -0
  245. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/common/text_utils.py +0 -0
  246. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/common/utils.py +0 -0
  247. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/comparators/__init__.py +0 -0
  248. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/contracts/crosshair_props.py +0 -0
  249. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/generators/__init__.py +0 -0
  250. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/generators/task_generator.py +0 -0
  251. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/groups/__init__.py +0 -0
  252. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/importers/__init__.py +0 -0
  253. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/integrations/__init__.py +0 -0
  254. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/merge/__init__.py +0 -0
  255. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/migrations/__init__.py +0 -0
  256. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/models/__init__.py +0 -0
  257. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/models/capabilities.py +0 -0
  258. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/models/protocol.py +0 -0
  259. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/models/quality.py +0 -0
  260. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/models/source_tracking.py +0 -0
  261. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/models/validation.py +0 -0
  262. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/modes/__init__.py +0 -0
  263. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/modes/detector.py +0 -0
  264. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/modules/__init__.py +0 -0
  265. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/modules/init/src/__init__.py +0 -0
  266. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/modules/init/src/app.py +0 -0
  267. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/modules/module_registry/src/__init__.py +0 -0
  268. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/modules/module_registry/src/app.py +0 -0
  269. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/modules/upgrade/src/__init__.py +0 -0
  270. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/modules/upgrade/src/app.py +0 -0
  271. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/parsers/__init__.py +0 -0
  272. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/registry/__init__.py +0 -0
  273. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/registry/dependency_resolver.py +0 -0
  274. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/registry/metadata.py +0 -0
  275. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/resources/semgrep/async.yml +0 -0
  276. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/resources/semgrep/code-quality.yml +0 -0
  277. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/resources/semgrep/feature-detection.yml +0 -0
  278. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/sync/__init__.py +0 -0
  279. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/sync/code_to_spec.py +0 -0
  280. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/sync/spec_to_tests.py +0 -0
  281. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/templates/__init__.py +0 -0
  282. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/templates/defaults/defect_v1.yaml +0 -0
  283. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/templates/defaults/enabler_v1.yaml +0 -0
  284. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/templates/defaults/spike_v1.yaml +0 -0
  285. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/templates/defaults/user_story_v1.yaml +0 -0
  286. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/templates/frameworks/scrum/user_story_v1.yaml +0 -0
  287. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/templates/personas/product-owner/user_story_v1.yaml +0 -0
  288. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/templates/providers/ado/work_item_v1.yaml +0 -0
  289. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/utils/__init__.py +0 -0
  290. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/utils/auth_tokens.py +0 -0
  291. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/utils/console.py +0 -0
  292. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/utils/content_sanitizer.py +0 -0
  293. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/utils/metadata.py +0 -0
  294. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/utils/prompts.py +0 -0
  295. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/validation/__init__.py +0 -0
  296. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/validators/__init__.py +0 -0
  297. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/validators/sidecar/__init__.py +0 -0
  298. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/validators/sidecar/frameworks/__init__.py +0 -0
  299. {specfact_cli-0.42.2 → specfact_cli-0.42.3}/src/specfact_cli/versioning/__init__.py +0 -0
@@ -152,3 +152,6 @@ Language.mli
152
152
  .artifacts
153
153
  registry.bak/
154
154
  .pr-body.md
155
+
156
+ # code review
157
+ /review-*.json
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: specfact-cli
3
- Version: 0.42.2
3
+ Version: 0.42.3
4
4
  Summary: The swiss knife CLI for agile DevOps teams. Keep backlog, specs, tests, and code in sync with validation and contract enforcement for new projects and long-lived codebases.
5
5
  Project-URL: Homepage, https://github.com/nold-ai/specfact-cli
6
6
  Project-URL: Repository, https://github.com/nold-ai/specfact-cli.git
@@ -308,7 +308,8 @@ Description-Content-Type: text/markdown
308
308
  - Module-specific deep docs are canonically owned by `specfact-cli-modules`.
309
309
  - The live modules docs site is currently published at `https://modules.specfact.io/`.
310
310
 
311
- Use this repository's docs for core runtime, lifecycle, registry, trust, and architecture guidance. Use the modules docs site for bundle-specific workflow and module-authoring deep dives.
311
+ Use this repository's docs for the overall SpecFact workflow, CLI runtime lifecycle, module registry, trust model, and command-group topology.
312
+ Use the modules docs site for bundle-specific deep dives, adapter details, workflow tutorials, and module-authoring guidance.
312
313
  In short, module-specific deep docs are canonically owned by `specfact-cli-modules`.
313
314
 
314
315
  ---
@@ -328,19 +329,14 @@ pip install -U specfact-cli
328
329
  ### Bootstrap and IDE Setup
329
330
 
330
331
  ```bash
331
- # First run: install workflow bundles (required)
332
+ # First run: install official bundles
332
333
  specfact init --profile solo-developer
333
334
 
334
- # Other first-run options
335
+ # Alternative bundle selection
335
336
  specfact init --install backlog,codebase
336
337
  specfact init --install all
337
338
 
338
- # First-run bundle selection (examples)
339
- specfact init --profile solo-developer
340
- specfact init --install backlog,codebase
341
- specfact init --install all
342
-
343
- # Configure IDE prompts/templates (interactive selector by default)
339
+ # IDE prompt/template setup
344
340
  specfact init ide
345
341
  specfact init ide --ide cursor
346
342
  specfact init ide --ide vscode
@@ -352,6 +348,9 @@ specfact init ide --ide vscode
352
348
  # Analyze an existing codebase
353
349
  specfact code import my-project --repo .
354
350
 
351
+ # Snapshot current project state
352
+ specfact project snapshot --bundle my-project
353
+
355
354
  # Validate external code without modifying source
356
355
  specfact code validate sidecar init my-project /path/to/repo
357
356
  specfact code validate sidecar run my-project /path/to/repo
@@ -361,9 +360,9 @@ specfact code validate sidecar run my-project /path/to/repo
361
360
 
362
361
  As of `0.40.0`, flat root commands are removed. Use grouped commands:
363
362
 
364
- - `specfact validate ...` `specfact code validate ...`
365
- - `specfact plan ...` removed; use `specfact project devops-flow` or `specfact project snapshot`
366
- - `specfact policy ...` removed; use `specfact backlog verify-readiness`
363
+ - `specfact validate ...` -> `specfact code validate ...`
364
+ - `specfact plan ...` -> removed; use `specfact project devops-flow` or `specfact project snapshot`
365
+ - `specfact policy ...` -> removed; use `specfact backlog verify-readiness`
367
366
 
368
367
  ### Backlog Bridge (60 seconds)
369
368
 
@@ -376,19 +375,18 @@ These commands require the backlog bundle to be installed first, for example via
376
375
  specfact backlog init-config --force
377
376
  specfact backlog map-fields --provider ado --ado-org <org> --ado-project "<project>"
378
377
 
379
- # 2) Run standup/refinement on real backlog scope
380
- specfact backlog daily ado --ado-org <org> --ado-project "<project>" --state any --assignee any --limit 5
381
- specfact backlog refine ado --ado-org <org> --ado-project "<project>" --id <work-item-id> --preview
378
+ # 2) Run ceremony workflows on real backlog scope
379
+ specfact backlog ceremony standup ado --ado-org <org> --ado-project "<project>" --state any --assignee any --limit 5
380
+ specfact backlog ceremony refinement ado --ado-org <org> --ado-project "<project>" --id <work-item-id> --preview
382
381
 
383
382
  # 3) Keep backlog + spec intent aligned (avoid silent drift)
384
383
  specfact backlog verify-readiness --bundle <bundle-name>
385
384
  ```
386
385
 
387
- For GitHub, replace adapter/org/project with:
388
- `specfact backlog daily github --repo-owner <owner> --repo-name <repo> ...`
386
+ Compatibility note: `specfact backlog daily ...` and `specfact backlog refine ...` still exist, but the preferred entrypoints are `backlog ceremony standup` and `backlog ceremony refinement`.
389
387
 
390
- Deep dive:
391
- - **[Backlog Quickstart Demo (GitHub + ADO)](docs/getting-started/tutorial-backlog-quickstart-demo.md)**
388
+ For GitHub, replace adapter/org/project with:
389
+ `specfact backlog ceremony standup github --repo-owner <owner> --repo-name <repo> --state any --assignee any --limit 5`
392
390
 
393
391
  **AI IDE quick start**
394
392
 
@@ -399,26 +397,9 @@ Deep dive:
399
397
 
400
398
  **Next steps**
401
399
 
402
- - **[Getting Started](docs/getting-started/README.md)**
403
- - **[AI IDE Workflow](docs/guides/ai-ide-workflow.md)**
404
- - **[Command Chains](docs/guides/command-chains.md)**
405
-
406
- ---
407
-
408
- ## Proof and Expectations
409
-
410
- - **Typical runtime**: 2-15 minutes depending on repo size and complexity.
411
- - **Checkpointing**: Progress is saved during analysis so you can resume safely.
412
- - **Performance**: Optimized for large codebases with cached parsing and file hashes.
413
-
414
- ---
415
-
416
- ## Why It Matters (Plain Language)
417
-
418
- - **Clarity**: Turn messy code into clear specs your team can trust.
419
- - **Safety**: Catch risky changes early with validation and contract checks.
420
- - **Sync**: Keep backlog items, specs, tests, and code aligned end to end.
421
- - **Adoption**: Simple CLI, no platform lock-in, works offline.
400
+ - **[Core CLI docs](docs/index.md)**
401
+ - **[Reference: command topology](docs/reference/commands.md)**
402
+ - **[Canonical modules docs site](https://modules.specfact.io/)**
422
403
 
423
404
  ---
424
405
 
@@ -430,14 +411,6 @@ Deep dive:
430
411
 
431
412
  ---
432
413
 
433
- ## How It Works (High Level)
434
-
435
- 1. **Analyze**: Read code and extract specs, gaps, and risks.
436
- 2. **Sync**: Connect specs, backlog items, and plans in one workflow.
437
- 3. **Validate**: Enforce contracts and block regressions before production.
438
-
439
- ---
440
-
441
414
  ## The Missing Link (Coder + DevOps Bridge)
442
415
 
443
416
  Most tools help **either** coders **or** agile teams. SpecFact does both:
@@ -455,54 +428,37 @@ Recommended command entrypoints:
455
428
  What the backlog readiness and ceremony commands do in practice:
456
429
  - Turns team agreements (DoR, DoD, flow checks) into executable checks against your real backlog data.
457
430
  - Shows exactly what is missing per item (for example missing acceptance criteria or definition of done).
458
- - Run structured ceremony workflows (standup, refinement, retrospective) directly from the CLI.
431
+ - Runs structured ceremony workflows directly from the CLI.
459
432
 
460
433
  Start with:
461
434
  - `specfact backlog ceremony standup --help`
462
435
  - `specfact backlog verify-readiness --bundle <bundle-name>`
463
436
  - `specfact backlog refine --help`
464
437
 
465
- **Try it now**
466
-
467
- - **Coders**: [AI IDE Workflow](docs/guides/ai-ide-workflow.md)
468
- - **Agile teams**: [Agile/Scrum Workflows](docs/guides/agile-scrum-workflows.md)
469
-
470
438
  ---
471
439
 
472
- ## Modules and Capabilities
473
-
474
- **Core runtime**
475
-
476
- - **Permanent commands**: `init`, `module`, `upgrade`
477
- - **Core responsibilities**: lifecycle, registry, trust, contracts, orchestration, shared runtime utilities
478
-
479
- **Marketplace-installed bundles**
440
+ ## Core CLI Features
480
441
 
481
- - **Backlog**: Refinement, dependency analysis, sprint summaries, risk rollups.
482
- - **Ceremony**: Standup, refinement, and planning entry points.
483
- - **Policy**: DoR, DoD, flow, PI readiness checks.
484
- - **Patch**: Preview, apply, and write changes safely.
442
+ The `specfact-cli` repository owns the platform-level features that every workflow bundle depends on:
485
443
 
486
- **Adapters and bridges**
444
+ - `specfact init` for first-run bootstrap and IDE setup.
445
+ - `specfact module` for install/list/show/search/enable/disable/uninstall/upgrade lifecycle flows.
446
+ - `specfact upgrade` for CLI upgrades.
447
+ - Runtime contracts, registry bootstrapping, trust checks, logging, and shared orchestration.
448
+ - The grouped command surface that mounts installed bundle families under `project`, `backlog`, `code`, `spec`, and `govern`.
487
449
 
488
- - **Specs**: Spec-Kit and OpenSpec
489
- - **Backlogs**: GitHub Issues, Azure DevOps, Jira, Linear
490
- - **Contracts**: Specmatic, OpenAPI
450
+ ## Official Modules Integration
491
451
 
492
- For technical architecture details (module lifecycle, registry internals, adapters, and implementation status), use:
452
+ Official workflow behavior now ships from `nold-ai/specfact-cli-modules`.
453
+ The core CLI discovers those bundle packages, mounts their command groups, and enforces compatibility, trust, and lifecycle rules.
493
454
 
494
- - [Architecture Reference](docs/reference/architecture.md)
495
- - [Architecture Docs Index](docs/architecture/README.md)
496
- - [Architecture Implementation Status](docs/architecture/implementation-status.md)
455
+ Installed official bundles expose the current grouped surfaces:
497
456
 
498
- ### Official Marketplace Bundles
499
-
500
- SpecFact ships official bundle packages via the dedicated marketplace registry repository
501
- `nold-ai/specfact-cli-modules`.
502
-
503
- This core docs set remains the canonical docs entry point and release-line overview for marketplace concepts.
504
- Bundle-specific deep docs are canonically owned by `specfact-cli-modules` and are currently published at:
505
- `https://modules.specfact.io/`.
457
+ - `specfact project ...`
458
+ - `specfact backlog ...`
459
+ - `specfact code ...`
460
+ - `specfact spec ...`
461
+ - `specfact govern ...`
506
462
 
507
463
  Install examples:
508
464
 
@@ -521,16 +477,17 @@ specfact module init --scope project
521
477
  specfact module init
522
478
  ```
523
479
 
524
- Official bundles are verified as `official` tier (`nold-ai` publisher). Some bundles
525
- auto-install dependencies:
480
+ Use this repo's docs for the current CLI/runtime release branch and the overall process of how official modules plug into the core platform.
481
+ Use `https://modules.specfact.io/` for the in-depth backlog, project, spec, govern, adapter, and module-authoring guides.
526
482
 
527
- - `nold-ai/specfact-spec` pulls `nold-ai/specfact-project`
528
- - `nold-ai/specfact-govern` pulls `nold-ai/specfact-project`
483
+ ---
529
484
 
530
- Use this repo's docs for the current CLI/runtime release branch and for marketplace lifecycle overview content.
531
- Use the modules docs site for bundle-specific deep guidance so bundle-only changes can ship without rebuilding the core docs release branch.
485
+ ## How It Works (High Level)
532
486
 
533
- ---
487
+ 1. **Bootstrap**: install the CLI and initialize the official bundles you need.
488
+ 2. **Analyze or sync**: import code, connect backlog systems, or sync external artifacts into project bundles.
489
+ 3. **Validate**: run spec, governance, and sidecar validation flows before implementation or release.
490
+ 4. **Iterate safely**: use module-provided workflows while the core runtime keeps command mounting, trust, and lifecycle consistent.
534
491
 
535
492
  ## Where SpecFact Fits
536
493
 
@@ -539,75 +496,3 @@ SpecFact complements your stack rather than replacing it.
539
496
  - **Spec-Kit/OpenSpec** for authoring and change tracking
540
497
  - **Backlog tools** for planning and delivery
541
498
  - **CI/CD** for enforcement and regression prevention
542
-
543
- **SpecFact connects them** with adapters, policy checks, and deterministic validation.
544
-
545
- **Integrations snapshot**: GitHub, Azure DevOps, Jira, Linear, Spec-Kit, OpenSpec, Specmatic.
546
-
547
- - **[Integrations Overview](docs/guides/integrations-overview.md)**
548
- - **[DevOps Adapter Integration](docs/guides/devops-adapter-integration.md)**
549
-
550
- ---
551
-
552
- ## Recommended Paths
553
-
554
- - **I want a quick win**: [Getting Started](docs/getting-started/README.md)
555
- - **I use an AI IDE**: [AI IDE Workflow](docs/guides/ai-ide-workflow.md)
556
- - **We have a team backlog**: [Agile/Scrum Workflows](docs/guides/agile-scrum-workflows.md)
557
- - **We have a long-lived codebase**: [Working With Existing Code](docs/guides/brownfield-engineer.md)
558
-
559
- ---
560
-
561
- ## Documentation Map
562
-
563
- - **[Documentation Index](docs/README.md)**
564
- - **[Command Reference](docs/reference/commands.md)**
565
- - **[Backlog Refinement](docs/guides/backlog-refinement.md)**
566
- - **[Backlog Dependency Analysis](docs/guides/backlog-dependency-analysis.md)**
567
- - **[Backlog Delta Commands](docs/guides/backlog-delta-commands.md)**
568
- - **[Policy Engine Commands](docs/guides/policy-engine-commands.md)**
569
- - **[Project DevOps Flow](docs/guides/project-devops-flow.md)**
570
- - **[Sidecar Validation](docs/guides/sidecar-validation.md)**
571
- - **[OpenSpec Journey](docs/guides/openspec-journey.md)**
572
-
573
- ---
574
-
575
- ## Contributing
576
-
577
- We welcome contributions. See [CONTRIBUTING.md](CONTRIBUTING.md).
578
-
579
- ```bash
580
- git clone https://github.com/nold-ai/specfact-cli.git
581
- cd specfact-cli
582
- pip install -e ".[dev]"
583
- hatch run contract-test-full
584
- ```
585
-
586
- ---
587
-
588
- ## License
589
-
590
- **Apache License 2.0** - Open source and enterprise-friendly.
591
-
592
- [Full license](LICENSE)
593
-
594
- ---
595
-
596
- ## Support
597
-
598
- - **GitHub Discussions**: https://github.com/nold-ai/specfact-cli/discussions
599
- - **GitHub Issues**: https://github.com/nold-ai/specfact-cli/issues
600
- - **Email**: hello@noldai.com
601
- - **Debug logs**: Run with `--debug` and check `~/.specfact/logs/specfact-debug.log`.
602
-
603
- ---
604
-
605
- <div align="center">
606
-
607
- **Built by [NOLD AI](https://noldai.com)**
608
-
609
- Copyright © 2025-2026 Nold AI (Owner: Dominikus Nold)
610
-
611
- **Trademarks**: NOLD AI (NOLDAI) is a registered trademark (wordmark) at the European Union Intellectual Property Office (EUIPO). All other trademarks mentioned in this project are the property of their respective owners. See [TRADEMARKS.md](TRADEMARKS.md) for more information.
612
-
613
- </div>
@@ -0,0 +1,217 @@
1
+ # SpecFact CLI
2
+
3
+ > **The "swiss knife" CLI that turns any codebase into a clear, safe, and shippable workflow.**
4
+ > Keep backlog, specs, tests, and code in sync so AI-assisted changes do not break production.
5
+ > Works for brand-new projects and long-lived codebases - even if you are new to coding.
6
+
7
+ **No API keys required. Works offline. Zero vendor lock-in.**
8
+
9
+ [![PyPI version](https://img.shields.io/pypi/v/specfact-cli.svg?color=22c55e)](https://pypi.org/project/specfact-cli/)
10
+ [![Python versions](https://img.shields.io/pypi/pyversions/specfact-cli.svg)](https://pypi.org/project/specfact-cli/)
11
+ [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
12
+ [![Status](https://img.shields.io/badge/status-beta-F59E0B.svg)](https://github.com/nold-ai/specfact-cli)
13
+
14
+ <div align="center">
15
+
16
+ **[specfact.com](https://specfact.com)** • **[specfact.io](https://specfact.io)** • **[specfact.dev](https://specfact.dev)** • **[Documentation](https://docs.specfact.io/)** • **[Support](mailto:hello@noldai.com)**
17
+
18
+ </div>
19
+
20
+ ---
21
+
22
+ ## Documentation Topology
23
+
24
+ `docs.specfact.io` is the canonical docs entry point for SpecFact.
25
+
26
+ - Core CLI/runtime/platform documentation remains owned by `specfact-cli`.
27
+ - Module-specific deep docs are canonically owned by `specfact-cli-modules`.
28
+ - The live modules docs site is currently published at `https://modules.specfact.io/`.
29
+
30
+ Use this repository's docs for the overall SpecFact workflow, CLI runtime lifecycle, module registry, trust model, and command-group topology.
31
+ Use the modules docs site for bundle-specific deep dives, adapter details, workflow tutorials, and module-authoring guidance.
32
+ In short, module-specific deep docs are canonically owned by `specfact-cli-modules`.
33
+
34
+ ---
35
+
36
+ ## Start Here (60 seconds)
37
+
38
+ ### Install
39
+
40
+ ```bash
41
+ # Zero-install (recommended)
42
+ uvx specfact-cli@latest
43
+
44
+ # Or install globally
45
+ pip install -U specfact-cli
46
+ ```
47
+
48
+ ### Bootstrap and IDE Setup
49
+
50
+ ```bash
51
+ # First run: install official bundles
52
+ specfact init --profile solo-developer
53
+
54
+ # Alternative bundle selection
55
+ specfact init --install backlog,codebase
56
+ specfact init --install all
57
+
58
+ # IDE prompt/template setup
59
+ specfact init ide
60
+ specfact init ide --ide cursor
61
+ specfact init ide --ide vscode
62
+ ```
63
+
64
+ ### Run Your First Flow
65
+
66
+ ```bash
67
+ # Analyze an existing codebase
68
+ specfact code import my-project --repo .
69
+
70
+ # Snapshot current project state
71
+ specfact project snapshot --bundle my-project
72
+
73
+ # Validate external code without modifying source
74
+ specfact code validate sidecar init my-project /path/to/repo
75
+ specfact code validate sidecar run my-project /path/to/repo
76
+ ```
77
+
78
+ ### Migration Note (Flat Commands Removed)
79
+
80
+ As of `0.40.0`, flat root commands are removed. Use grouped commands:
81
+
82
+ - `specfact validate ...` -> `specfact code validate ...`
83
+ - `specfact plan ...` -> removed; use `specfact project devops-flow` or `specfact project snapshot`
84
+ - `specfact policy ...` -> removed; use `specfact backlog verify-readiness`
85
+
86
+ ### Backlog Bridge (60 seconds)
87
+
88
+ SpecFact's USP is closing the drift gap between **backlog -> specs -> code**.
89
+ These commands require the backlog bundle to be installed first, for example via
90
+ `specfact init --profile backlog-team` or `specfact init --install backlog`.
91
+
92
+ ```bash
93
+ # 1) Initialize backlog config + field mapping
94
+ specfact backlog init-config --force
95
+ specfact backlog map-fields --provider ado --ado-org <org> --ado-project "<project>"
96
+
97
+ # 2) Run ceremony workflows on real backlog scope
98
+ specfact backlog ceremony standup ado --ado-org <org> --ado-project "<project>" --state any --assignee any --limit 5
99
+ specfact backlog ceremony refinement ado --ado-org <org> --ado-project "<project>" --id <work-item-id> --preview
100
+
101
+ # 3) Keep backlog + spec intent aligned (avoid silent drift)
102
+ specfact backlog verify-readiness --bundle <bundle-name>
103
+ ```
104
+
105
+ Compatibility note: `specfact backlog daily ...` and `specfact backlog refine ...` still exist, but the preferred entrypoints are `backlog ceremony standup` and `backlog ceremony refinement`.
106
+
107
+ For GitHub, replace adapter/org/project with:
108
+ `specfact backlog ceremony standup github --repo-owner <owner> --repo-name <repo> --state any --assignee any --limit 5`
109
+
110
+ **AI IDE quick start**
111
+
112
+ ```bash
113
+ # In your IDE chat (Cursor, VS Code, Copilot, etc.)
114
+ /specfact.01-import my-project --repo .
115
+ ```
116
+
117
+ **Next steps**
118
+
119
+ - **[Core CLI docs](docs/index.md)**
120
+ - **[Reference: command topology](docs/reference/commands.md)**
121
+ - **[Canonical modules docs site](https://modules.specfact.io/)**
122
+
123
+ ---
124
+
125
+ ## Who It Is For
126
+
127
+ - **Vibe coders and new builders** who want to ship fast with guardrails and confidence.
128
+ - **Legacy professionals** who want AI speed without lowering standards.
129
+ - **DevOps and engineering leaders** who need evidence and repeatable workflows.
130
+
131
+ ---
132
+
133
+ ## The Missing Link (Coder + DevOps Bridge)
134
+
135
+ Most tools help **either** coders **or** agile teams. SpecFact does both:
136
+
137
+ - **Backlog sync that is actually strong**: round-trip sync + refinement with GitHub, Azure DevOps, Jira, Linear.
138
+ - **Ceremony support teams can run**: standup, refinement, sprint planning, flow metrics (Scrum/Kanban/SAFe).
139
+ - **Policy + validation**: DoR/DoD/flow checks plus contract enforcement for production-grade stability.
140
+
141
+ Recommended command entrypoints:
142
+ - `specfact backlog ceremony standup ...`
143
+ - `specfact backlog ceremony refinement ...`
144
+ - `specfact backlog verify-readiness --bundle <bundle-name>`
145
+ - `specfact backlog analyze-deps --bundle <bundle-name>`
146
+
147
+ What the backlog readiness and ceremony commands do in practice:
148
+ - Turns team agreements (DoR, DoD, flow checks) into executable checks against your real backlog data.
149
+ - Shows exactly what is missing per item (for example missing acceptance criteria or definition of done).
150
+ - Runs structured ceremony workflows directly from the CLI.
151
+
152
+ Start with:
153
+ - `specfact backlog ceremony standup --help`
154
+ - `specfact backlog verify-readiness --bundle <bundle-name>`
155
+ - `specfact backlog refine --help`
156
+
157
+ ---
158
+
159
+ ## Core CLI Features
160
+
161
+ The `specfact-cli` repository owns the platform-level features that every workflow bundle depends on:
162
+
163
+ - `specfact init` for first-run bootstrap and IDE setup.
164
+ - `specfact module` for install/list/show/search/enable/disable/uninstall/upgrade lifecycle flows.
165
+ - `specfact upgrade` for CLI upgrades.
166
+ - Runtime contracts, registry bootstrapping, trust checks, logging, and shared orchestration.
167
+ - The grouped command surface that mounts installed bundle families under `project`, `backlog`, `code`, `spec`, and `govern`.
168
+
169
+ ## Official Modules Integration
170
+
171
+ Official workflow behavior now ships from `nold-ai/specfact-cli-modules`.
172
+ The core CLI discovers those bundle packages, mounts their command groups, and enforces compatibility, trust, and lifecycle rules.
173
+
174
+ Installed official bundles expose the current grouped surfaces:
175
+
176
+ - `specfact project ...`
177
+ - `specfact backlog ...`
178
+ - `specfact code ...`
179
+ - `specfact spec ...`
180
+ - `specfact govern ...`
181
+
182
+ Install examples:
183
+
184
+ ```bash
185
+ specfact module install nold-ai/specfact-project
186
+ specfact module install nold-ai/specfact-backlog
187
+ specfact module install nold-ai/specfact-codebase
188
+ specfact module install nold-ai/specfact-spec
189
+ specfact module install nold-ai/specfact-govern
190
+ ```
191
+
192
+ If startup warns that bundled modules are missing or outdated, run:
193
+
194
+ ```bash
195
+ specfact module init --scope project
196
+ specfact module init
197
+ ```
198
+
199
+ Use this repo's docs for the current CLI/runtime release branch and the overall process of how official modules plug into the core platform.
200
+ Use `https://modules.specfact.io/` for the in-depth backlog, project, spec, govern, adapter, and module-authoring guides.
201
+
202
+ ---
203
+
204
+ ## How It Works (High Level)
205
+
206
+ 1. **Bootstrap**: install the CLI and initialize the official bundles you need.
207
+ 2. **Analyze or sync**: import code, connect backlog systems, or sync external artifacts into project bundles.
208
+ 3. **Validate**: run spec, governance, and sidecar validation flows before implementation or release.
209
+ 4. **Iterate safely**: use module-provided workflows while the core runtime keeps command mounting, trust, and lifecycle consistent.
210
+
211
+ ## Where SpecFact Fits
212
+
213
+ SpecFact complements your stack rather than replacing it.
214
+
215
+ - **Spec-Kit/OpenSpec** for authoring and change tracking
216
+ - **Backlog tools** for planning and delivery
217
+ - **CI/CD** for enforcement and regression prevention
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "specfact-cli"
7
- version = "0.42.2"
7
+ version = "0.42.3"
8
8
  description = "The swiss knife CLI for agile DevOps teams. Keep backlog, specs, tests, and code in sync with validation and contract enforcement for new projects and long-lived codebases."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -730,6 +730,11 @@ ignore = [
730
730
  "B008", # typer.Option/Argument in defaults (common Typer pattern)
731
731
  ]
732
732
 
733
+ # shellingham must be patched before Typer imports it; remaining imports follow the try/except.
734
+ "src/specfact_cli/cli.py" = [
735
+ "E402",
736
+ ]
737
+
733
738
  [tool.ruff.lint.isort]
734
739
  # Match isort ruff profile configuration
735
740
  # Ruff-compatible: multi_line_output = 3, combine_as_imports = true
@@ -3,4 +3,4 @@ SpecFact CLI - Spec→Contract→Sentinel tool for contract-driven development.
3
3
  """
4
4
 
5
5
  # Package version: keep in sync with pyproject.toml, setup.py, src/specfact_cli/__init__.py
6
- __version__ = "0.42.1"
6
+ __version__ = "0.42.3"
@@ -42,6 +42,6 @@ def _bootstrap_bundle_paths() -> None:
42
42
 
43
43
  _bootstrap_bundle_paths()
44
44
 
45
- __version__ = "0.42.2"
45
+ __version__ = "0.42.3"
46
46
 
47
47
  __all__ = ["__version__"]