specfact-cli 0.42.2__tar.gz → 0.42.4__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.4}/.gitignore +3 -0
  2. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/PKG-INFO +48 -161
  3. specfact_cli-0.42.4/README.md +219 -0
  4. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/pyproject.toml +6 -1
  5. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/__init__.py +1 -1
  6. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/__init__.py +1 -1
  7. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/adapters/ado.py +1663 -1608
  8. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/adapters/backlog_base.py +208 -41
  9. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/adapters/base.py +15 -10
  10. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/adapters/github.py +1342 -1389
  11. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/adapters/openspec.py +199 -199
  12. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/adapters/openspec_parser.py +53 -57
  13. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/adapters/speckit.py +256 -279
  14. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/agents/analyze_agent.py +46 -40
  15. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/agents/plan_agent.py +25 -13
  16. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/agents/registry.py +1 -0
  17. specfact_cli-0.42.4/src/specfact_cli/analyzers/ambiguity_scanner.py +968 -0
  18. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/analyzers/code_analyzer.py +856 -885
  19. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/analyzers/constitution_evidence_extractor.py +161 -89
  20. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/analyzers/contract_extractor.py +34 -31
  21. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/analyzers/graph_analyzer.py +159 -150
  22. specfact_cli-0.42.4/src/specfact_cli/analyzers/relationship_mapper.py +429 -0
  23. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/analyzers/requirement_extractor.py +19 -26
  24. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/analyzers/test_pattern_extractor.py +70 -57
  25. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/backlog/adapters/base.py +9 -1
  26. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/backlog/converter.py +211 -130
  27. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/backlog/filters.py +5 -0
  28. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/backlog/mappers/ado_mapper.py +32 -35
  29. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/backlog/mappers/base.py +13 -11
  30. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/backlog/mappers/github_mapper.py +71 -54
  31. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/cli.py +192 -183
  32. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/commands/__init__.py +20 -0
  33. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/commands/_bundle_shim.py +13 -0
  34. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/common/logger_setup.py +166 -124
  35. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/comparators/plan_comparator.py +208 -162
  36. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/contracts/__init__.py +1 -0
  37. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/contracts/module_interface.py +15 -0
  38. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/enrichers/constitution_enricher.py +73 -58
  39. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/enrichers/plan_enricher.py +100 -121
  40. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/generators/contract_generator.py +77 -53
  41. specfact_cli-0.42.4/src/specfact_cli/generators/openapi_extractor.py +1416 -0
  42. specfact_cli-0.42.4/src/specfact_cli/generators/persona_exporter.py +429 -0
  43. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/generators/plan_generator.py +3 -2
  44. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/generators/protocol_generator.py +5 -4
  45. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/generators/report_generator.py +4 -2
  46. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/generators/test_to_openapi.py +152 -100
  47. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/generators/workflow_generator.py +12 -5
  48. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/groups/codebase_group.py +1 -0
  49. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/groups/govern_group.py +1 -0
  50. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/groups/member_group.py +1 -1
  51. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/groups/project_group.py +2 -1
  52. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/groups/spec_group.py +1 -0
  53. specfact_cli-0.42.4/src/specfact_cli/importers/speckit_converter.py +1100 -0
  54. specfact_cli-0.42.4/src/specfact_cli/importers/speckit_scanner.py +716 -0
  55. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/integrations/specmatic.py +123 -117
  56. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/merge/resolver.py +226 -126
  57. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/migrations/plan_migrator.py +7 -4
  58. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/models/backlog_item.py +7 -8
  59. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/models/bridge.py +17 -9
  60. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/models/change.py +11 -18
  61. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/models/contract.py +3 -1
  62. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/models/deviation.py +5 -5
  63. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/models/dor_config.py +69 -47
  64. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/models/enforcement.py +28 -13
  65. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/models/module_package.py +3 -0
  66. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/models/persona_template.py +1 -2
  67. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/models/plan.py +17 -10
  68. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/models/project.py +390 -370
  69. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/models/sdd.py +10 -8
  70. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/models/task.py +0 -1
  71. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/modes/router.py +12 -3
  72. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/modules/_bundle_import.py +7 -0
  73. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/modules/init/module-package.yaml +3 -3
  74. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/modules/init/src/commands.py +228 -167
  75. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/modules/init/src/first_run_selection.py +2 -0
  76. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/modules/module_io_shim.py +16 -4
  77. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/modules/module_registry/module-package.yaml +3 -3
  78. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/modules/module_registry/src/commands.py +402 -229
  79. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/modules/upgrade/module-package.yaml +3 -3
  80. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/modules/upgrade/src/commands.py +94 -85
  81. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/parsers/persona_importer.py +64 -47
  82. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/registry/alias_manager.py +6 -3
  83. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/registry/bootstrap.py +3 -0
  84. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/registry/bridge_registry.py +20 -12
  85. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/registry/crypto_validator.py +15 -6
  86. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/registry/custom_registries.py +69 -38
  87. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/registry/extension_registry.py +8 -0
  88. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/registry/help_cache.py +21 -4
  89. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/registry/marketplace_client.py +164 -122
  90. specfact_cli-0.42.4/src/specfact_cli/registry/module_discovery.py +175 -0
  91. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/registry/module_grouping.py +4 -1
  92. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/registry/module_installer.py +336 -222
  93. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/registry/module_lifecycle.py +52 -24
  94. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/registry/module_packages.py +705 -429
  95. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/registry/module_security.py +15 -5
  96. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/registry/module_state.py +12 -6
  97. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/registry/registry.py +4 -0
  98. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/runtime.py +29 -5
  99. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/sync/bridge_probe.py +80 -88
  100. specfact_cli-0.42.4/src/specfact_cli/sync/bridge_sync.py +3739 -0
  101. specfact_cli-0.42.4/src/specfact_cli/sync/bridge_sync_openspec_md_parse.py +71 -0
  102. specfact_cli-0.42.4/src/specfact_cli/sync/bridge_sync_requirement_from_proposal.py +351 -0
  103. specfact_cli-0.42.4/src/specfact_cli/sync/bridge_sync_requirement_helpers.py +187 -0
  104. specfact_cli-0.42.4/src/specfact_cli/sync/bridge_sync_tasks_from_proposal.py +315 -0
  105. specfact_cli-0.42.4/src/specfact_cli/sync/bridge_sync_what_changes_format.py +179 -0
  106. specfact_cli-0.42.4/src/specfact_cli/sync/bridge_sync_write_openspec_from_proposal.py +298 -0
  107. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/sync/bridge_watch.py +79 -52
  108. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/sync/change_detector.py +5 -1
  109. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/sync/drift_detector.py +47 -45
  110. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/sync/repository_sync.py +19 -20
  111. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/sync/spec_to_code.py +63 -70
  112. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/sync/watcher.py +29 -14
  113. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/sync/watcher_enhanced.py +40 -17
  114. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/telemetry.py +165 -124
  115. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/templates/registry.py +100 -106
  116. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/templates/specification_templates.py +27 -0
  117. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/utils/acceptance_criteria.py +30 -26
  118. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/utils/bundle_converters.py +1 -0
  119. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/utils/bundle_loader.py +72 -70
  120. specfact_cli-0.42.4/src/specfact_cli/utils/code_change_detector.py +268 -0
  121. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/utils/context_detection.py +82 -70
  122. specfact_cli-0.42.4/src/specfact_cli/utils/contract_predicates.py +179 -0
  123. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/utils/enrichment_context.py +2 -0
  124. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/utils/enrichment_parser.py +222 -227
  125. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/utils/env_manager.py +117 -108
  126. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/utils/feature_keys.py +13 -2
  127. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/utils/git.py +28 -45
  128. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/utils/github_annotations.py +163 -159
  129. specfact_cli-0.42.4/src/specfact_cli/utils/icontract_helpers.py +241 -0
  130. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/utils/ide_setup.py +343 -184
  131. specfact_cli-0.42.4/src/specfact_cli/utils/incremental_check.py +480 -0
  132. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/utils/optional_deps.py +44 -47
  133. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/utils/performance.py +31 -0
  134. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/utils/persona_ownership.py +4 -1
  135. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/utils/progress.py +17 -4
  136. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/utils/progressive_disclosure.py +55 -29
  137. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/utils/sdd_discovery.py +52 -43
  138. specfact_cli-0.42.4/src/specfact_cli/utils/source_scanner.py +717 -0
  139. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/utils/startup_checks.py +205 -167
  140. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/utils/structure.py +168 -124
  141. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/utils/structured_io.py +7 -0
  142. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/utils/suggestions.py +12 -0
  143. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/utils/terminal.py +69 -30
  144. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/utils/yaml_utils.py +33 -35
  145. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/validation/command_audit.py +4 -0
  146. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/validators/agile_validation.py +61 -66
  147. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/validators/change_proposal_integration.py +219 -162
  148. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/validators/cli_first_validator.py +2 -0
  149. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/validators/contract_validator.py +1 -0
  150. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/validators/fsm.py +70 -70
  151. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/validators/repro_checker.py +450 -326
  152. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/validators/schema.py +3 -2
  153. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/validators/sidecar/contract_populator.py +14 -4
  154. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/validators/sidecar/crosshair_runner.py +4 -1
  155. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/validators/sidecar/crosshair_summary.py +144 -121
  156. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/validators/sidecar/dependency_installer.py +12 -3
  157. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/validators/sidecar/framework_detector.py +81 -67
  158. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/validators/sidecar/frameworks/base.py +24 -8
  159. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/validators/sidecar/frameworks/django.py +20 -5
  160. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/validators/sidecar/frameworks/drf.py +20 -5
  161. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/validators/sidecar/frameworks/fastapi.py +35 -19
  162. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/validators/sidecar/frameworks/flask.py +65 -41
  163. specfact_cli-0.42.4/src/specfact_cli/validators/sidecar/harness_generator.py +847 -0
  164. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/validators/sidecar/models.py +13 -3
  165. specfact_cli-0.42.4/src/specfact_cli/validators/sidecar/orchestrator.py +373 -0
  166. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/validators/sidecar/specmatic_runner.py +4 -1
  167. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/validators/sidecar/unannotated_detector.py +16 -4
  168. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/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.4}/LICENSE +0 -0
  184. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/resources/keys/README.md +0 -0
  185. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/resources/keys/module-signing-public.pem +0 -0
  186. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/resources/mappings/node-async.yaml +0 -0
  187. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/resources/mappings/python-async.yaml +0 -0
  188. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/resources/mappings/speckit-default.yaml +0 -0
  189. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/resources/prompts/shared/cli-enforcement.md +0 -0
  190. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/resources/prompts/specfact.01-import.md +0 -0
  191. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/resources/prompts/specfact.02-plan.md +0 -0
  192. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/resources/prompts/specfact.03-review.md +0 -0
  193. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/resources/prompts/specfact.04-sdd.md +0 -0
  194. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/resources/prompts/specfact.05-enforce.md +0 -0
  195. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/resources/prompts/specfact.06-sync.md +0 -0
  196. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/resources/prompts/specfact.07-contracts.md +0 -0
  197. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/resources/prompts/specfact.compare.md +0 -0
  198. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/resources/prompts/specfact.validate.md +0 -0
  199. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/resources/schemas/deviation.schema.json +0 -0
  200. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/resources/schemas/plan.schema.json +0 -0
  201. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/resources/schemas/protocol.schema.json +0 -0
  202. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/resources/templates/github-action.yml.j2 +0 -0
  203. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/resources/templates/persona/architect.md.j2 +0 -0
  204. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/resources/templates/persona/developer.md.j2 +0 -0
  205. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/resources/templates/persona/product-owner.md.j2 +0 -0
  206. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/resources/templates/plan.bundle.yaml.j2 +0 -0
  207. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/resources/templates/policies/kanban.yaml +0 -0
  208. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/resources/templates/policies/mixed.yaml +0 -0
  209. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/resources/templates/policies/safe.yaml +0 -0
  210. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/resources/templates/policies/scrum.yaml +0 -0
  211. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/resources/templates/pr-template.md.j2 +0 -0
  212. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/resources/templates/protocol.yaml.j2 +0 -0
  213. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/resources/templates/telemetry.yaml.example +0 -0
  214. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/__main__.py +0 -0
  215. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/adapters/__init__.py +0 -0
  216. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/adapters/registry.py +0 -0
  217. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/agents/__init__.py +0 -0
  218. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/agents/base.py +0 -0
  219. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/agents/sync_agent.py +0 -0
  220. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/analyzers/__init__.py +0 -0
  221. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/analyzers/control_flow_analyzer.py +0 -0
  222. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/backlog/__init__.py +0 -0
  223. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/backlog/adapters/__init__.py +0 -0
  224. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/backlog/mappers/__init__.py +0 -0
  225. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/backlog/mappers/template_config.py +0 -0
  226. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/commands/analyze.py +0 -0
  227. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/commands/contract_cmd.py +0 -0
  228. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/commands/drift.py +0 -0
  229. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/commands/enforce.py +0 -0
  230. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/commands/generate.py +0 -0
  231. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/commands/import_cmd.py +0 -0
  232. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/commands/init.py +0 -0
  233. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/commands/migrate.py +0 -0
  234. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/commands/plan.py +0 -0
  235. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/commands/project_cmd.py +0 -0
  236. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/commands/repro.py +0 -0
  237. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/commands/sdd.py +0 -0
  238. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/commands/spec.py +0 -0
  239. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/commands/sync.py +0 -0
  240. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/commands/update.py +0 -0
  241. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/commands/validate.py +0 -0
  242. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/common/__init__.py +0 -0
  243. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/common/bundle_factory.py +0 -0
  244. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/common/logging_utils.py +0 -0
  245. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/common/text_utils.py +0 -0
  246. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/common/utils.py +0 -0
  247. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/comparators/__init__.py +0 -0
  248. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/contracts/crosshair_props.py +0 -0
  249. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/generators/__init__.py +0 -0
  250. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/generators/task_generator.py +0 -0
  251. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/groups/__init__.py +0 -0
  252. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/importers/__init__.py +0 -0
  253. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/integrations/__init__.py +0 -0
  254. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/merge/__init__.py +0 -0
  255. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/migrations/__init__.py +0 -0
  256. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/models/__init__.py +0 -0
  257. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/models/capabilities.py +0 -0
  258. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/models/protocol.py +0 -0
  259. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/models/quality.py +0 -0
  260. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/models/source_tracking.py +0 -0
  261. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/models/validation.py +0 -0
  262. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/modes/__init__.py +0 -0
  263. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/modes/detector.py +0 -0
  264. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/modules/__init__.py +0 -0
  265. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/modules/init/src/__init__.py +0 -0
  266. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/modules/init/src/app.py +0 -0
  267. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/modules/module_registry/src/__init__.py +0 -0
  268. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/modules/module_registry/src/app.py +0 -0
  269. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/modules/upgrade/src/__init__.py +0 -0
  270. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/modules/upgrade/src/app.py +0 -0
  271. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/parsers/__init__.py +0 -0
  272. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/registry/__init__.py +0 -0
  273. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/registry/dependency_resolver.py +0 -0
  274. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/registry/metadata.py +0 -0
  275. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/resources/semgrep/async.yml +0 -0
  276. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/resources/semgrep/code-quality.yml +0 -0
  277. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/resources/semgrep/feature-detection.yml +0 -0
  278. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/sync/__init__.py +0 -0
  279. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/sync/code_to_spec.py +0 -0
  280. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/sync/spec_to_tests.py +0 -0
  281. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/templates/__init__.py +0 -0
  282. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/templates/defaults/defect_v1.yaml +0 -0
  283. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/templates/defaults/enabler_v1.yaml +0 -0
  284. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/templates/defaults/spike_v1.yaml +0 -0
  285. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/templates/defaults/user_story_v1.yaml +0 -0
  286. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/templates/frameworks/scrum/user_story_v1.yaml +0 -0
  287. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/templates/personas/product-owner/user_story_v1.yaml +0 -0
  288. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/templates/providers/ado/work_item_v1.yaml +0 -0
  289. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/utils/__init__.py +0 -0
  290. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/utils/auth_tokens.py +0 -0
  291. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/utils/console.py +0 -0
  292. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/utils/content_sanitizer.py +0 -0
  293. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/utils/metadata.py +0 -0
  294. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/utils/prompts.py +0 -0
  295. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/validation/__init__.py +0 -0
  296. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/validators/__init__.py +0 -0
  297. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/validators/sidecar/__init__.py +0 -0
  298. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/src/specfact_cli/validators/sidecar/frameworks/__init__.py +0 -0
  299. {specfact_cli-0.42.2 → specfact_cli-0.42.4}/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.4
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,30 +329,30 @@ 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
347
343
  ```
348
344
 
345
+ `specfact init ide` discovers prompt resources from installed workflow modules and exports them to your IDE. If module prompt payloads are not installed yet, the CLI uses packaged fallback resources.
346
+
349
347
  ### Run Your First Flow
350
348
 
351
349
  ```bash
