codd-dev 2.73.0__tar.gz → 2.75.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 (612) hide show
  1. {codd_dev-2.73.0 → codd_dev-2.75.0}/PKG-INFO +1 -1
  2. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/__init__.py +1 -1
  3. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/languages/profiles/go.yaml +7 -1
  4. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/languages/verify_executor.py +75 -6
  5. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/languages/verify_plan.py +31 -1
  6. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/repair/verify_runner.py +268 -7
  7. {codd_dev-2.73.0 → codd_dev-2.75.0}/pyproject.toml +1 -1
  8. {codd_dev-2.73.0 → codd_dev-2.75.0}/.gitignore +0 -0
  9. {codd_dev-2.73.0 → codd_dev-2.75.0}/LICENSE +0 -0
  10. {codd_dev-2.73.0 → codd_dev-2.75.0}/README.md +0 -0
  11. {codd_dev-2.73.0 → codd_dev-2.75.0}/bench_fixture/README.md +0 -0
  12. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/__main__.py +0 -0
  13. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/_git_helper.py +0 -0
  14. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/action_outcome.py +0 -0
  15. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/ai_invoke.py +0 -0
  16. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/ai_patch.py +0 -0
  17. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/artifact_contract.py +0 -0
  18. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/artifact_ids.py +0 -0
  19. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/artifacts/catalog.yaml +0 -0
  20. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/ask_user_question_adapter.py +0 -0
  21. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/assembler.py +0 -0
  22. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/bridge.py +0 -0
  23. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/brownfield/__init__.py +0 -0
  24. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/brownfield/pipeline.py +0 -0
  25. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/capability_completeness.py +0 -0
  26. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/claude_cli.py +0 -0
  27. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/cli.py +0 -0
  28. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/clustering.py +0 -0
  29. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/coherence_adapters.py +0 -0
  30. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/coherence_engine.py +0 -0
  31. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/confidence.py +0 -0
  32. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/config.py +0 -0
  33. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/config_schema.py +0 -0
  34. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/contracts.py +0 -0
  35. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/contracts_registry/__init__.py +0 -0
  36. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/contracts_registry/__main__.py +0 -0
  37. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/contracts_registry/certify.py +0 -0
  38. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/contracts_registry/generate_matrix.py +0 -0
  39. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/contracts_registry/registry.py +0 -0
  40. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/coverage_auditor.py +0 -0
  41. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/coverage_execution_coherence.py +0 -0
  42. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/coverage_metrics.py +0 -0
  43. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/__init__.py +0 -0
  44. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/auto_repair.py +0 -0
  45. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/builder.py +0 -0
  46. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/checks/__init__.py +0 -0
  47. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/checks/_one_to_many_detection.py +0 -0
  48. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/checks/artifact_contract_check.py +0 -0
  49. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/checks/ci_health.py +0 -0
  50. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/checks/dependency_freshness.py +0 -0
  51. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/checks/depends_on_consistency.py +0 -0
  52. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/checks/deployment_completeness.py +0 -0
  53. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/checks/edge_validity.py +0 -0
  54. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/checks/environment_coverage.py +0 -0
  55. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/checks/implementation_coverage.py +0 -0
  56. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/checks/node_completeness.py +0 -0
  57. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/checks/opt_out.py +0 -0
  58. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/checks/task_completion.py +0 -0
  59. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/checks/transitive_closure.py +0 -0
  60. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/checks/ui_coherence.py +0 -0
  61. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/checks/user_journey_coherence.py +0 -0
  62. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/coverage_axes.py +0 -0
  63. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/defaults/cli.yaml +0 -0
  64. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/defaults/cpp_embedded.yaml +0 -0
  65. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/defaults/csharp.yaml +0 -0
  66. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/defaults/elixir.yaml +0 -0
  67. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/defaults/generic.yaml +0 -0
  68. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/defaults/iot.yaml +0 -0
  69. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/defaults/java.yaml +0 -0
  70. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/defaults/kotlin.yaml +0 -0
  71. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/defaults/mobile.yaml +0 -0
  72. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/defaults/ruby.yaml +0 -0
  73. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/defaults/rust.yaml +0 -0
  74. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/defaults/scala.yaml +0 -0
  75. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/defaults/swift.yaml +0 -0
  76. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/defaults/test_frameworks.yaml +0 -0
  77. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/defaults/web.yaml +0 -0
  78. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/extractor.py +0 -0
  79. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/impact.py +0 -0
  80. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dag/runner.py +0 -0
  81. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/defaults.py +0 -0
  82. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/defaults.yaml +0 -0
  83. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/dependency_lock_coherence.py +0 -0
  84. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deploy_targets/__init__.py +0 -0
  85. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deploy_targets/app_service.py +0 -0
  86. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deploy_targets/base.py +0 -0
  87. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deploy_targets/docker_compose.py +0 -0
  88. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deployer.py +0 -0
  89. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deployment/__init__.py +0 -0
  90. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deployment/checks/__init__.py +0 -0
  91. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deployment/defaults/deploy_targets.yaml +0 -0
  92. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
  93. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deployment/defaults/schema_providers.yaml +0 -0
  94. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deployment/defaults/verification_templates.yaml +0 -0
  95. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deployment/extractor.py +0 -0
  96. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deployment/providers/__init__.py +0 -0
  97. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deployment/providers/ai_command.py +0 -0
  98. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deployment/providers/ai_command_factory.py +0 -0
  99. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deployment/providers/codex_app_server.py +0 -0
  100. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deployment/providers/llm_consideration.py +0 -0
  101. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deployment/providers/schema/__init__.py +0 -0
  102. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deployment/providers/schema/prisma.py +0 -0
  103. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deployment/providers/target/__init__.py +0 -0
  104. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deployment/providers/target/docker_compose.py +0 -0
  105. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deployment/providers/verification/__init__.py +0 -0
  106. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
  107. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deployment/providers/verification/cdp_browser.py +0 -0
  108. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deployment/providers/verification/cdp_engines.py +0 -0
  109. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
  110. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deployment/providers/verification/cdp_wire.py +0 -0
  111. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deployment/providers/verification/curl.py +0 -0
  112. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deployment/providers/verification/form_strategies.py +0 -0
  113. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deployment/providers/verification/means_catalog.py +0 -0
  114. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deployment/providers/verification/playwright.py +0 -0
  115. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deployment/providers/verification/pytest_http.py +0 -0
  116. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/deployment/providers/verification/vitest.py +0 -0
  117. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/design_md.py +0 -0
  118. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/diff/__init__.py +0 -0
  119. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/diff/apply.py +0 -0
  120. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/diff/engine.py +0 -0
  121. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/diff/persistence.py +0 -0
  122. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/diff/templates/diff_prompt.md +0 -0
  123. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/discovery.py +0 -0
  124. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/drift.py +0 -0
  125. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/e2e_contract_coherence.py +0 -0
  126. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/e2e_extractor.py +0 -0
  127. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/e2e_generator.py +0 -0
  128. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/e2e_harness.py +0 -0
  129. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/e2e_runner.py +0 -0
  130. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/elicit/__init__.py +0 -0
  131. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/elicit/apply.py +0 -0
  132. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/elicit/engine.py +0 -0
  133. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/elicit/finding.py +0 -0
  134. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/elicit/formatters/__init__.py +0 -0
  135. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/elicit/formatters/base.py +0 -0
  136. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/elicit/formatters/interactive.py +0 -0
  137. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/elicit/formatters/json_fmt.py +0 -0
  138. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/elicit/formatters/md.py +0 -0
  139. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/elicit/lexicon_loader.py +0 -0
  140. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/elicit/persistence.py +0 -0
  141. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
  142. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/env_refs.py +0 -0
  143. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/extract_ai.py +0 -0
  144. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/extract_paths.py +0 -0
  145. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/extractor.py +0 -0
  146. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/fix/__init__.py +0 -0
  147. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/fix/candidate_selector.py +0 -0
  148. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/fix/design_updater.py +0 -0
  149. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/fix/impl_propagation.py +0 -0
  150. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/fix/interactive_prompt.py +0 -0
  151. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/fix/phenomenon_fixer.py +0 -0
  152. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/fix/phenomenon_parser.py +0 -0
  153. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/fix/risk_classifier.py +0 -0
  154. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/fix/templates/clarification_question.txt +0 -0
  155. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/fix/templates/design_update.txt +0 -0
  156. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/fix/templates/impl_update.txt +0 -0
  157. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/fix/templates/phenomenon_parse.txt +0 -0
  158. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/fix/templates/risk_assessment.txt +0 -0
  159. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/fix/templates_loader.py +0 -0
  160. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/fixer.py +0 -0
  161. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/fixup_drift.py +0 -0
  162. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/fixup_drift_strategies/__init__.py +0 -0
  163. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
  164. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
  165. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/fixup_drift_strategies/url_drift.py +0 -0
  166. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/frontmatter.py +0 -0
  167. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/generator.py +0 -0
  168. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/git_evidence.py +0 -0
  169. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/graph.py +0 -0
  170. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/greenfield/__init__.py +0 -0
  171. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/greenfield/pipeline.py +0 -0
  172. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/hitl_session.py +0 -0
  173. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/hooks/__init__.py +0 -0
  174. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/hooks/pre-commit +0 -0
  175. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/hooks/recipes/claude_requirements_nudge.json +0 -0
  176. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/hooks/recipes/claude_settings_example.json +0 -0
  177. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/hooks/recipes/codex_hook.sh +0 -0
  178. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/hooks/recipes/git_post_commit.sh +0 -0
  179. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/hooks/recipes/git_pre_commit.sh +0 -0
  180. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/iac_nfr.py +0 -0
  181. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/implement_oracle.py +0 -0
  182. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/implement_oracle_scope.py +0 -0
  183. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/implementer/__init__.py +0 -0
  184. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/implementer/chunked_runner.py +0 -0
  185. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/implementer/typecheck_loop.py +0 -0
  186. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/implementer.py +0 -0
  187. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/import_coherence.py +0 -0
  188. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/inheritance.py +0 -0
  189. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/init/__init__.py +0 -0
  190. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/init/lexicon_suggest.py +0 -0
  191. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/init/llm_lexicon_suggester.py +0 -0
  192. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/init/stack_detector.py +0 -0
  193. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/knowledge_fetcher.py +0 -0
  194. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/languages/__init__.py +0 -0
  195. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/languages/adapters/__init__.py +0 -0
  196. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/languages/adapters/runner_report.py +0 -0
  197. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/languages/builtin_adapters.py +0 -0
  198. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/languages/compat.py +0 -0
  199. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/languages/contract.py +0 -0
  200. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/languages/loader.py +0 -0
  201. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/languages/path_planner.py +0 -0
  202. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/languages/profile.py +0 -0
  203. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/languages/profiles/python.yaml +0 -0
  204. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/languages/profiles/typescript.yaml +0 -0
  205. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/languages/registry.py +0 -0
  206. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/lexicon.py +0 -0
  207. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/lexicon_cli/__init__.py +0 -0
  208. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/lexicon_cli/formatters/__init__.py +0 -0
  209. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/lexicon_cli/formatters/html.py +0 -0
  210. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
  211. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/lexicon_cli/formatters/md.py +0 -0
  212. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/lexicon_cli/inspector.py +0 -0
  213. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/lexicon_cli/manager.py +0 -0
  214. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/lexicon_cli/reporter.py +0 -0
  215. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/lexicon_cli/threshold.py +0 -0
  216. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/llm/__init__.py +0 -0
  217. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/llm/approval.py +0 -0
  218. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/llm/best_practice_augmenter.py +0 -0
  219. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/llm/criteria_expander.py +0 -0
  220. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/llm/design_doc_extractor.py +0 -0
  221. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/llm/impl_step_deriver.py +0 -0
  222. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/llm/means_catalog_loader.py +0 -0
  223. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/llm/parser.py +0 -0
  224. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/llm/plan_deriver.py +0 -0
  225. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/llm/prompt_builder.py +0 -0
  226. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/llm/strategy_validator.py +0 -0
  227. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/llm/templates/best_practice_augment_meta.md +0 -0
  228. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/llm/templates/criteria_expand_meta.md +0 -0
  229. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/llm/templates/design_doc_extract_meta.md +0 -0
  230. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/llm/templates/impl_step_derive_meta.md +0 -0
  231. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
  232. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/llm/templates/meta_instruction.md +0 -0
  233. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/llm/templates/plan_derive_meta.md +0 -0
  234. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/llm/templates/verification_means_catalog.yaml +0 -0
  235. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/mcp_server.py +0 -0
  236. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/measure.py +0 -0
  237. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/operational_e2e_audit.py +0 -0
  238. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/operations_derive.py +0 -0
  239. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/parsing/__init__.py +0 -0
  240. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/parsing/_shared.py +0 -0
  241. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/parsing/api_specs.py +0 -0
  242. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/parsing/filesystem_routes.py +0 -0
  243. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/parsing/iac.py +0 -0
  244. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/parsing/python_ast.py +0 -0
  245. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/parsing/schemas.py +0 -0
  246. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/parsing/tests_builddeps.py +0 -0
  247. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/parsing/treesitter.py +0 -0
  248. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/planner.py +0 -0
  249. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/policy.py +0 -0
  250. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/preflight/__init__.py +0 -0
  251. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/preflight/defaults/cli.yaml +0 -0
  252. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/preflight/defaults/generic.yaml +0 -0
  253. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/preflight/defaults/iot.yaml +0 -0
  254. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/preflight/defaults/mobile.yaml +0 -0
  255. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/preflight/defaults/web.yaml +0 -0
  256. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/project_types.py +0 -0
  257. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/propagate.py +0 -0
  258. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/propagation_common.py +0 -0
  259. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/propagator.py +0 -0
  260. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/reconciliation_ledger.py +0 -0
  261. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/reference_resolution.py +0 -0
  262. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/registry.py +0 -0
  263. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/repair/__init__.py +0 -0
  264. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/repair/approval_repair.py +0 -0
  265. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/repair/auto_scope_guard.py +0 -0
  266. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/repair/engine.py +0 -0
  267. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/repair/git_patcher.py +0 -0
  268. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/repair/history.py +0 -0
  269. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/repair/llm_repair_engine.py +0 -0
  270. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/repair/loop.py +0 -0
  271. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/repair/primary_picker.py +0 -0
  272. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/repair/proof_breaks.py +0 -0
  273. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/repair/repair_result.py +0 -0
  274. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/repair/repairability_classifier.py +0 -0
  275. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/repair/schema.py +0 -0
  276. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/repair/templates/analyze_meta.md +0 -0
  277. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/repair/templates/propose_meta.md +0 -0
  278. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/repair/templates/repair_strategy_meta.md +0 -0
  279. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/repair/templates/repairability_meta.md +0 -0
  280. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/repair/test_failure_attribution.py +0 -0
  281. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/repair_slice.py +0 -0
  282. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/require.py +0 -0
  283. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/require_plugins.py +0 -0
  284. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/require_propagate.py +0 -0
  285. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/required_artifacts/defaults/cli.yaml +0 -0
  286. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/required_artifacts/defaults/generic.yaml +0 -0
  287. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/required_artifacts/defaults/iot.yaml +0 -0
  288. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/required_artifacts/defaults/mobile.yaml +0 -0
  289. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/required_artifacts/defaults/web.yaml +0 -0
  290. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/required_artifacts_deriver.py +0 -0
  291. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/requirement_completeness/defaults/cli.yaml +0 -0
  292. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/requirement_completeness/defaults/generic.yaml +0 -0
  293. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/requirement_completeness/defaults/iot.yaml +0 -0
  294. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
  295. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/requirement_completeness/defaults/web.yaml +0 -0
  296. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/requirement_completeness_auditor.py +0 -0
  297. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/requirement_reconciliation.py +0 -0
  298. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/requirements_meta.py +0 -0
  299. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/restoration_report.py +0 -0
  300. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/restore.py +0 -0
  301. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/routes_extractor.py +0 -0
  302. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/runtime_smoke/__init__.py +0 -0
  303. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/runtime_smoke/checks.py +0 -0
  304. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/runtime_smoke/config.py +0 -0
  305. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/runtime_smoke/report.py +0 -0
  306. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/runtime_smoke/runner.py +0 -0
  307. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/scanner.py +0 -0
  308. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/schema_refs.py +0 -0
  309. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/screen_flow_validator.py +0 -0
  310. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/screen_transition_extractor.py +0 -0
  311. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/screen_transitions/defaults.yaml +0 -0
  312. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/skills_cli/__init__.py +0 -0
  313. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/skills_cli/discovery.py +0 -0
  314. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/skills_cli/manager.py +0 -0
  315. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/skills_cli/paths.py +0 -0
  316. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/stack/__init__.py +0 -0
  317. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/stack/adapters/__init__.py +0 -0
  318. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/stack/adapters/_base.py +0 -0
  319. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/stack/adapters/nextjs.py +0 -0
  320. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/stack/adapters/playwright.py +0 -0
  321. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/stack/compose.py +0 -0
  322. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/stack/loader.py +0 -0
  323. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/stack/lock.py +0 -0
  324. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/stack/obligations.py +0 -0
  325. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/stack/profile.py +0 -0
  326. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/stack/profiles/addons/playwright.yaml +0 -0
  327. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/stack/profiles/addons/prisma.yaml +0 -0
  328. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/stack/profiles/frameworks/nextjs.yaml +0 -0
  329. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/stack/project.py +0 -0
  330. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/stack/registry.py +0 -0
  331. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/stack/resolve.py +0 -0
  332. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/surface_reconciliation.py +0 -0
  333. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/synth.py +0 -0
  334. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/templates/codd.yaml.tmpl +0 -0
  335. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/templates/conventions.yaml.tmpl +0 -0
  336. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/templates/data_dependencies.yaml.tmpl +0 -0
  337. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/templates/doc_links.yaml.tmpl +0 -0
  338. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/templates/extract_ai_prompt_baseline.md +0 -0
  339. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/templates/extracted/api-contract.md.j2 +0 -0
  340. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
  341. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/templates/extracted/module-detail.md.j2 +0 -0
  342. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/templates/extracted/schema-design.md.j2 +0 -0
  343. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/templates/extracted/system-context.md.j2 +0 -0
  344. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/templates/gitignore.tmpl +0 -0
  345. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/templates/lexicon_questions.md +0 -0
  346. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/templates/lexicon_schema.yaml +0 -0
  347. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/templates/overrides.yaml.tmpl +0 -0
  348. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/test_detection.py +0 -0
  349. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/test_import_coherence.py +0 -0
  350. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/traceability.py +0 -0
  351. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/validator.py +0 -0
  352. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/vb_marker_authenticity.py +0 -0
  353. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/vb_rerun_scope.py +0 -0
  354. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/verifiable_behavior_audit.py +0 -0
  355. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/watch/__init__.py +0 -0
  356. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/watch/events.py +0 -0
  357. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/watch/propagation_log.py +0 -0
  358. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/watch/propagation_pipeline.py +0 -0
  359. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/watch/test_runner.py +0 -0
  360. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/watch/watcher.py +0 -0
  361. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd/wiring.py +0 -0
  362. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
  363. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
  364. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
  365. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
  366. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
  367. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
  368. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
  369. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
  370. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
  371. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
  372. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
  373. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
  374. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
  375. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
  376. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
  377. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
  378. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
  379. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
  380. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
  381. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
  382. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
  383. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
  384. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
  385. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
  386. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
  387. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
  388. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
  389. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
  390. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
  391. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
  392. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
  393. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
  394. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
  395. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
  396. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
  397. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
  398. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
  399. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
  400. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
  401. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
  402. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
  403. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
  404. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
  405. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
  406. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
  407. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
  408. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
  409. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
  410. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
  411. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
  412. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
  413. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
  414. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
  415. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
  416. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
  417. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
  418. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
  419. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
  420. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
  421. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/data_aggregation_policies/coverage_matrix.md +0 -0
  422. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/data_aggregation_policies/elicit_extend.md +0 -0
  423. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/data_aggregation_policies/lexicon.yaml +0 -0
  424. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/data_aggregation_policies/manifest.yaml +0 -0
  425. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/data_aggregation_policies/recommended_kinds.yaml +0 -0
  426. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/data_aggregation_policies/severity_rules.yaml +0 -0
  427. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
  428. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
  429. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
  430. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
  431. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
  432. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
  433. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
  434. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
  435. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
  436. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
  437. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
  438. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
  439. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
  440. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
  441. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
  442. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
  443. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
  444. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
  445. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
  446. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
  447. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
  448. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
  449. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
  450. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
  451. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
  452. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
  453. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
  454. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
  455. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
  456. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
  457. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
  458. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
  459. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
  460. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
  461. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
  462. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
  463. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
  464. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
  465. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
  466. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
  467. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
  468. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
  469. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
  470. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
  471. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
  472. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
  473. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
  474. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
  475. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
  476. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
  477. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
  478. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
  479. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
  480. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
  481. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
  482. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
  483. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
  484. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
  485. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
  486. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
  487. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
  488. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
  489. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
  490. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
  491. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
  492. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
  493. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
  494. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
  495. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
  496. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
  497. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
  498. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
  499. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
  500. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
  501. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
  502. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
  503. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
  504. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
  505. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
  506. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
  507. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
  508. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
  509. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
  510. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
  511. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
  512. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
  513. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
  514. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
  515. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
  516. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
  517. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
  518. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
  519. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
  520. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
  521. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
  522. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
  523. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
  524. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
  525. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
  526. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
  527. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
  528. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
  529. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
  530. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
  531. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
  532. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
  533. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
  534. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
  535. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
  536. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
  537. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
  538. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
  539. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
  540. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
  541. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
  542. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
  543. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
  544. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
  545. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
  546. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
  547. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
  548. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
  549. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
  550. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
  551. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
  552. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
  553. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
  554. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
  555. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
  556. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
  557. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
  558. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
  559. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
  560. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
  561. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
  562. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
  563. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
  564. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
  565. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
  566. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
  567. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
  568. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
  569. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
  570. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
  571. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
  572. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
  573. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
  574. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
  575. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
  576. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
  577. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
  578. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
  579. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
  580. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
  581. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
  582. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
  583. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
  584. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
  585. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
  586. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
  587. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
  588. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
  589. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
  590. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
  591. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
  592. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
  593. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
  594. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
  595. {codd_dev-2.73.0 → codd_dev-2.75.0}/codd_plugins/stack_map.yaml +0 -0
  596. {codd_dev-2.73.0 → codd_dev-2.75.0}/docs/cookbook/cdp_browser/README.md +0 -0
  597. {codd_dev-2.73.0 → codd_dev-2.75.0}/docs/cookbook/presentation_aggregation/README.md +0 -0
  598. {codd_dev-2.73.0 → codd_dev-2.75.0}/docs/requirements/README.md +0 -0
  599. {codd_dev-2.73.0 → codd_dev-2.75.0}/dogfood/README.md +0 -0
  600. {codd_dev-2.73.0 → codd_dev-2.75.0}/dogfood/fixtures/flat_py_app/README.md +0 -0
  601. {codd_dev-2.73.0 → codd_dev-2.75.0}/examples/README.md +0 -0
  602. {codd_dev-2.73.0 → codd_dev-2.75.0}/skills/codd-assemble/SKILL.md +0 -0
  603. {codd_dev-2.73.0 → codd_dev-2.75.0}/skills/codd-evolve/SKILL.md +0 -0
  604. {codd_dev-2.73.0 → codd_dev-2.75.0}/skills/codd-generate/SKILL.md +0 -0
  605. {codd_dev-2.73.0 → codd_dev-2.75.0}/skills/codd-greenfield/SKILL.md +0 -0
  606. {codd_dev-2.73.0 → codd_dev-2.75.0}/skills/codd-impact/SKILL.md +0 -0
  607. {codd_dev-2.73.0 → codd_dev-2.75.0}/skills/codd-init/SKILL.md +0 -0
  608. {codd_dev-2.73.0 → codd_dev-2.75.0}/skills/codd-propagate/SKILL.md +0 -0
  609. {codd_dev-2.73.0 → codd_dev-2.75.0}/skills/codd-restore/SKILL.md +0 -0
  610. {codd_dev-2.73.0 → codd_dev-2.75.0}/skills/codd-scan/SKILL.md +0 -0
  611. {codd_dev-2.73.0 → codd_dev-2.75.0}/skills/codd-validate/SKILL.md +0 -0
  612. {codd_dev-2.73.0 → codd_dev-2.75.0}/tests/integration/standalone_repair_skeleton/README.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codd-dev
