codd-dev 2.67.0__tar.gz → 2.69.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 (608) hide show
  1. {codd_dev-2.67.0 → codd_dev-2.69.0}/PKG-INFO +1 -1
  2. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/__init__.py +1 -1
  3. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/languages/__init__.py +34 -0
  4. codd_dev-2.69.0/codd/languages/contract.py +248 -0
  5. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/languages/registry.py +6 -0
  6. codd_dev-2.69.0/codd/languages/verify_plan.py +192 -0
  7. {codd_dev-2.67.0 → codd_dev-2.69.0}/pyproject.toml +1 -1
  8. {codd_dev-2.67.0 → codd_dev-2.69.0}/.gitignore +0 -0
  9. {codd_dev-2.67.0 → codd_dev-2.69.0}/LICENSE +0 -0
  10. {codd_dev-2.67.0 → codd_dev-2.69.0}/README.md +0 -0
  11. {codd_dev-2.67.0 → codd_dev-2.69.0}/bench_fixture/README.md +0 -0
  12. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/__main__.py +0 -0
  13. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/_git_helper.py +0 -0
  14. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/action_outcome.py +0 -0
  15. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/ai_invoke.py +0 -0
  16. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/ai_patch.py +0 -0
  17. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/artifact_contract.py +0 -0
  18. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/artifact_ids.py +0 -0
  19. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/artifacts/catalog.yaml +0 -0
  20. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/ask_user_question_adapter.py +0 -0
  21. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/assembler.py +0 -0
  22. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/bridge.py +0 -0
  23. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/brownfield/__init__.py +0 -0
  24. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/brownfield/pipeline.py +0 -0
  25. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/capability_completeness.py +0 -0
  26. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/claude_cli.py +0 -0
  27. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/cli.py +0 -0
  28. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/clustering.py +0 -0
  29. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/coherence_adapters.py +0 -0
  30. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/coherence_engine.py +0 -0
  31. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/confidence.py +0 -0
  32. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/config.py +0 -0
  33. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/config_schema.py +0 -0
  34. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/contracts.py +0 -0
  35. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/contracts_registry/__init__.py +0 -0
  36. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/contracts_registry/__main__.py +0 -0
  37. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/contracts_registry/certify.py +0 -0
  38. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/contracts_registry/generate_matrix.py +0 -0
  39. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/contracts_registry/registry.py +0 -0
  40. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/coverage_auditor.py +0 -0
  41. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/coverage_execution_coherence.py +0 -0
  42. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/coverage_metrics.py +0 -0
  43. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/__init__.py +0 -0
  44. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/auto_repair.py +0 -0
  45. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/builder.py +0 -0
  46. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/checks/__init__.py +0 -0
  47. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/checks/_one_to_many_detection.py +0 -0
  48. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/checks/artifact_contract_check.py +0 -0
  49. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/checks/ci_health.py +0 -0
  50. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/checks/dependency_freshness.py +0 -0
  51. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/checks/depends_on_consistency.py +0 -0
  52. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/checks/deployment_completeness.py +0 -0
  53. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/checks/edge_validity.py +0 -0
  54. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/checks/environment_coverage.py +0 -0
  55. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/checks/implementation_coverage.py +0 -0
  56. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/checks/node_completeness.py +0 -0
  57. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/checks/opt_out.py +0 -0
  58. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/checks/task_completion.py +0 -0
  59. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/checks/transitive_closure.py +0 -0
  60. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/checks/ui_coherence.py +0 -0
  61. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/checks/user_journey_coherence.py +0 -0
  62. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/coverage_axes.py +0 -0
  63. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/defaults/cli.yaml +0 -0
  64. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/defaults/cpp_embedded.yaml +0 -0
  65. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/defaults/csharp.yaml +0 -0
  66. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/defaults/elixir.yaml +0 -0
  67. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/defaults/generic.yaml +0 -0
  68. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/defaults/iot.yaml +0 -0
  69. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/defaults/java.yaml +0 -0
  70. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/defaults/kotlin.yaml +0 -0
  71. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/defaults/mobile.yaml +0 -0
  72. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/defaults/ruby.yaml +0 -0
  73. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/defaults/rust.yaml +0 -0
  74. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/defaults/scala.yaml +0 -0
  75. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/defaults/swift.yaml +0 -0
  76. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/defaults/test_frameworks.yaml +0 -0
  77. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/defaults/web.yaml +0 -0
  78. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/extractor.py +0 -0
  79. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/impact.py +0 -0
  80. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dag/runner.py +0 -0
  81. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/defaults.py +0 -0
  82. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/defaults.yaml +0 -0
  83. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/dependency_lock_coherence.py +0 -0
  84. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deploy_targets/__init__.py +0 -0
  85. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deploy_targets/app_service.py +0 -0
  86. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deploy_targets/base.py +0 -0
  87. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deploy_targets/docker_compose.py +0 -0
  88. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deployer.py +0 -0
  89. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deployment/__init__.py +0 -0
  90. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deployment/checks/__init__.py +0 -0
  91. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deployment/defaults/deploy_targets.yaml +0 -0
  92. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
  93. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deployment/defaults/schema_providers.yaml +0 -0
  94. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deployment/defaults/verification_templates.yaml +0 -0
  95. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deployment/extractor.py +0 -0
  96. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deployment/providers/__init__.py +0 -0
  97. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deployment/providers/ai_command.py +0 -0
  98. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deployment/providers/ai_command_factory.py +0 -0
  99. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deployment/providers/codex_app_server.py +0 -0
  100. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deployment/providers/llm_consideration.py +0 -0
  101. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deployment/providers/schema/__init__.py +0 -0
  102. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deployment/providers/schema/prisma.py +0 -0
  103. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deployment/providers/target/__init__.py +0 -0
  104. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deployment/providers/target/docker_compose.py +0 -0
  105. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deployment/providers/verification/__init__.py +0 -0
  106. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
  107. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deployment/providers/verification/cdp_browser.py +0 -0
  108. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deployment/providers/verification/cdp_engines.py +0 -0
  109. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
  110. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deployment/providers/verification/cdp_wire.py +0 -0
  111. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deployment/providers/verification/curl.py +0 -0
  112. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deployment/providers/verification/form_strategies.py +0 -0
  113. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deployment/providers/verification/means_catalog.py +0 -0
  114. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deployment/providers/verification/playwright.py +0 -0
  115. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deployment/providers/verification/pytest_http.py +0 -0
  116. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/deployment/providers/verification/vitest.py +0 -0
  117. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/design_md.py +0 -0
  118. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/diff/__init__.py +0 -0
  119. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/diff/apply.py +0 -0
  120. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/diff/engine.py +0 -0
  121. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/diff/persistence.py +0 -0
  122. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/diff/templates/diff_prompt.md +0 -0
  123. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/discovery.py +0 -0
  124. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/drift.py +0 -0
  125. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/e2e_contract_coherence.py +0 -0
  126. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/e2e_extractor.py +0 -0
  127. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/e2e_generator.py +0 -0
  128. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/e2e_harness.py +0 -0
  129. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/e2e_runner.py +0 -0
  130. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/elicit/__init__.py +0 -0
  131. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/elicit/apply.py +0 -0
  132. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/elicit/engine.py +0 -0
  133. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/elicit/finding.py +0 -0
  134. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/elicit/formatters/__init__.py +0 -0
  135. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/elicit/formatters/base.py +0 -0
  136. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/elicit/formatters/interactive.py +0 -0
  137. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/elicit/formatters/json_fmt.py +0 -0
  138. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/elicit/formatters/md.py +0 -0
  139. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/elicit/lexicon_loader.py +0 -0
  140. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/elicit/persistence.py +0 -0
  141. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
  142. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/env_refs.py +0 -0
  143. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/extract_ai.py +0 -0
  144. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/extract_paths.py +0 -0
  145. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/extractor.py +0 -0
  146. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/fix/__init__.py +0 -0
  147. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/fix/candidate_selector.py +0 -0
  148. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/fix/design_updater.py +0 -0
  149. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/fix/impl_propagation.py +0 -0
  150. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/fix/interactive_prompt.py +0 -0
  151. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/fix/phenomenon_fixer.py +0 -0
  152. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/fix/phenomenon_parser.py +0 -0
  153. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/fix/risk_classifier.py +0 -0
  154. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/fix/templates/clarification_question.txt +0 -0
  155. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/fix/templates/design_update.txt +0 -0
  156. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/fix/templates/impl_update.txt +0 -0
  157. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/fix/templates/phenomenon_parse.txt +0 -0
  158. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/fix/templates/risk_assessment.txt +0 -0
  159. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/fix/templates_loader.py +0 -0
  160. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/fixer.py +0 -0
  161. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/fixup_drift.py +0 -0
  162. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/fixup_drift_strategies/__init__.py +0 -0
  163. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
  164. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
  165. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/fixup_drift_strategies/url_drift.py +0 -0
  166. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/frontmatter.py +0 -0
  167. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/generator.py +0 -0
  168. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/git_evidence.py +0 -0
  169. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/graph.py +0 -0
  170. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/greenfield/__init__.py +0 -0
  171. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/greenfield/pipeline.py +0 -0
  172. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/hitl_session.py +0 -0
  173. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/hooks/__init__.py +0 -0
  174. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/hooks/pre-commit +0 -0
  175. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/hooks/recipes/claude_requirements_nudge.json +0 -0
  176. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/hooks/recipes/claude_settings_example.json +0 -0
  177. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/hooks/recipes/codex_hook.sh +0 -0
  178. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/hooks/recipes/git_post_commit.sh +0 -0
  179. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/hooks/recipes/git_pre_commit.sh +0 -0
  180. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/iac_nfr.py +0 -0
  181. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/implement_oracle.py +0 -0
  182. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/implement_oracle_scope.py +0 -0
  183. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/implementer/__init__.py +0 -0
  184. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/implementer/chunked_runner.py +0 -0
  185. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/implementer/typecheck_loop.py +0 -0
  186. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/implementer.py +0 -0
  187. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/import_coherence.py +0 -0
  188. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/inheritance.py +0 -0
  189. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/init/__init__.py +0 -0
  190. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/init/lexicon_suggest.py +0 -0
  191. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/init/llm_lexicon_suggester.py +0 -0
  192. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/init/stack_detector.py +0 -0
  193. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/knowledge_fetcher.py +0 -0
  194. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/languages/compat.py +0 -0
  195. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/languages/loader.py +0 -0
  196. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/languages/path_planner.py +0 -0
  197. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/languages/profile.py +0 -0
  198. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/languages/profiles/go.yaml +0 -0
  199. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/languages/profiles/python.yaml +0 -0
  200. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/languages/profiles/typescript.yaml +0 -0
  201. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/lexicon.py +0 -0
  202. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/lexicon_cli/__init__.py +0 -0
  203. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/lexicon_cli/formatters/__init__.py +0 -0
  204. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/lexicon_cli/formatters/html.py +0 -0
  205. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
  206. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/lexicon_cli/formatters/md.py +0 -0
  207. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/lexicon_cli/inspector.py +0 -0
  208. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/lexicon_cli/manager.py +0 -0
  209. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/lexicon_cli/reporter.py +0 -0
  210. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/lexicon_cli/threshold.py +0 -0
  211. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/llm/__init__.py +0 -0
  212. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/llm/approval.py +0 -0
  213. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/llm/best_practice_augmenter.py +0 -0
  214. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/llm/criteria_expander.py +0 -0
  215. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/llm/design_doc_extractor.py +0 -0
  216. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/llm/impl_step_deriver.py +0 -0
  217. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/llm/means_catalog_loader.py +0 -0
  218. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/llm/parser.py +0 -0
  219. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/llm/plan_deriver.py +0 -0
  220. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/llm/prompt_builder.py +0 -0
  221. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/llm/strategy_validator.py +0 -0
  222. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/llm/templates/best_practice_augment_meta.md +0 -0
  223. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/llm/templates/criteria_expand_meta.md +0 -0
  224. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/llm/templates/design_doc_extract_meta.md +0 -0
  225. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/llm/templates/impl_step_derive_meta.md +0 -0
  226. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
  227. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/llm/templates/meta_instruction.md +0 -0
  228. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/llm/templates/plan_derive_meta.md +0 -0
  229. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/llm/templates/verification_means_catalog.yaml +0 -0
  230. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/mcp_server.py +0 -0
  231. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/measure.py +0 -0
  232. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/operational_e2e_audit.py +0 -0
  233. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/operations_derive.py +0 -0
  234. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/parsing/__init__.py +0 -0
  235. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/parsing/_shared.py +0 -0
  236. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/parsing/api_specs.py +0 -0
  237. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/parsing/filesystem_routes.py +0 -0
  238. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/parsing/iac.py +0 -0
  239. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/parsing/python_ast.py +0 -0
  240. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/parsing/schemas.py +0 -0
  241. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/parsing/tests_builddeps.py +0 -0
  242. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/parsing/treesitter.py +0 -0
  243. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/planner.py +0 -0
  244. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/policy.py +0 -0
  245. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/preflight/__init__.py +0 -0
  246. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/preflight/defaults/cli.yaml +0 -0
  247. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/preflight/defaults/generic.yaml +0 -0
  248. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/preflight/defaults/iot.yaml +0 -0
  249. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/preflight/defaults/mobile.yaml +0 -0
  250. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/preflight/defaults/web.yaml +0 -0
  251. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/project_types.py +0 -0
  252. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/propagate.py +0 -0
  253. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/propagation_common.py +0 -0
  254. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/propagator.py +0 -0
  255. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/reconciliation_ledger.py +0 -0
  256. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/reference_resolution.py +0 -0
  257. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/registry.py +0 -0
  258. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/repair/__init__.py +0 -0
  259. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/repair/approval_repair.py +0 -0
  260. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/repair/auto_scope_guard.py +0 -0
  261. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/repair/engine.py +0 -0
  262. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/repair/git_patcher.py +0 -0
  263. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/repair/history.py +0 -0
  264. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/repair/llm_repair_engine.py +0 -0
  265. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/repair/loop.py +0 -0
  266. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/repair/primary_picker.py +0 -0
  267. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/repair/proof_breaks.py +0 -0
  268. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/repair/repair_result.py +0 -0
  269. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/repair/repairability_classifier.py +0 -0
  270. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/repair/schema.py +0 -0
  271. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/repair/templates/analyze_meta.md +0 -0
  272. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/repair/templates/propose_meta.md +0 -0
  273. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/repair/templates/repair_strategy_meta.md +0 -0
  274. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/repair/templates/repairability_meta.md +0 -0
  275. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/repair/test_failure_attribution.py +0 -0
  276. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/repair/verify_runner.py +0 -0
  277. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/repair_slice.py +0 -0
  278. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/require.py +0 -0
  279. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/require_plugins.py +0 -0
  280. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/require_propagate.py +0 -0
  281. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/required_artifacts/defaults/cli.yaml +0 -0
  282. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/required_artifacts/defaults/generic.yaml +0 -0
  283. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/required_artifacts/defaults/iot.yaml +0 -0
  284. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/required_artifacts/defaults/mobile.yaml +0 -0
  285. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/required_artifacts/defaults/web.yaml +0 -0
  286. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/required_artifacts_deriver.py +0 -0
  287. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/requirement_completeness/defaults/cli.yaml +0 -0
  288. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/requirement_completeness/defaults/generic.yaml +0 -0
  289. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/requirement_completeness/defaults/iot.yaml +0 -0
  290. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
  291. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/requirement_completeness/defaults/web.yaml +0 -0
  292. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/requirement_completeness_auditor.py +0 -0
  293. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/requirement_reconciliation.py +0 -0
  294. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/requirements_meta.py +0 -0
  295. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/restoration_report.py +0 -0
  296. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/restore.py +0 -0
  297. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/routes_extractor.py +0 -0
  298. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/runtime_smoke/__init__.py +0 -0
  299. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/runtime_smoke/checks.py +0 -0
  300. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/runtime_smoke/config.py +0 -0
  301. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/runtime_smoke/report.py +0 -0
  302. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/runtime_smoke/runner.py +0 -0
  303. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/scanner.py +0 -0
  304. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/schema_refs.py +0 -0
  305. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/screen_flow_validator.py +0 -0
  306. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/screen_transition_extractor.py +0 -0
  307. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/screen_transitions/defaults.yaml +0 -0
  308. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/skills_cli/__init__.py +0 -0
  309. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/skills_cli/discovery.py +0 -0
  310. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/skills_cli/manager.py +0 -0
  311. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/skills_cli/paths.py +0 -0
  312. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/stack/__init__.py +0 -0
  313. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/stack/adapters/__init__.py +0 -0
  314. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/stack/adapters/_base.py +0 -0
  315. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/stack/adapters/nextjs.py +0 -0
  316. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/stack/adapters/playwright.py +0 -0
  317. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/stack/compose.py +0 -0
  318. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/stack/loader.py +0 -0
  319. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/stack/lock.py +0 -0
  320. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/stack/obligations.py +0 -0
  321. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/stack/profile.py +0 -0
  322. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/stack/profiles/addons/playwright.yaml +0 -0
  323. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/stack/profiles/addons/prisma.yaml +0 -0
  324. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/stack/profiles/frameworks/nextjs.yaml +0 -0
  325. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/stack/project.py +0 -0
  326. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/stack/registry.py +0 -0
  327. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/stack/resolve.py +0 -0
  328. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/surface_reconciliation.py +0 -0
  329. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/synth.py +0 -0
  330. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/templates/codd.yaml.tmpl +0 -0
  331. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/templates/conventions.yaml.tmpl +0 -0
  332. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/templates/data_dependencies.yaml.tmpl +0 -0
  333. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/templates/doc_links.yaml.tmpl +0 -0
  334. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/templates/extract_ai_prompt_baseline.md +0 -0
  335. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/templates/extracted/api-contract.md.j2 +0 -0
  336. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
  337. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/templates/extracted/module-detail.md.j2 +0 -0
  338. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/templates/extracted/schema-design.md.j2 +0 -0
  339. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/templates/extracted/system-context.md.j2 +0 -0
  340. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/templates/gitignore.tmpl +0 -0
  341. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/templates/lexicon_questions.md +0 -0
  342. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/templates/lexicon_schema.yaml +0 -0
  343. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/templates/overrides.yaml.tmpl +0 -0
  344. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/test_detection.py +0 -0
  345. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/test_import_coherence.py +0 -0
  346. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/traceability.py +0 -0
  347. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/validator.py +0 -0
  348. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/vb_marker_authenticity.py +0 -0
  349. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/vb_rerun_scope.py +0 -0
  350. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/verifiable_behavior_audit.py +0 -0
  351. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/watch/__init__.py +0 -0
  352. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/watch/events.py +0 -0
  353. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/watch/propagation_log.py +0 -0
  354. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/watch/propagation_pipeline.py +0 -0
  355. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/watch/test_runner.py +0 -0
  356. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/watch/watcher.py +0 -0
  357. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd/wiring.py +0 -0
  358. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
  359. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
  360. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
  361. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
  362. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
  363. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
  364. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
  365. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
  366. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
  367. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
  368. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
  369. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
  370. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
  371. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
  372. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
  373. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
  374. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
  375. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
  376. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
  377. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
  378. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
  379. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
  380. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
  381. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
  382. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
  383. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
  384. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
  385. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
  386. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
  387. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
  388. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
  389. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
  390. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
  391. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
  392. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
  393. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
  394. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
  395. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
  396. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
  397. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
  398. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
  399. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
  400. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
  401. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
  402. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
  403. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
  404. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
  405. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
  406. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
  407. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
  408. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
  409. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
  410. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
  411. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
  412. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
  413. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
  414. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
  415. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
  416. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
  417. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/data_aggregation_policies/coverage_matrix.md +0 -0
  418. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/data_aggregation_policies/elicit_extend.md +0 -0
  419. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/data_aggregation_policies/lexicon.yaml +0 -0
  420. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/data_aggregation_policies/manifest.yaml +0 -0
  421. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/data_aggregation_policies/recommended_kinds.yaml +0 -0
  422. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/data_aggregation_policies/severity_rules.yaml +0 -0
  423. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
  424. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
  425. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
  426. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
  427. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
  428. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
  429. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
  430. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
  431. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
  432. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
  433. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
  434. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
  435. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
  436. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
  437. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
  438. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
  439. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
  440. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
  441. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
  442. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
  443. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
  444. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
  445. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
  446. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
  447. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
  448. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
  449. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
  450. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
  451. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
  452. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
  453. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
  454. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
  455. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
  456. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
  457. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
  458. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
  459. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
  460. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
  461. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
  462. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
  463. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
  464. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
  465. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
  466. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
  467. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
  468. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
  469. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
  470. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
  471. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
  472. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
  473. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
  474. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
  475. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
  476. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
  477. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
  478. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
  479. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
  480. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
  481. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
  482. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
  483. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
  484. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
  485. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
  486. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
  487. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
  488. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
  489. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
  490. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
  491. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
  492. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
  493. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
  494. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
  495. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
  496. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
  497. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
  498. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
  499. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
  500. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
  501. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
  502. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
  503. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
  504. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
  505. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
  506. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
  507. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
  508. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
  509. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
  510. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
  511. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
  512. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
  513. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
  514. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
  515. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
  516. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
  517. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
  518. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
  519. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
  520. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
  521. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
  522. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
  523. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
  524. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
  525. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
  526. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
  527. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
  528. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
  529. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
  530. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
  531. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
  532. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
  533. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
  534. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
  535. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
  536. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
  537. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
  538. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
  539. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
  540. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
  541. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
  542. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
  543. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
  544. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
  545. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
  546. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
  547. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
  548. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
  549. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
  550. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
  551. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
  552. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
  553. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
  554. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
  555. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
  556. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
  557. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
  558. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
  559. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
  560. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
  561. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
  562. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
  563. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
  564. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
  565. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
  566. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
  567. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
  568. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
  569. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
  570. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
  571. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
  572. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
  573. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
  574. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
  575. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
  576. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
  577. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
  578. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
  579. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
  580. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
  581. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
  582. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
  583. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
  584. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
  585. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
  586. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
  587. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
  588. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
  589. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
  590. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
  591. {codd_dev-2.67.0 → codd_dev-2.69.0}/codd_plugins/stack_map.yaml +0 -0
  592. {codd_dev-2.67.0 → codd_dev-2.69.0}/docs/cookbook/cdp_browser/README.md +0 -0
  593. {codd_dev-2.67.0 → codd_dev-2.69.0}/docs/cookbook/presentation_aggregation/README.md +0 -0
  594. {codd_dev-2.67.0 → codd_dev-2.69.0}/docs/requirements/README.md +0 -0
  595. {codd_dev-2.67.0 → codd_dev-2.69.0}/dogfood/README.md +0 -0
  596. {codd_dev-2.67.0 → codd_dev-2.69.0}/dogfood/fixtures/flat_py_app/README.md +0 -0
  597. {codd_dev-2.67.0 → codd_dev-2.69.0}/examples/README.md +0 -0
  598. {codd_dev-2.67.0 → codd_dev-2.69.0}/skills/codd-assemble/SKILL.md +0 -0
  599. {codd_dev-2.67.0 → codd_dev-2.69.0}/skills/codd-evolve/SKILL.md +0 -0
  600. {codd_dev-2.67.0 → codd_dev-2.69.0}/skills/codd-generate/SKILL.md +0 -0
  601. {codd_dev-2.67.0 → codd_dev-2.69.0}/skills/codd-greenfield/SKILL.md +0 -0
  602. {codd_dev-2.67.0 → codd_dev-2.69.0}/skills/codd-impact/SKILL.md +0 -0
  603. {codd_dev-2.67.0 → codd_dev-2.69.0}/skills/codd-init/SKILL.md +0 -0
  604. {codd_dev-2.67.0 → codd_dev-2.69.0}/skills/codd-propagate/SKILL.md +0 -0
  605. {codd_dev-2.67.0 → codd_dev-2.69.0}/skills/codd-restore/SKILL.md +0 -0
  606. {codd_dev-2.67.0 → codd_dev-2.69.0}/skills/codd-scan/SKILL.md +0 -0
  607. {codd_dev-2.67.0 → codd_dev-2.69.0}/skills/codd-validate/SKILL.md +0 -0
  608. {codd_dev-2.67.0 → codd_dev-2.69.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.67.0
3
+ Version: 2.69.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.67.0"
3
+ __version__ = "2.69.0"
@@ -39,8 +39,26 @@ from .registry import (
39
39
  AdapterRegistry,
40
40
  LanguageRegistry,
41
41
  UnknownLanguageError,
42
+ default_adapter_registry,
42
43
  default_registry,
43
44
  )
45
+ from .contract import (
46
+ AdapterRequirement,
47
+ IncompleteLanguageContractError,
48
+ ResolvedLanguageContract,
49
+ build_language_contract,
50
+ resolve_language_contract,
51
+ resolve_language_profile,
52
+ )
53
+ from .verify_plan import (
54
+ ShadowComparison,
55
+ VerifyClass,
56
+ VerifyOutcome,
57
+ VerifyRunPlan,
58
+ build_verify_plan,
59
+ classify_verify_outcome,
60
+ shadow_compare,
61
+ )
44
62
  from .compat import (
45
63
  UnsupportedLayoutShape,
46
64
  layout_profile_from_language_profile,
@@ -74,7 +92,23 @@ __all__ = [
74
92
  "AdapterRegistry",
75
93
  "LanguageRegistry",
76
94
  "UnknownLanguageError",
95
+ "default_adapter_registry",
77
96
  "default_registry",
97
+ # resolved language contract (the language-free kernel seam, v2.68)
98
+ "AdapterRequirement",
99
+ "IncompleteLanguageContractError",
100
+ "ResolvedLanguageContract",
101
+ "build_language_contract",
102
+ "resolve_language_contract",
103
+ "resolve_language_profile",
104
+ # verify run plan + semantic classifier (v2.69a, shadow)
105
+ "ShadowComparison",
106
+ "VerifyClass",
107
+ "VerifyOutcome",
108
+ "VerifyRunPlan",
109
+ "build_verify_plan",
110
+ "classify_verify_outcome",
111
+ "shadow_compare",
78
112
  # compat shim (LanguageProfile -> legacy LayoutProfile)
79
113
  "UnsupportedLayoutShape",
80
114
  "layout_profile_from_language_profile",
@@ -0,0 +1,248 @@
1
+ """ResolvedLanguageContract — the language-free view the kernel consumes (v2.68).
2
+
3
+ The Contract Kernel goal: the harness core never branches on a language name; it
4
+ resolves a project's language to a :class:`LanguageProfile`, resolves the
5
+ adapters that profile *names* against the :class:`AdapterRegistry`, and operates
6
+ only on the resulting :class:`ResolvedLanguageContract` (profile + resolved
7
+ adapter capabilities + a content hash).
8
+
9
+ Anti-false-green seam: a profile that NAMES an adapter the registry cannot
10
+ supply is an INCOMPLETE contract. :meth:`ResolvedLanguageContract.require_complete`
11
+ raises (RED) rather than letting a gate run with a missing observation
12
+ capability — a missing adapter must never become a silent green. (Legacy mode
13
+ may instead inspect :attr:`~ResolvedLanguageContract.is_complete` and degrade to
14
+ a warning; that choice belongs to the caller, not to this module.)
15
+
16
+ This module is ADDITIVE in v2.68: it establishes the resolution seam and is
17
+ exercised by tests, but is not yet wired into the live verify/greenfield gates
18
+ (that switch is v2.69+). Adapter *implementations* are registered in v2.72; until
19
+ then every declared adapter resolves as missing, which is exactly what the
20
+ incomplete-contract test asserts.
21
+ """
22
+
23
+ from __future__ import annotations
24
+
25
+ from dataclasses import dataclass, field
26
+ import hashlib
27
+ import json
28
+ from typing import Any, Mapping
29
+
30
+ from .profile import LanguageProfile
31
+ from .registry import (
32
+ AdapterRegistry,
33
+ LanguageRegistry,
34
+ default_adapter_registry,
35
+ default_registry,
36
+ )
37
+
38
+ # Adapter "kind" is implied by WHERE in the profile the adapter id is declared.
39
+ # These kind names are the contract between profiles (which name bare ids) and
40
+ # the AdapterRegistry (keyed by (kind, id)); v2.72 registers adapters under them.
41
+ KIND_TEST_SEMANTICS = "test_semantics"
42
+ KIND_RUNNER_REPORT = "runner_report"
43
+ KIND_IMPORT_RESOLVER = "import_resolver"
44
+ KIND_SCAFFOLD = "scaffold"
45
+
46
+
47
+ @dataclass(frozen=True)
48
+ class AdapterRequirement:
49
+ """An adapter a profile declares it needs, with where it was declared."""
50
+
51
+ kind: str
52
+ id: str
53
+ source: str # e.g. "tests.semantics_adapter" — for honest diagnostics
54
+
55
+ @property
56
+ def ref(self) -> str:
57
+ return f"{self.kind}:{self.id}"
58
+
59
+
60
+ class IncompleteLanguageContractError(RuntimeError):
61
+ """A profile names adapters the registry cannot supply (RED, not silent green)."""
62
+
63
+ def __init__(self, language_id: str, missing: tuple[AdapterRequirement, ...]) -> None:
64
+ self.language_id = language_id
65
+ self.missing = tuple(missing)
66
+ detail = ", ".join(f"{r.ref} (from {r.source})" for r in self.missing)
67
+ super().__init__(
68
+ f"incomplete language contract for {language_id!r}: no adapter registered "
69
+ f"for {detail}. A profile that names an adapter the registry cannot supply "
70
+ f"is an incomplete contract (RED), never a silent green."
71
+ )
72
+
73
+
74
+ def _config_language(config: Mapping[str, Any] | None) -> str | None:
75
+ """Read ``project.language`` from a codd.yaml mapping (None if absent)."""
76
+ if not isinstance(config, Mapping):
77
+ return None
78
+ project = config.get("project")
79
+ if isinstance(project, Mapping):
80
+ language = project.get("language")
81
+ if isinstance(language, str) and language.strip():
82
+ return language.strip()
83
+ return None
84
+
85
+
86
+ def _declared_adapter_requirements(
87
+ profile: LanguageProfile,
88
+ ) -> tuple[AdapterRequirement, ...]:
89
+ """Collect every adapter id the profile declares, as (kind, id) requirements.
90
+
91
+ Walks the MODELED profile fields only (commands/imports/tests/verify/scaffold).
92
+ ``implement_oracle`` / ``path_rules`` adapters live in ``profile.extra`` and
93
+ are not modeled until v2.73/v2.74, so they are intentionally not collected yet.
94
+ """
95
+ reqs: list[AdapterRequirement] = []
96
+
97
+ tests = profile.tests
98
+ if tests is not None:
99
+ if tests.semantics_adapter:
100
+ reqs.append(
101
+ AdapterRequirement(KIND_TEST_SEMANTICS, tests.semantics_adapter, "tests.semantics_adapter")
102
+ )
103
+ if tests.runner_report_adapter:
104
+ reqs.append(
105
+ AdapterRequirement(KIND_RUNNER_REPORT, tests.runner_report_adapter, "tests.runner_report_adapter")
106
+ )
107
+
108
+ imports = profile.imports
109
+ if imports is not None and imports.resolver_adapter:
110
+ reqs.append(
111
+ AdapterRequirement(KIND_IMPORT_RESOLVER, imports.resolver_adapter, "imports.resolver_adapter")
112
+ )
113
+
114
+ scaffold = profile.scaffold
115
+ if scaffold is not None and scaffold.adapter:
116
+ reqs.append(AdapterRequirement(KIND_SCAFFOLD, scaffold.adapter, "scaffold.adapter"))
117
+
118
+ verify = profile.verify
119
+ if verify is not None and verify.report is not None and verify.report.adapter:
120
+ reqs.append(
121
+ AdapterRequirement(KIND_RUNNER_REPORT, verify.report.adapter, "verify.report.adapter")
122
+ )
123
+
124
+ for cmd_id, cmd in profile.commands.items():
125
+ if cmd.report is not None and cmd.report.adapter:
126
+ reqs.append(
127
+ AdapterRequirement(KIND_RUNNER_REPORT, cmd.report.adapter, f"commands.{cmd_id}.report.adapter")
128
+ )
129
+
130
+ # Dedupe by (kind, id), keeping the first declaration site for diagnostics.
131
+ seen: set[tuple[str, str]] = set()
132
+ unique: list[AdapterRequirement] = []
133
+ for req in reqs:
134
+ key = (req.kind, req.id)
135
+ if key not in seen:
136
+ seen.add(key)
137
+ unique.append(req)
138
+ # Deterministic order so the content hash is stable.
139
+ unique.sort(key=lambda r: (r.kind, r.id))
140
+ return tuple(unique)
141
+
142
+
143
+ def _contract_hash(
144
+ profile: LanguageProfile, required: tuple[AdapterRequirement, ...]
145
+ ) -> str:
146
+ payload = json.dumps(
147
+ {
148
+ "language": profile.identity.id,
149
+ "adapters": [r.ref for r in required],
150
+ },
151
+ sort_keys=True,
152
+ ensure_ascii=False,
153
+ )
154
+ return hashlib.sha256(payload.encode("utf-8")).hexdigest()[:16]
155
+
156
+
157
+ @dataclass(frozen=True)
158
+ class ResolvedLanguageContract:
159
+ """Profile + resolved adapter capabilities + content hash (kernel input)."""
160
+
161
+ language_id: str
162
+ profile: LanguageProfile
163
+ required_adapters: tuple[AdapterRequirement, ...]
164
+ resolved_adapter_refs: tuple[str, ...]
165
+ missing_adapters: tuple[AdapterRequirement, ...]
166
+ content_hash: str
167
+
168
+ @property
169
+ def is_complete(self) -> bool:
170
+ return not self.missing_adapters
171
+
172
+ @property
173
+ def adapter_ids(self) -> tuple[str, ...]:
174
+ """All declared adapter refs (``kind:id``), resolved or not."""
175
+ return tuple(r.ref for r in self.required_adapters)
176
+
177
+ def require_complete(self) -> "ResolvedLanguageContract":
178
+ """Return self if every declared adapter resolved; else raise (RED)."""
179
+ if self.missing_adapters:
180
+ raise IncompleteLanguageContractError(self.language_id, self.missing_adapters)
181
+ return self
182
+
183
+ def to_trace(self) -> dict[str, Any]:
184
+ """Run-trace fields proving the run went through the contract seam."""
185
+ return {
186
+ "resolved_language_profile_id": self.language_id,
187
+ "language_contract_hash": self.content_hash,
188
+ "adapter_ids": list(self.adapter_ids),
189
+ "missing_adapters": [r.ref for r in self.missing_adapters],
190
+ }
191
+
192
+
193
+ def build_language_contract(
194
+ profile: LanguageProfile,
195
+ *,
196
+ adapter_registry: AdapterRegistry | None = None,
197
+ ) -> ResolvedLanguageContract:
198
+ """Resolve a profile's declared adapters into a contract (no live wiring)."""
199
+ registry = adapter_registry if adapter_registry is not None else default_adapter_registry
200
+ required = _declared_adapter_requirements(profile)
201
+ resolved: list[str] = []
202
+ missing: list[AdapterRequirement] = []
203
+ for req in required:
204
+ if (req.kind, req.id) in registry:
205
+ resolved.append(req.ref)
206
+ else:
207
+ missing.append(req)
208
+ return ResolvedLanguageContract(
209
+ language_id=profile.identity.id,
210
+ profile=profile,
211
+ required_adapters=required,
212
+ resolved_adapter_refs=tuple(resolved),
213
+ missing_adapters=tuple(missing),
214
+ content_hash=_contract_hash(profile, required),
215
+ )
216
+
217
+
218
+ def resolve_language_profile(
219
+ config: Mapping[str, Any] | None,
220
+ *,
221
+ registry: LanguageRegistry | None = None,
222
+ ) -> LanguageProfile | None:
223
+ """Resolve the project's declared language to a profile.
224
+
225
+ Returns ``None`` when no ``project.language`` is declared (the caller stays
226
+ on the legacy path). Raises ``UnknownLanguageError`` when a language IS
227
+ declared but no profile matches — a declared-unknown language is an honest
228
+ error, never silently ignored. This is the single language-resolution seam;
229
+ new code MUST use it instead of a fixed ``registry.resolve("go")``.
230
+ """
231
+ lang_registry = registry if registry is not None else default_registry
232
+ language = _config_language(config)
233
+ if not language:
234
+ return None
235
+ return lang_registry.resolve(language)
236
+
237
+
238
+ def resolve_language_contract(
239
+ config: Mapping[str, Any] | None,
240
+ *,
241
+ language_registry: LanguageRegistry | None = None,
242
+ adapter_registry: AdapterRegistry | None = None,
243
+ ) -> ResolvedLanguageContract | None:
244
+ """``config`` -> resolved language contract, or ``None`` if no language."""
245
+ profile = resolve_language_profile(config, registry=language_registry)
246
+ if profile is None:
247
+ return None
248
+ return build_language_contract(profile, adapter_registry=adapter_registry)
@@ -141,3 +141,9 @@ class AdapterRegistry:
141
141
 
142
142
  #: Process-wide default language registry (lazy).
143
143
  default_registry = LanguageRegistry()
144
+
145
+ #: Process-wide default adapter registry. Empty until v2.72 registers the real
146
+ #: test_semantics / runner_report / import_resolver / scaffold adapters; a
147
+ #: language contract that names an unregistered adapter is INCOMPLETE (RED), not
148
+ #: a silent green (see :mod:`codd.languages.contract`).
149
+ default_adapter_registry = AdapterRegistry()
@@ -0,0 +1,192 @@
1
+ """Verify run plan + semantic-class classifier (v2.69a — shadow only).
2
+
3
+ Builds a verify run plan from the resolved language contract's
4
+ ``commands["verify"]`` (the declarative verify command: argv/cwd/env/report)
5
+ and classifies a verify outcome into one of six semantic classes. This runs in
6
+ SHADOW alongside the legacy ``detect_test_command`` path — it does NOT switch
7
+ verify behaviour (that is v2.69b). The point of the shadow stage is to prove,
8
+ on fixtures and on live runs, that the contract-driven plan classifies outcomes
9
+ the SAME way the legacy verifier does (or is intentionally stricter) BEFORE the
10
+ switch.
11
+
12
+ Anti-false-green: the classifier is a PURE mapping of already-computed signals
13
+ to a class — it never re-derives the zero-tests / report heuristics itself (the
14
+ caller supplies them, reusing the single legacy source), so there is no risk of
15
+ a second, drifting copy of the anti-false-green logic. The class ordering puts
16
+ every not-green verdict (TOOL_MISSING / timeout-FAIL / CONFIG_ERROR /
17
+ ZERO_TESTS / REPORT_MISSING) BEFORE the exit-0 PASS, so a run that exits 0 while
18
+ observing nothing is never classified green.
19
+ """
20
+
21
+ from __future__ import annotations
22
+
23
+ from dataclasses import dataclass
24
+ from enum import Enum
25
+ from typing import Mapping
26
+
27
+ from .contract import ResolvedLanguageContract
28
+
29
+
30
+ class VerifyClass(str, Enum):
31
+ """Semantic class of a verify outcome (design §v2.69a)."""
32
+
33
+ PASS = "PASS"
34
+ FAIL = "FAIL"
35
+ ZERO_TESTS = "ZERO_TESTS"
36
+ REPORT_MISSING = "REPORT_MISSING"
37
+ TOOL_MISSING = "TOOL_MISSING"
38
+ CONFIG_ERROR = "CONFIG_ERROR"
39
+
40
+ @property
41
+ def is_green(self) -> bool:
42
+ return self is VerifyClass.PASS
43
+
44
+
45
+ @dataclass(frozen=True)
46
+ class VerifyRunPlan:
47
+ """The contract-derived verify command (declarative, not yet executed)."""
48
+
49
+ language_id: str
50
+ argv: tuple[str, ...]
51
+ cwd: str | None
52
+ env: Mapping[str, str]
53
+ report_path: str | None
54
+ report_adapter: str | None
55
+ report_required: bool
56
+ must_include_test_sets: tuple[str, ...]
57
+
58
+ @property
59
+ def command_str(self) -> str:
60
+ return " ".join(self.argv)
61
+
62
+
63
+ def build_verify_plan(contract: ResolvedLanguageContract) -> VerifyRunPlan | None:
64
+ """Derive the verify run plan from ``contract.profile.commands['verify']``.
65
+
66
+ Returns ``None`` when the profile declares no verify command (the caller
67
+ stays on the legacy path). A declared ``report.path`` means the command is
68
+ expected to PRODUCE that report — its absence after a run is REPORT_MISSING
69
+ (a not-green outcome), enforced once adapters land (v2.72) / the switch
70
+ happens (v2.69b).
71
+ """
72
+ cmd = contract.profile.commands.get("verify")
73
+ if cmd is None:
74
+ return None
75
+ report = cmd.report
76
+ scope = cmd.scope
77
+ return VerifyRunPlan(
78
+ language_id=contract.language_id,
79
+ argv=tuple(cmd.argv),
80
+ cwd=cmd.cwd,
81
+ env=dict(cmd.env),
82
+ report_path=(report.path if report else None),
83
+ report_adapter=(report.adapter if report else None),
84
+ report_required=bool(report and report.path),
85
+ must_include_test_sets=(scope.must_include_test_sets if scope else ()),
86
+ )
87
+
88
+
89
+ @dataclass(frozen=True)
90
+ class VerifyOutcome:
91
+ """Observed signals from running a verify command.
92
+
93
+ The signals are computed by the CALLER (reusing the single legacy source for
94
+ the zero-tests heuristic, the report adapter for report presence, etc.) — this
95
+ keeps the classifier a pure mapping with no duplicated anti-false-green logic.
96
+ """
97
+
98
+ spawned: bool # did the tool execute at all? (False ⇒ tool missing / spawn error)
99
+ returncode: int | None = None
100
+ timed_out: bool = False
101
+ zero_tests_observed: bool = False # runner started but collected/ran 0 tests
102
+ config_error: bool = False # runner usage/config error (e.g. pytest exit 4)
103
+ report_present: bool | None = None # None ⇒ no report expected / not yet checked
104
+
105
+
106
+ def classify_verify_outcome(
107
+ outcome: VerifyOutcome, plan: VerifyRunPlan | None = None
108
+ ) -> VerifyClass:
109
+ """Map an observed verify outcome to a semantic class (pure, anti-false-green).
110
+
111
+ Not-green verdicts are checked BEFORE the exit-0 PASS so a command that exits
112
+ 0 while observing nothing (zero tests, missing required report) can never be
113
+ classified green.
114
+ """
115
+ if not outcome.spawned:
116
+ return VerifyClass.TOOL_MISSING
117
+ if outcome.timed_out:
118
+ return VerifyClass.FAIL # a timeout is a failure, never green
119
+ if outcome.config_error:
120
+ return VerifyClass.CONFIG_ERROR
121
+ if outcome.zero_tests_observed:
122
+ return VerifyClass.ZERO_TESTS
123
+ if outcome.returncode == 0:
124
+ if plan is not None and plan.report_required and outcome.report_present is False:
125
+ return VerifyClass.REPORT_MISSING
126
+ return VerifyClass.PASS
127
+ return VerifyClass.FAIL
128
+
129
+
130
+ @dataclass(frozen=True)
131
+ class ShadowComparison:
132
+ """Result of comparing the contract verify plan against the legacy command."""
133
+
134
+ language_id: str
135
+ legacy_command: str
136
+ profile_command: str | None
137
+ commands_identical: bool
138
+ legacy_class: VerifyClass
139
+ profile_class: VerifyClass
140
+ classes_match: bool
141
+ note: str = ""
142
+
143
+ def to_trace(self) -> dict[str, object]:
144
+ return {
145
+ "shadow_language_id": self.language_id,
146
+ "legacy_command": self.legacy_command,
147
+ "profile_command": self.profile_command,
148
+ "commands_identical": self.commands_identical,
149
+ "legacy_verify_class": self.legacy_class.value,
150
+ "profile_verify_class": self.profile_class.value,
151
+ "verify_classes_match": self.classes_match,
152
+ "shadow_note": self.note,
153
+ }
154
+
155
+
156
+ def shadow_compare(
157
+ contract: ResolvedLanguageContract,
158
+ *,
159
+ legacy_command: str,
160
+ legacy_outcome: VerifyOutcome,
161
+ ) -> ShadowComparison | None:
162
+ """Compare the contract verify plan to the legacy command for one run.
163
+
164
+ SHADOW ONLY — never changes behaviour. The legacy outcome's signals are
165
+ reused to classify what the profile plan WOULD report; divergence (or an
166
+ intentionally stricter profile, e.g. Go's ``-json`` report variant) is
167
+ recorded for review before the v2.69b switch.
168
+ """
169
+ plan = build_verify_plan(contract)
170
+ if plan is None:
171
+ return None
172
+ legacy_class = classify_verify_outcome(legacy_outcome, plan=None)
173
+ profile_class = classify_verify_outcome(legacy_outcome, plan=plan)
174
+ identical = plan.command_str == legacy_command.strip()
175
+ note = ""
176
+ if not identical:
177
+ note = (
178
+ f"profile verify command differs from legacy "
179
+ f"(profile={plan.command_str!r} vs legacy={legacy_command!r})"
180
+ )
181
+ if plan.report_required:
182
+ note += "; profile is stricter (declares a required machine-readable report)"
183
+ return ShadowComparison(
184
+ language_id=contract.language_id,
185
+ legacy_command=legacy_command,
186
+ profile_command=plan.command_str,
187
+ commands_identical=identical,
188
+ legacy_class=legacy_class,
189
+ profile_class=profile_class,
190
+ classes_match=(legacy_class is profile_class),
191
+ note=note,
192
+ )
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "codd-dev"
7
- version = "2.67.0"
7
+ version = "2.69.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