specfact-cli 0.37.1__tar.gz → 0.37.2__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 (389) hide show
  1. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/PKG-INFO +3 -1
  2. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/pyproject.toml +3 -1
  3. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/__init__.py +1 -1
  4. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/__init__.py +1 -1
  5. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/analyze/module-package.yaml +3 -3
  6. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/auth/module-package.yaml +3 -3
  7. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/backlog/module-package.yaml +3 -3
  8. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/contract/module-package.yaml +3 -3
  9. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/drift/module-package.yaml +3 -3
  10. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/enforce/module-package.yaml +3 -3
  11. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/generate/module-package.yaml +3 -3
  12. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/import_cmd/module-package.yaml +3 -3
  13. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/init/module-package.yaml +3 -3
  14. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/migrate/module-package.yaml +3 -3
  15. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/module_registry/module-package.yaml +3 -3
  16. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/patch_mode/module-package.yaml +3 -3
  17. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/plan/module-package.yaml +3 -3
  18. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/policy_engine/module-package.yaml +3 -3
  19. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/project/module-package.yaml +3 -3
  20. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/repro/module-package.yaml +3 -3
  21. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/sdd/module-package.yaml +3 -3
  22. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/spec/module-package.yaml +3 -3
  23. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/sync/module-package.yaml +3 -3
  24. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/upgrade/module-package.yaml +3 -3
  25. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/validate/module-package.yaml +3 -3
  26. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/registry/module_installer.py +27 -0
  27. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/startup_checks.py +2 -2
  28. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/.gitignore +0 -0
  29. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/LICENSE +0 -0
  30. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/README.md +0 -0
  31. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/keys/README.md +0 -0
  32. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/keys/module-signing-public.pem +0 -0
  33. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/mappings/node-async.yaml +0 -0
  34. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/mappings/python-async.yaml +0 -0
  35. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/mappings/speckit-default.yaml +0 -0
  36. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/prompts/shared/cli-enforcement.md +0 -0
  37. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/prompts/specfact.01-import.md +0 -0
  38. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/prompts/specfact.02-plan.md +0 -0
  39. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/prompts/specfact.03-review.md +0 -0
  40. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/prompts/specfact.04-sdd.md +0 -0
  41. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/prompts/specfact.05-enforce.md +0 -0
  42. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/prompts/specfact.06-sync.md +0 -0
  43. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/prompts/specfact.07-contracts.md +0 -0
  44. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/prompts/specfact.backlog-add.md +0 -0
  45. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/prompts/specfact.backlog-daily.md +0 -0
  46. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/prompts/specfact.backlog-refine.md +0 -0
  47. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/prompts/specfact.compare.md +0 -0
  48. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/prompts/specfact.sync-backlog.md +0 -0
  49. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/prompts/specfact.validate.md +0 -0
  50. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/schemas/deviation.schema.json +0 -0
  51. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/schemas/plan.schema.json +0 -0
  52. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/schemas/protocol.schema.json +0 -0
  53. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/templates/backlog/defaults/defect_v1.yaml +0 -0
  54. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/templates/backlog/defaults/enabler_v1.yaml +0 -0
  55. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/templates/backlog/defaults/spike_v1.yaml +0 -0
  56. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/templates/backlog/defaults/user_story_v1.yaml +0 -0
  57. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/templates/backlog/field_mappings/ado_agile.yaml +0 -0
  58. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/templates/backlog/field_mappings/ado_default.yaml +0 -0
  59. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/templates/backlog/field_mappings/ado_kanban.yaml +0 -0
  60. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/templates/backlog/field_mappings/ado_safe.yaml +0 -0
  61. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/templates/backlog/field_mappings/ado_scrum.yaml +0 -0
  62. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/templates/backlog/frameworks/safe/safe_feature_v1.yaml +0 -0
  63. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/templates/backlog/frameworks/scrum/user_story_v1.yaml +0 -0
  64. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/templates/backlog/personas/developer/developer_task_v1.yaml +0 -0
  65. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/templates/backlog/personas/product-owner/user_story_v1.yaml +0 -0
  66. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/templates/backlog/providers/ado/work_item_v1.yaml +0 -0
  67. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/templates/github-action.yml.j2 +0 -0
  68. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/templates/persona/architect.md.j2 +0 -0
  69. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/templates/persona/developer.md.j2 +0 -0
  70. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/templates/persona/product-owner.md.j2 +0 -0
  71. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/templates/plan.bundle.yaml.j2 +0 -0
  72. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/templates/policies/kanban.yaml +0 -0
  73. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/templates/policies/mixed.yaml +0 -0
  74. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/templates/policies/safe.yaml +0 -0
  75. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/templates/policies/scrum.yaml +0 -0
  76. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/templates/pr-template.md.j2 +0 -0
  77. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/templates/protocol.yaml.j2 +0 -0
  78. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/resources/templates/telemetry.yaml.example +0 -0
  79. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/__main__.py +0 -0
  80. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/adapters/__init__.py +0 -0
  81. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/adapters/ado.py +0 -0
  82. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/adapters/backlog_base.py +0 -0
  83. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/adapters/base.py +0 -0
  84. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/adapters/github.py +0 -0
  85. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/adapters/openspec.py +0 -0
  86. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/adapters/openspec_parser.py +0 -0
  87. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/adapters/registry.py +0 -0
  88. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/adapters/speckit.py +0 -0
  89. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/agents/__init__.py +0 -0
  90. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/agents/analyze_agent.py +0 -0
  91. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/agents/base.py +0 -0
  92. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/agents/plan_agent.py +0 -0
  93. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/agents/registry.py +0 -0
  94. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/agents/sync_agent.py +0 -0
  95. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/analyzers/__init__.py +0 -0
  96. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/analyzers/ambiguity_scanner.py +0 -0
  97. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/analyzers/code_analyzer.py +0 -0
  98. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/analyzers/constitution_evidence_extractor.py +0 -0
  99. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/analyzers/contract_extractor.py +0 -0
  100. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/analyzers/control_flow_analyzer.py +0 -0
  101. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/analyzers/graph_analyzer.py +0 -0
  102. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/analyzers/relationship_mapper.py +0 -0
  103. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/analyzers/requirement_extractor.py +0 -0
  104. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/analyzers/test_pattern_extractor.py +0 -0
  105. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/backlog/__init__.py +0 -0
  106. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/backlog/adapters/__init__.py +0 -0
  107. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/backlog/adapters/base.py +0 -0
  108. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/backlog/adapters/local_yaml_adapter.py +0 -0
  109. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/backlog/ai_refiner.py +0 -0
  110. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/backlog/converter.py +0 -0
  111. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/backlog/filters.py +0 -0
  112. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/backlog/format_detector.py +0 -0
  113. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/backlog/formats/__init__.py +0 -0
  114. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/backlog/formats/base.py +0 -0
  115. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/backlog/formats/markdown_format.py +0 -0
  116. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/backlog/formats/structured_format.py +0 -0
  117. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/backlog/mappers/__init__.py +0 -0
  118. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/backlog/mappers/ado_mapper.py +0 -0
  119. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/backlog/mappers/base.py +0 -0
  120. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/backlog/mappers/github_mapper.py +0 -0
  121. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/backlog/mappers/template_config.py +0 -0
  122. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/backlog/template_detector.py +0 -0
  123. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/cli.py +0 -0
  124. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/commands/__init__.py +0 -0
  125. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/commands/analyze.py +0 -0
  126. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/commands/auth.py +0 -0
  127. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/commands/backlog_commands.py +0 -0
  128. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/commands/contract_cmd.py +0 -0
  129. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/commands/drift.py +0 -0
  130. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/commands/enforce.py +0 -0
  131. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/commands/generate.py +0 -0
  132. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/commands/import_cmd.py +0 -0
  133. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/commands/init.py +0 -0
  134. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/commands/migrate.py +0 -0
  135. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/commands/plan.py +0 -0
  136. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/commands/project_cmd.py +0 -0
  137. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/commands/repro.py +0 -0
  138. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/commands/sdd.py +0 -0
  139. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/commands/spec.py +0 -0
  140. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/commands/sync.py +0 -0
  141. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/commands/update.py +0 -0
  142. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/commands/validate.py +0 -0
  143. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/common/__init__.py +0 -0
  144. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/common/logger_setup.py +0 -0
  145. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/common/logging_utils.py +0 -0
  146. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/common/text_utils.py +0 -0
  147. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/common/utils.py +0 -0
  148. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/comparators/__init__.py +0 -0
  149. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/comparators/plan_comparator.py +0 -0
  150. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/contracts/__init__.py +0 -0
  151. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/contracts/crosshair_props.py +0 -0
  152. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/contracts/module_interface.py +0 -0
  153. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/enrichers/constitution_enricher.py +0 -0
  154. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/enrichers/plan_enricher.py +0 -0
  155. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/generators/__init__.py +0 -0
  156. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/generators/contract_generator.py +0 -0
  157. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/generators/openapi_extractor.py +0 -0
  158. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/generators/persona_exporter.py +0 -0
  159. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/generators/plan_generator.py +0 -0
  160. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/generators/protocol_generator.py +0 -0
  161. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/generators/report_generator.py +0 -0
  162. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/generators/task_generator.py +0 -0
  163. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/generators/test_to_openapi.py +0 -0
  164. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/generators/workflow_generator.py +0 -0
  165. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/importers/__init__.py +0 -0
  166. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/importers/speckit_converter.py +0 -0
  167. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/importers/speckit_scanner.py +0 -0
  168. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/integrations/__init__.py +0 -0
  169. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/integrations/specmatic.py +0 -0
  170. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/merge/__init__.py +0 -0
  171. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/merge/resolver.py +0 -0
  172. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/migrations/__init__.py +0 -0
  173. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/migrations/plan_migrator.py +0 -0
  174. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/models/__init__.py +0 -0
  175. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/models/backlog_item.py +0 -0
  176. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/models/bridge.py +0 -0
  177. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/models/capabilities.py +0 -0
  178. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/models/change.py +0 -0
  179. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/models/contract.py +0 -0
  180. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/models/deviation.py +0 -0
  181. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/models/dor_config.py +0 -0
  182. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/models/enforcement.py +0 -0
  183. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/models/module_package.py +0 -0
  184. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/models/persona_template.py +0 -0
  185. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/models/plan.py +0 -0
  186. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/models/project.py +0 -0
  187. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/models/protocol.py +0 -0
  188. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/models/quality.py +0 -0
  189. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/models/sdd.py +0 -0
  190. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/models/source_tracking.py +0 -0
  191. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/models/task.py +0 -0
  192. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/models/validation.py +0 -0
  193. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modes/__init__.py +0 -0
  194. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modes/detector.py +0 -0
  195. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modes/router.py +0 -0
  196. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/__init__.py +0 -0
  197. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/analyze/src/__init__.py +0 -0
  198. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/analyze/src/app.py +0 -0
  199. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/analyze/src/commands.py +0 -0
  200. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/auth/src/__init__.py +0 -0
  201. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/auth/src/app.py +0 -0
  202. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/auth/src/commands.py +0 -0
  203. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/backlog/src/__init__.py +0 -0
  204. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/backlog/src/adapters/__init__.py +0 -0
  205. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/backlog/src/adapters/ado.py +0 -0
  206. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/backlog/src/adapters/base.py +0 -0
  207. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/backlog/src/adapters/github.py +0 -0
  208. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/backlog/src/adapters/jira.py +0 -0
  209. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/backlog/src/adapters/linear.py +0 -0
  210. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/backlog/src/app.py +0 -0
  211. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/backlog/src/commands.py +0 -0
  212. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/contract/src/__init__.py +0 -0
  213. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/contract/src/app.py +0 -0
  214. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/contract/src/commands.py +0 -0
  215. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/drift/src/__init__.py +0 -0
  216. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/drift/src/app.py +0 -0
  217. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/drift/src/commands.py +0 -0
  218. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/enforce/src/__init__.py +0 -0
  219. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/enforce/src/app.py +0 -0
  220. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/enforce/src/commands.py +0 -0
  221. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/generate/src/__init__.py +0 -0
  222. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/generate/src/app.py +0 -0
  223. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/generate/src/commands.py +0 -0
  224. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/import_cmd/src/__init__.py +0 -0
  225. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/import_cmd/src/app.py +0 -0
  226. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/import_cmd/src/commands.py +0 -0
  227. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/init/src/__init__.py +0 -0
  228. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/init/src/app.py +0 -0
  229. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/init/src/commands.py +0 -0
  230. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/migrate/src/__init__.py +0 -0
  231. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/migrate/src/app.py +0 -0
  232. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/migrate/src/commands.py +0 -0
  233. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/module_io_shim.py +0 -0
  234. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/module_registry/src/__init__.py +0 -0
  235. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/module_registry/src/app.py +0 -0
  236. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/module_registry/src/commands.py +0 -0
  237. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/patch_mode/src/app.py +0 -0
  238. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/patch_mode/src/commands.py +0 -0
  239. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/patch_mode/src/patch_mode/__init__.py +0 -0
  240. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/patch_mode/src/patch_mode/commands/__init__.py +0 -0
  241. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/patch_mode/src/patch_mode/commands/apply.py +0 -0
  242. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/patch_mode/src/patch_mode/pipeline/__init__.py +0 -0
  243. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/patch_mode/src/patch_mode/pipeline/applier.py +0 -0
  244. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/patch_mode/src/patch_mode/pipeline/generator.py +0 -0
  245. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/patch_mode/src/patch_mode/pipeline/idempotency.py +0 -0
  246. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/plan/src/__init__.py +0 -0
  247. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/plan/src/app.py +0 -0
  248. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/plan/src/commands.py +0 -0
  249. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/policy_engine/src/app.py +0 -0
  250. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/policy_engine/src/commands.py +0 -0
  251. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/policy_engine/src/policy_engine/__init__.py +0 -0
  252. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/policy_engine/src/policy_engine/config/__init__.py +0 -0
  253. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/policy_engine/src/policy_engine/config/policy_config.py +0 -0
  254. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/policy_engine/src/policy_engine/config/templates.py +0 -0
  255. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/policy_engine/src/policy_engine/engine/__init__.py +0 -0
  256. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/policy_engine/src/policy_engine/engine/suggester.py +0 -0
  257. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/policy_engine/src/policy_engine/engine/validator.py +0 -0
  258. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/policy_engine/src/policy_engine/main.py +0 -0
  259. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/policy_engine/src/policy_engine/models/__init__.py +0 -0
  260. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/policy_engine/src/policy_engine/models/policy_result.py +0 -0
  261. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/policy_engine/src/policy_engine/policies/__init__.py +0 -0
  262. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/policy_engine/src/policy_engine/policies/kanban.py +0 -0
  263. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/policy_engine/src/policy_engine/policies/safe.py +0 -0
  264. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/policy_engine/src/policy_engine/policies/scrum.py +0 -0
  265. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/policy_engine/src/policy_engine/registry/__init__.py +0 -0
  266. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/policy_engine/src/policy_engine/registry/policy_registry.py +0 -0
  267. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/project/src/__init__.py +0 -0
  268. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/project/src/app.py +0 -0
  269. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/project/src/commands.py +0 -0
  270. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/repro/src/__init__.py +0 -0
  271. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/repro/src/app.py +0 -0
  272. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/repro/src/commands.py +0 -0
  273. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/sdd/src/__init__.py +0 -0
  274. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/sdd/src/app.py +0 -0
  275. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/sdd/src/commands.py +0 -0
  276. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/spec/src/__init__.py +0 -0
  277. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/spec/src/app.py +0 -0
  278. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/spec/src/commands.py +0 -0
  279. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/sync/src/__init__.py +0 -0
  280. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/sync/src/app.py +0 -0
  281. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/sync/src/commands.py +0 -0
  282. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/upgrade/src/__init__.py +0 -0
  283. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/upgrade/src/app.py +0 -0
  284. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/upgrade/src/commands.py +0 -0
  285. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/validate/src/__init__.py +0 -0
  286. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/validate/src/app.py +0 -0
  287. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/modules/validate/src/commands.py +0 -0
  288. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/parsers/__init__.py +0 -0
  289. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/parsers/persona_importer.py +0 -0
  290. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/registry/__init__.py +0 -0
  291. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/registry/bootstrap.py +0 -0
  292. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/registry/bridge_registry.py +0 -0
  293. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/registry/crypto_validator.py +0 -0
  294. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/registry/extension_registry.py +0 -0
  295. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/registry/help_cache.py +0 -0
  296. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/registry/marketplace_client.py +0 -0
  297. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/registry/metadata.py +0 -0
  298. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/registry/module_discovery.py +0 -0
  299. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/registry/module_lifecycle.py +0 -0
  300. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/registry/module_packages.py +0 -0
  301. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/registry/module_security.py +0 -0
  302. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/registry/module_state.py +0 -0
  303. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/registry/registry.py +0 -0
  304. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/resources/semgrep/async.yml +0 -0
  305. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/resources/semgrep/code-quality.yml +0 -0
  306. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/resources/semgrep/feature-detection.yml +0 -0
  307. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/runtime.py +0 -0
  308. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/sync/__init__.py +0 -0
  309. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/sync/bridge_probe.py +0 -0
  310. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/sync/bridge_sync.py +0 -0
  311. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/sync/bridge_watch.py +0 -0
  312. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/sync/change_detector.py +0 -0
  313. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/sync/code_to_spec.py +0 -0
  314. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/sync/drift_detector.py +0 -0
  315. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/sync/repository_sync.py +0 -0
  316. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/sync/spec_to_code.py +0 -0
  317. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/sync/spec_to_tests.py +0 -0
  318. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/sync/watcher.py +0 -0
  319. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/sync/watcher_enhanced.py +0 -0
  320. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/telemetry.py +0 -0
  321. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/templates/__init__.py +0 -0
  322. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/templates/bridge_templates.py +0 -0
  323. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/templates/defaults/defect_v1.yaml +0 -0
  324. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/templates/defaults/enabler_v1.yaml +0 -0
  325. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/templates/defaults/spike_v1.yaml +0 -0
  326. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/templates/defaults/user_story_v1.yaml +0 -0
  327. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/templates/frameworks/scrum/user_story_v1.yaml +0 -0
  328. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/templates/personas/product-owner/user_story_v1.yaml +0 -0
  329. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/templates/providers/ado/work_item_v1.yaml +0 -0
  330. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/templates/registry.py +0 -0
  331. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/templates/specification_templates.py +0 -0
  332. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/__init__.py +0 -0
  333. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/acceptance_criteria.py +0 -0
  334. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/auth_tokens.py +0 -0
  335. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/bundle_converters.py +0 -0
  336. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/bundle_loader.py +0 -0
  337. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/code_change_detector.py +0 -0
  338. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/console.py +0 -0
  339. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/content_sanitizer.py +0 -0
  340. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/context_detection.py +0 -0
  341. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/enrichment_context.py +0 -0
  342. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/enrichment_parser.py +0 -0
  343. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/env_manager.py +0 -0
  344. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/feature_keys.py +0 -0
  345. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/git.py +0 -0
  346. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/github_annotations.py +0 -0
  347. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/ide_setup.py +0 -0
  348. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/incremental_check.py +0 -0
  349. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/metadata.py +0 -0
  350. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/optional_deps.py +0 -0
  351. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/performance.py +0 -0
  352. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/persona_ownership.py +0 -0
  353. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/progress.py +0 -0
  354. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/progressive_disclosure.py +0 -0
  355. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/prompts.py +0 -0
  356. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/sdd_discovery.py +0 -0
  357. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/source_scanner.py +0 -0
  358. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/structure.py +0 -0
  359. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/structured_io.py +0 -0
  360. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/suggestions.py +0 -0
  361. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/terminal.py +0 -0
  362. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/utils/yaml_utils.py +0 -0
  363. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/validators/__init__.py +0 -0
  364. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/validators/agile_validation.py +0 -0
  365. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/validators/change_proposal_integration.py +0 -0
  366. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/validators/cli_first_validator.py +0 -0
  367. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/validators/contract_validator.py +0 -0
  368. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/validators/fsm.py +0 -0
  369. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/validators/repro_checker.py +0 -0
  370. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/validators/schema.py +0 -0
  371. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/validators/sidecar/__init__.py +0 -0
  372. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/validators/sidecar/contract_populator.py +0 -0
  373. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/validators/sidecar/crosshair_runner.py +0 -0
  374. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/validators/sidecar/crosshair_summary.py +0 -0
  375. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/validators/sidecar/dependency_installer.py +0 -0
  376. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/validators/sidecar/framework_detector.py +0 -0
  377. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/validators/sidecar/frameworks/__init__.py +0 -0
  378. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/validators/sidecar/frameworks/base.py +0 -0
  379. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/validators/sidecar/frameworks/django.py +0 -0
  380. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/validators/sidecar/frameworks/drf.py +0 -0
  381. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/validators/sidecar/frameworks/fastapi.py +0 -0
  382. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/validators/sidecar/frameworks/flask.py +0 -0
  383. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/validators/sidecar/harness_generator.py +0 -0
  384. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/validators/sidecar/models.py +0 -0
  385. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/validators/sidecar/orchestrator.py +0 -0
  386. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/validators/sidecar/specmatic_runner.py +0 -0
  387. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/validators/sidecar/unannotated_detector.py +0 -0
  388. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/src/specfact_cli/versioning/__init__.py +0 -0
  389. {specfact_cli-0.37.1 → specfact_cli-0.37.2}/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.37.1
