specfact-cli 0.21.1__tar.gz → 0.22.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 (193) hide show
  1. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/PKG-INFO +130 -60
  2. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/README.md +129 -59
  3. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/pyproject.toml +1 -1
  4. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/__init__.py +1 -1
  5. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/__init__.py +1 -1
  6. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/adapters/__init__.py +5 -1
  7. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/adapters/base.py +21 -0
  8. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/adapters/github.py +26 -0
  9. specfact_cli-0.22.0/src/specfact_cli/adapters/openspec.py +805 -0
  10. specfact_cli-0.22.0/src/specfact_cli/adapters/openspec_parser.py +427 -0
  11. specfact_cli-0.22.0/src/specfact_cli/adapters/speckit.py +1100 -0
  12. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/analyzers/code_analyzer.py +8 -1
  13. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/cli.py +3 -15
  14. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/commands/__init__.py +0 -4
  15. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/commands/generate.py +5 -244
  16. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/commands/import_cmd.py +271 -111
  17. specfact_cli-0.21.1/src/specfact_cli/commands/bridge.py → specfact_cli-0.22.0/src/specfact_cli/commands/sdd.py +140 -23
  18. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/commands/sync.py +502 -177
  19. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/importers/speckit_converter.py +8 -5
  20. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/importers/speckit_scanner.py +24 -5
  21. specfact_cli-0.22.0/src/specfact_cli/migrations/__init__.py +20 -0
  22. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/migrations/plan_migrator.py +17 -0
  23. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/models/bridge.py +128 -1
  24. specfact_cli-0.22.0/src/specfact_cli/models/capabilities.py +20 -0
  25. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/models/source_tracking.py +8 -0
  26. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/sync/__init__.py +3 -5
  27. specfact_cli-0.22.0/src/specfact_cli/sync/bridge_probe.py +196 -0
  28. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/sync/bridge_sync.py +171 -164
  29. specfact_cli-0.21.1/src/specfact_cli/commands/implement.py +0 -417
  30. specfact_cli-0.21.1/src/specfact_cli/commands/sdd.py +0 -139
  31. specfact_cli-0.21.1/src/specfact_cli/migrations/__init__.py +0 -10
  32. specfact_cli-0.21.1/src/specfact_cli/sync/bridge_probe.py +0 -364
  33. specfact_cli-0.21.1/src/specfact_cli/sync/speckit_sync.py +0 -388
  34. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/.gitignore +0 -0
  35. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/LICENSE.md +0 -0
  36. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/mappings/node-async.yaml +0 -0
  37. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/mappings/python-async.yaml +0 -0
  38. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/mappings/speckit-default.yaml +0 -0
  39. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/prompts/shared/cli-enforcement.md +0 -0
  40. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/prompts/specfact.01-import.md +0 -0
  41. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/prompts/specfact.02-plan.md +0 -0
  42. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/prompts/specfact.03-review.md +0 -0
  43. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/prompts/specfact.04-sdd.md +0 -0
  44. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/prompts/specfact.05-enforce.md +0 -0
  45. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/prompts/specfact.06-sync.md +0 -0
  46. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/prompts/specfact.07-contracts.md +0 -0
  47. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/prompts/specfact.compare.md +0 -0
  48. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/prompts/specfact.sync-backlog.md +0 -0
  49. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/prompts/specfact.validate.md +0 -0
  50. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/schemas/deviation.schema.json +0 -0
  51. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/schemas/plan.schema.json +0 -0
  52. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/schemas/protocol.schema.json +0 -0
  53. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/templates/github-action.yml.j2 +0 -0
  54. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/templates/persona/architect.md.j2 +0 -0
  55. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/templates/persona/developer.md.j2 +0 -0
  56. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/templates/persona/product-owner.md.j2 +0 -0
  57. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/templates/plan.bundle.yaml.j2 +0 -0
  58. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/templates/pr-template.md.j2 +0 -0
  59. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/templates/protocol.yaml.j2 +0 -0
  60. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/templates/sidecar/README.md +0 -0
  61. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/templates/sidecar/__init__.py +0 -0
  62. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/templates/sidecar/adapters.py +0 -0
  63. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/templates/sidecar/bindings.yaml +0 -0
  64. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/templates/sidecar/bindings.yaml.example +0 -0
  65. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/templates/sidecar/crosshair_django_wrapper.py +0 -0
  66. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/templates/sidecar/crosshair_plugin.py +0 -0
  67. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/templates/sidecar/django_form_extractor.py +0 -0
  68. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/templates/sidecar/django_url_extractor.py +0 -0
  69. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/templates/sidecar/generate_harness.py +0 -0
  70. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/templates/sidecar/harness_contracts.py +0 -0
  71. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/templates/sidecar/populate_contracts.py +0 -0
  72. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/templates/sidecar/run_sidecar.sh +0 -0
  73. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/templates/sidecar/sidecar-init.sh +0 -0
  74. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/resources/templates/telemetry.yaml.example +0 -0
  75. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/adapters/registry.py +0 -0
  76. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/agents/__init__.py +0 -0
  77. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/agents/analyze_agent.py +0 -0
  78. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/agents/base.py +0 -0
  79. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/agents/plan_agent.py +0 -0
  80. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/agents/registry.py +0 -0
  81. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/agents/sync_agent.py +0 -0
  82. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/analyzers/__init__.py +0 -0
  83. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/analyzers/ambiguity_scanner.py +0 -0
  84. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/analyzers/constitution_evidence_extractor.py +0 -0
  85. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/analyzers/contract_extractor.py +0 -0
  86. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/analyzers/control_flow_analyzer.py +0 -0
  87. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/analyzers/graph_analyzer.py +0 -0
  88. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/analyzers/relationship_mapper.py +0 -0
  89. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/analyzers/requirement_extractor.py +0 -0
  90. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/analyzers/test_pattern_extractor.py +0 -0
  91. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/commands/analyze.py +0 -0
  92. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/commands/contract_cmd.py +0 -0
  93. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/commands/drift.py +0 -0
  94. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/commands/enforce.py +0 -0
  95. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/commands/init.py +0 -0
  96. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/commands/migrate.py +0 -0
  97. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/commands/plan.py +0 -0
  98. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/commands/project_cmd.py +0 -0
  99. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/commands/repro.py +0 -0
  100. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/commands/spec.py +0 -0
  101. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/common/__init__.py +0 -0
  102. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/common/logger_setup.py +0 -0
  103. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/common/logging_utils.py +0 -0
  104. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/common/text_utils.py +0 -0
  105. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/common/utils.py +0 -0
  106. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/comparators/__init__.py +0 -0
  107. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/comparators/plan_comparator.py +0 -0
  108. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/enrichers/constitution_enricher.py +0 -0
  109. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/enrichers/plan_enricher.py +0 -0
  110. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/generators/__init__.py +0 -0
  111. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/generators/contract_generator.py +0 -0
  112. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/generators/openapi_extractor.py +0 -0
  113. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/generators/persona_exporter.py +0 -0
  114. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/generators/plan_generator.py +0 -0
  115. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/generators/protocol_generator.py +0 -0
  116. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/generators/report_generator.py +0 -0
  117. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/generators/task_generator.py +0 -0
  118. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/generators/test_to_openapi.py +0 -0
  119. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/generators/workflow_generator.py +0 -0
  120. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/importers/__init__.py +0 -0
  121. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/integrations/__init__.py +0 -0
  122. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/integrations/specmatic.py +0 -0
  123. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/merge/__init__.py +0 -0
  124. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/merge/resolver.py +0 -0
  125. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/models/__init__.py +0 -0
  126. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/models/change.py +0 -0
  127. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/models/contract.py +0 -0
  128. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/models/deviation.py +0 -0
  129. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/models/enforcement.py +0 -0
  130. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/models/persona_template.py +0 -0
  131. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/models/plan.py +0 -0
  132. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/models/project.py +0 -0
  133. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/models/protocol.py +0 -0
  134. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/models/quality.py +0 -0
  135. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/models/sdd.py +0 -0
  136. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/models/task.py +0 -0
  137. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/modes/__init__.py +0 -0
  138. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/modes/detector.py +0 -0
  139. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/modes/router.py +0 -0
  140. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/parsers/__init__.py +0 -0
  141. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/parsers/persona_importer.py +0 -0
  142. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/resources/semgrep/async.yml +0 -0
  143. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/resources/semgrep/code-quality.yml +0 -0
  144. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/resources/semgrep/feature-detection.yml +0 -0
  145. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/runtime.py +0 -0
  146. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/sync/bridge_watch.py +0 -0
  147. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/sync/change_detector.py +0 -0
  148. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/sync/code_to_spec.py +0 -0
  149. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/sync/drift_detector.py +0 -0
  150. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/sync/repository_sync.py +0 -0
  151. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/sync/spec_to_code.py +0 -0
  152. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/sync/spec_to_tests.py +0 -0
  153. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/sync/watcher.py +0 -0
  154. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/sync/watcher_enhanced.py +0 -0
  155. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/telemetry.py +0 -0
  156. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/templates/__init__.py +0 -0
  157. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/templates/bridge_templates.py +0 -0
  158. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/templates/specification_templates.py +0 -0
  159. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/utils/__init__.py +0 -0
  160. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/utils/acceptance_criteria.py +0 -0
  161. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/utils/bundle_loader.py +0 -0
  162. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/utils/code_change_detector.py +0 -0
  163. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/utils/console.py +0 -0
  164. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/utils/content_sanitizer.py +0 -0
  165. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/utils/context_detection.py +0 -0
  166. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/utils/enrichment_context.py +0 -0
  167. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/utils/enrichment_parser.py +0 -0
  168. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/utils/env_manager.py +0 -0
  169. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/utils/feature_keys.py +0 -0
  170. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/utils/git.py +0 -0
  171. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/utils/github_annotations.py +0 -0
  172. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/utils/ide_setup.py +0 -0
  173. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/utils/incremental_check.py +0 -0
  174. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/utils/optional_deps.py +0 -0
  175. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/utils/performance.py +0 -0
  176. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/utils/progress.py +0 -0
  177. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/utils/progressive_disclosure.py +0 -0
  178. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/utils/prompts.py +0 -0
  179. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/utils/sdd_discovery.py +0 -0
  180. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/utils/source_scanner.py +0 -0
  181. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/utils/structure.py +0 -0
  182. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/utils/structured_io.py +0 -0
  183. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/utils/suggestions.py +0 -0
  184. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/utils/yaml_utils.py +0 -0
  185. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/validators/__init__.py +0 -0
  186. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/validators/agile_validation.py +0 -0
  187. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/validators/cli_first_validator.py +0 -0
  188. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/validators/contract_validator.py +0 -0
  189. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/validators/fsm.py +0 -0
  190. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/validators/repro_checker.py +0 -0
  191. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/validators/schema.py +0 -0
  192. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/versioning/__init__.py +0 -0
  193. {specfact_cli-0.21.1 → specfact_cli-0.22.0}/src/specfact_cli/versioning/analyzer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: specfact-cli