352
350
  # Analyze an existing codebase
353
351
  specfact code import my-project --repo .
354
352
 
353
+ # Snapshot current project state
354
+ specfact project snapshot --bundle my-project
355
+
355
356
  # Validate external code without modifying source
356
357
  specfact code validate sidecar init my-project /path/to/repo
357
358
  specfact code validate sidecar run my-project /path/to/repo
@@ -361,9 +362,9 @@ specfact code validate sidecar run my-project /path/to/repo
361
362
 
362
363
  As of `0.40.0`, flat root commands are removed. Use grouped commands:
363
364
 
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`
365
+ - `specfact validate ...` -> `specfact code validate ...`
366
+ - `specfact plan ...` -> removed; use `specfact project devops-flow` or `specfact project snapshot`
367
+ - `specfact policy ...` -> removed; use `specfact backlog verify-readiness`
367
368
 
368
369
  ### Backlog Bridge (60 seconds)
369
370
 
@@ -376,19 +377,18 @@ These commands require the backlog bundle to be installed first, for example via
376
377
  specfact backlog init-config --force
377
378
  specfact backlog map-fields --provider ado --ado-org <org> --ado-project "<project>"
378
379
 
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
380
+ # 2) Run ceremony workflows on real backlog scope
381
+ specfact backlog ceremony standup ado --ado-org <org> --ado-project "<project>" --state any --assignee any --limit 5
382
+ specfact backlog ceremony refinement ado --ado-org <org> --ado-project "<project>" --id <work-item-id> --preview
382
383
 
383
384
  # 3) Keep backlog + spec intent aligned (avoid silent drift)
384
385
  specfact backlog verify-readiness --bundle <bundle-name>
385
386
  ```