3
+ Version: 0.37.2
4
4
  Summary: The swiss knife CLI for agile DevOps teams. Keep backlog, specs, tests, and code in sync with validation and contract enforcement for new projects and long-lived codebases.
5
5
  Project-URL: Homepage, https://github.com/nold-ai/specfact-cli
6
6
  Project-URL: Repository, https://github.com/nold-ai/specfact-cli.git
@@ -224,7 +224,9 @@ Classifier: Topic :: Software Development :: Testing
224
224
  Requires-Python: >=3.11
225
225
  Requires-Dist: azure-identity>=1.17.1
226
226
  Requires-Dist: beartype>=0.22.4
227
+ Requires-Dist: cffi>=1.17.1
227
228
  Requires-Dist: crosshair-tool>=0.0.97
229
+ Requires-Dist: cryptography>=43.0.0
228
230
  Requires-Dist: gitpython>=3.1.45
229
231
  Requires-Dist: graphviz>=0.20.1
230
232
  Requires-Dist: hypothesis>=6.142.4
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "specfact-cli"
7
- version = "0.37.1"
7
+ version = "0.37.2"
8
8
  description = "The swiss knife CLI for agile DevOps teams. Keep backlog, specs, tests, and code in sync with validation and contract enforcement for new projects and long-lived codebases."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -56,6 +56,8 @@ dependencies = [
56
56
  "PyYAML>=6.0.3",
57
57
  "requests>=2.32.3",
58
58
  "azure-identity>=1.17.1",
59
+ "cryptography>=43.0.0",
60
+ "cffi>=1.17.1",
59
61
 
60
62
  # CLI framework
61
63
  "typer>=0.20.0",
@@ -3,4 +3,4 @@ SpecFact CLI - Spec→Contract→Sentinel tool for contract-driven development.
3
3
  """
4
4
 
5
5
  # Package version: keep in sync with pyproject.toml, setup.py, src/specfact_cli/__init__.py
6
- __version__ = "0.36.1"
6
+ __version__ = "0.37.2"
@@ -8,6 +8,6 @@ This package provides command-line tools for:
8
8
  - Supporting agile ceremonies and team workflows
9
9
  """
10
10
 
11
- __version__ = "0.37.1"
11
+ __version__ = "0.37.2"
12
12
 
13
13
  __all__ = ["__version__"]
@@ -1,5 +1,5 @@
1
1
  name: analyze
2
- version: 0.37.1
2
+ version: 0.37.2
3
3
  commands:
4
4
  - analyze
5
5
  command_help:
@@ -15,5 +15,5 @@ publisher:
15
15
  description: Analyze codebase quality, contracts, and architecture signals.
16
16
  license: Apache-2.0
17
17
  integrity:
18
- checksum: sha256:81401deb9416cb772437ab806dbc377778f7cf4d2986e8169765de59d1708733
19
- signature: YfTBJOyF5OxkRkIg5Fffqtbc3DHa/eXoewyav97FwEMRZoqRXH6Fhhu80UUjKPEYMWP5JzRU8dWgvi8FgfFqBQ==
18
+ checksum: sha256:8f0919570eb25f9643f3f4557f40d8137c4754e4422ff71bdbb7ed2aa04e4bff
19
+ signature: 6sTJRGUeApach2vdwQJubd3bHaJm2bu7b46DnUFJGAZ95X6dLMCyuCWVdxTRA6kX3YHblYZD8SfFwAPPsl1KAg==
@@ -1,5 +1,5 @@
1
1
  name: auth
2
- version: 0.37.1
2
+ version: 0.37.2
3
3
  commands:
4
4
  - auth
5
5
  command_help:
@@ -15,5 +15,5 @@ publisher:
15
15
  description: Authenticate SpecFact with supported DevOps providers.
16
16
  license: Apache-2.0
17
17
  integrity:
18
- checksum: sha256:d085de940d5de887f858462eff10a75e5acdb2e31cc61ed7dc79bfe6e4527e76
19
- signature: SyoiHxZHlmQLzdnqn45c8B/dzZuqyWzflAo/hf0PWsckPSfeGN6ytlGgTJPV8Rq8IG96aVnPkir2dEJ4gavxAQ==
18
+ checksum: sha256:fd0c9ff643c73a25c229e5925b58446ff25af7ec5ab4412d3eff9704b4cc10c1
19
+ signature: 4KKwmf58+3boa+2jMF9m2NvjGcXB6Jdjfu0C6MV5Io+XjF6FUPyOmf7iz2xH9afgTTeVLVdc7X5EjJJGm5tMAQ==
@@ -1,5 +1,5 @@
1
1
  name: backlog
2
- version: 0.37.1
2
+ version: 0.37.2
3
3
  commands:
4
4
  - backlog
5
5
  command_help:
@@ -28,5 +28,5 @@ publisher:
28
28
  description: Manage backlog ceremonies, refinement, and dependency insights.
29
29
  license: Apache-2.0
30
30
  integrity:
31
- checksum: sha256:db36a40672119b436b50bd4142400feec3398ae2732cfa357eacb7b40d8b8582
32
- signature: NXgVtRf+ubB+upfAacJUTX8yaGw/cdZa9SSxqusak3ijGZe5POtK+ud+n2lnVMCg/9pOzoq8wdgsTrVr3mkCDA==
31
+ checksum: sha256:6d31c481c40241a744ffa255d29bcf834e5715de310f58f7ebc74e19f1e4fd8d
32
+ signature: 20mO8sayOcVV992iqYROkQL/Q7jxjJE3re1fWYbTLIW7HPskNg1CROpCnaeUv9dr629qPMs/YVlzadMl317VDw==
@@ -1,5 +1,5 @@
1
1
  name: contract
2
- version: 0.37.1
2
+ version: 0.37.2
3
3
  commands:
4
4
  - contract
5
5
  command_help:
@@ -15,5 +15,5 @@ publisher:
15
15
  description: Validate and manage API contracts for project bundles.
16
16
  license: Apache-2.0
17
17
  integrity:
18
- checksum: sha256:577b9ee6af8075c0ebf58665a50ec5be6b2de935f401454f831447905320b649
19
- signature: gHyTzZkYnLDxf27XFNHH/pauUhZ5ZZfTwPNQBwWCZ/v4oEdDV8gGjDr84g2KSsH8myrE7J8q47iBChxqO+FjBw==
18
+ checksum: sha256:5cc204c3bab58765f19862a6fe2127ddb0b6f0b56422bfc078d69beb91398f0d
19
+ signature: URMN7NMTIsPqZmtcDW4onpaH1Up4kpZaE49iyb3jaqN4x2KuEGDyU4uudhzu/4Pu1DObWu20c+aVfwtj26LbCQ==
@@ -1,5 +1,5 @@
1
1
  name: drift
2
- version: 0.37.1
2
+ version: 0.37.2
3
3
  commands:
4
4
  - drift
5
5
  command_help:
@@ -15,5 +15,5 @@ publisher:
15
15
  description: Detect and report drift between code, plans, and specs.
16
16
  license: Apache-2.0
17
17
  integrity:
18
- checksum: sha256:5bf84d0a840bbdb47ccacda4490d19685d1298c3f7fd3b8e48ca641a08727e08
19
- signature: S8djuQsc+7LBZH8myx+aUNeSfSpnLHXL70iCrK9yCfyYJbqDklQpKNxBGJQ4DjzrApm6ZyTBoxZdmA1BxDvDBw==
18
+ checksum: sha256:368d6beaf1b4356741c1dbdd8125800e466abb47d8a18e14e2c0f9c66c94397b
19
+ signature: +gU8OTtpxWqIKTk2xoL4Msed1alxTk4soy/HYG4wJuOcwQgaxG7tM/WEWTRMCXHTN4kCiN+3Wqp975FUtW0UDw==
@@ -1,5 +1,5 @@
1
1
  name: enforce
2
- version: 0.37.1
2
+ version: 0.37.2
3
3
  commands:
4
4
  - enforce
5
5
  command_help:
@@ -16,5 +16,5 @@ publisher:
16
16
  description: Apply governance policies and quality gates to bundles.
17
17
  license: Apache-2.0
18
18
  integrity:
19
- checksum: sha256:16a8bc8d027b175321696f01fceb40a3cbc4a0567fe165c560be94221e412f88
20
- signature: OuAE5iZ7AxSsD6VDfm5YKCtxQLJ33i4ACEW/5ejiWY0wlsgQtpkf2CMZaXWUBvS9GvxhID6PS3+yJMgzAaHBAA==
19
+ checksum: sha256:e93b26c59b548af9cc3230b18eb37aff8c3dc85132fed7457f19bdaaaef1e8a0
20
+ signature: TcjUHtOLqZ3TNlUB8cq1gwUJY1qjzQ1z6mh8nokMLp+svvaGVJc6zlkcYTN8InmiCnrUoevfUutuDZvN2gGSDg==
@@ -1,5 +1,5 @@
1
1
  name: generate
2
- version: 0.37.1
2
+ version: 0.37.2
3
3
  commands:
4
4
  - generate
5
5
  command_help:
@@ -16,5 +16,5 @@ publisher:
16
16
  description: Generate implementation artifacts from plans and SDD.
17
17
  license: Apache-2.0
18
18
  integrity:
19
- checksum: sha256:d9dd799f0a13dc07d2200fdfbe5a4ce3cf869c2737d08f4101cebf3d4ff983fd
20
- signature: 7IWVqUEAcD06JdiOinxBUQYp1coH81AecR0KXBQiy+O4XWg9/zI9YQVwWurXWozsSgCBeT/D4HOQ4bxOvrw3DQ==
19
+ checksum: sha256:16e7312d299e4c1c4ceedea2fdcead13ffd81e795e810fbd6ffabb5d0352d744
20
+ signature: mkgqkfF8n6gix2oAlV62FJEwIJfZ0ruiiMLcV5KmiH5v9OmuuHFK4NPZxC7nBbRXWoTz2jPD0uEnsU+DIakbCg==
@@ -1,5 +1,5 @@
1
1
  name: import_cmd
2
- version: 0.37.1
2
+ version: 0.37.2
3
3
  commands:
4
4
  - import
5
5
  command_help:
@@ -15,5 +15,5 @@ publisher:
15
15
  description: Import projects and requirements from code and external tools.
16
16
  license: Apache-2.0
17
17
  integrity:
18
- checksum: sha256:290a3dbe86dce079ed7cde343893830725ff80068fa89a8d0b0fd935bb746dfa
19
- signature: ITiHkBu+zHOChLHGlXh3IQakaHxcFasY+ifLkWhbY9J8/d7hb3fEMz3t0IB3F3/VXi+dvsQdPhxha+baAVpvAA==
18
+ checksum: sha256:ed7387b3bc4de4fc6e320b976f180befe49961669c337257851de7da385d9ca4
19
+ signature: j2HV/fWLN7nzmTzWseUIPNv+E0gw5Pif4+a8c6Qe8eHimUxnx6OAauLV9HgawdW9GG52YkDIwpTOkAZ6BBLCBg==
@@ -1,5 +1,5 @@
1
1
  name: init
2
- version: 0.37.1
2
+ version: 0.37.2
3
3
  commands:
4
4
  - init
5
5
  command_help:
@@ -15,5 +15,5 @@ publisher:
15
15
  description: Initialize SpecFact workspace and bootstrap local configuration.
16
16
  license: Apache-2.0
17
17
  integrity:
18
- checksum: sha256:e6d6cdf1c10a6a760388db5a66e0f666f93b0835dfff1c3db13b19f8da9bce13
19
- signature: IvGAdhMfLOyArra2PKdxqN0ozHw6m4gvZh0sEjiLSWx/2hiDDSXHSy6uHx4hEx0868bhknE6mvyUAAL3PZ4XCg==
18
+ checksum: sha256:38a3261dd947f5827b1a67b34970c0ab81c13de6d2657d7cf5af694da6da8436
19
+ signature: khTbNy9iE3eXBNWo0+/Cb2B533U1PrLLNKtPnRiJPKNCQTrlfxhWvG+GEcnnFUinSTnfsjY9Of5GJYOuhJyACA==
@@ -1,5 +1,5 @@
1
1
  name: migrate
2
- version: 0.37.1
2
+ version: 0.37.2
3
3
  commands:
4
4
  - migrate
5
5
  command_help:
@@ -15,5 +15,5 @@ publisher:
15
15
  description: Migrate project bundles across supported structure versions.
16
16
  license: Apache-2.0
17
17
  integrity:
18
- checksum: sha256:3e2b5ea6a71f3917dbec01c92739e5280ff51163b8c64a60e757c33e5a334e6d
19
- signature: 0USQ8OTre4Czs0lMzK2Oa2q2CwquGwPdLKnpVNZmSh9ytdiQqG2fx0BvdqDFi460gxx0sxOKAiWDJ+0/coKBBw==
18
+ checksum: sha256:365f469ff6b6fe9f80cb1cf078adf4da7acceed04c5d18b3a0b37b8c1e58547b
19
+ signature: APKTWd9UPlnBk4ypohLr3qernnOqIWO0sn7ABgozdD62tTqWnZe5lYRk1xJzXFRxCqO+aL+6/Xdcl8M72OfABw==
@@ -1,5 +1,5 @@
1
1
  name: module-registry
2
- version: 0.37.1
2
+ version: 0.37.2
3
3
  commands:
4
4
  - module
5
5
  command_help:
@@ -15,5 +15,5 @@ publisher:
15
15
  description: 'Manage modules: search, list, show, install, and upgrade.'
16
16
  license: Apache-2.0
17
17
  integrity:
18
- checksum: sha256:71f9c1bc5ae79c2a234920b5dcb1be415b4b2255de5827786344280320291629
19
- signature: rNpk992cIrwe9BATaH26EPTVgkj1W1ZJcYnAnOikYqGAPxr+f2xprf4kAvHMym2naI0N+P1fjbT8ZnpP2zenCw==
18
+ checksum: sha256:ce1d40c3c62dcd8d15181ff263811a6c28a88070dd672fba74e09eea64a830e6
19
+ signature: TIK6aQt7hyoxM11M8XYByKP7s9DlK7+F1h0mVxCRuQyznTV0Pq8c56XD7if+GhBFptqPB94NwQ36rPdjqOCSDw==
@@ -1,5 +1,5 @@
1
1
  name: patch-mode
2
- version: 0.37.1
2
+ version: 0.37.2
3
3
  commands:
4
4
  - patch
5
5
  command_help:
@@ -16,5 +16,5 @@ publisher:
16
16
  description: Prepare, review, and apply structured repository patches safely.
17
17
  license: Apache-2.0
18
18
  integrity:
19
- checksum: sha256:05cb624a43ac45da4a467e1a990b8ceb378a7f5d9a1d4edbf583198a8d9bc73b
20
- signature: txeDUarIvALJFnaZVWky9OjJ04m9yHPnuKrA4MzOSZaOwaq9OqfLn10dPFwENveOkJ09MErBycS3QaeD8UL6AQ==
19
+ checksum: sha256:afc1985b0a9385055acf7efdf20d314198429bfdbf33a68bfbe8f8add0476456
20
+ signature: qcy6s/cQQ2WKo1wGB+PmAKyTcuWl+JmfHs4afP06420raW9mKV5fuuSTABcYH8V9hblyeloHV+I9YuwieDZhBg==
@@ -1,5 +1,5 @@
1
1
  name: plan
2
- version: 0.37.1
2
+ version: 0.37.2
3
3
  commands:
4
4
  - plan
5
5
  command_help:
@@ -16,5 +16,5 @@ publisher:
16
16
  description: Create and manage implementation plans for project execution.
17
17
  license: Apache-2.0
18
18
  integrity:
19
- checksum: sha256:5e2ccf7212f590f19e6b68e0a6a90e6f72e1bebd28d570f1005cf3fbe320663a
20
- signature: QQxUVU+cB2XP9rs5VsYdANzrr9S5Y4VKu5B0PY+h+wx3F7mdfLsyg9xzQj4mgDeby3/XIjXQC4jywNqoqErtDg==
19
+ checksum: sha256:60f6ea69f2178bb8395ab19743318849b2caea1aad9a880d230da5c87236fd3e
20
+ signature: luy557R50WTq4gvm3Equ5SV1RMDJOs+szawTwEpgl8eGTuuDd24Nxakb9erW7qzbV5Cn0COsZffUfKvNzH4jBw==
@@ -1,5 +1,5 @@
1
1
  name: policy-engine
2
- version: 0.37.1
2
+ version: 0.37.2
3
3
  commands:
4
4
  - policy
5
5
  command_help:
@@ -19,8 +19,8 @@ publisher:
19
19
  url: https://github.com/nold-ai/specfact-cli-modules
20
20
  email: oss@nold.ai
21
21
  integrity:
22
- checksum: sha256:88003e837e99353e8c1a5df988c296c784097c6d4c81fcf0b195c610adc6ab2a
23
- signature: mGxDYiHVqmH+Iy9Ekzw9fS6cYS41W/O/eQyc75kg8PMj1FF1kWlCIRTkuE9TTHLmdD3ePz4cwGX5+PbkVioWAQ==
22
+ checksum: sha256:a239acb53ba59ca7d1f1063c90d60037a2501813d074aae0a4c4590b70a34648
23
+ signature: lG2M7QVkbaomLebkqLH3rRi64YCDGiABkaZfxl8082TSGfIcZ9K0gPXgNeEQZIKVZcVM9UnJe7NZ/fiQXr/JAw==
24
24
  dependencies: []
25
25
  description: Run policy evaluations with recommendation and compliance outputs.
26
26
  license: Apache-2.0
@@ -1,5 +1,5 @@
1
1
  name: project
2
- version: 0.37.1
2
+ version: 0.37.2
3
3
  commands:
4
4
  - project
5
5
  command_help:
@@ -15,5 +15,5 @@ publisher:
15
15
  description: Manage project bundles, contexts, and lifecycle workflows.
16
16
  license: Apache-2.0
17
17
  integrity:
18
- checksum: sha256:130e53a4266f90a6236d892c513692641e6675387bf7a63c8ac51871a27494eb
19
- signature: Nu1HNs0tAWUzLrXcHWpUWqpxsq68uYgBZWcR34nmH7iGdejEvBRh7zIC/Gx7G0nQBdVbfc4rtZEvJx55CT38CA==
18
+ checksum: sha256:80789cfb916a67bbbcd2c9416ebae21fe79affb60596d0bc218777c6652cf5d7
19
+ signature: RI2XsxN5BBurAWYlAAYm4amcCWsJ/McnJUqSua/2mDGx/KW7WoXVaMD4xccCatjTDqL6Lr7ctkVh4iQ6wTqoDg==
@@ -1,5 +1,5 @@
1
1
  name: repro
2
- version: 0.37.1
2
+ version: 0.37.2
3
3
  commands:
4
4
  - repro
5
5
  command_help:
@@ -15,5 +15,5 @@ publisher:
15
15
  description: Run reproducible validation and diagnostics workflows end-to-end.
16
16
  license: Apache-2.0
17
17
  integrity:
18
- checksum: sha256:9167dc7b6d87478d39b5597262cd36e491b62e38253f6bd984f83ecaf5c6a36c
19
- signature: DeyWsQRqOQsqlevDAZVMl9GO8K8JxCnbRddH5rhuJCQKIaLQ/gVilYklpzfK6hGota5tUi9zs88gFMFrBN1jCw==
18
+ checksum: sha256:c319deb6f08acc010d14202ed0d643309b24aaa5399f1c235dd44a388df16ca1
19
+ signature: rk3tPivhE4DLpxNZ7pSodnehc9VwmDBoVp5+7RYcNFQ/vNXeTJ++fiXU1lI6rHHIEf2MZEPqMcZ2UpCkOKBwAg==
@@ -1,5 +1,5 @@
1
1
  name: sdd
2
- version: 0.37.1
2
+ version: 0.37.2
3
3
  commands:
4
4
  - sdd
5
5
  command_help:
@@ -15,5 +15,5 @@ publisher:
15
15
  description: Create and validate Spec-Driven Development manifests and mappings.
16
16
  license: Apache-2.0
17
17
  integrity:
18
- checksum: sha256:91e50b4ba782527c1bd5acd60ff9b492cbbb51acb510e2253466af17598b0109
19
- signature: 2ZsXXuUgxbkK/cvAyyOooe/rLeUocQaxG4EkV5A+qgQL9k8WLEZnRpfcleSza6nMqMPjWJ9zgi1ksh4JZu0eBA==
18
+ checksum: sha256:13fba474517e8c1d74e4972b0d232b074a0b20a2f1860cb2b935f3cf000a682f
19
+ signature: NCuP7ytnX9XbWdlqFCaerqOsRzOiv7atY/w/ibIngAJGpFCelBwLnbf4qGHqMP10oJCAQh2oWV/13mAm6IYpCw==
@@ -1,5 +1,5 @@
1
1
  name: spec
2
- version: 0.37.1
2
+ version: 0.37.2
3
3
  commands:
4
4
  - spec
5
5
  command_help:
@@ -15,5 +15,5 @@ publisher:
15
15
  description: Integrate and run API specification and contract checks.
16
16
  license: Apache-2.0
17
17
  integrity:
18
- checksum: sha256:25ee99befd2371e1f3fcc8548883d0e7c73bd9f80e4362dd14280654246b22f0
19
- signature: QeyKrrHL4X4qL6ZjR9x5z80pBmRIJBa/SSchgs025/t/deaDbm+tqIykWTN7X7v5xPCY1ddA75kimGpddbBzAA==
18
+ checksum: sha256:9f94350b959ab97fbb309ecdd0aaaf52137ae7cbae16b66078fde7d38406f39c
19
+ signature: +UoWzNOY5pHJzrff3Rt85xnXhae/Tbsxhv4e5oH+siIIcdTjp+8qK9ZESAsT44YgqufcjiRoTi/Ld6z8s675CQ==
@@ -1,5 +1,5 @@
1
1
  name: sync
2
- version: 0.37.1
2
+ version: 0.37.2
3
3
  commands:
4
4
  - sync
5
5
  command_help:
@@ -18,5 +18,5 @@ publisher:
18
18
  description: Synchronize repository state with connected external systems.
19
19
  license: Apache-2.0
20
20
  integrity:
21
- checksum: sha256:7e70d5256aba0bcca3dbed4f6e777453b16cd03b463d49738f07e554b7bdab96
22
- signature: mqaNTclocVTrfrImqoryxSr5BhUPbqZS+6C2jCeLThaTMmSwlzkDB9OPQvDcHatdInWW/YQ1x/iaxdj56Gi+CQ==
21
+ checksum: sha256:6fcd7b3d1276c318b6ca94f61df056ebff42ec5d4c6770e5b5c7c396dccdf156
22
+ signature: 6/DQ1LgbzysUep7niPIK9iW/AYd0g4/152yEu0qksuLhPMtC88ghMTgcho1ooBQZjvYuA/T2wOVUcv5Y+UsLBw==
@@ -1,5 +1,5 @@
1
1
  name: upgrade
2
- version: 0.37.1
2
+ version: 0.37.2
3
3
  commands:
4
4
  - upgrade
5
5
  command_help:
@@ -15,5 +15,5 @@ publisher:
15
15
  description: Check and apply SpecFact CLI version upgrades.
16
16
  license: Apache-2.0
17
17
  integrity:
18
- checksum: sha256:d8c5f2fb4ed4c252701c07125cba0587262700b6738740ef1c8c174611cc5c3b
19
- signature: MDFyw5rJ3GBJ+PVMEwCMHsqtiItxryM4XpKm/h+M4bxJKFRHDww5i8Uzpl1MDBucnpW6KGoMeo7GNKgQjeHxBA==
18
+ checksum: sha256:c4dd29c7289f946a56e00a9dc408a0d56708fc39a89cd8fd5fddaadb1a56dec5
19
+ signature: 4aNspYwRcNWBnwn3p8tJUfG2BA4ZaXvRNczvjDQXTR/U/SChgMQ0e8B72ujYh0XCLFZLWCW+/kj/w2Y+N8vjCw==
@@ -1,5 +1,5 @@
1
1
  name: validate
2
- version: 0.37.1
2
+ version: 0.37.2
3
3
  commands:
4
4
  - validate
5
5
  command_help:
@@ -15,5 +15,5 @@ publisher:
15
15
  description: Run schema, contract, and workflow validation suites.
16
16
  license: Apache-2.0
17
17
  integrity:
18
- checksum: sha256:cec0b0ed07a1bfb596c4ff0d0e80422b8a28c76d17cf358110550b594a132932
19
- signature: wDHd+UXbv7luqntwGsRKf4eDRIxDr97hk1avCYHR88TyhGHjZglmzAeFQuDBR4Dx5BLSCl8WKFT8Vh6y/wquDg==
18
+ checksum: sha256:b1f954e5fef7f8b964299aec54f75b3b24ebc50c24b90db8598fc4b3d8532ee1
19
+ signature: +1azi81aZmGaQxiu4i9gcemRTPyBthDiwP+VWEeK9AGTcTPHjz/meuY3GsO8c33SBVsNltZ3PEggQpw7h8kDCw==
@@ -7,6 +7,7 @@ import os
7
7
  import shutil
8
8
  import tarfile
9
9
  import tempfile
10
+ from functools import lru_cache
10
11
  from pathlib import Path
11
12
 
12
13
  import yaml
@@ -152,6 +153,26 @@ def _module_artifact_payload_stable(package_dir: Path) -> bytes:
152
153
  return "\n".join(entries).encode("utf-8")
153
154
 
154
155
 
156
+ @beartype
157
+ def _is_signature_backend_unavailable(error: ValueError) -> bool:
158
+ """Return True when signature verification backend is unavailable in runtime."""
159
+ message = str(error)
160
+ return (
161
+ "No module named '_cffi_backend'" in message
162
+ or "requires the 'cryptography' package" in message
163
+ or "Signature verification backend unavailable" in message
164
+ )
165
+
166
+
167
+ @lru_cache(maxsize=8)
168
+ def _warn_signature_backend_unavailable_once(error_message: str) -> None:
169
+ """Emit signature-backend-unavailable warning at most once per distinct message."""
170
+ get_bridge_logger(__name__).warning(
171
+ "Module signature backend unavailable (%s). Falling back to checksum-only verification.",
172
+ error_message,
173
+ )
174
+
175
+
155
176
  @beartype
156
177
  def install_bundled_module(
157
178
  module_name: str,
@@ -337,6 +358,12 @@ def verify_module_artifact(
337
358
  try:
338
359
  verify_signature(verification_payload, meta.integrity.signature, key_material)
339
360
  except ValueError as exc:
361
+ if _is_signature_backend_unavailable(exc):
362
+ if require_signature and not allow_unsigned:
363
+ logger.warning("Module %s: signature is required but backend is unavailable", meta.name)
364
+ return False
365
+ _warn_signature_backend_unavailable_once(str(exc))
366
+ return True
340
367
  logger.warning("Module %s: Signature check failed: %s", meta.name, exc)
341
368
  return False
342
369
  elif require_signature and not allow_unsigned:
@@ -21,7 +21,7 @@ from rich.panel import Panel
21
21
  from rich.progress import Progress, SpinnerColumn, TextColumn
22
22
 
23
23
  from specfact_cli import __version__
24
- from specfact_cli.registry.module_installer import USER_MODULES_ROOT, get_outdated_or_missing_bundled_modules
24
+ from specfact_cli.registry.module_installer import get_outdated_or_missing_bundled_modules
25
25
  from specfact_cli.utils.ide_setup import IDE_CONFIG, detect_ide, find_package_resources_path
26
26
  from specfact_cli.utils.metadata import (
27
27
  get_last_checked_version,
@@ -287,7 +287,7 @@ def check_module_freshness(repo_path: Path | None = None) -> ModuleFreshnessChec
287
287
  repo_path = Path.cwd()
288
288
 
289
289
  project_modules_root = repo_path / ".specfact" / "modules"
290
- user_modules_root = USER_MODULES_ROOT
290
+ user_modules_root = Path.home() / ".specfact" / "modules"
291
291
 
292
292
  project_outdated_modules = get_outdated_or_missing_bundled_modules(project_modules_root)
293
293
  user_outdated_modules = get_outdated_or_missing_bundled_modules(user_modules_root)
File without changes
File without changes
File without changes