3
- Version: 0.21.1
3
+ Version: 0.22.0
4
4
  Summary: Brownfield-first CLI: Reverse engineer legacy Python → specs → enforced contracts. Automate legacy code documentation and prevent modernization regressions.
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
@@ -275,8 +275,10 @@ Description-Content-Type: text/markdown
275
275
 
276
276
  # SpecFact CLI
277
277
 
278
- > **Stop vibe coding. Start shipping quality code with contracts.**
279
- > Analyze legacy Python code → Find gaps → Enforce contracts → Prevent regressions
278
+ > **Brownfield-first legacy code modernization with runtime contract enforcement.**
279
+ > Analyze existing Python code → Extract specs → Find gaps → Enforce contracts → Prevent regressions
280
+
281
+ **No API keys required. Works offline. Zero vendor lock-in.**
280
282
 
281
283
  [![PyPI version](https://img.shields.io/pypi/v/specfact-cli.svg)](https://pypi.org/project/specfact-cli/)
282
284
  [![Python versions](https://img.shields.io/pypi/pyversions/specfact-cli.svg)](https://pypi.org/project/specfact-cli/)
@@ -297,12 +299,46 @@ Description-Content-Type: text/markdown
297
299
 
298
300
  **Perfect for:** Teams modernizing legacy Python systems who can't afford production bugs during migration.
299
301
 
302
+ ### Why SpecFact?
303
+
304
+ 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.
305
+
306
+ **Key outcomes:**
307
+
308
+ * **Understand legacy code** in minutes, not weeks (automatic spec extraction)
309
+ * **Find gaps** in tests, contracts, and documentation automatically
310
+ * **Prevent regressions** with runtime contract enforcement during modernization
311
+ * **Works with the tools you already use**: VS Code, Cursor, GitHub Actions, pre-commit hooks
312
+ * **No API keys required** - Works completely offline
313
+
314
+ ## How SpecFact Compares (at a glance)
315
+
316
+ **New to spec-driven development?** Here's how SpecFact compares to other tools:
317
+
318
+ | Tool | Best For | SpecFact's Focus |
319
+ |------|----------|------------------|
320
+ | **GitHub Spec-Kit** | Greenfield specs, multi-language, interactive authoring | **Brownfield analysis**, runtime enforcement, formal verification |
321
+ | **OpenSpec** | Specification anchoring, change tracking, cross-repo workflows | **Code analysis**, contract enforcement, DevOps integration |
322
+ | **Traditional Testing** | Manual test writing, code review | **Automated gap detection**, contract-first validation, CI/CD gates |
323
+
324
+ **Key Differentiators:**
325
+
326
+ * ✅ **Brownfield-first** - Reverse engineers existing code (primary use case)
327
+ * ✅ **Runtime enforcement** - Contracts prevent regressions automatically
328
+ * ✅ **Formal verification** - CrossHair symbolic execution (not just LLM suggestions)
329
+ * ✅ **Team collaboration** - Role-based workflows for agile/scrum teams
330
+ * ✅ **Works offline** - No API keys, no cloud, zero vendor lock-in
331
+
332
+ **Compared to spec-kit & OpenSpec**: Those shine for brand-new features (0→1) and change tracking. SpecFact also excels when modernizing existing behavior (1→n), especially when you need runtime safety nets.
333
+
334
+ 👉 **[See detailed comparison guide](docs/guides/speckit-comparison.md)** - Understand when to use SpecFact, Spec-Kit, OpenSpec, or all together
335
+
300
336
  ### The Problem It Solves
301
337
 
302
- - ❌ **Legacy code** with no documentation or outdated specs
303
- - ❌ **Missing tests** and contracts that should exist
304
- - ❌ **Regressions** introduced during refactoring/modernization
305
- - ❌ **No safety net** to catch bugs before production
338
+ * ❌ **Legacy code** with no documentation or outdated specs
339
+ * ❌ **Missing tests** and contracts that should exist
340
+ * ❌ **Regressions** introduced during refactoring/modernization
341
+ * ❌ **No safety net** to catch bugs before production
306
342
 
307
343
  ### The Solution
308
344
 
@@ -317,6 +353,38 @@ SpecFact CLI:
317
353
 
318
354
  ### How It Works
319
355
 
356
+ SpecFact follows a simple workflow that analyzes existing code and enforces contracts to prevent regressions:
357
+
358
+ ```
359
+ ┌────────────────────┐
360
+ │ Analyze Legacy │
361
+ │ Code │
362
+ └────────┬───────────┘
363
+ │ extract specs automatically
364
+
365
+ ┌────────────────────┐
366
+ │ Find Gaps │
367
+ │ (tests, contracts) │◀──── feedback loop ──────┐
368
+ └────────┬───────────┘ │
369
+ │ add contracts │
370
+ ▼ │
371
+ ┌────────────────────┐ │
372
+ │ Enforce Contracts │──────────────────────────┘
373
+ │ (runtime validation)│
374
+ └────────┬───────────┘
375
+ │ modernize safely
376
+
377
+ ┌────────────────────┐
378
+ │ Prevent Regressions│
379
+ │ (safety net) │
380
+ └────────────────────┘
381
+
382
+ 1. Analyze your existing code to extract specs automatically
383
+ 2. Find gaps in tests, contracts, and documentation
384
+ 3. Add contracts to critical paths for runtime enforcement
385
+ 4. Modernize safely knowing contracts will catch regressions
386
+ ```
387
+
320
388
  ```mermaid
321
389
  graph TB
322
390
  subgraph "Your Legacy Code"
@@ -440,9 +508,9 @@ specfact plan init my-project --interactive
440
508
 
441
509
  **That's it!** SpecFact will:
442
510
 
443
- - Extract features and stories from your code
444
- - Find missing tests and contracts
445
- - Generate a plan bundle you can enforce
511
+ * Extract features and stories from your code
512
+ * Find missing tests and contracts
513
+ * Generate a plan bundle you can enforce
446
514
 
447
515
  👉 **[Getting Started Guide](docs/getting-started/README.md)** - Complete walkthrough with examples
448
516
 
@@ -452,28 +520,28 @@ specfact plan init my-project --interactive
452
520
 
453
521
  ### 🔍 Code Analysis
454
522
 
455
- - **Reverse engineer** legacy code into documented specs
456
- - **Find gaps** in tests, contracts, and documentation
457
- - **Works with** any Python project (no special setup required)
523
+ * **Reverse engineer** legacy code into documented specs
524
+ * **Find gaps** in tests, contracts, and documentation
525
+ * **Works with** any Python project (no special setup required)
458
526
 
459
527
  ### 🛡️ Contract Enforcement
460
528
 
461
- - **Prevent regressions** with runtime contract validation
462
- - **CI/CD integration** - Block bad code from merging
463
- - **Works offline** - No cloud required
529
+ * **Prevent regressions** with runtime contract validation
530
+ * **CI/CD integration** - Block bad code from merging
531
+ * **Works offline** - No cloud required
464
532
 
465
533
  ### 👥 Team Collaboration
466
534
 
467
- - **Role-based workflows** - Product Owners, Architects, Developers work in parallel
468
- - **Markdown-based** - No YAML editing required
469
- - **Agile/scrum ready** - DoR checklists, story points, dependencies
535
+ * **Role-based workflows** - Product Owners, Architects, Developers work in parallel
536
+ * **Markdown-based** - No YAML editing required
537
+ * **Agile/scrum ready** - DoR checklists, story points, dependencies
470
538
 
471
539
  ### 🔌 Integrations
472
540
 
473
- - **VS Code, Cursor** - Catch bugs before you commit
474
- - **GitHub Actions** - Automated quality gates
475
- - **AI IDEs** - Generate prompts for fixing gaps
476
- - **DevOps tools** - Sync with GitHub Issues, Linear, Jira
541
+ * **VS Code, Cursor** - Catch bugs before you commit
542
+ * **GitHub Actions** - Automated quality gates
543
+ * **AI IDEs** - Generate prompts for fixing gaps
544
+ * **DevOps tools** - Sync with GitHub Issues, Linear, Jira
477
545
 
478
546
  ---
479
547
 
@@ -536,9 +604,9 @@ specfact enforce sdd --bundle my-project
536
604
 
537
605
  We ran SpecFact CLI **on itself** to prove it works:
538
606
 
539
- - ⚡ Analyzed 32 legacy Python files → Found **32 features** and **81 stories** in **3 seconds**
540
- - 🚫 Set enforcement → **Blocked 2 HIGH violations** automatically
541
- - 📊 Compared plans → Found **24 deviations** in **5 seconds**
607
+ * ⚡ Analyzed 32 legacy Python files → Found **32 features** and **81 stories** in **3 seconds**
608
+ * 🚫 Set enforcement → **Blocked 2 HIGH violations** automatically
609
+ * 📊 Compared plans → Found **24 deviations** in **5 seconds**
542
610
 
543
611
  **Total time**: < 10 seconds | **Result**: Found real bugs and inconsistencies
544
612
 
@@ -553,41 +621,43 @@ We ran SpecFact CLI **on itself** to prove it works:
553
621
  **New to SpecFact?**
554
622
 
555
623
  1. **[Getting Started](docs/getting-started/README.md)** - Install and first commands
556
- 2. **[Modernizing Legacy Code?](docs/guides/brownfield-engineer.md)** ⭐ - Complete guide
557
- 3. **[Use Cases](docs/guides/use-cases.md)** - Common scenarios
558
- 4. **[Command Reference](docs/reference/commands.md)** - All commands
624
+ 2. **[Tutorial: Using SpecFact with OpenSpec or Spec-Kit](docs/getting-started/tutorial-openspec-speckit.md)** ⭐ **NEW** - Complete beginner-friendly tutorial
625
+ 3. **[Modernizing Legacy Code?](docs/guides/brownfield-engineer.md)** - Complete guide
626
+ 4. **[Use Cases](docs/guides/use-cases.md)** - Common scenarios
627
+ 5. **[Command Reference](docs/reference/commands.md)** - All commands
559
628
 
560
629
  **Working with a Team?**
561
630
 
562
- - **[Agile/Scrum Workflows](docs/guides/agile-scrum-workflows.md)** ⭐ - Persona-based collaboration
563
- - **[Project Commands](docs/reference/commands.md#project---project-bundle-management)** - Export/import workflows
631
+ * **[Agile/Scrum Workflows](docs/guides/agile-scrum-workflows.md)** ⭐ - Persona-based collaboration
632
+ * **[Project Commands](docs/reference/commands.md#project---project-bundle-management)** - Export/import workflows
564
633
 
565
634
  **Want Integrations?**
566
635
 
567
- - **[IDE Integration](docs/guides/ide-integration.md)** - VS Code, Cursor setup
568
- - **[Integration Showcases](docs/examples/integration-showcases/)** - Real bugs fixed
569
- - **[GitHub Actions](docs/guides/use-cases.md#use-case-4-cicd-integration)** - CI/CD setup
636
+ * **[IDE Integration](docs/guides/ide-integration.md)** - VS Code, Cursor setup
637
+ * **[Integration Showcases](docs/examples/integration-showcases/)** - Real bugs fixed
638
+ * **[GitHub Actions](docs/guides/use-cases.md#use-case-4-cicd-integration)** - CI/CD setup
570
639
 
571
640
  **Advanced Topics**
572
641
 
573
- - **[Architecture](docs/reference/architecture.md)** - How it works
574
- - **[Schema Versioning](docs/reference/schema-versioning.md)** - Bundle schemas
575
- - **[Testing Guide](docs/technical/testing.md)** - Development setup
642
+ * **[Architecture](docs/reference/architecture.md)** - How it works
643
+ * **[Schema Versioning](docs/reference/schema-versioning.md)** - Bundle schemas
644
+ * **[Testing Guide](docs/technical/testing.md)** - Development setup
576
645
 
577
646
  👉 **[Full Documentation Index](docs/README.md)** - Browse all documentation
578
647
 
579
648
  ---
580
649
 
581
- ## Version 0.21.1
650
+ ## Version 0.22.0
582
651
 
583
- **Latest release** introduces change tracking data models (v1.1 schema) and code change tracking with progress comments.
652
+ **Latest release** introduces bridge adapter architecture refactoring and OpenSpec integration.
584
653
 
585
654
  **What's New:**
586
655
 
587
- -Change tracking data models for delta spec tracking
588
- -Code change tracking with GitHub issue progress comments
589
- -DevOps backlog tracking integration (GitHub Issues, ADO, Linear, Jira)
590
- -OpenSpec bridge adapter support
656
+ ***Bridge Adapter Architecture** - Plugin-based adapter registry pattern for extensible tool integration
657
+ ***OpenSpec Adapter** - Read-only sync from OpenSpec to SpecFact (v0.22.0+)
658
+ ***SpecKitAdapter** - Refactored Spec-Kit integration using adapter pattern
659
+ ***Command Updates** - Constitution commands moved to `specfact sdd constitution`
660
+ * ✅ **Breaking Changes** - Removed `specfact bridge` command group, `implement`, and `generate tasks` commands
591
661
 
592
662
  👉 **[Changelog](CHANGELOG.md)** - Complete release history
593
663
 
@@ -597,21 +667,21 @@ We ran SpecFact CLI **on itself** to prove it works:
597
667
 
598
668
  ### Works with Your Existing Tools
599
669
 
600
- - ✅ **No new platform** - Pure CLI, works offline
601
- - ✅ **No account required** - Fully local, zero vendor lock-in
602
- - ✅ **Integrates everywhere** - VS Code, Cursor, GitHub Actions, pre-commit hooks
670
+ * ✅ **No new platform** - Pure CLI, works offline
671
+ * ✅ **No account required** - Fully local, zero vendor lock-in
672
+ * ✅ **Integrates everywhere** - VS Code, Cursor, GitHub Actions, pre-commit hooks
603
673
 
604
674
  ### Built for Real Teams
605
675
 
606
- - ✅ **Role-based workflows** - Product Owners, Architects, Developers work in parallel
607
- - ✅ **Markdown-based** - No YAML editing, human-readable conflicts
608
- - ✅ **Agile/scrum ready** - DoR checklists, story points, sprint planning
676
+ * ✅ **Role-based workflows** - Product Owners, Architects, Developers work in parallel
677
+ * ✅ **Markdown-based** - No YAML editing, human-readable conflicts
678
+ * ✅ **Agile/scrum ready** - DoR checklists, story points, sprint planning
609
679
 
610
680
  ### Proven Results
611
681
 
612
- - ✅ **Catches real bugs** - See [Integration Showcases](docs/examples/integration-showcases/)
613
- - ✅ **Prevents regressions** - Runtime contract enforcement
614
- - ✅ **Works on legacy code** - Analyzed itself successfully
682
+ * ✅ **Catches real bugs** - See [Integration Showcases](docs/examples/integration-showcases/)
683
+ * ✅ **Prevents regressions** - Runtime contract enforcement
684
+ * ✅ **Works on legacy code** - Analyzed itself successfully
615
685
 
616
686
  ---
617
687
 
@@ -632,9 +702,9 @@ hatch run contract-test-full
632
702
 
633
703
  **Apache License 2.0** - Open source and enterprise-friendly
634
704
 
635
- - ✅ Free to use for any purpose (commercial or non-commercial)
636
- - ✅ Modify and distribute as needed
637
- - ✅ Enterprise-friendly with explicit patent grant
705
+ * ✅ Free to use for any purpose (commercial or non-commercial)
706
+ * ✅ Modify and distribute as needed
707
+ * ✅ Enterprise-friendly with explicit patent grant
638
708
 
639
709
  [Full license](LICENSE.md)
640
710
 
@@ -642,10 +712,10 @@ hatch run contract-test-full
642
712
 
643
713
  ## Support
644
714
 
645
- - 💬 **Questions?** [GitHub Discussions](https://github.com/nold-ai/specfact-cli/discussions)
646
- - 🐛 **Found a bug?** [GitHub Issues](https://github.com/nold-ai/specfact-cli/issues)
647
- - 📧 **Need help?** [hello@noldai.com](mailto:hello@noldai.com)
648
- - 🌐 **Learn more:** [noldai.com](https://noldai.com)
715
+ * 💬 **Questions?** [GitHub Discussions](https://github.com/nold-ai/specfact-cli/discussions)
716
+ * 🐛 **Found a bug?** [GitHub Issues](https://github.com/nold-ai/specfact-cli/issues)
717
+ * 📧 **Need help?** [hello@noldai.com](mailto:hello@noldai.com)
718
+ * 🌐 **Learn more:** [noldai.com](https://noldai.com)
649
719
 
650
720
  ---
651
721
 
@@ -653,7 +723,7 @@ hatch run contract-test-full
653
723
 
654
724
  **Built with ❤️ by [NOLD AI](https://noldai.com)**
655
725
 
656
- Copyright © 2025 Nold AI (Owner: Dominikus Nold)
726
+ Copyright © 2025-2026 Nold AI (Owner: Dominikus Nold)
657
727
 
658
728
  **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.
659
729
 
@@ -1,7 +1,9 @@
1
1
  # SpecFact CLI
2
2
 
3
- > **Stop vibe coding. Start shipping quality code with contracts.**
4
- > Analyze legacy Python code → Find gaps → Enforce contracts → Prevent regressions
3
+ > **Brownfield-first legacy code modernization with runtime contract enforcement.**
4
+ > Analyze existing Python code → Extract specs → Find gaps → Enforce contracts → Prevent regressions
5
+
6
+ **No API keys required. Works offline. Zero vendor lock-in.**
5
7
 
6
8
  [![PyPI version](https://img.shields.io/pypi/v/specfact-cli.svg)](https://pypi.org/project/specfact-cli/)
7
9
  [![Python versions](https://img.shields.io/pypi/pyversions/specfact-cli.svg)](https://pypi.org/project/specfact-cli/)
@@ -22,12 +24,46 @@
22
24
 
23
25
  **Perfect for:** Teams modernizing legacy Python systems who can't afford production bugs during migration.
24
26
 
27
+ ### Why SpecFact?
28
+
29
+ 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.
30
+
31
+ **Key outcomes:**
32
+
33
+ * **Understand legacy code** in minutes, not weeks (automatic spec extraction)
34
+ * **Find gaps** in tests, contracts, and documentation automatically
35
+ * **Prevent regressions** with runtime contract enforcement during modernization
36
+ * **Works with the tools you already use**: VS Code, Cursor, GitHub Actions, pre-commit hooks
37
+ * **No API keys required** - Works completely offline
38
+
39
+ ## How SpecFact Compares (at a glance)
40
+
41
+ **New to spec-driven development?** Here's how SpecFact compares to other tools:
42
+
43
+ | Tool | Best For | SpecFact's Focus |
44
+ |------|----------|------------------|
45
+ | **GitHub Spec-Kit** | Greenfield specs, multi-language, interactive authoring | **Brownfield analysis**, runtime enforcement, formal verification |
46
+ | **OpenSpec** | Specification anchoring, change tracking, cross-repo workflows | **Code analysis**, contract enforcement, DevOps integration |
47
+ | **Traditional Testing** | Manual test writing, code review | **Automated gap detection**, contract-first validation, CI/CD gates |
48
+
49
+ **Key Differentiators:**
50
+
51
+ * ✅ **Brownfield-first** - Reverse engineers existing code (primary use case)
52
+ * ✅ **Runtime enforcement** - Contracts prevent regressions automatically
53
+ * ✅ **Formal verification** - CrossHair symbolic execution (not just LLM suggestions)
54
+ * ✅ **Team collaboration** - Role-based workflows for agile/scrum teams
55
+ * ✅ **Works offline** - No API keys, no cloud, zero vendor lock-in
56
+
57
+ **Compared to spec-kit & OpenSpec**: Those shine for brand-new features (0→1) and change tracking. SpecFact also excels when modernizing existing behavior (1→n), especially when you need runtime safety nets.
58
+
59
+ 👉 **[See detailed comparison guide](docs/guides/speckit-comparison.md)** - Understand when to use SpecFact, Spec-Kit, OpenSpec, or all together
60
+
25
61
  ### The Problem It Solves
26
62
 
27
- - ❌ **Legacy code** with no documentation or outdated specs
28
- - ❌ **Missing tests** and contracts that should exist
29
- - ❌ **Regressions** introduced during refactoring/modernization
30
- - ❌ **No safety net** to catch bugs before production
63
+ * ❌ **Legacy code** with no documentation or outdated specs
64
+ * ❌ **Missing tests** and contracts that should exist
65
+ * ❌ **Regressions** introduced during refactoring/modernization
66
+ * ❌ **No safety net** to catch bugs before production
31
67
 
32
68
  ### The Solution
33
69
 
@@ -42,6 +78,38 @@ SpecFact CLI:
42
78
 
43
79
  ### How It Works
44
80
 
81
+ SpecFact follows a simple workflow that analyzes existing code and enforces contracts to prevent regressions:
82
+
83
+ ```
84
+ ┌────────────────────┐
85
+ │ Analyze Legacy │
86
+ │ Code │
87
+ └────────┬───────────┘
88
+ │ extract specs automatically
89
+
90
+ ┌────────────────────┐
91
+ │ Find Gaps │
92
+ │ (tests, contracts) │◀──── feedback loop ──────┐
93
+ └────────┬───────────┘ │
94
+ │ add contracts │
95
+ ▼ │
96
+ ┌────────────────────┐ │
97
+ │ Enforce Contracts │──────────────────────────┘
98
+ │ (runtime validation)│
99
+ └────────┬───────────┘
100
+ │ modernize safely
101
+
102
+ ┌────────────────────┐
103
+ │ Prevent Regressions│
104
+ │ (safety net) │
105
+ └────────────────────┘
106
+
107
+ 1. Analyze your existing code to extract specs automatically
108
+ 2. Find gaps in tests, contracts, and documentation
109
+ 3. Add contracts to critical paths for runtime enforcement
110
+ 4. Modernize safely knowing contracts will catch regressions
111
+ ```
112
+
45
113
  ```mermaid
46
114
  graph TB
47
115
  subgraph "Your Legacy Code"
@@ -165,9 +233,9 @@ specfact plan init my-project --interactive
165
233
 
166
234
  **That's it!** SpecFact will:
167
235
 
168
- - Extract features and stories from your code
169
- - Find missing tests and contracts
170
- - Generate a plan bundle you can enforce
236
+ * Extract features and stories from your code
237
+ * Find missing tests and contracts
238
+ * Generate a plan bundle you can enforce
171
239
 
172
240
  👉 **[Getting Started Guide](docs/getting-started/README.md)** - Complete walkthrough with examples
173
241
 
@@ -177,28 +245,28 @@ specfact plan init my-project --interactive
177
245
 
178
246
  ### 🔍 Code Analysis
179
247
 
180
- - **Reverse engineer** legacy code into documented specs
181
- - **Find gaps** in tests, contracts, and documentation
182
- - **Works with** any Python project (no special setup required)
248
+ * **Reverse engineer** legacy code into documented specs
249
+ * **Find gaps** in tests, contracts, and documentation
250
+ * **Works with** any Python project (no special setup required)
183
251
 
184
252
  ### 🛡️ Contract Enforcement
185
253
 
186
- - **Prevent regressions** with runtime contract validation
187
- - **CI/CD integration** - Block bad code from merging
188
- - **Works offline** - No cloud required
254
+ * **Prevent regressions** with runtime contract validation
255
+ * **CI/CD integration** - Block bad code from merging
256
+ * **Works offline** - No cloud required
189
257
 
190
258
  ### 👥 Team Collaboration
191
259
 
192
- - **Role-based workflows** - Product Owners, Architects, Developers work in parallel
193
- - **Markdown-based** - No YAML editing required
194
- - **Agile/scrum ready** - DoR checklists, story points, dependencies
260
+ * **Role-based workflows** - Product Owners, Architects, Developers work in parallel
261
+ * **Markdown-based** - No YAML editing required
262
+ * **Agile/scrum ready** - DoR checklists, story points, dependencies
195
263
 
196
264
  ### 🔌 Integrations
197
265
 
198
- - **VS Code, Cursor** - Catch bugs before you commit
199
- - **GitHub Actions** - Automated quality gates
200
- - **AI IDEs** - Generate prompts for fixing gaps
201
- - **DevOps tools** - Sync with GitHub Issues, Linear, Jira
266
+ * **VS Code, Cursor** - Catch bugs before you commit
267
+ * **GitHub Actions** - Automated quality gates
268
+ * **AI IDEs** - Generate prompts for fixing gaps
269
+ * **DevOps tools** - Sync with GitHub Issues, Linear, Jira
202
270
 
203
271
  ---
204
272
 
@@ -261,9 +329,9 @@ specfact enforce sdd --bundle my-project
261
329
 
262
330
  We ran SpecFact CLI **on itself** to prove it works:
263
331
 
264
- - ⚡ Analyzed 32 legacy Python files → Found **32 features** and **81 stories** in **3 seconds**
265
- - 🚫 Set enforcement → **Blocked 2 HIGH violations** automatically
266
- - 📊 Compared plans → Found **24 deviations** in **5 seconds**
332
+ * ⚡ Analyzed 32 legacy Python files → Found **32 features** and **81 stories** in **3 seconds**
333
+ * 🚫 Set enforcement → **Blocked 2 HIGH violations** automatically
334
+ * 📊 Compared plans → Found **24 deviations** in **5 seconds**
267
335
 
268
336
  **Total time**: < 10 seconds | **Result**: Found real bugs and inconsistencies
269
337
 
@@ -278,41 +346,43 @@ We ran SpecFact CLI **on itself** to prove it works:
278
346
  **New to SpecFact?**
279
347
 
280
348
  1. **[Getting Started](docs/getting-started/README.md)** - Install and first commands
281
- 2. **[Modernizing Legacy Code?](docs/guides/brownfield-engineer.md)** ⭐ - Complete guide
282
- 3. **[Use Cases](docs/guides/use-cases.md)** - Common scenarios
283
- 4. **[Command Reference](docs/reference/commands.md)** - All commands
349
+ 2. **[Tutorial: Using SpecFact with OpenSpec or Spec-Kit](docs/getting-started/tutorial-openspec-speckit.md)** ⭐ **NEW** - Complete beginner-friendly tutorial
350
+ 3. **[Modernizing Legacy Code?](docs/guides/brownfield-engineer.md)** - Complete guide
351
+ 4. **[Use Cases](docs/guides/use-cases.md)** - Common scenarios
352
+ 5. **[Command Reference](docs/reference/commands.md)** - All commands
284
353
 
285
354
  **Working with a Team?**
286
355
 
287
- - **[Agile/Scrum Workflows](docs/guides/agile-scrum-workflows.md)** ⭐ - Persona-based collaboration
288
- - **[Project Commands](docs/reference/commands.md#project---project-bundle-management)** - Export/import workflows
356
+ * **[Agile/Scrum Workflows](docs/guides/agile-scrum-workflows.md)** ⭐ - Persona-based collaboration
357
+ * **[Project Commands](docs/reference/commands.md#project---project-bundle-management)** - Export/import workflows
289
358
 
290
359
  **Want Integrations?**
291
360
 
292
- - **[IDE Integration](docs/guides/ide-integration.md)** - VS Code, Cursor setup
293
- - **[Integration Showcases](docs/examples/integration-showcases/)** - Real bugs fixed
294
- - **[GitHub Actions](docs/guides/use-cases.md#use-case-4-cicd-integration)** - CI/CD setup
361
+ * **[IDE Integration](docs/guides/ide-integration.md)** - VS Code, Cursor setup
362
+ * **[Integration Showcases](docs/examples/integration-showcases/)** - Real bugs fixed
363
+ * **[GitHub Actions](docs/guides/use-cases.md#use-case-4-cicd-integration)** - CI/CD setup
295
364
 
296
365
  **Advanced Topics**
297
366
 
298
- - **[Architecture](docs/reference/architecture.md)** - How it works
299
- - **[Schema Versioning](docs/reference/schema-versioning.md)** - Bundle schemas
300
- - **[Testing Guide](docs/technical/testing.md)** - Development setup
367
+ * **[Architecture](docs/reference/architecture.md)** - How it works
368
+ * **[Schema Versioning](docs/reference/schema-versioning.md)** - Bundle schemas
369
+ * **[Testing Guide](docs/technical/testing.md)** - Development setup
301
370
 
302
371
  👉 **[Full Documentation Index](docs/README.md)** - Browse all documentation
303
372
 
304
373
  ---
305
374
 
306
- ## Version 0.21.1
375
+ ## Version 0.22.0
307
376
 
308
- **Latest release** introduces change tracking data models (v1.1 schema) and code change tracking with progress comments.
377
+ **Latest release** introduces bridge adapter architecture refactoring and OpenSpec integration.
309
378
 
310
379
  **What's New:**
311
380
 
312
- -Change tracking data models for delta spec tracking
313
- -Code change tracking with GitHub issue progress comments
314
- -DevOps backlog tracking integration (GitHub Issues, ADO, Linear, Jira)
315
- -OpenSpec bridge adapter support
381
+ ***Bridge Adapter Architecture** - Plugin-based adapter registry pattern for extensible tool integration
382
+ ***OpenSpec Adapter** - Read-only sync from OpenSpec to SpecFact (v0.22.0+)
383
+ ***SpecKitAdapter** - Refactored Spec-Kit integration using adapter pattern
384
+ ***Command Updates** - Constitution commands moved to `specfact sdd constitution`
385
+ * ✅ **Breaking Changes** - Removed `specfact bridge` command group, `implement`, and `generate tasks` commands
316
386
 
317
387
  👉 **[Changelog](CHANGELOG.md)** - Complete release history
318
388
 
@@ -322,21 +392,21 @@ We ran SpecFact CLI **on itself** to prove it works:
322
392
 
323
393
  ### Works with Your Existing Tools
324
394
 
325
- - ✅ **No new platform** - Pure CLI, works offline
326
- - ✅ **No account required** - Fully local, zero vendor lock-in
327
- - ✅ **Integrates everywhere** - VS Code, Cursor, GitHub Actions, pre-commit hooks
395
+ * ✅ **No new platform** - Pure CLI, works offline
396
+ * ✅ **No account required** - Fully local, zero vendor lock-in
397
+ * ✅ **Integrates everywhere** - VS Code, Cursor, GitHub Actions, pre-commit hooks
328
398
 
329
399
  ### Built for Real Teams
330
400
 
331
- - ✅ **Role-based workflows** - Product Owners, Architects, Developers work in parallel
332
- - ✅ **Markdown-based** - No YAML editing, human-readable conflicts
333
- - ✅ **Agile/scrum ready** - DoR checklists, story points, sprint planning
401
+ * ✅ **Role-based workflows** - Product Owners, Architects, Developers work in parallel
402
+ * ✅ **Markdown-based** - No YAML editing, human-readable conflicts
403
+ * ✅ **Agile/scrum ready** - DoR checklists, story points, sprint planning
334
404
 
335
405
  ### Proven Results
336
406
 
337
- - ✅ **Catches real bugs** - See [Integration Showcases](docs/examples/integration-showcases/)
338
- - ✅ **Prevents regressions** - Runtime contract enforcement
339
- - ✅ **Works on legacy code** - Analyzed itself successfully
407
+ * ✅ **Catches real bugs** - See [Integration Showcases](docs/examples/integration-showcases/)
408
+ * ✅ **Prevents regressions** - Runtime contract enforcement
409
+ * ✅ **Works on legacy code** - Analyzed itself successfully
340
410
 
341
411
  ---
342
412
 
@@ -357,9 +427,9 @@ hatch run contract-test-full
357
427
 
358
428
  **Apache License 2.0** - Open source and enterprise-friendly
359
429
 
360
- - ✅ Free to use for any purpose (commercial or non-commercial)
361
- - ✅ Modify and distribute as needed
362
- - ✅ Enterprise-friendly with explicit patent grant
430
+ * ✅ Free to use for any purpose (commercial or non-commercial)
431
+ * ✅ Modify and distribute as needed
432
+ * ✅ Enterprise-friendly with explicit patent grant
363
433
 
364
434
  [Full license](LICENSE.md)
365
435
 
@@ -367,10 +437,10 @@ hatch run contract-test-full
367
437
 
368
438
  ## Support
369
439
 
370
- - 💬 **Questions?** [GitHub Discussions](https://github.com/nold-ai/specfact-cli/discussions)
371
- - 🐛 **Found a bug?** [GitHub Issues](https://github.com/nold-ai/specfact-cli/issues)
372
- - 📧 **Need help?** [hello@noldai.com](mailto:hello@noldai.com)
373
- - 🌐 **Learn more:** [noldai.com](https://noldai.com)
440
+ * 💬 **Questions?** [GitHub Discussions](https://github.com/nold-ai/specfact-cli/discussions)
441
+ * 🐛 **Found a bug?** [GitHub Issues](https://github.com/nold-ai/specfact-cli/issues)
442
+ * 📧 **Need help?** [hello@noldai.com](mailto:hello@noldai.com)
443
+ * 🌐 **Learn more:** [noldai.com](https://noldai.com)
374
444
 
375
445
  ---
376
446
 
@@ -378,7 +448,7 @@ hatch run contract-test-full
378
448
 
379
449
  **Built with ❤️ by [NOLD AI](https://noldai.com)**
380
450
 
381
- Copyright © 2025 Nold AI (Owner: Dominikus Nold)
451
+ Copyright © 2025-2026 Nold AI (Owner: Dominikus Nold)
382
452
 
383
453
  **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.
384
454
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "specfact-cli"
7
- version = "0.21.1"
7
+ version = "0.22.0"
8
8
  description = "Brownfield-first CLI: Reverse engineer legacy Python → specs → enforced contracts. Automate legacy code documentation and prevent modernization regressions."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -3,4 +3,4 @@ SpecFact CLI - Spec→Contract→Sentinel tool for contract-driven development.
3
3
  """
4
4
 
5
5
  # Define the package version (kept in sync with pyproject.toml and setup.py)
6
- __version__ = "0.21.1"
6
+ __version__ = "0.22.0"
@@ -9,6 +9,6 @@ This package provides command-line tools for:
9
9
  - Validating reproducibility
10
10
  """
11
11
 
12
- __version__ = "0.21.1"
12
+ __version__ = "0.22.0"
13
13
 
14
14
  __all__ = ["__version__"]
@@ -9,10 +9,14 @@ from __future__ import annotations
9
9
 
10
10
  from specfact_cli.adapters.base import BridgeAdapter
11
11
  from specfact_cli.adapters.github import GitHubAdapter
12
+ from specfact_cli.adapters.openspec import OpenSpecAdapter
12
13
  from specfact_cli.adapters.registry import AdapterRegistry
14
+ from specfact_cli.adapters.speckit import SpecKitAdapter
13
15
 
14
16
 
15
17
  # Auto-register built-in adapters
16
18
  AdapterRegistry.register("github", GitHubAdapter)
19
+ AdapterRegistry.register("openspec", OpenSpecAdapter)
20
+ AdapterRegistry.register("speckit", SpecKitAdapter)
17
21
 
18
- __all__ = ["AdapterRegistry", "BridgeAdapter", "GitHubAdapter"]
22
+ __all__ = ["AdapterRegistry", "BridgeAdapter", "GitHubAdapter", "OpenSpecAdapter", "SpecKitAdapter"]