specfact-cli 0.26.17__tar.gz → 0.28.0__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 (332) hide show
  1. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/.gitignore +18 -7
  2. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/PKG-INFO +104 -234
  3. specfact_cli-0.28.0/README.md +226 -0
  4. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/pyproject.toml +35 -6
  5. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/__init__.py +1 -1
  6. specfact_cli-0.28.0/src/specfact_cli/__init__.py +13 -0
  7. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/analyzers/graph_analyzer.py +6 -6
  8. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/cli.py +177 -72
  9. specfact_cli-0.28.0/src/specfact_cli/commands/analyze.py +6 -0
  10. specfact_cli-0.28.0/src/specfact_cli/commands/auth.py +6 -0
  11. specfact_cli-0.28.0/src/specfact_cli/commands/backlog_commands.py +6 -0
  12. specfact_cli-0.28.0/src/specfact_cli/commands/contract_cmd.py +6 -0
  13. specfact_cli-0.28.0/src/specfact_cli/commands/drift.py +6 -0
  14. specfact_cli-0.28.0/src/specfact_cli/commands/enforce.py +6 -0
  15. specfact_cli-0.28.0/src/specfact_cli/commands/generate.py +6 -0
  16. specfact_cli-0.28.0/src/specfact_cli/commands/import_cmd.py +6 -0
  17. specfact_cli-0.28.0/src/specfact_cli/commands/init.py +6 -0
  18. specfact_cli-0.28.0/src/specfact_cli/commands/migrate.py +6 -0
  19. specfact_cli-0.28.0/src/specfact_cli/commands/plan.py +6 -0
  20. specfact_cli-0.28.0/src/specfact_cli/commands/project_cmd.py +6 -0
  21. specfact_cli-0.28.0/src/specfact_cli/commands/repro.py +6 -0
  22. specfact_cli-0.28.0/src/specfact_cli/commands/sdd.py +6 -0
  23. specfact_cli-0.28.0/src/specfact_cli/commands/spec.py +6 -0
  24. specfact_cli-0.28.0/src/specfact_cli/commands/sync.py +6 -0
  25. specfact_cli-0.28.0/src/specfact_cli/commands/update.py +6 -0
  26. specfact_cli-0.28.0/src/specfact_cli/commands/validate.py +6 -0
  27. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/generators/persona_exporter.py +1 -1
  28. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/merge/resolver.py +1 -1
  29. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/models/plan.py +4 -1
  30. specfact_cli-0.28.0/src/specfact_cli/modules/__init__.py +1 -0
  31. specfact_cli-0.28.0/src/specfact_cli/modules/analyze/module-package.yaml +10 -0
  32. specfact_cli-0.28.0/src/specfact_cli/modules/analyze/src/__init__.py +1 -0
  33. specfact_cli-0.28.0/src/specfact_cli/modules/analyze/src/app.py +6 -0
  34. specfact_cli-0.28.0/src/specfact_cli/modules/auth/module-package.yaml +10 -0
  35. specfact_cli-0.28.0/src/specfact_cli/modules/auth/src/__init__.py +1 -0
  36. specfact_cli-0.28.0/src/specfact_cli/modules/auth/src/app.py +6 -0
  37. specfact_cli-0.28.0/src/specfact_cli/modules/backlog/module-package.yaml +10 -0
  38. specfact_cli-0.28.0/src/specfact_cli/modules/backlog/src/__init__.py +1 -0
  39. specfact_cli-0.28.0/src/specfact_cli/modules/backlog/src/app.py +6 -0
  40. specfact_cli-0.26.17/src/specfact_cli/commands/backlog_commands.py → specfact_cli-0.28.0/src/specfact_cli/modules/backlog/src/commands.py +4 -2
  41. specfact_cli-0.28.0/src/specfact_cli/modules/contract/module-package.yaml +10 -0
  42. specfact_cli-0.28.0/src/specfact_cli/modules/contract/src/__init__.py +1 -0
  43. specfact_cli-0.28.0/src/specfact_cli/modules/contract/src/app.py +6 -0
  44. specfact_cli-0.26.17/src/specfact_cli/commands/contract_cmd.py → specfact_cli-0.28.0/src/specfact_cli/modules/contract/src/commands.py +6 -3
  45. specfact_cli-0.28.0/src/specfact_cli/modules/drift/module-package.yaml +10 -0
  46. specfact_cli-0.28.0/src/specfact_cli/modules/drift/src/__init__.py +1 -0
  47. specfact_cli-0.28.0/src/specfact_cli/modules/drift/src/app.py +6 -0
  48. specfact_cli-0.28.0/src/specfact_cli/modules/enforce/module-package.yaml +11 -0
  49. specfact_cli-0.28.0/src/specfact_cli/modules/enforce/src/__init__.py +1 -0
  50. specfact_cli-0.28.0/src/specfact_cli/modules/enforce/src/app.py +6 -0
  51. specfact_cli-0.26.17/src/specfact_cli/commands/enforce.py → specfact_cli-0.28.0/src/specfact_cli/modules/enforce/src/commands.py +1 -1
  52. specfact_cli-0.28.0/src/specfact_cli/modules/generate/module-package.yaml +11 -0
  53. specfact_cli-0.28.0/src/specfact_cli/modules/generate/src/__init__.py +1 -0
  54. specfact_cli-0.28.0/src/specfact_cli/modules/generate/src/app.py +6 -0
  55. specfact_cli-0.26.17/src/specfact_cli/commands/generate.py → specfact_cli-0.28.0/src/specfact_cli/modules/generate/src/commands.py +1 -1
  56. specfact_cli-0.28.0/src/specfact_cli/modules/import_cmd/module-package.yaml +10 -0
  57. specfact_cli-0.28.0/src/specfact_cli/modules/import_cmd/src/__init__.py +1 -0
  58. specfact_cli-0.28.0/src/specfact_cli/modules/import_cmd/src/app.py +6 -0
  59. specfact_cli-0.28.0/src/specfact_cli/modules/init/module-package.yaml +10 -0
  60. specfact_cli-0.28.0/src/specfact_cli/modules/init/src/__init__.py +1 -0
  61. specfact_cli-0.28.0/src/specfact_cli/modules/init/src/app.py +6 -0
  62. specfact_cli-0.26.17/src/specfact_cli/commands/init.py → specfact_cli-0.28.0/src/specfact_cli/modules/init/src/commands.py +30 -0
  63. specfact_cli-0.28.0/src/specfact_cli/modules/migrate/module-package.yaml +10 -0
  64. specfact_cli-0.28.0/src/specfact_cli/modules/migrate/src/__init__.py +1 -0
  65. specfact_cli-0.28.0/src/specfact_cli/modules/migrate/src/app.py +6 -0
  66. specfact_cli-0.28.0/src/specfact_cli/modules/plan/module-package.yaml +11 -0
  67. specfact_cli-0.28.0/src/specfact_cli/modules/plan/src/__init__.py +1 -0
  68. specfact_cli-0.28.0/src/specfact_cli/modules/plan/src/app.py +6 -0
  69. specfact_cli-0.26.17/src/specfact_cli/commands/plan.py → specfact_cli-0.28.0/src/specfact_cli/modules/plan/src/commands.py +41 -24
  70. specfact_cli-0.28.0/src/specfact_cli/modules/project/module-package.yaml +10 -0
  71. specfact_cli-0.28.0/src/specfact_cli/modules/project/src/__init__.py +1 -0
  72. specfact_cli-0.28.0/src/specfact_cli/modules/project/src/app.py +6 -0
  73. specfact_cli-0.26.17/src/specfact_cli/commands/project_cmd.py → specfact_cli-0.28.0/src/specfact_cli/modules/project/src/commands.py +6 -9
  74. specfact_cli-0.28.0/src/specfact_cli/modules/repro/module-package.yaml +10 -0
  75. specfact_cli-0.28.0/src/specfact_cli/modules/repro/src/__init__.py +1 -0
  76. specfact_cli-0.28.0/src/specfact_cli/modules/repro/src/app.py +6 -0
  77. specfact_cli-0.28.0/src/specfact_cli/modules/sdd/module-package.yaml +10 -0
  78. specfact_cli-0.28.0/src/specfact_cli/modules/sdd/src/__init__.py +1 -0
  79. specfact_cli-0.28.0/src/specfact_cli/modules/sdd/src/app.py +6 -0
  80. specfact_cli-0.28.0/src/specfact_cli/modules/spec/module-package.yaml +10 -0
  81. specfact_cli-0.28.0/src/specfact_cli/modules/spec/src/__init__.py +1 -0
  82. specfact_cli-0.28.0/src/specfact_cli/modules/spec/src/app.py +6 -0
  83. specfact_cli-0.28.0/src/specfact_cli/modules/sync/module-package.yaml +12 -0
  84. specfact_cli-0.28.0/src/specfact_cli/modules/sync/src/__init__.py +1 -0
  85. specfact_cli-0.28.0/src/specfact_cli/modules/sync/src/app.py +6 -0
  86. specfact_cli-0.26.17/src/specfact_cli/commands/sync.py → specfact_cli-0.28.0/src/specfact_cli/modules/sync/src/commands.py +96 -9
  87. specfact_cli-0.28.0/src/specfact_cli/modules/upgrade/module-package.yaml +10 -0
  88. specfact_cli-0.28.0/src/specfact_cli/modules/upgrade/src/__init__.py +1 -0
  89. specfact_cli-0.28.0/src/specfact_cli/modules/upgrade/src/app.py +6 -0
  90. specfact_cli-0.28.0/src/specfact_cli/modules/validate/module-package.yaml +10 -0
  91. specfact_cli-0.28.0/src/specfact_cli/modules/validate/src/__init__.py +1 -0
  92. specfact_cli-0.28.0/src/specfact_cli/modules/validate/src/app.py +6 -0
  93. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/parsers/persona_importer.py +2 -2
  94. specfact_cli-0.28.0/src/specfact_cli/registry/__init__.py +12 -0
  95. specfact_cli-0.28.0/src/specfact_cli/registry/bootstrap.py +16 -0
  96. specfact_cli-0.28.0/src/specfact_cli/registry/help_cache.py +141 -0
  97. specfact_cli-0.28.0/src/specfact_cli/registry/metadata.py +19 -0
  98. specfact_cli-0.28.0/src/specfact_cli/registry/module_packages.py +232 -0
  99. specfact_cli-0.28.0/src/specfact_cli/registry/module_state.py +60 -0
  100. specfact_cli-0.28.0/src/specfact_cli/registry/registry.py +115 -0
  101. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/utils/git.py +3 -3
  102. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/utils/ide_setup.py +1 -0
  103. specfact_cli-0.28.0/src/specfact_cli/utils/persona_ownership.py +34 -0
  104. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/utils/source_scanner.py +14 -11
  105. specfact_cli-0.26.17/README.md +0 -356
  106. specfact_cli-0.26.17/src/specfact_cli/__init__.py +0 -14
  107. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/LICENSE.md +0 -0
  108. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/mappings/node-async.yaml +0 -0
  109. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/mappings/python-async.yaml +0 -0
  110. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/mappings/speckit-default.yaml +0 -0
  111. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/prompts/shared/cli-enforcement.md +0 -0
  112. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/prompts/specfact.01-import.md +0 -0
  113. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/prompts/specfact.02-plan.md +0 -0
  114. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/prompts/specfact.03-review.md +0 -0
  115. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/prompts/specfact.04-sdd.md +0 -0
  116. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/prompts/specfact.05-enforce.md +0 -0
  117. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/prompts/specfact.06-sync.md +0 -0
  118. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/prompts/specfact.07-contracts.md +0 -0
  119. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/prompts/specfact.backlog-daily.md +0 -0
  120. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/prompts/specfact.backlog-refine.md +0 -0
  121. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/prompts/specfact.compare.md +0 -0
  122. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/prompts/specfact.sync-backlog.md +0 -0
  123. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/prompts/specfact.validate.md +0 -0
  124. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/schemas/deviation.schema.json +0 -0
  125. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/schemas/plan.schema.json +0 -0
  126. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/schemas/protocol.schema.json +0 -0
  127. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/templates/backlog/defaults/defect_v1.yaml +0 -0
  128. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/templates/backlog/defaults/enabler_v1.yaml +0 -0
  129. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/templates/backlog/defaults/spike_v1.yaml +0 -0
  130. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/templates/backlog/defaults/user_story_v1.yaml +0 -0
  131. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/templates/backlog/field_mappings/ado_agile.yaml +0 -0
  132. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/templates/backlog/field_mappings/ado_default.yaml +0 -0
  133. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/templates/backlog/field_mappings/ado_kanban.yaml +0 -0
  134. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/templates/backlog/field_mappings/ado_safe.yaml +0 -0
  135. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/templates/backlog/field_mappings/ado_scrum.yaml +0 -0
  136. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/templates/backlog/frameworks/safe/safe_feature_v1.yaml +0 -0
  137. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/templates/backlog/frameworks/scrum/user_story_v1.yaml +0 -0
  138. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/templates/backlog/personas/developer/developer_task_v1.yaml +0 -0
  139. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/templates/backlog/personas/product-owner/user_story_v1.yaml +0 -0
  140. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/templates/backlog/providers/ado/work_item_v1.yaml +0 -0
  141. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/templates/github-action.yml.j2 +0 -0
  142. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/templates/persona/architect.md.j2 +0 -0
  143. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/templates/persona/developer.md.j2 +0 -0
  144. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/templates/persona/product-owner.md.j2 +0 -0
  145. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/templates/plan.bundle.yaml.j2 +0 -0
  146. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/templates/pr-template.md.j2 +0 -0
  147. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/templates/protocol.yaml.j2 +0 -0
  148. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/resources/templates/telemetry.yaml.example +0 -0
  149. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/__main__.py +0 -0
  150. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/adapters/__init__.py +0 -0
  151. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/adapters/ado.py +0 -0
  152. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/adapters/backlog_base.py +0 -0
  153. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/adapters/base.py +0 -0
  154. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/adapters/github.py +0 -0
  155. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/adapters/openspec.py +0 -0
  156. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/adapters/openspec_parser.py +0 -0
  157. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/adapters/registry.py +0 -0
  158. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/adapters/speckit.py +0 -0
  159. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/agents/__init__.py +0 -0
  160. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/agents/analyze_agent.py +0 -0
  161. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/agents/base.py +0 -0
  162. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/agents/plan_agent.py +0 -0
  163. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/agents/registry.py +0 -0
  164. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/agents/sync_agent.py +0 -0
  165. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/analyzers/__init__.py +0 -0
  166. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/analyzers/ambiguity_scanner.py +0 -0
  167. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/analyzers/code_analyzer.py +0 -0
  168. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/analyzers/constitution_evidence_extractor.py +0 -0
  169. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/analyzers/contract_extractor.py +0 -0
  170. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/analyzers/control_flow_analyzer.py +0 -0
  171. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/analyzers/relationship_mapper.py +0 -0
  172. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/analyzers/requirement_extractor.py +0 -0
  173. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/analyzers/test_pattern_extractor.py +0 -0
  174. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/backlog/__init__.py +0 -0
  175. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/backlog/adapters/__init__.py +0 -0
  176. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/backlog/adapters/base.py +0 -0
  177. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/backlog/adapters/local_yaml_adapter.py +0 -0
  178. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/backlog/ai_refiner.py +0 -0
  179. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/backlog/converter.py +0 -0
  180. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/backlog/filters.py +0 -0
  181. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/backlog/format_detector.py +0 -0
  182. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/backlog/formats/__init__.py +0 -0
  183. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/backlog/formats/base.py +0 -0
  184. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/backlog/formats/markdown_format.py +0 -0
  185. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/backlog/formats/structured_format.py +0 -0
  186. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/backlog/mappers/__init__.py +0 -0
  187. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/backlog/mappers/ado_mapper.py +0 -0
  188. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/backlog/mappers/base.py +0 -0
  189. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/backlog/mappers/github_mapper.py +0 -0
  190. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/backlog/mappers/template_config.py +0 -0
  191. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/backlog/template_detector.py +0 -0
  192. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/commands/__init__.py +0 -0
  193. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/common/__init__.py +0 -0
  194. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/common/logger_setup.py +0 -0
  195. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/common/logging_utils.py +0 -0
  196. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/common/text_utils.py +0 -0
  197. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/common/utils.py +0 -0
  198. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/comparators/__init__.py +0 -0
  199. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/comparators/plan_comparator.py +0 -0
  200. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/contracts/__init__.py +0 -0
  201. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/contracts/crosshair_props.py +0 -0
  202. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/enrichers/constitution_enricher.py +0 -0
  203. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/enrichers/plan_enricher.py +0 -0
  204. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/generators/__init__.py +0 -0
  205. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/generators/contract_generator.py +0 -0
  206. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/generators/openapi_extractor.py +0 -0
  207. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/generators/plan_generator.py +0 -0
  208. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/generators/protocol_generator.py +0 -0
  209. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/generators/report_generator.py +0 -0
  210. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/generators/task_generator.py +0 -0
  211. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/generators/test_to_openapi.py +0 -0
  212. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/generators/workflow_generator.py +0 -0
  213. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/importers/__init__.py +0 -0
  214. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/importers/speckit_converter.py +0 -0
  215. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/importers/speckit_scanner.py +0 -0
  216. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/integrations/__init__.py +0 -0
  217. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/integrations/specmatic.py +0 -0
  218. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/merge/__init__.py +0 -0
  219. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/migrations/__init__.py +0 -0
  220. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/migrations/plan_migrator.py +0 -0
  221. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/models/__init__.py +0 -0
  222. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/models/backlog_item.py +0 -0
  223. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/models/bridge.py +0 -0
  224. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/models/capabilities.py +0 -0
  225. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/models/change.py +0 -0
  226. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/models/contract.py +0 -0
  227. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/models/deviation.py +0 -0
  228. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/models/dor_config.py +0 -0
  229. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/models/enforcement.py +0 -0
  230. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/models/persona_template.py +0 -0
  231. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/models/project.py +0 -0
  232. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/models/protocol.py +0 -0
  233. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/models/quality.py +0 -0
  234. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/models/sdd.py +0 -0
  235. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/models/source_tracking.py +0 -0
  236. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/models/task.py +0 -0
  237. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/modes/__init__.py +0 -0
  238. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/modes/detector.py +0 -0
  239. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/modes/router.py +0 -0
  240. /specfact_cli-0.26.17/src/specfact_cli/commands/analyze.py → /specfact_cli-0.28.0/src/specfact_cli/modules/analyze/src/commands.py +0 -0
  241. /specfact_cli-0.26.17/src/specfact_cli/commands/auth.py → /specfact_cli-0.28.0/src/specfact_cli/modules/auth/src/commands.py +0 -0
  242. /specfact_cli-0.26.17/src/specfact_cli/commands/drift.py → /specfact_cli-0.28.0/src/specfact_cli/modules/drift/src/commands.py +0 -0
  243. /specfact_cli-0.26.17/src/specfact_cli/commands/import_cmd.py → /specfact_cli-0.28.0/src/specfact_cli/modules/import_cmd/src/commands.py +0 -0
  244. /specfact_cli-0.26.17/src/specfact_cli/commands/migrate.py → /specfact_cli-0.28.0/src/specfact_cli/modules/migrate/src/commands.py +0 -0
  245. /specfact_cli-0.26.17/src/specfact_cli/commands/repro.py → /specfact_cli-0.28.0/src/specfact_cli/modules/repro/src/commands.py +0 -0
  246. /specfact_cli-0.26.17/src/specfact_cli/commands/sdd.py → /specfact_cli-0.28.0/src/specfact_cli/modules/sdd/src/commands.py +0 -0
  247. /specfact_cli-0.26.17/src/specfact_cli/commands/spec.py → /specfact_cli-0.28.0/src/specfact_cli/modules/spec/src/commands.py +0 -0
  248. /specfact_cli-0.26.17/src/specfact_cli/commands/update.py → /specfact_cli-0.28.0/src/specfact_cli/modules/upgrade/src/commands.py +0 -0
  249. /specfact_cli-0.26.17/src/specfact_cli/commands/validate.py → /specfact_cli-0.28.0/src/specfact_cli/modules/validate/src/commands.py +0 -0
  250. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/parsers/__init__.py +0 -0
  251. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/resources/semgrep/async.yml +0 -0
  252. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/resources/semgrep/code-quality.yml +0 -0
  253. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/resources/semgrep/feature-detection.yml +0 -0
  254. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/runtime.py +0 -0
  255. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/sync/__init__.py +0 -0
  256. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/sync/bridge_probe.py +0 -0
  257. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/sync/bridge_sync.py +0 -0
  258. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/sync/bridge_watch.py +0 -0
  259. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/sync/change_detector.py +0 -0
  260. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/sync/code_to_spec.py +0 -0
  261. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/sync/drift_detector.py +0 -0
  262. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/sync/repository_sync.py +0 -0
  263. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/sync/spec_to_code.py +0 -0
  264. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/sync/spec_to_tests.py +0 -0
  265. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/sync/watcher.py +0 -0
  266. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/sync/watcher_enhanced.py +0 -0
  267. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/telemetry.py +0 -0
  268. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/templates/__init__.py +0 -0
  269. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/templates/bridge_templates.py +0 -0
  270. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/templates/defaults/defect_v1.yaml +0 -0
  271. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/templates/defaults/enabler_v1.yaml +0 -0
  272. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/templates/defaults/spike_v1.yaml +0 -0
  273. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/templates/defaults/user_story_v1.yaml +0 -0
  274. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/templates/frameworks/scrum/user_story_v1.yaml +0 -0
  275. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/templates/personas/product-owner/user_story_v1.yaml +0 -0
  276. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/templates/providers/ado/work_item_v1.yaml +0 -0
  277. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/templates/registry.py +0 -0
  278. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/templates/specification_templates.py +0 -0
  279. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/utils/__init__.py +0 -0
  280. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/utils/acceptance_criteria.py +0 -0
  281. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/utils/auth_tokens.py +0 -0
  282. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/utils/bundle_loader.py +0 -0
  283. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/utils/code_change_detector.py +0 -0
  284. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/utils/console.py +0 -0
  285. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/utils/content_sanitizer.py +0 -0
  286. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/utils/context_detection.py +0 -0
  287. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/utils/enrichment_context.py +0 -0
  288. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/utils/enrichment_parser.py +0 -0
  289. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/utils/env_manager.py +0 -0
  290. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/utils/feature_keys.py +0 -0
  291. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/utils/github_annotations.py +0 -0
  292. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/utils/incremental_check.py +0 -0
  293. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/utils/metadata.py +0 -0
  294. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/utils/optional_deps.py +0 -0
  295. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/utils/performance.py +0 -0
  296. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/utils/progress.py +0 -0
  297. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/utils/progressive_disclosure.py +0 -0
  298. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/utils/prompts.py +0 -0
  299. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/utils/sdd_discovery.py +0 -0
  300. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/utils/startup_checks.py +0 -0
  301. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/utils/structure.py +0 -0
  302. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/utils/structured_io.py +0 -0
  303. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/utils/suggestions.py +0 -0
  304. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/utils/terminal.py +0 -0
  305. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/utils/yaml_utils.py +0 -0
  306. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/validators/__init__.py +0 -0
  307. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/validators/agile_validation.py +0 -0
  308. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/validators/change_proposal_integration.py +0 -0
  309. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/validators/cli_first_validator.py +0 -0
  310. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/validators/contract_validator.py +0 -0
  311. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/validators/fsm.py +0 -0
  312. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/validators/repro_checker.py +0 -0
  313. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/validators/schema.py +0 -0
  314. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/validators/sidecar/__init__.py +0 -0
  315. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/validators/sidecar/contract_populator.py +0 -0
  316. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/validators/sidecar/crosshair_runner.py +0 -0
  317. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/validators/sidecar/crosshair_summary.py +0 -0
  318. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/validators/sidecar/dependency_installer.py +0 -0
  319. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/validators/sidecar/framework_detector.py +0 -0
  320. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/validators/sidecar/frameworks/__init__.py +0 -0
  321. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/validators/sidecar/frameworks/base.py +0 -0
  322. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/validators/sidecar/frameworks/django.py +0 -0
  323. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/validators/sidecar/frameworks/drf.py +0 -0
  324. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/validators/sidecar/frameworks/fastapi.py +0 -0
  325. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/validators/sidecar/frameworks/flask.py +0 -0
  326. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/validators/sidecar/harness_generator.py +0 -0
  327. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/validators/sidecar/models.py +0 -0
  328. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/validators/sidecar/orchestrator.py +0 -0
  329. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/validators/sidecar/specmatic_runner.py +0 -0
  330. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/validators/sidecar/unannotated_detector.py +0 -0
  331. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/versioning/__init__.py +0 -0
  332. {specfact_cli-0.26.17 → specfact_cli-0.28.0}/src/specfact_cli/versioning/analyzer.py +0 -0
@@ -95,15 +95,21 @@ docs/internal/
95
95
 
96
96
  # Ignore .specify artifacts
97
97
  .specify/
98
- .cursor/commands/speckit.*
98
+ .cursor/commands/speckit.*.md
99
99
  /specs/
100
100
 
101
- # Include openspec/specs/ directory
102
- !openspec/
103
-
104
101
  # Ignore specfact-cli prompt templates
105
- .cursor/commands/specfact-*
106
- .github/prompts/specfact-*
102
+ .cursor/commands/specfact.*.md
103
+ .cursor/commands/opsx-*.md
104
+
105
+ .cursor/skills/openspec-*/
106
+
107
+ .github/prompts/specfact.*.md
108
+ .github/prompts/opsx-*.md
109
+
110
+ .claude/commands/opsx/
111
+ .claude/skills/openspec-*/
112
+ !.claude/skills/openspec-workflows/
107
113
 
108
114
  # Semgrep rules (generated from tools/semgrep/ - source rules are versioned)
109
115
  .semgrep/
@@ -127,4 +133,9 @@ findings.json
127
133
  answers.json
128
134
  questions.json
129
135
  docs/project-plans/
130
- harness_contracts.py
136
+ harness_contracts.py
137
+
138
+ # semgrep artifacts
139
+ lang.json
140
+ Language.ml
141
+ Language.mli
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: specfact-cli
3
- Version: 0.26.17
4
- Summary: Brownfield-first CLI: Reverse engineer legacy Python specs enforced contracts. Automate legacy code documentation and prevent modernization regressions.
3
+ Version: 0.28.0
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
7
7
  Project-URL: Documentation, https://github.com/nold-ai/specfact-cli#readme
