codd-dev 2.76.0__tar.gz → 2.78.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 (615) hide show
  1. {codd_dev-2.76.0 → codd_dev-2.78.0}/PKG-INFO +1 -1
  2. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/__init__.py +1 -1
  3. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/implement_oracle.py +36 -129
  4. codd_dev-2.78.0/codd/implement_oracle_types.py +174 -0
  5. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/languages/__init__.py +4 -0
  6. codd_dev-2.78.0/codd/languages/adapters/implement_oracle.py +188 -0
  7. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/languages/builtin_adapters.py +32 -0
  8. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/languages/contract.py +6 -0
  9. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/languages/loader.py +94 -1
  10. codd_dev-2.78.0/codd/languages/oracle_executor.py +345 -0
  11. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/languages/profile.py +59 -4
  12. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/languages/profiles/go.yaml +3 -1
  13. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/languages/profiles/python.yaml +2 -2
  14. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/languages/profiles/typescript.yaml +3 -2
  15. {codd_dev-2.76.0 → codd_dev-2.78.0}/pyproject.toml +1 -1
  16. {codd_dev-2.76.0 → codd_dev-2.78.0}/.gitignore +0 -0
  17. {codd_dev-2.76.0 → codd_dev-2.78.0}/LICENSE +0 -0
  18. {codd_dev-2.76.0 → codd_dev-2.78.0}/README.md +0 -0
  19. {codd_dev-2.76.0 → codd_dev-2.78.0}/bench_fixture/README.md +0 -0
  20. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/__main__.py +0 -0
  21. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/_git_helper.py +0 -0
  22. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/action_outcome.py +0 -0
  23. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/ai_invoke.py +0 -0
  24. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/ai_patch.py +0 -0
  25. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/artifact_contract.py +0 -0
  26. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/artifact_ids.py +0 -0
  27. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/artifacts/catalog.yaml +0 -0
  28. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/ask_user_question_adapter.py +0 -0
  29. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/assembler.py +0 -0
  30. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/bridge.py +0 -0
  31. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/brownfield/__init__.py +0 -0
  32. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/brownfield/pipeline.py +0 -0
  33. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/capability_completeness.py +0 -0
  34. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/claude_cli.py +0 -0
  35. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/cli.py +0 -0
  36. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/clustering.py +0 -0
  37. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/coherence_adapters.py +0 -0
  38. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/coherence_engine.py +0 -0
  39. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/confidence.py +0 -0
  40. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/config.py +0 -0
  41. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/config_schema.py +0 -0
  42. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/contracts.py +0 -0
  43. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/contracts_registry/__init__.py +0 -0
  44. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/contracts_registry/__main__.py +0 -0
  45. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/contracts_registry/certify.py +0 -0
  46. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/contracts_registry/generate_matrix.py +0 -0
  47. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/contracts_registry/registry.py +0 -0
  48. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/coverage_auditor.py +0 -0
  49. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/coverage_execution_coherence.py +0 -0
  50. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/coverage_metrics.py +0 -0
  51. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/__init__.py +0 -0
  52. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/auto_repair.py +0 -0
  53. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/builder.py +0 -0
  54. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/checks/__init__.py +0 -0
  55. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/checks/_one_to_many_detection.py +0 -0
  56. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/checks/artifact_contract_check.py +0 -0
  57. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/checks/ci_health.py +0 -0
  58. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/checks/dependency_freshness.py +0 -0
  59. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/checks/depends_on_consistency.py +0 -0
  60. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/checks/deployment_completeness.py +0 -0
  61. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/checks/edge_validity.py +0 -0
  62. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/checks/environment_coverage.py +0 -0
  63. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/checks/implementation_coverage.py +0 -0
  64. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/checks/node_completeness.py +0 -0
  65. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/checks/opt_out.py +0 -0
  66. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/checks/task_completion.py +0 -0
  67. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/checks/transitive_closure.py +0 -0
  68. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/checks/ui_coherence.py +0 -0
  69. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/checks/user_journey_coherence.py +0 -0
  70. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/coverage_axes.py +0 -0
  71. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/defaults/cli.yaml +0 -0
  72. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/defaults/cpp_embedded.yaml +0 -0
  73. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/defaults/csharp.yaml +0 -0
  74. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/defaults/elixir.yaml +0 -0
  75. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/defaults/generic.yaml +0 -0
  76. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/defaults/iot.yaml +0 -0
  77. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/defaults/java.yaml +0 -0
  78. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/defaults/kotlin.yaml +0 -0
  79. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/defaults/mobile.yaml +0 -0
  80. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/defaults/ruby.yaml +0 -0
  81. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/defaults/rust.yaml +0 -0
  82. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/defaults/scala.yaml +0 -0
  83. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/defaults/swift.yaml +0 -0
  84. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/defaults/test_frameworks.yaml +0 -0
  85. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/defaults/web.yaml +0 -0
  86. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/extractor.py +0 -0
  87. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/impact.py +0 -0
  88. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dag/runner.py +0 -0
  89. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/defaults.py +0 -0
  90. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/defaults.yaml +0 -0
  91. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/dependency_lock_coherence.py +0 -0
  92. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deploy_targets/__init__.py +0 -0
  93. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deploy_targets/app_service.py +0 -0
  94. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deploy_targets/base.py +0 -0
  95. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deploy_targets/docker_compose.py +0 -0
  96. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deployer.py +0 -0
  97. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deployment/__init__.py +0 -0
  98. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deployment/checks/__init__.py +0 -0
  99. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deployment/defaults/deploy_targets.yaml +0 -0
  100. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
  101. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deployment/defaults/schema_providers.yaml +0 -0
  102. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deployment/defaults/verification_templates.yaml +0 -0
  103. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deployment/extractor.py +0 -0
  104. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deployment/providers/__init__.py +0 -0
  105. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deployment/providers/ai_command.py +0 -0
  106. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deployment/providers/ai_command_factory.py +0 -0
  107. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deployment/providers/codex_app_server.py +0 -0
  108. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deployment/providers/llm_consideration.py +0 -0
  109. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deployment/providers/schema/__init__.py +0 -0
  110. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deployment/providers/schema/prisma.py +0 -0
  111. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deployment/providers/target/__init__.py +0 -0
  112. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deployment/providers/target/docker_compose.py +0 -0
  113. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deployment/providers/verification/__init__.py +0 -0
  114. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
  115. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deployment/providers/verification/cdp_browser.py +0 -0
  116. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deployment/providers/verification/cdp_engines.py +0 -0
  117. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
  118. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deployment/providers/verification/cdp_wire.py +0 -0
  119. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deployment/providers/verification/curl.py +0 -0
  120. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deployment/providers/verification/form_strategies.py +0 -0
  121. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deployment/providers/verification/means_catalog.py +0 -0
  122. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deployment/providers/verification/playwright.py +0 -0
  123. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deployment/providers/verification/pytest_http.py +0 -0
  124. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/deployment/providers/verification/vitest.py +0 -0
  125. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/design_md.py +0 -0
  126. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/diff/__init__.py +0 -0
  127. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/diff/apply.py +0 -0
  128. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/diff/engine.py +0 -0
  129. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/diff/persistence.py +0 -0
  130. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/diff/templates/diff_prompt.md +0 -0
  131. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/discovery.py +0 -0
  132. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/drift.py +0 -0
  133. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/e2e_contract_coherence.py +0 -0
  134. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/e2e_extractor.py +0 -0
  135. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/e2e_generator.py +0 -0
  136. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/e2e_harness.py +0 -0
  137. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/e2e_runner.py +0 -0
  138. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/elicit/__init__.py +0 -0
  139. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/elicit/apply.py +0 -0
  140. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/elicit/engine.py +0 -0
  141. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/elicit/finding.py +0 -0
  142. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/elicit/formatters/__init__.py +0 -0
  143. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/elicit/formatters/base.py +0 -0
  144. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/elicit/formatters/interactive.py +0 -0
  145. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/elicit/formatters/json_fmt.py +0 -0
  146. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/elicit/formatters/md.py +0 -0
  147. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/elicit/lexicon_loader.py +0 -0
  148. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/elicit/persistence.py +0 -0
  149. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
  150. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/env_refs.py +0 -0
  151. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/extract_ai.py +0 -0
  152. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/extract_paths.py +0 -0
  153. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/extractor.py +0 -0
  154. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/fix/__init__.py +0 -0
  155. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/fix/candidate_selector.py +0 -0
  156. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/fix/design_updater.py +0 -0
  157. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/fix/impl_propagation.py +0 -0
  158. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/fix/interactive_prompt.py +0 -0
  159. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/fix/phenomenon_fixer.py +0 -0
  160. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/fix/phenomenon_parser.py +0 -0
  161. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/fix/risk_classifier.py +0 -0
  162. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/fix/templates/clarification_question.txt +0 -0
  163. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/fix/templates/design_update.txt +0 -0
  164. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/fix/templates/impl_update.txt +0 -0
  165. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/fix/templates/phenomenon_parse.txt +0 -0
  166. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/fix/templates/risk_assessment.txt +0 -0
  167. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/fix/templates_loader.py +0 -0
  168. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/fixer.py +0 -0
  169. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/fixup_drift.py +0 -0
  170. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/fixup_drift_strategies/__init__.py +0 -0
  171. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
  172. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
  173. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/fixup_drift_strategies/url_drift.py +0 -0
  174. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/frontmatter.py +0 -0
  175. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/generator.py +0 -0
  176. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/git_evidence.py +0 -0
  177. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/graph.py +0 -0
  178. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/greenfield/__init__.py +0 -0
  179. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/greenfield/pipeline.py +0 -0
  180. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/hitl_session.py +0 -0
  181. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/hooks/__init__.py +0 -0
  182. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/hooks/pre-commit +0 -0
  183. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/hooks/recipes/claude_requirements_nudge.json +0 -0
  184. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/hooks/recipes/claude_settings_example.json +0 -0
  185. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/hooks/recipes/codex_hook.sh +0 -0
  186. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/hooks/recipes/git_post_commit.sh +0 -0
  187. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/hooks/recipes/git_pre_commit.sh +0 -0
  188. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/iac_nfr.py +0 -0
  189. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/implement_oracle_scope.py +0 -0
  190. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/implementer/__init__.py +0 -0
  191. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/implementer/chunked_runner.py +0 -0
  192. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/implementer/typecheck_loop.py +0 -0
  193. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/implementer.py +0 -0
  194. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/import_coherence.py +0 -0
  195. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/inheritance.py +0 -0
  196. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/init/__init__.py +0 -0
  197. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/init/lexicon_suggest.py +0 -0
  198. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/init/llm_lexicon_suggester.py +0 -0
  199. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/init/stack_detector.py +0 -0
  200. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/knowledge_fetcher.py +0 -0
  201. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/languages/adapters/__init__.py +0 -0
  202. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/languages/adapters/runner_report.py +0 -0
  203. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/languages/compat.py +0 -0
  204. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/languages/path_planner.py +0 -0
  205. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/languages/registry.py +0 -0
  206. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/languages/verify_executor.py +0 -0
  207. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/languages/verify_plan.py +0 -0
  208. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/lexicon.py +0 -0
  209. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/lexicon_cli/__init__.py +0 -0
  210. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/lexicon_cli/formatters/__init__.py +0 -0
  211. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/lexicon_cli/formatters/html.py +0 -0
  212. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
  213. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/lexicon_cli/formatters/md.py +0 -0
  214. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/lexicon_cli/inspector.py +0 -0
  215. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/lexicon_cli/manager.py +0 -0
  216. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/lexicon_cli/reporter.py +0 -0
  217. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/lexicon_cli/threshold.py +0 -0
  218. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/llm/__init__.py +0 -0
  219. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/llm/approval.py +0 -0
  220. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/llm/best_practice_augmenter.py +0 -0
  221. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/llm/criteria_expander.py +0 -0
  222. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/llm/design_doc_extractor.py +0 -0
  223. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/llm/impl_step_deriver.py +0 -0
  224. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/llm/means_catalog_loader.py +0 -0
  225. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/llm/parser.py +0 -0
  226. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/llm/plan_deriver.py +0 -0
  227. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/llm/prompt_builder.py +0 -0
  228. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/llm/strategy_validator.py +0 -0
  229. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/llm/templates/best_practice_augment_meta.md +0 -0
  230. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/llm/templates/criteria_expand_meta.md +0 -0
  231. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/llm/templates/design_doc_extract_meta.md +0 -0
  232. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/llm/templates/impl_step_derive_meta.md +0 -0
  233. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
  234. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/llm/templates/meta_instruction.md +0 -0
  235. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/llm/templates/plan_derive_meta.md +0 -0
  236. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/llm/templates/verification_means_catalog.yaml +0 -0
  237. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/mcp_server.py +0 -0
  238. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/measure.py +0 -0
  239. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/operational_e2e_audit.py +0 -0
  240. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/operations_derive.py +0 -0
  241. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/parsing/__init__.py +0 -0
  242. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/parsing/_shared.py +0 -0
  243. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/parsing/api_specs.py +0 -0
  244. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/parsing/filesystem_routes.py +0 -0
  245. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/parsing/iac.py +0 -0
  246. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/parsing/python_ast.py +0 -0
  247. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/parsing/schemas.py +0 -0
  248. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/parsing/tests_builddeps.py +0 -0
  249. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/parsing/treesitter.py +0 -0
  250. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/planner.py +0 -0
  251. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/policy.py +0 -0
  252. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/preflight/__init__.py +0 -0
  253. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/preflight/defaults/cli.yaml +0 -0
  254. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/preflight/defaults/generic.yaml +0 -0
  255. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/preflight/defaults/iot.yaml +0 -0
  256. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/preflight/defaults/mobile.yaml +0 -0
  257. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/preflight/defaults/web.yaml +0 -0
  258. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/project_types.py +0 -0
  259. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/propagate.py +0 -0
  260. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/propagation_common.py +0 -0
  261. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/propagator.py +0 -0
  262. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/reconciliation_ledger.py +0 -0
  263. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/reference_resolution.py +0 -0
  264. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/registry.py +0 -0
  265. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/repair/__init__.py +0 -0
  266. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/repair/approval_repair.py +0 -0
  267. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/repair/auto_scope_guard.py +0 -0
  268. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/repair/engine.py +0 -0
  269. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/repair/git_patcher.py +0 -0
  270. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/repair/history.py +0 -0
  271. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/repair/llm_repair_engine.py +0 -0
  272. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/repair/loop.py +0 -0
  273. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/repair/primary_picker.py +0 -0
  274. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/repair/proof_breaks.py +0 -0
  275. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/repair/repair_result.py +0 -0
  276. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/repair/repairability_classifier.py +0 -0
  277. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/repair/schema.py +0 -0
  278. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/repair/templates/analyze_meta.md +0 -0
  279. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/repair/templates/propose_meta.md +0 -0
  280. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/repair/templates/repair_strategy_meta.md +0 -0
  281. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/repair/templates/repairability_meta.md +0 -0
  282. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/repair/test_failure_attribution.py +0 -0
  283. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/repair/verify_runner.py +0 -0
  284. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/repair_slice.py +0 -0
  285. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/require.py +0 -0
  286. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/require_plugins.py +0 -0
  287. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/require_propagate.py +0 -0
  288. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/required_artifacts/defaults/cli.yaml +0 -0
  289. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/required_artifacts/defaults/generic.yaml +0 -0
  290. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/required_artifacts/defaults/iot.yaml +0 -0
  291. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/required_artifacts/defaults/mobile.yaml +0 -0
  292. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/required_artifacts/defaults/web.yaml +0 -0
  293. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/required_artifacts_deriver.py +0 -0
  294. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/requirement_completeness/defaults/cli.yaml +0 -0
  295. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/requirement_completeness/defaults/generic.yaml +0 -0
  296. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/requirement_completeness/defaults/iot.yaml +0 -0
  297. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
  298. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/requirement_completeness/defaults/web.yaml +0 -0
  299. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/requirement_completeness_auditor.py +0 -0
  300. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/requirement_reconciliation.py +0 -0
  301. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/requirements_meta.py +0 -0
  302. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/restoration_report.py +0 -0
  303. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/restore.py +0 -0
  304. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/routes_extractor.py +0 -0
  305. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/runtime_smoke/__init__.py +0 -0
  306. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/runtime_smoke/checks.py +0 -0
  307. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/runtime_smoke/config.py +0 -0
  308. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/runtime_smoke/report.py +0 -0
  309. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/runtime_smoke/runner.py +0 -0
  310. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/scanner.py +0 -0
  311. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/schema_refs.py +0 -0
  312. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/screen_flow_validator.py +0 -0
  313. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/screen_transition_extractor.py +0 -0
  314. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/screen_transitions/defaults.yaml +0 -0
  315. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/skills_cli/__init__.py +0 -0
  316. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/skills_cli/discovery.py +0 -0
  317. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/skills_cli/manager.py +0 -0
  318. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/skills_cli/paths.py +0 -0
  319. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/stack/__init__.py +0 -0
  320. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/stack/adapters/__init__.py +0 -0
  321. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/stack/adapters/_base.py +0 -0
  322. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/stack/adapters/nextjs.py +0 -0
  323. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/stack/adapters/playwright.py +0 -0
  324. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/stack/compose.py +0 -0
  325. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/stack/loader.py +0 -0
  326. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/stack/lock.py +0 -0
  327. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/stack/obligations.py +0 -0
  328. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/stack/profile.py +0 -0
  329. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/stack/profiles/addons/playwright.yaml +0 -0
  330. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/stack/profiles/addons/prisma.yaml +0 -0
  331. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/stack/profiles/frameworks/nextjs.yaml +0 -0
  332. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/stack/project.py +0 -0
  333. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/stack/registry.py +0 -0
  334. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/stack/resolve.py +0 -0
  335. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/surface_reconciliation.py +0 -0
  336. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/synth.py +0 -0
  337. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/templates/codd.yaml.tmpl +0 -0
  338. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/templates/conventions.yaml.tmpl +0 -0
  339. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/templates/data_dependencies.yaml.tmpl +0 -0
  340. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/templates/doc_links.yaml.tmpl +0 -0
  341. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/templates/extract_ai_prompt_baseline.md +0 -0
  342. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/templates/extracted/api-contract.md.j2 +0 -0
  343. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
  344. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/templates/extracted/module-detail.md.j2 +0 -0
  345. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/templates/extracted/schema-design.md.j2 +0 -0
  346. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/templates/extracted/system-context.md.j2 +0 -0
  347. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/templates/gitignore.tmpl +0 -0
  348. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/templates/lexicon_questions.md +0 -0
  349. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/templates/lexicon_schema.yaml +0 -0
  350. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/templates/overrides.yaml.tmpl +0 -0
  351. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/test_detection.py +0 -0
  352. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/test_import_coherence.py +0 -0
  353. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/traceability.py +0 -0
  354. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/validator.py +0 -0
  355. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/vb_marker_authenticity.py +0 -0
  356. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/vb_rerun_scope.py +0 -0
  357. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/verifiable_behavior_audit.py +0 -0
  358. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/watch/__init__.py +0 -0
  359. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/watch/events.py +0 -0
  360. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/watch/propagation_log.py +0 -0
  361. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/watch/propagation_pipeline.py +0 -0
  362. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/watch/test_runner.py +0 -0
  363. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/watch/watcher.py +0 -0
  364. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd/wiring.py +0 -0
  365. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
  366. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
  367. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
  368. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
  369. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
  370. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
  371. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
  372. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
  373. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
  374. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
  375. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
  376. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
  377. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
  378. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
  379. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
  380. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
  381. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
  382. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
  383. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
  384. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
  385. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
  386. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
  387. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
  388. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
  389. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
  390. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
  391. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
  392. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
  393. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
  394. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
  395. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
  396. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
  397. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
  398. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
  399. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
  400. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
  401. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
  402. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
  403. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
  404. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
  405. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
  406. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
  407. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
  408. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
  409. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
  410. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
  411. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
  412. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
  413. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
  414. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
  415. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
  416. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
  417. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
  418. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
  419. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
  420. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
  421. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
  422. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
  423. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
  424. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/data_aggregation_policies/coverage_matrix.md +0 -0
  425. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/data_aggregation_policies/elicit_extend.md +0 -0
  426. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/data_aggregation_policies/lexicon.yaml +0 -0
  427. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/data_aggregation_policies/manifest.yaml +0 -0
  428. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/data_aggregation_policies/recommended_kinds.yaml +0 -0
  429. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/data_aggregation_policies/severity_rules.yaml +0 -0
  430. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
  431. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
  432. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
  433. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
  434. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
  435. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
  436. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
  437. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
  438. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
  439. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
  440. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
  441. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
  442. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
  443. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
  444. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
  445. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
  446. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
  447. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
  448. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
  449. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
  450. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
  451. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
  452. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
  453. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
  454. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
  455. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
  456. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
  457. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
  458. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
  459. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
  460. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
  461. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
  462. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
  463. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
  464. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
  465. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
  466. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
  467. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
  468. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
  469. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
  470. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
  471. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
  472. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
  473. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
  474. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
  475. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
  476. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
  477. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
  478. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
  479. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
  480. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
  481. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
  482. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
  483. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
  484. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
  485. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
  486. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
  487. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
  488. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
  489. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
  490. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
  491. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
  492. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
  493. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
  494. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
  495. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
  496. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
  497. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
  498. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
  499. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
  500. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
  501. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
  502. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
  503. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
  504. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
  505. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
  506. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
  507. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
  508. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
  509. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
  510. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
  511. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
  512. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
  513. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
  514. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
  515. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
  516. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
  517. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
  518. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
  519. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
  520. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
  521. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
  522. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
  523. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
  524. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
  525. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
  526. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
  527. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
  528. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
  529. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
  530. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
  531. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
  532. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
  533. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
  534. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
  535. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
  536. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
  537. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
  538. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
  539. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
  540. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
  541. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
  542. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
  543. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
  544. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
  545. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
  546. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
  547. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
  548. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
  549. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
  550. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
  551. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
  552. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
  553. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
  554. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
  555. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
  556. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
  557. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
  558. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
  559. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
  560. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
  561. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
  562. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
  563. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
  564. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
  565. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
  566. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
  567. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
  568. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
  569. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
  570. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
  571. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
  572. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
  573. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
  574. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
  575. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
  576. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
  577. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
  578. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
  579. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
  580. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
  581. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
  582. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
  583. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
  584. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
  585. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
  586. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
  587. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
  588. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
  589. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
  590. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
  591. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
  592. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
  593. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
  594. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
  595. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
  596. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
  597. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
  598. {codd_dev-2.76.0 → codd_dev-2.78.0}/codd_plugins/stack_map.yaml +0 -0
  599. {codd_dev-2.76.0 → codd_dev-2.78.0}/docs/cookbook/cdp_browser/README.md +0 -0
  600. {codd_dev-2.76.0 → codd_dev-2.78.0}/docs/cookbook/presentation_aggregation/README.md +0 -0
  601. {codd_dev-2.76.0 → codd_dev-2.78.0}/docs/requirements/README.md +0 -0
  602. {codd_dev-2.76.0 → codd_dev-2.78.0}/dogfood/README.md +0 -0
  603. {codd_dev-2.76.0 → codd_dev-2.78.0}/dogfood/fixtures/flat_py_app/README.md +0 -0
  604. {codd_dev-2.76.0 → codd_dev-2.78.0}/examples/README.md +0 -0
  605. {codd_dev-2.76.0 → codd_dev-2.78.0}/skills/codd-assemble/SKILL.md +0 -0
  606. {codd_dev-2.76.0 → codd_dev-2.78.0}/skills/codd-evolve/SKILL.md +0 -0
  607. {codd_dev-2.76.0 → codd_dev-2.78.0}/skills/codd-generate/SKILL.md +0 -0
  608. {codd_dev-2.76.0 → codd_dev-2.78.0}/skills/codd-greenfield/SKILL.md +0 -0
  609. {codd_dev-2.76.0 → codd_dev-2.78.0}/skills/codd-impact/SKILL.md +0 -0
  610. {codd_dev-2.76.0 → codd_dev-2.78.0}/skills/codd-init/SKILL.md +0 -0
  611. {codd_dev-2.76.0 → codd_dev-2.78.0}/skills/codd-propagate/SKILL.md +0 -0
  612. {codd_dev-2.76.0 → codd_dev-2.78.0}/skills/codd-restore/SKILL.md +0 -0
  613. {codd_dev-2.76.0 → codd_dev-2.78.0}/skills/codd-scan/SKILL.md +0 -0
  614. {codd_dev-2.76.0 → codd_dev-2.78.0}/skills/codd-validate/SKILL.md +0 -0
  615. {codd_dev-2.76.0 → codd_dev-2.78.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.76.0
3
+ Version: 2.78.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.76.0"
3
+ __version__ = "2.78.0"
@@ -91,6 +91,26 @@ from codd.project_types import (
91
91
  resolve_layout_profile,
92
92
  )
93
93
 
94
+ # Value-objects + evidence constants relocated to the LEAF module so the Contract
95
+ # Kernel oracle adapters (and the generic command-sequence executor) can import
96
+ # them without a cycle through this gate module. Re-imported + re-exported here so
97
+ # every existing ``from codd.implement_oracle import ImplementOracleResult`` keeps
98
+ # working and gets the SAME class object (identity preserved). See
99
+ # ``codd/implement_oracle_types.py`` — pure relocation, zero behaviour change.
100
+ from codd.implement_oracle_types import ( # noqa: F401 — re-exported for back-compat
101
+ EVIDENCE_BOUNDARY_VIOLATION,
102
+ EVIDENCE_CATEGORIES,
103
+ EVIDENCE_ENVIRONMENT_BUILD,
104
+ EVIDENCE_MISSING_SYMBOL,
105
+ EVIDENCE_MODULE_RESOLUTION,
106
+ EVIDENCE_OTHER,
107
+ EVIDENCE_TEST_NOT_COLLECTED,
108
+ ImplementOracleFinding,
109
+ ImplementOracleResult,
110
+ OracleScopeError,
111
+ _FEEDBACK_FINDING_CAP,
112
+ )
113
+
94
114
 
95
115
  __all__ = [
96
116
  "EVIDENCE_CATEGORIES",
@@ -116,29 +136,12 @@ __all__ = [
116
136
  __test_exports__ = ["_execute_broad_campaign"]
117
137
 
118
138
 
119
- # ── evidence categories (language-neutral; the design's normalization target) ──
120
- #
121
- # The whole point of normalization: a Go/Rust adapter later emits the SAME
122
- # vocabulary so the SUT-facing feedback and any downstream policy are stack-
123
- # agnostic. ``boundary_violation`` (an e2e/modality contract breach) is in the
124
- # vocabulary for completeness but is NOT something a pure typechecker emits — the
125
- # existing AST e2e-contract gate owns that axis; it is here so the category set is
126
- # the full design set and a future composite/boundary adapter can use it.
127
- EVIDENCE_MISSING_SYMBOL = "missing_symbol"
128
- EVIDENCE_MODULE_RESOLUTION = "module_resolution_error"
129
- EVIDENCE_TEST_NOT_COLLECTED = "test_not_collected"
130
- EVIDENCE_ENVIRONMENT_BUILD = "environment_build_error"
131
- EVIDENCE_BOUNDARY_VIOLATION = "boundary_violation"
132
- EVIDENCE_OTHER = "type_error" # a real coherence error not in the categories above
133
-
134
- EVIDENCE_CATEGORIES: tuple[str, ...] = (
135
- EVIDENCE_MISSING_SYMBOL,
136
- EVIDENCE_MODULE_RESOLUTION,
137
- EVIDENCE_TEST_NOT_COLLECTED,
138
- EVIDENCE_ENVIRONMENT_BUILD,
139
- EVIDENCE_BOUNDARY_VIOLATION,
140
- EVIDENCE_OTHER,
141
- )
139
+ # NOTE: the language-neutral evidence categories (``EVIDENCE_*`` +
140
+ # ``EVIDENCE_CATEGORIES``) now live in ``codd.implement_oracle_types`` (the leaf
141
+ # module the oracle adapters share) and are re-imported at the top of this module —
142
+ # see that import for the rationale (cycle-free adapter access). The TS-specific
143
+ # code→category MAPS below stay here (they are TS normalizer internals, not shared
144
+ # value-objects).
142
145
 
143
146
 
144
147
  #: TypeScript diagnostic codes → evidence category. The src↔src / test↔helper
@@ -180,111 +183,12 @@ _TS_DIAG_LINE = re.compile(
180
183
  _TS_NO_INPUTS_RE = re.compile(r"TS18003|No inputs were found in config file", re.IGNORECASE)
181
184
 
182
185
 
183
- class OracleScopeError(RuntimeError):
184
- """The oracle's scope could not be CERTIFIED to cover source + tests.
185
-
186
- Raised when ``tsconfig.json`` is missing/unparseable, when its
187
- ``include``/``files`` provably excludes the test tree (or the source tree),
188
- or when ``tsc`` reports it found no inputs. An uncertifiable scope is a HARD
189
- FAIL — a green oracle over an unknown scope is a false-green, the #1 failure
190
- mode the design calls out.
191
- """
192
-
193
-
194
- @dataclass(frozen=True)
195
- class ImplementOracleFinding:
196
- """One normalized oracle diagnostic."""
197
-
198
- category: str
199
- code: str
200
- message: str
201
- path: str | None = None
202
-
203
-
204
- @dataclass
205
- class ImplementOracleResult:
206
- """Outcome of one implement-time oracle run (one ``tsc`` invocation)."""
207
-
208
- passed: bool
209
- executed: bool
210
- command: str
211
- findings: list[ImplementOracleFinding] = field(default_factory=list)
212
- #: EDITABLE source/test targets the failure attributes to (for diagnostics).
213
- failed_paths: list[str] = field(default_factory=list)
214
- detail: str = ""
215
- raw_output: str = ""
216
- #: Structured diagnostics (code + primary file + symbol/module) for the SCOPED
217
- #: rerun derivation + the loop-breaking signature. Empty for a pass / for a
218
- #: non-TS oracle. Kept separate from ``findings`` (the SUT-facing normalized
219
- #: evidence) because scope derivation needs the per-diagnostic counterpart
220
- #: keys, not the language-neutral category. See ``codd.implement_oracle_scope``.
221
- diagnostics: list[Any] = field(default_factory=list)
222
- #: Orphan artifacts (generated source files no task owns) found by the global
223
- #: orphan-artifact gate. Populated in WARN mode (observation; the gate does not
224
- #: fail) and ENFORCE mode (the gate fails). Empty when the gate is off / no
225
- #: scope index / no orphans. Project-relative paths, for the report + dashboard.
226
- orphan_artifacts: list[str] = field(default_factory=list)
227
-
228
- def category_counts(self) -> dict[str, int]:
229
- counts: dict[str, int] = {}
230
- for finding in self.findings:
231
- counts[finding.category] = counts.get(finding.category, 0) + 1
232
- return counts
233
-
234
- def feedback_message(self) -> str:
235
- """SUT-facing feedback: what the native oracle proved is incoherent.
236
-
237
- Deliberately concrete and bounded — it names the offending files, the
238
- diagnostic codes, and the language-neutral category, then directs the SUT
239
- to make the demanded symbols/modules exist. It NEVER prescribes a verify
240
- fix (the SUT owns the contents); it states the contract that was broken.
241
- """
242
- lines = [
243
- "The implement-time coherence oracle REJECTED the generated code: "
244
- "independently-generated files do not agree on the syntax, module "
245
- "imports, or imported symbols they demand of each other. Nothing was "
246
- "accepted. (TypeScript runs `tsc --noEmit`; Python runs an in-process "
247
- "compile + a first-party import/symbol resolver + `pytest "
248
- "--collect-only`.)",
249
- "Fix the source AND tests so every file compiles, every import "
250
- "resolves, and every imported symbol is actually defined/exported by "
251
- "its module. Specifically:",
252
- ]
253
- for finding in self.findings[:_FEEDBACK_FINDING_CAP]:
254
- where = f"{finding.path}: " if finding.path else ""
255
- lines.append(f" - [{finding.category}] {where}{finding.code}: {finding.message}")
256
- extra = len(self.findings) - _FEEDBACK_FINDING_CAP
257
- if extra > 0:
258
- lines.append(f" ... and {extra} more diagnostic(s).")
259
- lines.append(
260
- "Ensure: (a) every imported name actually exists in its module — "
261
- 'TypeScript `import { X } from "./mod.js"` imports a name `X` that '
262
- "`mod` actually `export`s, and Python `from app.mod import X` imports "
263
- "an `X` that `app/mod.py` actually defines or re-exports; (b) "
264
- "test/helper files agree on the names they share (e.g. do not import "
265
- "`repoRoot` when the helper exports `projectRoot`); (c) every imported "
266
- "module path resolves (no `from .missing import ...` to a module that "
267
- "does not exist)."
268
- )
269
- # (iii) Contract discipline — the anti-oscillation rule. A non-deterministic
270
- # SUT, told only "symbol X is missing", tends to INVENT a new symbol/file
271
- # each rerun (a different wrong guess every time → the diagnostics oscillate
272
- # instead of converging). Forbid invention explicitly: reconcile to what
273
- # ALREADY exists; a genuinely shared symbol goes in an OWNED module, not a
274
- # newly-conjured file. (GPT-5.5 Pro consult, 2026-06-15: feedback iii.)
275
- lines.append(
276
- "Do NOT invent new symbols, helpers, or files to satisfy an import: "
277
- "reconcile the import to a symbol the target module ALREADY exports (or "
278
- "delete the import/usage if it is spurious). If two files must share a "
279
- "symbol, add it to one OWNED module and import it — never duplicate it or "
280
- "create an unowned shared file. Make the SMALLEST change that restores "
281
- "coherence; do not rewrite unrelated code."
282
- )
283
- return "\n".join(lines)
284
-
186
+ # NOTE: ``OracleScopeError`` / ``ImplementOracleFinding`` / ``ImplementOracleResult``
187
+ # (and the ``_FEEDBACK_FINDING_CAP`` its ``feedback_message`` uses) now live in
188
+ # ``codd.implement_oracle_types`` (the leaf the oracle adapters share) and are
189
+ # re-imported at the top of this module — see that import for the cycle-free
190
+ # rationale. Byte-for-byte the same definitions; only the home moved.
285
191
 
286
- #: How many individual diagnostics to surface in SUT feedback (bounded prompt).
287
- _FEEDBACK_FINDING_CAP = 12
288
192
 
289
193
  #: Total implement-oracle attempts: one initial check + bounded corrective
290
194
  #: retries, sized to the ESCALATION LADDER so every rung can actually be reached
@@ -3012,8 +2916,11 @@ def _resolve_registry_composite_oracle(
3012
2916
  lang_profile = default_registry.resolve(lang)
3013
2917
  except Exception: # noqa: BLE001 — no registry profile ⇒ NO-OP, not a crash.
3014
2918
  return None
3015
- oracle_decl = lang_profile.extra.get("implement_oracle") if lang_profile.extra else None
3016
- if not isinstance(oracle_decl, Mapping) or oracle_decl.get("kind") != "composite":
2919
+ # implement_oracle is now a modeled first-class field (Contract Kernel §1),
2920
+ # no longer a raw mapping in ``.extra``. Behaviour is preserved: only a Go
2921
+ # profile declaring kind="composite" synthesizes the composite spec below.
2922
+ oracle_decl = lang_profile.implement_oracle
2923
+ if oracle_decl is None or oracle_decl.kind != "composite":
3017
2924
  return None
3018
2925
  module_root = _norm(getattr(lang_profile.layout, "module_root", ".") or ".") or "."
3019
2926
  synthetic = LayoutProfile(
@@ -0,0 +1,174 @@
1
+ """Implement-oracle value-types — the LEAF module both the core gate and the
2
+ Contract-Kernel oracle adapters import (Contract Kernel oracle dispatch §3).
3
+
4
+ WHY A LEAF MODULE
5
+ =================
6
+ The oracle dispatch is moving toward ``LanguageProfile``-driven adapters (a
7
+ ``go-toolchain`` / ``typescript-tsc`` / ``python-composite`` adapter resolved from
8
+ the profile). Those adapters — and the generic command-sequence executor that
9
+ drives them — must produce the SAME ``ImplementOracleResult`` /
10
+ ``ImplementOracleFinding`` the core gate (:mod:`codd.implement_oracle`) consumes,
11
+ and must raise the SAME ``OracleScopeError``. If those value-objects stayed in the
12
+ gate module, an adapter importing them would create an import cycle
13
+ (gate → adapter → gate). So they live HERE, in a leaf that imports only stdlib;
14
+ the gate re-imports + RE-EXPORTS them (identity preserved — every existing
15
+ ``from codd.implement_oracle import ImplementOracleResult`` keeps working and gets
16
+ the SAME class object), and the adapters import them straight from this leaf.
17
+
18
+ This mirrors the ``RunnerExecution`` relocation (v2.71): the value-objects moved to
19
+ :mod:`codd.languages.adapters.runner_report` (a leaf) and
20
+ :mod:`codd.coverage_execution_coherence` re-exports them, so both the gate and the
21
+ adapters share ONE definition with no cycle. ZERO behaviour change — this is a pure
22
+ relocation; the bodies are byte-for-byte what they were in the gate module.
23
+ """
24
+
25
+ from __future__ import annotations
26
+
27
+ from dataclasses import dataclass, field
28
+ from typing import Any
29
+
30
+
31
+ # ── evidence categories (language-neutral; the design's normalization target) ──
32
+ #
33
+ # The whole point of normalization: a Go/Rust adapter later emits the SAME
34
+ # vocabulary so the SUT-facing feedback and any downstream policy are stack-
35
+ # agnostic. ``boundary_violation`` (an e2e/modality contract breach) is in the
36
+ # vocabulary for completeness but is NOT something a pure typechecker emits — the
37
+ # existing AST e2e-contract gate owns that axis; it is here so the category set is
38
+ # the full design set and a future composite/boundary adapter can use it.
39
+ EVIDENCE_MISSING_SYMBOL = "missing_symbol"
40
+ EVIDENCE_MODULE_RESOLUTION = "module_resolution_error"
41
+ EVIDENCE_TEST_NOT_COLLECTED = "test_not_collected"
42
+ EVIDENCE_ENVIRONMENT_BUILD = "environment_build_error"
43
+ EVIDENCE_BOUNDARY_VIOLATION = "boundary_violation"
44
+ EVIDENCE_OTHER = "type_error" # a real coherence error not in the categories above
45
+
46
+ EVIDENCE_CATEGORIES: tuple[str, ...] = (
47
+ EVIDENCE_MISSING_SYMBOL,
48
+ EVIDENCE_MODULE_RESOLUTION,
49
+ EVIDENCE_TEST_NOT_COLLECTED,
50
+ EVIDENCE_ENVIRONMENT_BUILD,
51
+ EVIDENCE_BOUNDARY_VIOLATION,
52
+ EVIDENCE_OTHER,
53
+ )
54
+
55
+
56
+ #: How many individual diagnostics to surface in SUT feedback (bounded prompt).
57
+ _FEEDBACK_FINDING_CAP = 12
58
+
59
+
60
+ class OracleScopeError(RuntimeError):
61
+ """The oracle's scope could not be CERTIFIED to cover source + tests.
62
+
63
+ Raised when ``tsconfig.json`` is missing/unparseable, when its
64
+ ``include``/``files`` provably excludes the test tree (or the source tree),
65
+ or when ``tsc`` reports it found no inputs. An uncertifiable scope is a HARD
66
+ FAIL — a green oracle over an unknown scope is a false-green, the #1 failure
67
+ mode the design calls out.
68
+ """
69
+
70
+
71
+ @dataclass(frozen=True)
72
+ class ImplementOracleFinding:
73
+ """One normalized oracle diagnostic."""
74
+
75
+ category: str
76
+ code: str
77
+ message: str
78
+ path: str | None = None
79
+
80
+
81
+ @dataclass
82
+ class ImplementOracleResult:
83
+ """Outcome of one implement-time oracle run (one ``tsc`` invocation)."""
84
+
85
+ passed: bool
86
+ executed: bool
87
+ command: str
88
+ findings: list[ImplementOracleFinding] = field(default_factory=list)
89
+ #: EDITABLE source/test targets the failure attributes to (for diagnostics).
90
+ failed_paths: list[str] = field(default_factory=list)
91
+ detail: str = ""
92
+ raw_output: str = ""
93
+ #: Structured diagnostics (code + primary file + symbol/module) for the SCOPED
94
+ #: rerun derivation + the loop-breaking signature. Empty for a pass / for a
95
+ #: non-TS oracle. Kept separate from ``findings`` (the SUT-facing normalized
96
+ #: evidence) because scope derivation needs the per-diagnostic counterpart
97
+ #: keys, not the language-neutral category. See ``codd.implement_oracle_scope``.
98
+ diagnostics: list[Any] = field(default_factory=list)
99
+ #: Orphan artifacts (generated source files no task owns) found by the global
100
+ #: orphan-artifact gate. Populated in WARN mode (observation; the gate does not
101
+ #: fail) and ENFORCE mode (the gate fails). Empty when the gate is off / no
102
+ #: scope index / no orphans. Project-relative paths, for the report + dashboard.
103
+ orphan_artifacts: list[str] = field(default_factory=list)
104
+
105
+ def category_counts(self) -> dict[str, int]:
106
+ counts: dict[str, int] = {}
107
+ for finding in self.findings:
108
+ counts[finding.category] = counts.get(finding.category, 0) + 1
109
+ return counts
110
+
111
+ def feedback_message(self) -> str:
112
+ """SUT-facing feedback: what the native oracle proved is incoherent.
113
+
114
+ Deliberately concrete and bounded — it names the offending files, the
115
+ diagnostic codes, and the language-neutral category, then directs the SUT
116
+ to make the demanded symbols/modules exist. It NEVER prescribes a verify
117
+ fix (the SUT owns the contents); it states the contract that was broken.
118
+ """
119
+ lines = [
120
+ "The implement-time coherence oracle REJECTED the generated code: "
121
+ "independently-generated files do not agree on the syntax, module "
122
+ "imports, or imported symbols they demand of each other. Nothing was "
123
+ "accepted. (TypeScript runs `tsc --noEmit`; Python runs an in-process "
124
+ "compile + a first-party import/symbol resolver + `pytest "
125
+ "--collect-only`.)",
126
+ "Fix the source AND tests so every file compiles, every import "
127
+ "resolves, and every imported symbol is actually defined/exported by "
128
+ "its module. Specifically:",
129
+ ]
130
+ for finding in self.findings[:_FEEDBACK_FINDING_CAP]:
131
+ where = f"{finding.path}: " if finding.path else ""
132
+ lines.append(f" - [{finding.category}] {where}{finding.code}: {finding.message}")
133
+ extra = len(self.findings) - _FEEDBACK_FINDING_CAP
134
+ if extra > 0:
135
+ lines.append(f" ... and {extra} more diagnostic(s).")
136
+ lines.append(
137
+ "Ensure: (a) every imported name actually exists in its module — "
138
+ 'TypeScript `import { X } from "./mod.js"` imports a name `X` that '
139
+ "`mod` actually `export`s, and Python `from app.mod import X` imports "
140
+ "an `X` that `app/mod.py` actually defines or re-exports; (b) "
141
+ "test/helper files agree on the names they share (e.g. do not import "
142
+ "`repoRoot` when the helper exports `projectRoot`); (c) every imported "
143
+ "module path resolves (no `from .missing import ...` to a module that "
144
+ "does not exist)."
145
+ )
146
+ # (iii) Contract discipline — the anti-oscillation rule. A non-deterministic
147
+ # SUT, told only "symbol X is missing", tends to INVENT a new symbol/file
148
+ # each rerun (a different wrong guess every time → the diagnostics oscillate
149
+ # instead of converging). Forbid invention explicitly: reconcile to what
150
+ # ALREADY exists; a genuinely shared symbol goes in an OWNED module, not a
151
+ # newly-conjured file. (GPT-5.5 Pro consult, 2026-06-15: feedback iii.)
152
+ lines.append(
153
+ "Do NOT invent new symbols, helpers, or files to satisfy an import: "
154
+ "reconcile the import to a symbol the target module ALREADY exports (or "
155
+ "delete the import/usage if it is spurious). If two files must share a "
156
+ "symbol, add it to one OWNED module and import it — never duplicate it or "
157
+ "create an unowned shared file. Make the SMALLEST change that restores "
158
+ "coherence; do not rewrite unrelated code."
159
+ )
160
+ return "\n".join(lines)
161
+
162
+
163
+ __all__ = [
164
+ "EVIDENCE_BOUNDARY_VIOLATION",
165
+ "EVIDENCE_CATEGORIES",
166
+ "EVIDENCE_ENVIRONMENT_BUILD",
167
+ "EVIDENCE_MISSING_SYMBOL",
168
+ "EVIDENCE_MODULE_RESOLUTION",
169
+ "EVIDENCE_OTHER",
170
+ "EVIDENCE_TEST_NOT_COLLECTED",
171
+ "ImplementOracleFinding",
172
+ "ImplementOracleResult",
173
+ "OracleScopeError",
174
+ ]
@@ -21,6 +21,8 @@ from .profile import (
21
21
  CommandSpec,
22
22
  DependencyIntegrityFile,
23
23
  Identity,
24
+ ImplementOracleProfileSpec,
25
+ ImplementOracleStepSpec,
24
26
  ImportsSpec,
25
27
  LanguageProfile,
26
28
  LayoutSpec,
@@ -75,6 +77,8 @@ __all__ = [
75
77
  "CommandSpec",
76
78
  "DependencyIntegrityFile",
77
79
  "Identity",
80
+ "ImplementOracleProfileSpec",
81
+ "ImplementOracleStepSpec",
78
82
  "ImportsSpec",
79
83
  "LanguageProfile",
80
84
  "LayoutSpec",
@@ -0,0 +1,188 @@
1
+ """Implement-oracle adapter PROTOCOL + context (Contract Kernel oracle dispatch §3).
2
+
3
+ This is the seam the per-language oracle tool-semantics will plug into once the
4
+ dispatch switch happens (steps 5–7): a ``go-toolchain`` / ``typescript-tsc`` /
5
+ ``python-composite`` adapter, resolved from the ``LanguageProfile``'s
6
+ ``implement_oracle`` declaration, that owns the language-specific knowledge the
7
+ generic machinery deliberately does NOT have — how to certify the oracle's scope,
8
+ how to turn one command's exit/stdout/stderr into normalized findings, and (for the
9
+ ``adapter`` kind) how to run a wholly in-process composite.
10
+
11
+ ADDITIVE / UNCONNECTED. Nothing here is wired into the live oracle gate yet. The
12
+ gate (:mod:`codd.implement_oracle`) still dispatches on ``profile.language`` and
13
+ runs its own per-language executors; the concrete ``oracle_go`` / ``oracle_python``
14
+ / ``oracle_typescript`` adapters land WITH those switch steps. This module ships
15
+ ONLY the Protocol, the context object, and the small value object the generic
16
+ command-sequence executor (:mod:`codd.languages.oracle_executor`) consumes — so
17
+ that executor + its fixtures can be written against a STABLE contract now.
18
+
19
+ LEAF rule (no import cycle). This module imports ONLY:
20
+ * stdlib (``pathlib``, ``typing``),
21
+ * the oracle value-objects leaf (:mod:`codd.implement_oracle_types`), and
22
+ * the profile model (:mod:`codd.languages.profile`).
23
+ It MUST NOT import :mod:`codd.implement_oracle` (the gate), the registry, or the
24
+ generic executor — the dependency edge runs gate → executor → adapters → leaf
25
+ types, never back up. (Mirrors the runner_report adapter leaf.)
26
+ """
27
+
28
+ from __future__ import annotations
29
+
30
+ from dataclasses import dataclass
31
+ from pathlib import Path
32
+ from typing import Any, Mapping, Protocol, runtime_checkable
33
+
34
+ from codd.implement_oracle_types import ImplementOracleFinding, ImplementOracleResult
35
+ from codd.languages.profile import (
36
+ CommandSpec,
37
+ ImplementOracleProfileSpec,
38
+ LanguageProfile,
39
+ LayoutSpec,
40
+ )
41
+
42
+
43
+ @dataclass(frozen=True)
44
+ class OracleContext:
45
+ """Everything an oracle adapter needs to certify scope + normalize + execute.
46
+
47
+ It carries the ALREADY-RESOLVED ``LanguageProfile`` (the dispatch hands the
48
+ adapter the profile the resolver produced — the adapter never re-resolves a
49
+ language, so there is no ``resolve("go")`` inside an adapter), plus the project
50
+ root, the layout (for cwd/env placeholder substitution), the oracle declaration
51
+ (``kind`` + ``command``/``steps`` + ``adapter`` id), and the run config.
52
+
53
+ Frozen: a context is an immutable description of one oracle run.
54
+ """
55
+
56
+ project_root: Path
57
+ #: The resolved layout topology (``module_root`` / ``repo_root`` / ``manifest_root``
58
+ #: etc.). The generic executor substitutes these into a command's ``cwd``/``env``
59
+ #: placeholders before spawning. Held separately from ``language_profile`` (though
60
+ #: it is ``language_profile.layout``) so a caller can pass a layout VIEW.
61
+ layout_profile: LayoutSpec
62
+ #: The resolved language contract the dispatch already produced — the adapter
63
+ #: reads ``commands[command_id]`` from it; it NEVER re-resolves a language.
64
+ language_profile: LanguageProfile
65
+ #: The profile's implement-oracle declaration (kind + command/steps + adapter id).
66
+ oracle: ImplementOracleProfileSpec
67
+ #: The run config (``implement.*`` knobs: timeouts, etc.). ``None`` ⇒ defaults.
68
+ config: Mapping[str, Any] | None = None
69
+
70
+
71
+ @dataclass(frozen=True)
72
+ class OracleStepObservation:
73
+ """One command step's normalized observation (the adapter's verdict on a step).
74
+
75
+ The adapter turns a raw ``(returncode, stdout, stderr)`` into this: the
76
+ language-neutral ``findings`` (each an :class:`ImplementOracleFinding`), the
77
+ editable ``failed_paths`` the findings attribute to, and whether — in the
78
+ adapter's judgement — the step was COHERENT (no incoherence proven).
79
+
80
+ The anti-false-green contract the generic executor relies on:
81
+
82
+ * ``is_clean`` is True ONLY when the adapter is positively satisfied the step
83
+ proved coherence (e.g. ``tsc`` exited 0 over a certified scope). An adapter
84
+ that cannot decide must return ``is_clean=False`` — never default to clean.
85
+ * A non-clean step with EMPTY ``findings`` is an OPAQUE failure: the command
86
+ did not pass but the adapter could not explain why. The executor turns that
87
+ into an ``environment_build_error`` RED (never a benign pass) — so "exited
88
+ nonzero, no parsed diagnostic" can never read as green.
89
+ """
90
+
91
+ is_clean: bool
92
+ findings: tuple[ImplementOracleFinding, ...] = ()
93
+ failed_paths: tuple[str, ...] = ()
94
+ #: The structured per-diagnostic objects (for the scoped-rerun derivation), if
95
+ #: the adapter produced any. Opaque to the executor; threaded into the result.
96
+ diagnostics: tuple[Any, ...] = ()
97
+ #: A short human reason (always populated for a non-clean observation).
98
+ detail: str = ""
99
+
100
+
101
+ @runtime_checkable
102
+ class ImplementOracleAdapter(Protocol):
103
+ """The tool-semantics an oracle stack plugs in (Contract Kernel §3).
104
+
105
+ Resolved from ``LanguageProfile.implement_oracle.adapter`` via the adapter
106
+ registry under kind ``"implement_oracle"``. The dispatch calls:
107
+
108
+ * :meth:`certify_scope` ALWAYS (before any command runs) — an uncertifiable
109
+ scope is an :class:`~codd.implement_oracle_types.OracleScopeError` (a green
110
+ oracle over an unknown/empty scope is the #1 false-green), so this method
111
+ either returns a human-readable certification detail or raises.
112
+ * :meth:`normalize_command_result` for EACH command of a ``command`` /
113
+ ``composite`` oracle — the generic command-sequence executor spawns the
114
+ command (argv/cwd/env from the referenced :class:`CommandSpec`) and hands the
115
+ raw result here for a language-neutral verdict.
116
+ * :meth:`execute` ONLY for a ``kind="adapter"`` oracle (Python's in-process
117
+ compile + import-resolver + collect-only composite) — there is no shell
118
+ command sequence; the adapter runs the whole oracle and returns the result.
119
+
120
+ A ``command`` / ``composite`` adapter does NOT need to implement ``execute``; an
121
+ ``adapter``-kind adapter MUST. The dispatch checks for ``execute`` and reds a
122
+ missing one (a declared ``kind="adapter"`` with no executor is an incomplete
123
+ contract, never a silent pass).
124
+ """
125
+
126
+ def certify_scope(self, ctx: OracleContext) -> str:
127
+ """Certify the oracle's scope covers what it must, else raise.
128
+
129
+ Returns a human-readable certification detail on success; raises
130
+ :class:`~codd.implement_oracle_types.OracleScopeError` when the scope
131
+ cannot be proven to cover source + tests (anti-false-green).
132
+ """
133
+ ...
134
+
135
+ def normalize_command_result(
136
+ self,
137
+ ctx: OracleContext,
138
+ *,
139
+ command_id: str,
140
+ command: CommandSpec,
141
+ returncode: int,
142
+ stdout: str,
143
+ stderr: str,
144
+ ) -> OracleStepObservation:
145
+ """Normalize one command's raw result → a language-neutral observation.
146
+
147
+ MUST be conservative: only report ``is_clean=True`` when the step
148
+ positively proved coherence. A non-zero exit with no recognizable
149
+ diagnostic should yield ``is_clean=False`` with EMPTY findings, which the
150
+ executor escalates to an opaque ``environment_build_error`` RED.
151
+ """
152
+ ...
153
+
154
+
155
+ @runtime_checkable
156
+ class ImplementOracleExecutorAdapter(ImplementOracleAdapter, Protocol):
157
+ """An :class:`ImplementOracleAdapter` that ALSO runs a ``kind="adapter"`` oracle.
158
+
159
+ The Python composite (compile + first-party import/symbol resolver +
160
+ ``pytest --collect-only``) is not a shell command sequence — it runs in-process
161
+ and inspects the file lists each layer observed. Such a stack declares
162
+ ``kind="adapter"`` and its adapter implements :meth:`execute`, which the
163
+ dispatch calls instead of the generic command-sequence executor.
164
+ """
165
+
166
+ def execute(self, ctx: OracleContext) -> ImplementOracleResult:
167
+ """Run the whole in-process composite oracle and return its result."""
168
+ ...
169
+
170
+
171
+ def adapter_supports_execute(adapter: object) -> bool:
172
+ """True when ``adapter`` provides a callable ``execute`` (the kind=adapter check).
173
+
174
+ The dispatch uses this to fail-closed on a ``kind="adapter"`` declaration whose
175
+ registered adapter has no executor: a declared in-process oracle with no
176
+ ``execute`` is an incomplete contract (RED), never a silent pass.
177
+ """
178
+ candidate = getattr(adapter, "execute", None)
179
+ return callable(candidate)
180
+
181
+
182
+ __all__ = [
183
+ "ImplementOracleAdapter",
184
+ "ImplementOracleExecutorAdapter",
185
+ "OracleContext",
186
+ "OracleStepObservation",
187
+ "adapter_supports_execute",
188
+ ]
@@ -83,5 +83,37 @@ def ensure_builtin_adapters_registered(registry: AdapterRegistry | None = None)
83
83
  _register_once(target, "runner_report", "vitest-json", VitestJsonReportAdapter())
84
84
  _register_once(target, "runner_report", "go-test-json", GoTestJsonReportAdapter())
85
85
 
86
+ # Implement-oracle tool-semantics adapters (Contract Kernel oracle dispatch §3).
87
+ # The plumbing is wired now; the concrete oracle_go / oracle_python /
88
+ # oracle_typescript adapters register inside register_oracle_adapters WITH their
89
+ # dispatch switch steps. Today it registers NOTHING (additive scaffolding only).
90
+ register_oracle_adapters(target)
91
+
86
92
  if target is default_adapter_registry:
87
93
  _BUILTINS_REGISTERED = True
94
+
95
+
96
+ def register_oracle_adapters(registry: AdapterRegistry) -> None:
97
+ """Register the built-in ``implement_oracle`` adapters on ``registry`` (lazy/idempotent).
98
+
99
+ The registry plumbing for the Contract Kernel oracle dispatch (§3): the concrete
100
+ per-language oracle adapters (``go-toolchain`` / ``typescript-tsc`` /
101
+ ``python-composite``) register HERE under kind
102
+ :data:`codd.languages.contract.KIND_IMPLEMENT_ORACLE`, each via the SAME
103
+ fail-closed :func:`_register_once` (a different adapter at an occupied
104
+ ``(kind, id)`` raises — a silent oracle override is exactly the false-green this
105
+ kernel forbids).
106
+
107
+ Currently registers NOTHING: the concrete adapters are still in the per-language
108
+ gate (:mod:`codd.implement_oracle`) and only relocate here with their dispatch
109
+ switch steps (5–7). This is the additive seam — wired, idempotent, collision-safe
110
+ — so those adapters drop in as one ``_register_once`` call each, no new plumbing.
111
+ The adapter classes will be imported INSIDE this function (lazy), never at module
112
+ load, preserving the leaf rule.
113
+ """
114
+ # No concrete implement_oracle adapters yet. When they land:
115
+ # from codd.languages.adapters.oracle_go import GoToolchainOracleAdapter
116
+ # from codd.languages.contract import KIND_IMPLEMENT_ORACLE
117
+ # _register_once(registry, KIND_IMPLEMENT_ORACLE, "go-toolchain", GoToolchainOracleAdapter())
118
+ # ... (typescript-tsc, python-composite)
119
+ return
@@ -42,6 +42,12 @@ KIND_TEST_SEMANTICS = "test_semantics"
42
42
  KIND_RUNNER_REPORT = "runner_report"
43
43
  KIND_IMPORT_RESOLVER = "import_resolver"
44
44
  KIND_SCAFFOLD = "scaffold"
45
+ #: The implement-time oracle tool-semantics adapter kind (Contract Kernel oracle
46
+ #: dispatch §3). A profile names its oracle adapter id in
47
+ #: ``implement_oracle.adapter``; the registry keys it under this kind. The concrete
48
+ #: oracle_go / oracle_python / oracle_typescript adapters register under it WITH
49
+ #: their dispatch switch steps — none is registered yet (the plumbing is additive).
50
+ KIND_IMPLEMENT_ORACLE = "implement_oracle"
45
51
 
46
52
 
47
53
  @dataclass(frozen=True)