3
- Version: 2.73.0
3
+ Version: 2.75.0
4
4
  Summary: CoDD: Coherence-Driven Development — cross-artifact change impact analysis
5
5
  Project-URL: Homepage, https://github.com/yohey-w/codd-dev
6
6
  Project-URL: Repository, https://github.com/yohey-w/codd-dev
@@ -1,3 +1,3 @@
1
1
  """CoDD — Coherence-Driven Development."""
2
2
 
3
- __version__ = "2.73.0"
3
+ __version__ = "2.75.0"
@@ -170,7 +170,13 @@ commands:
170
170
  argv: ["go", "test", "-json", "./..."]
171
171
  cwd: "{module_root}"
172
172
  env:
173
- GOFLAGS: "-mod=readonly"
173
+ # -buildvcs=false: a greenfield Go output dir is frequently NOT a clean git
174
+ # repo, so `go test`/`go build` fail with "error obtaining VCS status / use
175
+ # -buildvcs=false". The legacy _go_aware_env added this for the legacy path;
176
+ # the contract executor runs verify with plan.env, so the hardener must be
177
+ # DECLARED here or the contract path regresses the VCS-stamp failure. ONLY on
178
+ # verify — build/vet/typecheck env is read by implement_oracle (pinned tests).
179
+ GOFLAGS: "-mod=readonly -buildvcs=false"
174
180
  report:
175
181
  capture: stdout
176
182
  path: ".codd/verify/go-test.jsonl"
@@ -33,7 +33,12 @@ to classes (the anti-false-green ordering, GPT §5):
33
33
  * a SKIPPED test was observed (``observation.skipped_tests == "red"``) → ``FAIL``
34
34
  (skip is not an authentic pass; see below for how a skip is detected).
35
35
  * ``returncode != 0`` → ``FAIL`` (a nonzero exit beats a green-looking report).
36
- * else (rc==0, report parsed, collected floor, no failed/skipped) ``PASS``.
36
+ * a required test set (``plan.required_test_sets``) had ZERO executed files in the
37
+ parsed report → ``SCOPE_MISSING`` (Step 5; the "unit-only PASS" hole). Checked
38
+ LAST, after the zero/failed/rc!=0 branches (so a more fundamental failure always
39
+ wins) and just before PASS (so a scope miss on an exit-0 clean report is RED).
40
+ * else (rc==0, report parsed, collected ≥ floor, no failed/skipped, every required
41
+ scope covered) → ``PASS``.
37
42
 
38
43
  How a SKIP is detected from :class:`RunnerExecution`. The adapters fold a skipped
39
44
  case into the FILE-level signal: a file carrying ANY skipped (or failed) case is