@@ -211,7 +211,7 @@ License: Apache License
211
211
  See the License for the specific language governing permissions and
212
212
  limitations under the License.
213
213
  License-File: LICENSE.md
214
- Keywords: async,beartype,brownfield,cli,code-documentation,code-to-spec,contract-driven-development,contracts,crosshair,icontract,legacy-code,modernization,property-based-testing,quality-gates,refactoring,reverse-engineering,spec-first,specfact,state-machine,tdd,technical-debt
214
+ Keywords: agile,backlog,beartype,ceremonies,cli,contract-driven-development,contracts,crosshair,devops,existing-code,icontract,kanban,legacy,modernization,policy-as-code,property-based-testing,safe,scrum,specfact,specs,tdd,validation
215
215
  Classifier: Development Status :: 4 - Beta
216
216
  Classifier: Intended Audience :: Developers
217
217
  Classifier: License :: OSI Approved :: Apache Software License
@@ -278,319 +278,194 @@ Description-Content-Type: text/markdown
278
278
 
279
279
  # SpecFact CLI
280
280
 
281
- > **Brownfield-first legacy code modernization with runtime contract enforcement.**
282
- > Analyze existing Python code Extract specs Find gaps Enforce contracts Prevent regressions
281
+ > **The "swiss knife" CLI that turns any codebase into a clear, safe, and shippable workflow.**
282
+ > Keep backlog, specs, tests, and code in sync so AI-assisted changes do not break production.
283
+ > Works for brand-new projects and long-lived codebases - even if you are new to coding.
283
284
 
284
285
  **No API keys required. Works offline. Zero vendor lock-in.**
285
286
 
286
- [![PyPI version](https://img.shields.io/pypi/v/specfact-cli.svg)](https://pypi.org/project/specfact-cli/)
287
+ [![PyPI version](https://img.shields.io/pypi/v/specfact-cli.svg?color=22c55e)](https://pypi.org/project/specfact-cli/)
287
288
  [![Python versions](https://img.shields.io/pypi/pyversions/specfact-cli.svg)](https://pypi.org/project/specfact-cli/)
288
289
  [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE.md)
289
- [![Status](https://img.shields.io/badge/status-beta-orange.svg)](https://github.com/nold-ai/specfact-cli)
290
+ [![Status](https://img.shields.io/badge/status-beta-F59E0B.svg)](https://github.com/nold-ai/specfact-cli)
290
291
 
291
292
  <div align="center">
292
293
 
293
- **[🌐 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)**
294
+ **[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)**
294
295
 
295
296
  </div>
296
297
 
297
- ## 🌐 SpecFact Domains
298
-
299
- - **[specfact.com](https://specfact.com)** - Commercial landing page (marketing, pricing, enterprise)
300
- - **[specfact.io](https://specfact.io)** - Product ecosystem hub (CLI reference, integrations, changelog, product docs)
301
- - **[specfact.dev](https://specfact.dev)** - Developer community (tutorials, guides, blog, community content) ⭐ **For developers**
302
- - **[docs.specfact.io](https://docs.specfact.io/)** - Complete online documentation
303
-
304
- ---
305
-
306
- ## What is SpecFact?
307
-
308
- **SpecFact CLI analyzes your existing Python code** to automatically extract specifications, find missing tests and contracts, and enforce them to prevent bugs during modernization.
309
-
310
- **Perfect for:** Teams modernizing legacy Python systems who can't afford production bugs during migration.
311
-
312
- ### Why SpecFact?
313
-
314
- AI coding assistants are powerful but unpredictable when requirements live in chat history. SpecFact adds a **brownfield-first analysis workflow** that understands existing code, extracts specs automatically, and enforces them as runtime contracts, giving you deterministic, reviewable outputs.
315
-
316
- **Key outcomes:**
317
-
318
- - **Understand legacy code** in minutes, not weeks (automatic spec extraction)
319
- - **Find gaps** in tests, contracts, and documentation automatically
320
- - **Prevent regressions** with runtime contract enforcement during modernization
321
- - **Works with the tools you already use**: VS Code, Cursor, GitHub Actions, pre-commit hooks
322
- - **No API keys required** - Works completely offline
323
-
324
298
  ---
325
299
 
326
- ## 🚀 Quick Start
300
+ ## Start Here (60 seconds)
327
301
 
328
- ### Step 1: Install SpecFact CLI
302
+ ### Install
329
303
 
330
304
  ```bash
331
- # Zero-install (recommended - no setup needed)
305
+ # Zero-install (recommended)
332
306
  uvx specfact-cli@latest
333
307
 
334
308
  # Or install globally
335
309
  pip install -U specfact-cli
336
310
  ```
337
311
 
338
- ### Step 2: Initialize IDE Integration
339
-
340
- **Set up slash commands in your IDE (Cursor, VS Code, Copilot, etc.):**
312
+ ### Initialize IDE Integration (optional but recommended)
341
313
 
342
314
  ```bash
343
- # Auto-detect IDE and initialize
344
315
  specfact init
345
-
346
- # Or specify IDE explicitly
347
316
  specfact init --ide cursor
348
317
  specfact init --ide vscode
349
-
350
- # Install required packages for contract enhancement
351
- specfact init --ide cursor --install-deps
352
318
  ```
353
319
 
354
- **What this does:**
355
-
356
- - Copies prompt templates to your IDE
357
- - Makes slash commands available in your IDE's AI chat
358
- - Optionally installs required packages (`beartype`, `icontract`, `crosshair-tool`, `pytest`)
359
-
360
- ### Step 3: Run Your First Analysis
361
-
362
- **In your IDE's AI chat, use the slash command:**
363
-
364
- ```bash
365
- # In IDE chat (Cursor, VS Code, Copilot, etc.)
366
- /specfact.01-import my-project --repo .
367
- ```
368
-
369
- **Or use the CLI directly:**
320
+ ### Run Your First Flow
370
321
 
371
322
  ```bash
372
- # Analyze legacy codebase (most common use case)
323
+ # Analyze an existing codebase
373
324
  specfact import from-code my-project --repo .
374
325
 
375
- # Or validate external codebase without modifying source (sidecar validation)
326
+ # Validate external code without modifying source
376
327
  specfact validate sidecar init my-project /path/to/repo
377
328
  specfact validate sidecar run my-project /path/to/repo
378
329
  ```
379
330
 
380
- **⏱️ Timing:** Analysis typically takes **10-15 minutes** for typical repositories (e.g., `specfact-cli` itself with several hundred features & contracts). Smaller codebases may complete in 2-5 minutes. Large codebases (3000+ features) may take 15-30 minutes, but progress reporting shows real-time status. The analysis performs AST parsing, Semgrep pattern detection, and Specmatic integration.
331
+ **AI IDE quick start**
381
332
 
382
- **💾 Checkpointing:** Features are saved immediately after initial analysis, so you can safely interrupt and resume the import process without losing progress.
383
-
384
- **⚡ Performance:** Optimized for large codebases with pre-computed AST parsing and file hashes (5-15x faster than previous versions).
333
+ ```bash
334
+ # In your IDE chat (Cursor, VS Code, Copilot, etc.)
335
+ /specfact.01-import my-project --repo .
336
+ ```
385
337
 
386
- **That's it!** SpecFact will extract features and stories from your code, find missing tests and contracts, and generate a plan bundle you can enforce.
338
+ **Next steps**
387
339
 
388
- 👉 **[Getting Started Guide](docs/getting-started/README.md)** - Complete walkthrough with examples
389
- 👉 **[AI IDE Workflow Guide](docs/guides/ai-ide-workflow.md)** ⭐ - Complete AI-assisted development workflow
340
+ - **[Getting Started](docs/getting-started/README.md)**
341
+ - **[AI IDE Workflow](docs/guides/ai-ide-workflow.md)**
342
+ - **[Command Chains](docs/guides/command-chains.md)**
390
343
 
391
344
  ---
392
345
 
393
- ## 🎯 Find Your Path
394
-
395
- ### New to SpecFact?
396
-
397
- **Primary Goal**: Analyze legacy Python → find gaps → enforce contracts
398
-
399
- 1. **[Getting Started](docs/getting-started/README.md)** - Install and run your first command
400
- 2. **[Command Chains Reference](docs/guides/command-chains.md)** ⭐ **NEW** - Complete workflows from start to finish
401
- 3. **[Common Tasks Quick Reference](docs/guides/common-tasks.md)** ⭐ **NEW** - Quick answers to "How do I X?"
402
- 4. **[Modernizing Legacy Code?](docs/guides/brownfield-engineer.md)** ⭐ - Brownfield-first guide
403
- 5. **[The Brownfield Journey](docs/guides/brownfield-journey.md)** ⭐ - Complete modernization workflow
404
-
405
- **Time**: < 10 minutes | **Result**: Running your first brownfield analysis
406
-
407
- ### Using AI IDEs? (Cursor, Copilot, Claude)
346
+ ## Proof and Expectations
408
347
 
409
- **Primary Goal**: Let SpecFact find gaps, use your AI IDE to fix them
410
-
411
- 👉 **[AI IDE Workflow Guide](docs/guides/ai-ide-workflow.md)** **NEW** - Complete AI-assisted development workflow
412
-
413
- ### Working with a Team?
414
-
415
- **Primary Goal**: Enable team collaboration with role-based workflows
416
-
417
- 👉 **[Agile/Scrum Workflows](docs/guides/agile-scrum-workflows.md)** ⭐ - Persona-based team collaboration
418
-
419
- ### Need Integrations?
420
-
421
- **Primary Goal**: Integrate with Spec-Kit, OpenSpec, Specmatic, or DevOps tools
422
-
423
- 👉 **[Integrations Overview](docs/guides/integrations-overview.md)** ⭐ **NEW** - Complete guide to all integrations
348
+ - **Typical runtime**: 2-15 minutes depending on repo size and complexity.
349
+ - **Checkpointing**: Progress is saved during analysis so you can resume safely.
350
+ - **Performance**: Optimized for large codebases with cached parsing and file hashes.
424
351
 
425
352
  ---
426
353
 
427
- ## Key Features
428
-
429
- ### 🔍 Code Analysis
430
-
431
- - **Reverse engineer** legacy code into documented specs
432
- - **Find gaps** in tests, contracts, and documentation
433
- - **Works with** any Python project (no special setup required)
434
-
435
- 👉 **[Command Chains](docs/guides/command-chains.md)** - See complete workflows
436
-
437
- ### 🛡️ Contract Enforcement
438
-
439
- - **Prevent regressions** with runtime contract validation
440
- - **CI/CD integration** - Block bad code from merging
441
- - **Works offline** - No cloud required
442
- - **Sidecar validation** - Validate external codebases without modifying source code
443
-
444
- 👉 **[Command Reference](docs/reference/commands.md)** - All enforcement commands
445
- 👉 **[Sidecar Validation Guide](docs/guides/sidecar-validation.md)** - Validate external codebases
446
-
447
- ### 👥 Team Collaboration
448
-
449
- - **Role-based workflows** - Product Owners, Architects, Developers work in parallel
450
- - **Markdown-based** - No YAML editing required
451
- - **Agile/scrum ready** - DoR checklists, story points, dependencies
452
- - **Backlog standardization** 🆕 - Template-driven refinement with persona/framework filtering
453
- - **Sprint/iteration filtering** 🆕 - Filter by sprint, release, iteration for agile workflows
454
- - **Interactive field mapping** 🆕 - Discover and map Azure DevOps fields with arrow-key navigation
455
- - **Azure DevOps integration** 🆕 - Full support for ADO work items with automatic token resolution
354
+ ## Why It Matters (Plain Language)
456
355
 
457
- 👉 **[Agile/Scrum Workflows](docs/guides/agile-scrum-workflows.md)** - Team collaboration guide
458
- 👉 **[Backlog Refinement](docs/guides/backlog-refinement.md)** 🆕 - Standardize backlog items with templates
459
- 👉 **[Custom Field Mapping](docs/guides/custom-field-mapping.md)** 🆕 - Map ADO fields interactively
460
-
461
- ### 🔌 Integrations
462
-
463
- - **VS Code, Cursor** - Catch bugs before you commit
464
- - **GitHub Actions** - Automated quality gates
465
- - **AI IDEs** - Generate prompts for fixing gaps
466
- - **DevOps tools** - Sync with GitHub Issues, Azure DevOps, Linear, Jira
467
- - **Backlog Refinement** 🆕 - AI-assisted template-driven refinement for standardizing work items
468
- - **Azure DevOps field mapping** 🆕 - Interactive field discovery and mapping for custom ADO process templates
469
- - **Spec-Kit, OpenSpec, Specmatic** - Works with your existing tools
470
-
471
- 👉 **[Integrations Overview](docs/guides/integrations-overview.md)** - All integration options
472
- 👉 **[Backlog Refinement Guide](docs/guides/backlog-refinement.md)** 🆕 **NEW** - Template-driven backlog standardization
473
- 👉 **[Custom Field Mapping](docs/guides/custom-field-mapping.md)** 🆕 **NEW** - Interactive ADO field mapping
356
+ - **Clarity**: Turn messy code into clear specs your team can trust.
357
+ - **Safety**: Catch risky changes early with validation and contract checks.
358
+ - **Sync**: Keep backlog items, specs, tests, and code aligned end to end.
359
+ - **Adoption**: Simple CLI, no platform lock-in, works offline.
474
360
 
475
361
  ---
476
362
 
477
- ## Common Use Cases
478
-
479
- ### 1. Modernizing Legacy Code ⭐ **Most Common**
480
-
481
- **Problem:** Existing codebase with no specs or outdated documentation
482
-
483
- 👉 **[Brownfield Modernization Guide](docs/guides/brownfield-engineer.md)** - Complete walkthrough
484
-
485
- ### 1.5. Validating External Codebases (Sidecar Validation) 🆕
486
-
487
- **Problem:** Need to validate third-party libraries or legacy codebases without modifying source code
363
+ ## Who It Is For
488
364
 
489
- 👉 **[Sidecar Validation Guide](docs/guides/sidecar-validation.md)** - Validate external codebases with contract testing
365
+ - **Vibe coders and new builders** who want to ship fast with guardrails and confidence.
366
+ - **Legacy professionals** who want AI speed without lowering standards.
367
+ - **DevOps and engineering leaders** who need evidence and repeatable workflows.
490
368
 
491
- ### 2. Working with a Team
369
+ ---
492
370
 
493
- **Problem:** Need team collaboration with role-based workflows
371
+ ## How It Works (High Level)
494
372
 
495
- 👉 **[Agile/Scrum Workflows Guide](docs/guides/agile-scrum-workflows.md)** - Team collaboration guide
373
+ 1. **Analyze**: Read code and extract specs, gaps, and risks.
374
+ 2. **Sync**: Connect specs, backlog items, and plans in one workflow.
375
+ 3. **Validate**: Enforce contracts and block regressions before production.
496
376
 
497
- ### 3. Using AI IDEs (Cursor, Copilot, Claude)
377
+ ---
498
378
 
499
- **Problem:** Want AI to fix gaps, but need validation
379
+ ## The Missing Link (Coder + DevOps Bridge)
500
380
 
501
- 👉 **[AI IDE Workflow Guide](docs/guides/ai-ide-workflow.md)** - Complete AI-assisted workflow
381
+ Most tools help **either** coders **or** agile teams. SpecFact does both:
502
382
 
503
- ### 4. Integrating with Other Tools
383
+ - **Backlog sync that is actually strong**: round-trip sync + refinement with GitHub, Azure DevOps, Jira, Linear.
384
+ - **Ceremony support teams can run**: standup, refinement, sprint planning, flow metrics (Scrum/Kanban/SAFe).
385
+ - **Policy + validation**: DoR/DoD/flow checks plus contract enforcement for production-grade stability.
504
386
 
505
- **Problem:** Want to use SpecFact with Spec-Kit, OpenSpec, or Specmatic
387
+ **Try it now**
506
388
 
507
- 👉 **[Integrations Overview](docs/guides/integrations-overview.md)** - Choose the right integration
389
+ - **Coders**: [AI IDE Workflow](docs/guides/ai-ide-workflow.md)
390
+ - **Agile teams**: [Agile/Scrum Workflows](docs/guides/agile-scrum-workflows.md)
508
391
 
509
392
  ---
510
393
 
511
- ## Documentation
394
+ ## Modules and Capabilities
512
395
 
513
- ### Quick References
396
+ **Core modules**
514
397
 
515
- - **[Command Chains](docs/guides/command-chains.md)** **NEW** - Complete workflows from start to finish
516
- - **[Common Tasks](docs/guides/common-tasks.md)** **NEW** - Quick answers to "How do I X?"
517
- - **[Command Reference](docs/reference/commands.md)** - All commands documented
398
+ - **Analyze**: Extract specs and plans from existing code.
399
+ - **Validate**: Enforce contracts, run reproducible checks, and block regressions.
400
+ - **Report**: CI/CD summaries and evidence outputs.
518
401
 
519
- ### Getting Started
402
+ **Agile DevOps modules**
520
403
 
521
- - **[Getting Started Guide](docs/getting-started/README.md)** - Install and first commands
522
- - **[Modernizing Legacy Code?](docs/guides/brownfield-engineer.md)** - Brownfield-first guide
523
- - **[The Brownfield Journey](docs/guides/brownfield-journey.md)** - Complete modernization workflow
404
+ - **Backlog**: Refinement, dependency analysis, sprint summaries, risk rollups.
405
+ - **Ceremony**: Standup, refinement, and planning entry points.
406
+ - **Policy**: DoR, DoD, flow, PI readiness checks.
407
+ - **Patch**: Preview, apply, and write changes safely.
524
408
 
525
- ### Guides
409
+ **Adapters and bridges**
526
410
 
527
- - **[AI IDE Workflow](docs/guides/ai-ide-workflow.md)** **NEW** - AI-assisted development
528
- - **[Agile/Scrum Workflows](docs/guides/agile-scrum-workflows.md)** - Team collaboration
529
- - **[Integrations Overview](docs/guides/integrations-overview.md)** ⭐ **NEW** - All integrations
530
- - **[Sidecar Validation](docs/guides/sidecar-validation.md)** 🆕 - Validate external codebases without modifying source
531
- - **[Use Cases](docs/guides/use-cases.md)** - Common scenarios
411
+ - **Specs**: Spec-Kit and OpenSpec
412
+ - **Backlogs**: GitHub Issues, Azure DevOps, Jira, Linear
413
+ - **Contracts**: Specmatic, OpenAPI
532
414
 
533
- ### Integration Guides
415
+ ---
534
416
 
535
- - **[Spec-Kit Journey](docs/guides/speckit-journey.md)** - From Spec-Kit to SpecFact
536
- - **[OpenSpec Journey](docs/guides/openspec-journey.md)** - OpenSpec integration
537
- - **[Specmatic Integration](docs/guides/specmatic-integration.md)** - API contract testing
538
- - **[DevOps Adapter Integration](docs/guides/devops-adapter-integration.md)** - GitHub Issues, Azure DevOps, Linear, Jira
539
- - **[Backlog Refinement](docs/guides/backlog-refinement.md)** 🆕 **NEW** - AI-assisted template-driven backlog standardization
540
- - **[Custom Field Mapping](docs/guides/custom-field-mapping.md)** 🆕 **NEW** - Interactive Azure DevOps field mapping
417
+ ## Developer Note: Command Layout
541
418
 
542
- 👉 **[Full Documentation Index](docs/README.md)** - Browse all documentation
543
- 👉 **[Online Documentation](https://docs.specfact.io/)** - Complete documentation site
419
+ - Primary command implementations live in `src/specfact_cli/modules/<module>/src/commands.py`.
420
+ - Legacy imports from `src/specfact_cli/commands/*.py` are compatibility shims and only guarantee `app` re-exports.
421
+ - Preferred imports for module code:
422
+ - `from specfact_cli.modules.<module>.src.commands import app`
423
+ - `from specfact_cli.modules.<module>.src.commands import <symbol>`
424
+ - Shim deprecation timeline:
425
+ - Legacy shim usage is deprecated for non-`app` symbols now.
426
+ - Shim removal is planned no earlier than `v0.30` (or the next major migration window).
544
427
 
545
428
  ---
546
429
 
547
- ## How SpecFact Compares
430
+ ## Where SpecFact Fits
548
431
 
549
- **New to spec-driven development?** Here's how SpecFact compares to other tools:
432
+ SpecFact complements your stack rather than replacing it.
550
433
 
551
- | Tool | Best For | SpecFact's Focus |
552
- |------|----------|------------------|
553
- | **GitHub Spec-Kit** | Greenfield specs, multi-language, interactive authoring | **Brownfield analysis**, runtime enforcement, formal verification |
554
- | **OpenSpec** | Specification anchoring, change tracking, cross-repo workflows | **Code analysis**, contract enforcement, DevOps integration |
555
- | **Traditional Testing** | Manual test writing, code review | **Automated gap detection**, contract-first validation, CI/CD gates |
434
+ - **Spec-Kit/OpenSpec** for authoring and change tracking
435
+ - **Backlog tools** for planning and delivery
436
+ - **CI/CD** for enforcement and regression prevention
556
437
 
557
- **Key Differentiators:**
438
+ **SpecFact connects them** with adapters, policy checks, and deterministic validation.
558
439
 
559
- - **Brownfield-first** - Reverse engineers existing code (primary use case)
560
- - ✅ **Runtime enforcement** - Contracts prevent regressions automatically
561
- - ✅ **Formal verification** - CrossHair symbolic execution (not just LLM suggestions)
562
- - ✅ **Team collaboration** - Role-based workflows for agile/scrum teams
563
- - ✅ **Works offline** - No API keys, no cloud, zero vendor lock-in
440
+ **Integrations snapshot**: GitHub, Azure DevOps, Jira, Linear, Spec-Kit, OpenSpec, Specmatic.
564
441
 
565
- 👉 **[See detailed comparison guide](docs/guides/speckit-comparison.md)** - Understand when to use SpecFact, Spec-Kit, OpenSpec, or all together
442
+ - **[Integrations Overview](docs/guides/integrations-overview.md)**
443
+ - **[DevOps Adapter Integration](docs/guides/devops-adapter-integration.md)**
566
444
 
567
445
  ---
568
446
 
569
- ## Benefits
570
-
571
- ### Works with Your Existing Tools
447
+ ## Recommended Paths
572
448
 
573
- - **No new platform** - Pure CLI, works offline
574
- - **No account required** - Fully local, zero vendor lock-in
575
- - **Integrates everywhere** - VS Code, Cursor, GitHub Actions, pre-commit hooks
449
+ - **I want a quick win**: [Getting Started](docs/getting-started/README.md)
450
+ - **I use an AI IDE**: [AI IDE Workflow](docs/guides/ai-ide-workflow.md)
451
+ - **We have a team backlog**: [Agile/Scrum Workflows](docs/guides/agile-scrum-workflows.md)
452
+ - **We have a long-lived codebase**: [Working With Existing Code](docs/guides/brownfield-engineer.md)
576
453
 
577
- ### Built for Real Teams
578
-
579
- - ✅ **Role-based workflows** - Product Owners, Architects, Developers work in parallel
580
- - ✅ **Markdown-based** - No YAML editing, human-readable conflicts
581
- - ✅ **Agile/scrum ready** - DoR checklists, story points, sprint planning
454
+ ---
582
455
 
583
- ### Proven Results
456
+ ## Documentation Map
584
457
 
585
- - **Catches real bugs** - See [Integration Showcases](docs/examples/integration-showcases/)
586
- - **Prevents regressions** - Runtime contract enforcement
587
- - **Works on legacy code** - Analyzed itself successfully
458
+ - **[Documentation Index](docs/README.md)**
459
+ - **[Command Reference](docs/reference/commands.md)**
460
+ - **[Backlog Refinement](docs/guides/backlog-refinement.md)**
461
+ - **[Sidecar Validation](docs/guides/sidecar-validation.md)**
462
+ - **[OpenSpec Journey](docs/guides/openspec-journey.md)**
588
463
 
589
464
  ---
590
465
 
591
466
  ## Contributing
592
467
 
593
- We welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
468
+ We welcome contributions. See [CONTRIBUTING.md](CONTRIBUTING.md).
594
469
 
595
470
  ```bash
596
471
  git clone https://github.com/nold-ai/specfact-cli.git
@@ -603,11 +478,7 @@ hatch run contract-test-full
603
478
 
604
479
  ## License
605
480
 
606
- **Apache License 2.0** - Open source and enterprise-friendly
607
-
608
- - ✅ Free to use for any purpose (commercial or non-commercial)
609
- - ✅ Modify and distribute as needed
610
- - ✅ Enterprise-friendly with explicit patent grant
481
+ **Apache License 2.0** - Open source and enterprise-friendly.
611
482
 
612
483
  [Full license](LICENSE.md)
613
484
 
@@ -615,17 +486,16 @@ hatch run contract-test-full
615
486
 
616
487
  ## Support
617
488
 
618
- - 💬 **Questions?** [GitHub Discussions](https://github.com/nold-ai/specfact-cli/discussions)
619
- - 🐛 **Found a bug?** [GitHub Issues](https://github.com/nold-ai/specfact-cli/issues)
620
- - 🔍 **Debugging I/O or API issues?** Run with `--debug`; logs are written to `~/.specfact/logs/specfact-debug.log`. With `--debug`, ADO API errors include response snippet and patch paths in the log. See [Debug Logging](docs/reference/debug-logging.md).
621
- - 📧 **Need help?** [hello@noldai.com](mailto:hello@noldai.com)
622
- - 🌐 **Learn more:** [specfact.com](https://specfact.com) • [specfact.io](https://specfact.io) • [specfact.dev](https://specfact.dev)
489
+ - **GitHub Discussions**: https://github.com/nold-ai/specfact-cli/discussions
490
+ - **GitHub Issues**: https://github.com/nold-ai/specfact-cli/issues
491
+ - **Email**: hello@noldai.com
492
+ - **Debug logs**: Run with `--debug` and check `~/.specfact/logs/specfact-debug.log`.
623
493
 
624
494
  ---
625
495
 
626
496
  <div align="center">
627
497
 
628
- **Built with ❤️ by [NOLD AI](https://noldai.com)**
498
+ **Built by [NOLD AI](https://noldai.com)**
629
499
 
630
500
  Copyright © 2025-2026 Nold AI (Owner: Dominikus Nold)
631
501