386
387
 
387
- For GitHub, replace adapter/org/project with:
388
- `specfact backlog daily github --repo-owner <owner> --repo-name <repo> ...`
388
+ Compatibility note: `specfact backlog daily ...` and `specfact backlog refine ...` still exist, but the preferred entrypoints are `backlog ceremony standup` and `backlog ceremony refinement`.
389
389
 
390
- Deep dive:
391
- - **[Backlog Quickstart Demo (GitHub + ADO)](docs/getting-started/tutorial-backlog-quickstart-demo.md)**
390
+ For GitHub, replace adapter/org/project with:
391
+ `specfact backlog ceremony standup github --repo-owner <owner> --repo-name <repo> --state any --assignee any --limit 5`
392
392
 
393
393
  **AI IDE quick start**
394
394
 
@@ -399,26 +399,9 @@ Deep dive:
399
399
 
400
400
  **Next steps**
401
401
 
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.
402
+ - **[Core CLI docs](docs/index.md)**
403
+ - **[Reference: command topology](docs/reference/commands.md)**
404
+ - **[Canonical modules docs site](https://modules.specfact.io/)**
422
405
 
423
406
  ---
424
407
 
@@ -430,14 +413,6 @@ Deep dive:
430
413
 
431
414
  ---
432
415
 
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
416
  ## The Missing Link (Coder + DevOps Bridge)
442
417
 
443
418
  Most tools help **either** coders **or** agile teams. SpecFact does both:
@@ -455,54 +430,37 @@ Recommended command entrypoints:
455
430
  What the backlog readiness and ceremony commands do in practice:
456
431
  - Turns team agreements (DoR, DoD, flow checks) into executable checks against your real backlog data.
457
432
  - 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.
433
+ - Runs structured ceremony workflows directly from the CLI.
459
434
 
460
435
  Start with:
461
436
  - `specfact backlog ceremony standup --help`
462
437
  - `specfact backlog verify-readiness --bundle <bundle-name>`
463
438
  - `specfact backlog refine --help`
464
439
 
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
440
  ---
471
441
 
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**
442
+ ## Core CLI Features
480
443
 
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.
444
+ The `specfact-cli` repository owns the platform-level features that every workflow bundle depends on:
485
445
 
486
- **Adapters and bridges**
446
+ - `specfact init` for first-run bootstrap and IDE setup.
447
+ - `specfact module` for install/list/show/search/enable/disable/uninstall/upgrade lifecycle flows.
448
+ - `specfact upgrade` for CLI upgrades.
449
+ - Runtime contracts, registry bootstrapping, trust checks, logging, and shared orchestration.
450
+ - The grouped command surface that mounts installed bundle families under `project`, `backlog`, `code`, `spec`, and `govern`.
487
451
 
488
- - **Specs**: Spec-Kit and OpenSpec
489
- - **Backlogs**: GitHub Issues, Azure DevOps, Jira, Linear
490
- - **Contracts**: Specmatic, OpenAPI
452
+ ## Official Modules Integration
491
453
 
492
- For technical architecture details (module lifecycle, registry internals, adapters, and implementation status), use:
454
+ Official workflow behavior now ships from `nold-ai/specfact-cli-modules`.
455
+ The core CLI discovers those bundle packages, mounts their command groups, and enforces compatibility, trust, and lifecycle rules.
493
456
 
494
- - [Architecture Reference](docs/reference/architecture.md)
495
- - [Architecture Docs Index](docs/architecture/README.md)
496
- - [Architecture Implementation Status](docs/architecture/implementation-status.md)
457
+ Installed official bundles expose the current grouped surfaces:
497
458
 
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/`.
459
+ - `specfact project ...`
460
+ - `specfact backlog ...`
461
+ - `specfact code ...`
462
+ - `specfact spec ...`
463
+ - `specfact govern ...`
506
464
 
507
465
  Install examples:
508
466
 
@@ -521,16 +479,17 @@ specfact module init --scope project
521
479
  specfact module init
522
480
  ```
523
481
 
524
- Official bundles are verified as `official` tier (`nold-ai` publisher). Some bundles
525
- auto-install dependencies:
482
+ 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.
483
+ Use `https://modules.specfact.io/` for the in-depth backlog, project, spec, govern, adapter, and module-authoring guides.
526
484
 
527
- - `nold-ai/specfact-spec` pulls `nold-ai/specfact-project`
528
- - `nold-ai/specfact-govern` pulls `nold-ai/specfact-project`
485
+ ---
529
486
 
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.
487
+ ## How It Works (High Level)
532
488
 
533
- ---
489
+ 1. **Bootstrap**: install the CLI and initialize the official bundles you need.
490
+ 2. **Analyze or sync**: import code, connect backlog systems, or sync external artifacts into project bundles.
491
+ 3. **Validate**: run spec, governance, and sidecar validation flows before implementation or release.
492
+ 4. **Iterate safely**: use module-provided workflows while the core runtime keeps command mounting, trust, and lifecycle consistent.
534
493
 
535
494
  ## Where SpecFact Fits
536
495
 
@@ -539,75 +498,3 @@ SpecFact complements your stack rather than replacing it.
539
498
  - **Spec-Kit/OpenSpec** for authoring and change tracking
540
499
  - **Backlog tools** for planning and delivery
541
500
  - **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,219 @@
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
+ `specfact init ide` discovers prompt resources from installed workflow modules and exports them to your IDE. If module prompt payloads are not installed yet, the CLI uses packaged fallback resources.
65
+
66
+ ### Run Your First Flow
67
+
68
+ ```bash
69
+ # Analyze an existing codebase
70
+ specfact code import my-project --repo .
71
+
72
+ # Snapshot current project state
73
+ specfact project snapshot --bundle my-project
74
+
75
+ # Validate external code without modifying source
76
+ specfact code validate sidecar init my-project /path/to/repo
77
+ specfact code validate sidecar run my-project /path/to/repo
78
+ ```
79
+
80
+ ### Migration Note (Flat Commands Removed)
81
+
82
+ As of `0.40.0`, flat root commands are removed. Use grouped commands:
83
+
84
+ - `specfact validate ...` -> `specfact code validate ...`
85
+ - `specfact plan ...` -> removed; use `specfact project devops-flow` or `specfact project snapshot`
86
+ - `specfact policy ...` -> removed; use `specfact backlog verify-readiness`
87
+
88
+ ### Backlog Bridge (60 seconds)
89
+
90
+ SpecFact's USP is closing the drift gap between **backlog -> specs -> code**.
91
+ These commands require the backlog bundle to be installed first, for example via
92
+ `specfact init --profile backlog-team` or `specfact init --install backlog`.
93
+
94
+ ```bash
95
+ # 1) Initialize backlog config + field mapping
96
+ specfact backlog init-config --force
97
+ specfact backlog map-fields --provider ado --ado-org <org> --ado-project "<project>"
98
+
99
+ # 2) Run ceremony workflows on real backlog scope
100
+ specfact backlog ceremony standup ado --ado-org <org> --ado-project "<project>" --state any --assignee any --limit 5
101
+ specfact backlog ceremony refinement ado --ado-org <org> --ado-project "<project>" --id <work-item-id> --preview
102
+
103
+ # 3) Keep backlog + spec intent aligned (avoid silent drift)
104
+ specfact backlog verify-readiness --bundle <bundle-name>
105
+ ```
106
+
107
+ Compatibility note: `specfact backlog daily ...` and `specfact backlog refine ...` still exist, but the preferred entrypoints are `backlog ceremony standup` and `backlog ceremony refinement`.
108
+
109
+ For GitHub, replace adapter/org/project with:
110
+ `specfact backlog ceremony standup github --repo-owner <owner> --repo-name <repo> --state any --assignee any --limit 5`
111
+
112
+ **AI IDE quick start**
113
+
114
+ ```bash
115
+ # In your IDE chat (Cursor, VS Code, Copilot, etc.)
116
+ /specfact.01-import my-project --repo .
117
+ ```
118
+
119
+ **Next steps**
120
+
121
+ - **[Core CLI docs](docs/index.md)**
122
+ - **[Reference: command topology](docs/reference/commands.md)**
123
+ - **[Canonical modules docs site](https://modules.specfact.io/)**
124
+
125
+ ---
126
+
127
+ ## Who It Is For
128
+
129
+ - **Vibe coders and new builders** who want to ship fast with guardrails and confidence.
130
+ - **Legacy professionals** who want AI speed without lowering standards.
131
+ - **DevOps and engineering leaders** who need evidence and repeatable workflows.
132
+
133
+ ---
134
+
135
+ ## The Missing Link (Coder + DevOps Bridge)
136
+
137
+ Most tools help **either** coders **or** agile teams. SpecFact does both:
138
+
139
+ - **Backlog sync that is actually strong**: round-trip sync + refinement with GitHub, Azure DevOps, Jira, Linear.
140
+ - **Ceremony support teams can run**: standup, refinement, sprint planning, flow metrics (Scrum/Kanban/SAFe).
141
+ - **Policy + validation**: DoR/DoD/flow checks plus contract enforcement for production-grade stability.
142
+
143
+ Recommended command entrypoints:
144
+ - `specfact backlog ceremony standup ...`
145
+ - `specfact backlog ceremony refinement ...`
146
+ - `specfact backlog verify-readiness --bundle <bundle-name>`
147
+ - `specfact backlog analyze-deps --bundle <bundle-name>`
148
+
149
+ What the backlog readiness and ceremony commands do in practice:
150
+ - Turns team agreements (DoR, DoD, flow checks) into executable checks against your real backlog data.
151
+ - Shows exactly what is missing per item (for example missing acceptance criteria or definition of done).
152
+ - Runs structured ceremony workflows directly from the CLI.
153
+
154
+ Start with:
155
+ - `specfact backlog ceremony standup --help`
156
+ - `specfact backlog verify-readiness --bundle <bundle-name>`
157
+ - `specfact backlog refine --help`
158
+
159
+ ---
160
+
161
+ ## Core CLI Features
162
+
163
+ The `specfact-cli` repository owns the platform-level features that every workflow bundle depends on:
164
+
165
+ - `specfact init` for first-run bootstrap and IDE setup.
166
+ - `specfact module` for install/list/show/search/enable/disable/uninstall/upgrade lifecycle flows.
167
+ - `specfact upgrade` for CLI upgrades.
168
+ - Runtime contracts, registry bootstrapping, trust checks, logging, and shared orchestration.
169
+ - The grouped command surface that mounts installed bundle families under `project`, `backlog`, `code`, `spec`, and `govern`.
170
+
171
+ ## Official Modules Integration
172
+
173
+ Official workflow behavior now ships from `nold-ai/specfact-cli-modules`.
174
+ The core CLI discovers those bundle packages, mounts their command groups, and enforces compatibility, trust, and lifecycle rules.
175
+
176
+ Installed official bundles expose the current grouped surfaces:
177
+
178
+ - `specfact project ...`
179
+ - `specfact backlog ...`
180
+ - `specfact code ...`
181
+ - `specfact spec ...`
182
+ - `specfact govern ...`
183
+
184
+ Install examples:
185
+
186
+ ```bash
187
+ specfact module install nold-ai/specfact-project
188
+ specfact module install nold-ai/specfact-backlog
189
+ specfact module install nold-ai/specfact-codebase
190
+ specfact module install nold-ai/specfact-spec
191
+ specfact module install nold-ai/specfact-govern
192
+ ```
193
+
194
+ If startup warns that bundled modules are missing or outdated, run:
195
+
196
+ ```bash
197
+ specfact module init --scope project
198
+ specfact module init
199
+ ```
200
+
201
+ 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.
202
+ Use `https://modules.specfact.io/` for the in-depth backlog, project, spec, govern, adapter, and module-authoring guides.
203
+
204
+ ---
205
+
206
+ ## How It Works (High Level)
207
+
208
+ 1. **Bootstrap**: install the CLI and initialize the official bundles you need.
209
+ 2. **Analyze or sync**: import code, connect backlog systems, or sync external artifacts into project bundles.
210
+ 3. **Validate**: run spec, governance, and sidecar validation flows before implementation or release.
211
+ 4. **Iterate safely**: use module-provided workflows while the core runtime keeps command mounting, trust, and lifecycle consistent.
212
+
213
+ ## Where SpecFact Fits
214
+
215
+ SpecFact complements your stack rather than replacing it.
216
+
217
+ - **Spec-Kit/OpenSpec** for authoring and change tracking
218
+ - **Backlog tools** for planning and delivery
219
+ - **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.4"
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.4"
@@ -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.4"
46
46
 
47
47
  __all__ = ["__version__"]