@@ -206,6 +211,38 @@ def execute_verify_plan(
206
211
  return _classify(plan, returncode, report_path, adapter, project_root)
207
212
 
208
213
 
214
+ def _norm_rel_posix(path: str) -> str:
215
+ """Normalize a path to comparable project-relative POSIX form for scope matching.
216
+
217
+ Mirrors how :class:`RunnerExecution` already stores executed files (project-
218
+ relative, POSIX) but is defensive about a stray ``./`` prefix / backslash and a
219
+ trailing slash so a root and an executed-file path compare on the same footing.
220
+ Uses PREFIX stripping (not ``lstrip("./")``, which is a character class and would
221
+ wrongly eat a legitimate leading dot, e.g. ``.codd/x`` → ``codd/x``).
222
+ """
223
+ p = str(path or "").replace("\\", "/")
224
+ if p.startswith("./"):
225
+ p = p[2:]
226
+ return p.rstrip("/")
227
+
228
+
229
+ def _set_is_covered(root: str, executed: list[str]) -> bool:
230
+ """True iff some executed file falls under ``root`` (a directory prefix match).
231
+
232
+ ``root`` is normalized like the executed paths. A root of ``.`` or ``""`` (a
233
+ colocated set, whose tests sit anywhere among the sources) is trivially covered
234
+ by ANY executed file. A specific root such as ``tests/e2e`` is covered only by an
235
+ executed file equal to it or beneath it (``path == root`` or
236
+ ``path.startswith(root + "/")``) — so ``tests/unit/...`` never counts as covering
237
+ ``tests/e2e``.
238
+ """
239
+ norm_root = _norm_rel_posix(root)
240
+ if norm_root in ("", "."):
241
+ return bool(executed)
242
+ prefix = norm_root + "/"
243
+ return any(p == norm_root or p.startswith(prefix) for p in executed)
244
+
245
+
209
246
  def _classify(
210
247
  plan: VerifyRunPlan,
211
248
  returncode: int,
@@ -307,13 +344,45 @@ def _classify(
307
344
  detail=f"verify command exited {returncode} (nonzero exit beats a green-looking report)",
308
345
  )
309
346
 
310
- # TODO(Step 5 — scope observation): once scope checking lands, also red a run
311
- # whose parsed execution does not cover every plan.must_include_test_sets (a
312
- # report where, e.g., only the unit set ran while an e2e set was required is a
313
- # not-green scope miss). Scope checking is deliberately NOT implemented here.
347
+ # Step 5 — SCOPE observation. A clean, exit-0, parsed report can still be a
348
+ # FALSE green if it never ran a test set it was REQUIRED to cover (the
349
+ # "unit-only PASS" hole: a mutation that only ran unit tests while an e2e set
350
+ # was required). For each required ``(set_id, root)``, check whether ANY file
351
+ # the report says it executed falls under that set's root; a required set with
352
+ # ZERO covering executed files → SCOPE_MISSING (RED).
353
+ #
354
+ # Ordering: this runs AFTER the zero/failed/rc!=0 branches above (so a more
355
+ # fundamental failure always wins — a report with a FAILED file is FAIL even if
356
+ # e2e is also uncovered, because the failed-file branch returned earlier) and
357
+ # is the LAST not-green gate BEFORE PASS (so a scope miss on an otherwise
358
+ # green-looking exit-0 report is correctly RED, never PASS).
359
+ #
360
+ # We only have something to check when a report was parsed; the no-report /
361
+ # failing cases are already classified above. ``execution.executed_files`` are
362
+ # project-relative, POSIX, normalized test-file paths (see RunnerExecution), so
363
+ # we match a root the same way: strip leading ``./``, POSIX separators, and
364
+ # treat ``root`` as a directory PREFIX — a path covers the root iff
365
+ # ``path == root`` or ``path.startswith(root + "/")``. A root of ``.`` or ``""``
366
+ # (a colocated set) matches every executed file, so any executed file trivially
367
+ # covers it.
368
+ if execution is not None and plan.required_test_sets:
369
+ executed = [_norm_rel_posix(p) for p in execution.executed_files]
370
+ for set_id, raw_root in plan.required_test_sets:
371
+ if not _set_is_covered(raw_root, executed):
372
+ return VerifyExecutionResult(
373
+ verify_class=VerifyClass.SCOPE_MISSING,
374
+ returncode=returncode,
375
+ execution=execution,
376
+ detail=(
377
+ f"required test set {set_id!r} (root {raw_root!r}) had zero "
378
+ f"executed files in the report — the verify did not run what it "
379
+ f"must cover (a report that is green only because it skipped a "
380
+ f"required set is not an authentic pass)"
381
+ ),
382
+ )
314
383
 
315
384
  # All not-green checks passed: rc==0, required report parsed, collected ≥ floor,
316
- # no failed/skipped → the only green class.
385
+ # no failed/skipped, every required scope covered → the only green class.
317
386
  return VerifyExecutionResult(
318
387
  verify_class=VerifyClass.PASS,
319
388
  returncode=returncode,
@@ -36,6 +36,14 @@ class VerifyClass(str, Enum):
36
36
  observability failure from the report being PRESENT but unparseable (a garbled
37
37
  JSON/JSONL, or no adapter able to read it). Both are not-green — only ``PASS``
38
38
  is green — but keeping them separate lets the executor report the honest reason.
39
+
40
+ ``SCOPE_MISSING`` (Contract Kernel Step 5) is the verify that PARSED a clean,
41
+ exit-0 report but did NOT cover a test set it was REQUIRED to cover (a
42
+ ``scope.must_include_test_sets`` entry with zero executed files under its root —
43
+ e.g. only the unit set ran while an e2e set was required). It closes the
44
+ "unit-only PASS" hole: a report that looks green only because it never ran the
45
+ set that matters is not-green, not PASS. Like the others it is NOT green
46
+ (``is_green`` stays PASS-only).
39
47
  """
40
48
 
41
49
  PASS = "PASS"
@@ -43,6 +51,7 @@ class VerifyClass(str, Enum):
43
51
  ZERO_TESTS = "ZERO_TESTS"
44
52
  REPORT_MISSING = "REPORT_MISSING"
45
53
  REPORT_UNREADABLE = "REPORT_UNREADABLE"
54
+ SCOPE_MISSING = "SCOPE_MISSING"
46
55
  TOOL_MISSING = "TOOL_MISSING"
47
56
  CONFIG_ERROR = "CONFIG_ERROR"
48
57
 
@@ -63,6 +72,12 @@ class VerifyRunPlan:
63
72
  report_adapter: str | None
64
73
  report_required: bool
65
74
  must_include_test_sets: tuple[str, ...]
75
+ #: Resolved ``(id, root)`` for each ``must_include_test_sets`` id that names a
76
+ #: real TestSet in ``contract.profile.layout.test_sets`` — the scope check (Step
77
+ #: 5) needs the set ROOTS, not just ids, to ask "did any executed file fall under
78
+ #: this set's root?". Populated by :func:`build_verify_plan`; ids that match no
79
+ #: TestSet are deliberately dropped here (a profile inconsistency, see there).
80
+ required_test_sets: tuple[tuple[str, str], ...]
66
81
  observation: VerifyObservationPolicy
67
82
  #: ``report.capture`` from the verify CommandSpec (e.g. Go's ``stdout``). When
68
83
  #: ``"stdout"`` the verify command streams its machine-readable report to stdout
@@ -90,6 +105,20 @@ def build_verify_plan(contract: ResolvedLanguageContract) -> VerifyRunPlan | Non
90
105
  return None
91
106
  report = cmd.report
92
107
  scope = cmd.scope
108
+ must_include = scope.must_include_test_sets if scope else ()
109
+ # Resolve each must_include id to its TestSet ROOT (the scope check in the
110
+ # executor matches executed_files against roots, so it needs roots, not ids).
111
+ # A must_include id that names NO TestSet in the layout is a PROFILE
112
+ # INCONSISTENCY (a command requires coverage of a set the topology never
113
+ # declares): we keep it simple and just don't add a root for it — but we do
114
+ # NOT drop the id from ``must_include_test_sets`` and we do NOT silently make
115
+ # scope un-checkable for a REAL set; only the unresolvable id is skipped here.
116
+ sets_by_id = {ts.id: ts for ts in contract.profile.layout.test_sets}
117
+ required_test_sets = tuple(
118
+ (set_id, sets_by_id[set_id].root)
119
+ for set_id in must_include
120
+ if set_id in sets_by_id
121
+ )
93
122
  return VerifyRunPlan(
94
123
  language_id=contract.language_id,
95
124
  argv=tuple(cmd.argv),
@@ -99,7 +128,8 @@ def build_verify_plan(contract: ResolvedLanguageContract) -> VerifyRunPlan | Non
99
128
  report_adapter=(report.adapter if report else None),
100
129
  report_required=bool(report and report.path),
101
130
  report_capture=(report.capture if report else None),
102
- must_include_test_sets=(scope.must_include_test_sets if scope else ()),
131
+ must_include_test_sets=must_include,
132
+ required_test_sets=required_test_sets,
103
133
  # None on the command ⇒ the strict defaults (the invariant), never weaker.
104
134
  observation=(cmd.observation or VerifyObservationPolicy()),
105
135
  )
@@ -9,11 +9,16 @@ import re
9
9
  from dataclasses import asdict, dataclass, field, is_dataclass
10
10
  from datetime import datetime, timezone
11
11
  from pathlib import Path
12
- from typing import Any, Mapping
12
+ from typing import TYPE_CHECKING, Any, Mapping
13
13
  import subprocess
14
14
  import time
15
15
  import warnings
16
16
 
17
+ if TYPE_CHECKING: # import-time-free type hints (no cycle, no runtime cost)
18
+ from codd.languages.registry import AdapterRegistry, LanguageRegistry
19
+ from codd.languages.verify_executor import VerifyExecutionResult
20
+ from codd.languages.verify_plan import VerifyRunPlan
21
+
17
22
  import yaml
18
23
 
19
24
  from codd.config import find_codd_dir, load_project_config
@@ -119,6 +124,20 @@ class VerificationResult:
119
124
  #: One-line status of the deterministic parse check over project sources
120
125
  #: ("checked N file(s)", "disabled", "N parse error(s)", "not checked").
121
126
  source_integrity: str = "not checked"
127
+ # ── Step 6 contract-switch trace (additive; defaults keep old constructors
128
+ # valid). ``verify_path`` records which path produced the test verdict:
129
+ # "contract" — the contract executor ran (its verdict is FINAL),
130
+ # "legacy_fallback" — a PRE-execution fallback to the legacy ladder fired,
131
+ # "legacy" — no contract machinery was in play (the default).
132
+ #: Which path produced the test-command verdict ("contract"/"legacy_fallback"/"legacy").
133
+ verify_path: str = "legacy"
134
+ #: True when a PRE-execution legacy fallback fired (never after the contract
135
+ #: executor ran — there is no post-execution rescue). The v3.0.0 cut gates on
136
+ #: ``fallback_used == 0``.
137
+ fallback_used: bool = False
138
+ #: Why the fallback fired ("no_language"/"no_verify_plan"/
139
+ #: "missing_adapter_legacy_compatible"), else ``None``.
140
+ fallback_reason: str | None = None
122
141
 
123
142
  @property
124
143
  def executed_anything(self) -> bool:
@@ -156,10 +175,25 @@ class VerifyRunner:
156
175
  project_root: Path,
157
176
  codd_yaml: Mapping[str, Any] | None,
158
177
  runtime_skip: tuple[str, ...] | list[str] | set[str] | None = None,
178
+ *,
179
+ language_registry: "LanguageRegistry | None" = None,
180
+ adapter_registry: "AdapterRegistry | None" = None,
159
181
  ):
160
182
  self.project_root = Path(project_root).resolve()
161
183
  self.codd_yaml = dict(codd_yaml or {})
162
184
  self.runtime_skip = frozenset(str(item) for item in (runtime_skip or ()))
185
+ # Contract-Kernel registries. ``None`` ⇒ the process-wide defaults
186
+ # (``default_registry`` / ``default_adapter_registry``); they are
187
+ # keyword-only injection seams so a hermetic test can drive the
188
+ # contract-first verify path against a synthetic profile + fake adapter
189
+ # WITHOUT a real go/pytest toolchain. Production never passes them.
190
+ self._language_registry = language_registry
191
+ self._adapter_registry = adapter_registry
192
+ # fallback_used observability (Step 6 trace). Set by ``_run_test_command``
193
+ # and read by ``run()`` when it builds the ``VerificationResult``.
194
+ self._verify_path: str = "legacy"
195
+ self._fallback_used: bool = False
196
+ self._fallback_reason: str | None = None
163
197
 
164
198
  def run(self) -> VerificationResult:
165
199
  """Reset DAG state, run C1-C7 checks, then run executable verification tests.
@@ -237,6 +271,9 @@ class VerifyRunner:
237
271
  tests_summary=tests_summary,
238
272
  typecheck_executed=typecheck_executed,
239
273
  source_integrity=source_integrity,
274
+ verify_path=self._verify_path,
275
+ fallback_used=self._fallback_used,
276
+ fallback_reason=self._fallback_reason,
240
277
  )
241
278
  # The honesty rule. Plain `codd verify` stays pass-WITH-WARNING by
242
279
  # default because existing brownfield/CI configurations may be
@@ -488,14 +525,198 @@ class VerifyRunner:
488
525
  def _run_test_command(
489
526
  self, settings: dict[str, Any]
490
527
  ) -> tuple[bool, str | None, str, VerificationFailure | None]:
491
- """Resolve and run the project's test command.
528
+ """Resolve and run the project's test command — CONTRACT-FIRST (Step 6).
529
+
530
+ Returns ``(tests_executed, test_command, tests_summary, test_failure)`` —
531
+ ``test_failure is not None`` ⇒ a failure (``passed=False``);
532
+ ``tests_executed`` feeds ``executed_anything`` / the honesty rule.
533
+
534
+ This is THE single live point where the Contract Kernel's anti-false-green
535
+ verify executor enters production verify. Decision tree (in order):
536
+
537
+ 1. Resolve the language contract. A declared-but-UNKNOWN language is
538
+ ``UnknownLanguageError`` → RED (never a fallback). A malformed language
539
+ declaration is a broken contract even when an explicit command exists,
540
+ so this RED is checked FIRST (before the explicit-command override).
541
+ 2. EXPLICIT author command override. An explicit ``fix.test_command`` /
542
+ ``verify.test_command`` in codd.yaml is author intent that, in the
543
+ legacy ladder, beats all detection (test_detection priority 1-2). It
544
+ designates the command the author wants run AS THEIR verification — so
545
+ routing a project with an explicit command into the PROFILE's verify
546
+ pipeline would verify a DIFFERENT command than the author asked for
547
+ (itself a false-green vector: "pass" the profile command while the
548
+ author's real suite never ran). The contract's stricter observation is
549
+ the policy for the profile-DERIVED default, not an override of an
550
+ explicit author substitution. So an explicit command → pre-execution
551
+ legacy fallback (reason ``explicit_test_command``); the legacy evidence
552
+ path runs it and keeps its OWN anti-false-green guards (JS zero-collected
553
+ hard-fail, pytest exit-5 = no-tests, nonzero/timeout = fail). Marked
554
+ ``fallback_used=True`` so the v3.0.0 ``fallback_used == 0`` cut surfaces
555
+ it as migration debt (not a permanent green-washing escape hatch). This
556
+ is language-AGNOSTIC (gates on "did the author provide a command", never
557
+ on a language name) and PRE-execution (no post-execution rescue).
558
+ 2b. Structural-only opt-out. ``verify.allow_structural_only: true`` is the
559
+ author's explicit declaration that there is no executable verification
560
+ (the honesty rule already honors it). Forcing the contract executor would
561
+ run a verify command the author declared absent → pre-execution legacy
562
+ fallback (reason ``structural_only``); like (2), an author opt-out that
563
+ pre-empts the contract path.
564
+ 3. No ``project.language`` (contract is ``None``) → pre-execution legacy
565
+ fallback (reason ``no_language``).
566
+ 4. No verify command in the profile (``build_verify_plan`` is ``None``) →
567
+ pre-execution legacy fallback (reason ``no_verify_plan``).
568
+ 5. Scoped runner_report-adapter gate (NOT full ``require_complete()`` —
569
+ other adapter kinds are unimplemented and would RED everything): if the
570
+ plan requires a report and the runner_report adapter is unavailable,
571
+ a ``strict`` profile → RED; a ``legacy_compatible`` profile →
572
+ pre-execution legacy fallback (reason
573
+ ``missing_adapter_legacy_compatible``).
574
+ 6. Otherwise run the contract executor. Its verdict is FINAL — there is
575
+ NO post-execution legacy rescue (a contract not-green is never turned
576
+ green by re-running the legacy ladder).
577
+ """
578
+ from codd.test_detection import _explicit_test_command
579
+ from codd.languages.contract import resolve_language_contract
580
+ from codd.languages.registry import (
581
+ UnknownLanguageError,
582
+ default_adapter_registry,
583
+ )
584
+ from codd.languages.verify_plan import build_verify_plan
585
+
586
+ # (1) Resolve the language contract — a declared-unknown language is RED.
587
+ try:
588
+ contract = resolve_language_contract(
589
+ settings,
590
+ language_registry=self._language_registry,
591
+ adapter_registry=self._adapter_registry,
592
+ )
593
+ except UnknownLanguageError as exc:
594
+ self._mark_contract_path()
595
+ return (
596
+ False,
597
+ None,
598
+ "unknown declared language",
599
+ VerificationFailure(
600
+ check_name="test_command",
601
+ source="test_command",
602
+ message=(
603
+ f"project.language is declared but unknown: {exc}. A declared "
604
+ "language with no matching profile is RED, never a silent "
605
+ "fallback to the legacy test ladder."
606
+ ),
607
+ details={"failure_class": "unknown_declared_language"},
608
+ ),
609
+ )
610
+
611
+ # (2) Explicit author command override (checked AFTER the unknown-language
612
+ # RED, BEFORE all other routing). An explicit fix/verify.test_command is a
613
+ # deliberate author substitution that the legacy ladder honors over
614
+ # detection; the contract path would otherwise run the profile's DEFAULT
615
+ # verify command instead — verifying something the author did not ask for.
616
+ # Pre-execution legacy fallback; the legacy guards still prevent green-on-
617
+ # nothing. Language-agnostic + migration debt (fallback_used=True).
618
+ if _explicit_test_command(settings):
619
+ return self._legacy_test_command(settings, reason="explicit_test_command")
620
+
621
+ # (2b) Structural-only opt-out. ``verify.allow_structural_only: true`` is the
622
+ # author's EXPLICIT declaration that structural DAG coherence is the whole
623
+ # contract here and there is no executable verification (doc-only repos, or a
624
+ # suite that runs in a separate CI stage) — already honored by
625
+ # ``structural_only_allowed()`` / the honesty rule. Forcing the contract
626
+ # executor on such a project would run a verify command the author declared
627
+ # absent (a spurious not-green) and add no anti-false-green value (the honesty
628
+ # rule is the gate whenever this opt-out is NOT set). So it is a pre-execution
629
+ # opt-out, like the explicit-command override: route to legacy (which, with no
630
+ # detected command, yields the structural-only result the author asked for).
631
+ if structural_only_allowed(settings):
632
+ return self._legacy_test_command(settings, reason="structural_only")
633
+
634
+ # (3) No declared language → legacy fallback (the common existing case).
635
+ if contract is None:
636
+ return self._legacy_test_command(settings, reason="no_language")
637
+
638
+ # (4) No verify command in the profile → legacy fallback.
639
+ plan = build_verify_plan(contract)
640
+ if plan is None:
641
+ return self._legacy_test_command(settings, reason="no_verify_plan")
642
+
643
+ # (5) Scoped runner_report-adapter gate (NOT full require_complete()). The
644
+ # executor reads the report via ``default_adapter_registry.get("runner_report",
645
+ # plan.report_adapter)`` — so we gate on exactly that capability, ensuring
646
+ # builtins are registered first. Only when the plan REQUIRES a report.
647
+ registry = (
648
+ self._adapter_registry
649
+ if self._adapter_registry is not None
650
+ else default_adapter_registry
651
+ )
652
+ if plan.report_required:
653
+ from codd.languages.builtin_adapters import (
654
+ ensure_builtin_adapters_registered,
655
+ )
656
+
657
+ ensure_builtin_adapters_registered(registry)
658
+ adapter = (
659
+ registry.get("runner_report", plan.report_adapter)
660
+ if plan.report_adapter is not None
661
+ else None
662
+ )
663
+ if adapter is None:
664
+ if contract.profile.strictness == "strict":
665
+ self._mark_contract_path()
666
+ return (
667
+ False,
668
+ plan.command_str,
669
+ "required runner_report adapter unavailable (strict)",
670
+ VerificationFailure(
671
+ check_name="test_command",
672
+ source="test_command",
673
+ message=(
674
+ f"strict language {contract.language_id!r} declares a "
675
+ f"required runner_report adapter "
676
+ f"{plan.report_adapter!r} that is not registered — the "
677
+ "executor cannot observe the report, so the run cannot "
678
+ "be classified green (fail-closed; RED, no fallback)."
679
+ ),
680
+ details={
681
+ "failure_class": "missing_runner_report_adapter",
682
+ "report_adapter": plan.report_adapter,
683
+ "language": contract.language_id,
684
+ },
685
+ ),
686
+ )
687
+ # legacy_compatible → pre-execution fallback (NOT a RED).
688
+ return self._legacy_test_command(
689
+ settings, reason="missing_adapter_legacy_compatible"
690
+ )
691
+
692
+ # (6) Run the contract executor. Its verdict is FINAL (no legacy rescue).
693
+ from codd.languages.verify_executor import execute_verify_plan
694
+
695
+ self._mark_contract_path()
696
+ result = execute_verify_plan(plan, self.project_root, adapter_registry=registry)
697
+ return self._tuple_from_execution(plan, result)
698
+
699
+ def _mark_contract_path(self) -> None:
700
+ """Record that the live contract executor produced this run's test verdict."""
701
+ self._verify_path = "contract"
702
+ self._fallback_used = False
703
+ self._fallback_reason = None
492
704
 
493
- Explicit ``verify.test_command``/``fix.test_command`` wins; otherwise
494
- :func:`codd.test_detection.detect_test_command` heuristics apply
495
- (pytest config, package.json scripts, cargo, go, bats, Makefile).
496
- No command detected ``tests_executed=False`` callers MUST treat
497
- that as "unverified", never as "tests passed".
705
+ def _legacy_test_command(
706
+ self, settings: dict[str, Any], *, reason: str
707
+ ) -> tuple[bool, str | None, str, VerificationFailure | None]:
708
+ """PRE-execution legacy fallback the original detect+run test ladder.
709
+
710
+ Used ONLY before the contract executor runs (an explicit author command /
711
+ structural-only opt-out / no language / no verify plan / legacy_compatible
712
+ profile with a missing runner_report adapter). Records the fallback trace so
713
+ the v3.0.0 cut can gate on ``fallback_used == 0``. There is deliberately NO
714
+ post-execution variant: once the contract executor has run, its verdict is
715
+ final.
498
716
  """
717
+ self._verify_path = "legacy_fallback"
718
+ self._fallback_used = True
719
+ self._fallback_reason = reason
499
720
  command = detect_test_command(self.project_root, config=settings)
500
721
  if not command:
501
722
  return False, None, "no test command detected", None
@@ -504,6 +725,46 @@ class VerifyRunner:
504
725
  )
505
726
  return executed, command, summary, failure
506
727
 
728
+ def _tuple_from_execution(
729
+ self, plan: "VerifyRunPlan", result: "VerifyExecutionResult"
730
+ ) -> tuple[bool, str | None, str, VerificationFailure | None]:
731
+ """Map a :class:`VerifyExecutionResult` to the ``_run_test_command`` 4-tuple.
732
+
733
+ The anti-false-green mapping — only ``PASS`` is green; every other class is
734
+ a failure, and ``TOOL_MISSING`` additionally did NOT execute:
735
+
736
+ * ``PASS`` → ``(True, cmd, detail, None)``.
737
+ * ``TOOL_MISSING``→ ``(False, cmd, detail, FAILURE)`` — never ran AND a
738
+ failure (so it can never count as green-on-nothing).
739
+ * any other not-green (FAIL / ZERO_TESTS / REPORT_MISSING /
740
+ REPORT_UNREADABLE / SCOPE_MISSING) → ``(True, cmd, detail, FAILURE)`` —
741
+ it executed; it is a failure.
742
+ """
743
+ from codd.languages.verify_plan import VerifyClass
744
+
745
+ command = plan.command_str
746
+ if result.verify_class is VerifyClass.PASS:
747
+ return True, command, result.detail, None
748
+
749
+ failure = VerificationFailure(
750
+ check_name="test_command",
751
+ source="test_command",
752
+ message=result.detail,
753
+ details={
754
+ "command": command,
755
+ "verify_class": result.verify_class.value,
756
+ "verify_path": "contract",
757
+ "returncode": result.returncode,
758
+ "failure_class": "verify_contract_not_green",
759
+ },
760
+ )
761
+ if result.verify_class is VerifyClass.TOOL_MISSING:
762
+ # Did not run AND is a failure — never green.
763
+ return False, command, result.detail, failure
764
+ # FAIL / ZERO_TESTS / REPORT_MISSING / REPORT_UNREADABLE / SCOPE_MISSING:
765
+ # the command executed and the observation is not-green.
766
+ return True, command, result.detail, failure
767
+
507
768
  def _run_evidence_command(
508
769
  self,
509
770
  command: str,
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "codd-dev"
7
- version = "2.73.0"
7
+ version = "2.75.0"
8
8
  description = "CoDD: Coherence-Driven Development — cross-artifact change impact analysis"
9
9
  readme = "README.md"
10
10
  license = "MIT"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes