codd-dev 2.100.0__tar.gz → 2.101.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 (623) hide show
  1. {codd_dev-2.100.0 → codd_dev-2.101.0}/PKG-INFO +1 -1
  2. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/__init__.py +1 -1
  3. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/implement_oracle.py +252 -4
  4. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/languages/adapters/oracle_python.py +63 -21
  5. {codd_dev-2.100.0 → codd_dev-2.101.0}/pyproject.toml +1 -1
  6. {codd_dev-2.100.0 → codd_dev-2.101.0}/.gitignore +0 -0
  7. {codd_dev-2.100.0 → codd_dev-2.101.0}/LICENSE +0 -0
  8. {codd_dev-2.100.0 → codd_dev-2.101.0}/README.md +0 -0
  9. {codd_dev-2.100.0 → codd_dev-2.101.0}/bench_fixture/README.md +0 -0
  10. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/__main__.py +0 -0
  11. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/_git_helper.py +0 -0
  12. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/action_outcome.py +0 -0
  13. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/ai_invoke.py +0 -0
  14. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/ai_patch.py +0 -0
  15. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/artifact_contract.py +0 -0
  16. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/artifact_ids.py +0 -0
  17. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/artifacts/catalog.yaml +0 -0
  18. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/ask_user_question_adapter.py +0 -0
  19. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/assembler.py +0 -0
  20. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/bridge.py +0 -0
  21. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/brownfield/__init__.py +0 -0
  22. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/brownfield/pipeline.py +0 -0
  23. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/capability_completeness.py +0 -0
  24. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/claude_cli.py +0 -0
  25. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/cli.py +0 -0
  26. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/clustering.py +0 -0
  27. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/coherence_adapters.py +0 -0
  28. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/coherence_engine.py +0 -0
  29. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/confidence.py +0 -0
  30. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/config.py +0 -0
  31. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/config_schema.py +0 -0
  32. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/contracts.py +0 -0
  33. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/contracts_registry/__init__.py +0 -0
  34. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/contracts_registry/__main__.py +0 -0
  35. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/contracts_registry/certify.py +0 -0
  36. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/contracts_registry/generate_matrix.py +0 -0
  37. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/contracts_registry/registry.py +0 -0
  38. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/coverage_auditor.py +0 -0
  39. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/coverage_execution_coherence.py +0 -0
  40. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/coverage_metrics.py +0 -0
  41. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/__init__.py +0 -0
  42. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/auto_repair.py +0 -0
  43. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/builder.py +0 -0
  44. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/checks/__init__.py +0 -0
  45. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/checks/_one_to_many_detection.py +0 -0
  46. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/checks/artifact_contract_check.py +0 -0
  47. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/checks/ci_health.py +0 -0
  48. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/checks/dependency_freshness.py +0 -0
  49. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/checks/depends_on_consistency.py +0 -0
  50. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/checks/deployment_completeness.py +0 -0
  51. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/checks/edge_validity.py +0 -0
  52. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/checks/environment_coverage.py +0 -0
  53. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/checks/implementation_coverage.py +0 -0
  54. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/checks/node_completeness.py +0 -0
  55. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/checks/opt_out.py +0 -0
  56. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/checks/task_completion.py +0 -0
  57. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/checks/transitive_closure.py +0 -0
  58. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/checks/ui_coherence.py +0 -0
  59. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/checks/user_journey_coherence.py +0 -0
  60. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/coverage_axes.py +0 -0
  61. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/defaults/cli.yaml +0 -0
  62. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/defaults/cpp_embedded.yaml +0 -0
  63. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/defaults/csharp.yaml +0 -0
  64. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/defaults/elixir.yaml +0 -0
  65. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/defaults/generic.yaml +0 -0
  66. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/defaults/iot.yaml +0 -0
  67. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/defaults/java.yaml +0 -0
  68. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/defaults/kotlin.yaml +0 -0
  69. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/defaults/mobile.yaml +0 -0
  70. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/defaults/ruby.yaml +0 -0
  71. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/defaults/rust.yaml +0 -0
  72. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/defaults/scala.yaml +0 -0
  73. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/defaults/swift.yaml +0 -0
  74. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/defaults/test_frameworks.yaml +0 -0
  75. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/defaults/web.yaml +0 -0
  76. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/extractor.py +0 -0
  77. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/impact.py +0 -0
  78. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dag/runner.py +0 -0
  79. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/defaults.py +0 -0
  80. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/defaults.yaml +0 -0
  81. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/dependency_lock_coherence.py +0 -0
  82. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deploy_targets/__init__.py +0 -0
  83. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deploy_targets/app_service.py +0 -0
  84. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deploy_targets/base.py +0 -0
  85. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deploy_targets/docker_compose.py +0 -0
  86. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deployer.py +0 -0
  87. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deployment/__init__.py +0 -0
  88. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deployment/checks/__init__.py +0 -0
  89. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deployment/defaults/deploy_targets.yaml +0 -0
  90. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
  91. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deployment/defaults/schema_providers.yaml +0 -0
  92. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deployment/defaults/verification_templates.yaml +0 -0
  93. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deployment/extractor.py +0 -0
  94. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deployment/providers/__init__.py +0 -0
  95. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deployment/providers/ai_command.py +0 -0
  96. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deployment/providers/ai_command_factory.py +0 -0
  97. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deployment/providers/codex_app_server.py +0 -0
  98. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deployment/providers/llm_consideration.py +0 -0
  99. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deployment/providers/schema/__init__.py +0 -0
  100. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deployment/providers/schema/prisma.py +0 -0
  101. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deployment/providers/target/__init__.py +0 -0
  102. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deployment/providers/target/docker_compose.py +0 -0
  103. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deployment/providers/verification/__init__.py +0 -0
  104. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
  105. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deployment/providers/verification/cdp_browser.py +0 -0
  106. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deployment/providers/verification/cdp_engines.py +0 -0
  107. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
  108. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deployment/providers/verification/cdp_wire.py +0 -0
  109. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deployment/providers/verification/curl.py +0 -0
  110. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deployment/providers/verification/form_strategies.py +0 -0
  111. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deployment/providers/verification/means_catalog.py +0 -0
  112. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deployment/providers/verification/playwright.py +0 -0
  113. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deployment/providers/verification/pytest_http.py +0 -0
  114. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/deployment/providers/verification/vitest.py +0 -0
  115. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/design_md.py +0 -0
  116. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/diff/__init__.py +0 -0
  117. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/diff/apply.py +0 -0
  118. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/diff/engine.py +0 -0
  119. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/diff/persistence.py +0 -0
  120. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/diff/templates/diff_prompt.md +0 -0
  121. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/discovery.py +0 -0
  122. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/drift.py +0 -0
  123. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/e2e_contract_coherence.py +0 -0
  124. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/e2e_extractor.py +0 -0
  125. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/e2e_generator.py +0 -0
  126. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/e2e_harness.py +0 -0
  127. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/e2e_runner.py +0 -0
  128. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/elicit/__init__.py +0 -0
  129. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/elicit/apply.py +0 -0
  130. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/elicit/engine.py +0 -0
  131. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/elicit/finding.py +0 -0
  132. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/elicit/formatters/__init__.py +0 -0
  133. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/elicit/formatters/base.py +0 -0
  134. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/elicit/formatters/interactive.py +0 -0
  135. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/elicit/formatters/json_fmt.py +0 -0
  136. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/elicit/formatters/md.py +0 -0
  137. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/elicit/lexicon_loader.py +0 -0
  138. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/elicit/persistence.py +0 -0
  139. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
  140. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/env_refs.py +0 -0
  141. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/extract_ai.py +0 -0
  142. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/extract_paths.py +0 -0
  143. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/extractor.py +0 -0
  144. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/fix/__init__.py +0 -0
  145. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/fix/candidate_selector.py +0 -0
  146. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/fix/design_updater.py +0 -0
  147. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/fix/impl_propagation.py +0 -0
  148. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/fix/interactive_prompt.py +0 -0
  149. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/fix/phenomenon_fixer.py +0 -0
  150. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/fix/phenomenon_parser.py +0 -0
  151. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/fix/risk_classifier.py +0 -0
  152. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/fix/templates/clarification_question.txt +0 -0
  153. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/fix/templates/design_update.txt +0 -0
  154. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/fix/templates/impl_update.txt +0 -0
  155. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/fix/templates/phenomenon_parse.txt +0 -0
  156. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/fix/templates/risk_assessment.txt +0 -0
  157. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/fix/templates_loader.py +0 -0
  158. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/fixer.py +0 -0
  159. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/fixup_drift.py +0 -0
  160. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/fixup_drift_strategies/__init__.py +0 -0
  161. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
  162. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
  163. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/fixup_drift_strategies/url_drift.py +0 -0
  164. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/frontmatter.py +0 -0
  165. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/generator.py +0 -0
  166. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/git_evidence.py +0 -0
  167. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/graph.py +0 -0
  168. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/greenfield/__init__.py +0 -0
  169. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/greenfield/pipeline.py +0 -0
  170. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/hitl_session.py +0 -0
  171. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/hooks/__init__.py +0 -0
  172. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/hooks/pre-commit +0 -0
  173. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/hooks/recipes/claude_requirements_nudge.json +0 -0
  174. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/hooks/recipes/claude_settings_example.json +0 -0
  175. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/hooks/recipes/codex_hook.sh +0 -0
  176. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/hooks/recipes/git_post_commit.sh +0 -0
  177. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/hooks/recipes/git_pre_commit.sh +0 -0
  178. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/iac_nfr.py +0 -0
  179. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/implement_oracle_scope.py +0 -0
  180. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/implement_oracle_types.py +0 -0
  181. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/implementer/__init__.py +0 -0
  182. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/implementer/chunked_runner.py +0 -0
  183. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/implementer/typecheck_loop.py +0 -0
  184. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/implementer.py +0 -0
  185. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/import_coherence.py +0 -0
  186. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/inheritance.py +0 -0
  187. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/init/__init__.py +0 -0
  188. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/init/lexicon_suggest.py +0 -0
  189. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/init/llm_lexicon_suggester.py +0 -0
  190. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/init/stack_detector.py +0 -0
  191. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/knowledge_fetcher.py +0 -0
  192. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/languages/__init__.py +0 -0
  193. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/languages/adapters/__init__.py +0 -0
  194. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/languages/adapters/implement_oracle.py +0 -0
  195. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/languages/adapters/oracle_go.py +0 -0
  196. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/languages/adapters/oracle_typescript.py +0 -0
  197. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/languages/adapters/runner_report.py +0 -0
  198. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/languages/builtin_adapters.py +0 -0
  199. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/languages/compat.py +0 -0
  200. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/languages/contract.py +0 -0
  201. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/languages/loader.py +0 -0
  202. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/languages/oracle_executor.py +0 -0
  203. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/languages/path_planner.py +0 -0
  204. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/languages/profile.py +0 -0
  205. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/languages/profiles/go.yaml +0 -0
  206. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/languages/profiles/python.yaml +0 -0
  207. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/languages/profiles/typescript.yaml +0 -0
  208. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/languages/registry.py +0 -0
  209. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/languages/verify_executor.py +0 -0
  210. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/languages/verify_plan.py +0 -0
  211. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/lexicon.py +0 -0
  212. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/lexicon_cli/__init__.py +0 -0
  213. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/lexicon_cli/formatters/__init__.py +0 -0
  214. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/lexicon_cli/formatters/html.py +0 -0
  215. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
  216. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/lexicon_cli/formatters/md.py +0 -0
  217. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/lexicon_cli/inspector.py +0 -0
  218. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/lexicon_cli/manager.py +0 -0
  219. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/lexicon_cli/reporter.py +0 -0
  220. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/lexicon_cli/threshold.py +0 -0
  221. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/llm/__init__.py +0 -0
  222. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/llm/approval.py +0 -0
  223. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/llm/best_practice_augmenter.py +0 -0
  224. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/llm/criteria_expander.py +0 -0
  225. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/llm/design_doc_extractor.py +0 -0
  226. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/llm/impl_step_deriver.py +0 -0
  227. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/llm/means_catalog_loader.py +0 -0
  228. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/llm/parser.py +0 -0
  229. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/llm/plan_deriver.py +0 -0
  230. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/llm/prompt_builder.py +0 -0
  231. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/llm/strategy_validator.py +0 -0
  232. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/llm/templates/best_practice_augment_meta.md +0 -0
  233. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/llm/templates/criteria_expand_meta.md +0 -0
  234. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/llm/templates/design_doc_extract_meta.md +0 -0
  235. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/llm/templates/impl_step_derive_meta.md +0 -0
  236. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
  237. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/llm/templates/meta_instruction.md +0 -0
  238. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/llm/templates/plan_derive_meta.md +0 -0
  239. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/llm/templates/verification_means_catalog.yaml +0 -0
  240. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/mcp_server.py +0 -0
  241. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/measure.py +0 -0
  242. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/operational_e2e_audit.py +0 -0
  243. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/operations_derive.py +0 -0
  244. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/parsing/__init__.py +0 -0
  245. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/parsing/_shared.py +0 -0
  246. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/parsing/api_specs.py +0 -0
  247. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/parsing/extractor_registry.py +0 -0
  248. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/parsing/filesystem_routes.py +0 -0
  249. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/parsing/iac.py +0 -0
  250. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/parsing/python_ast.py +0 -0
  251. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/parsing/regex_strategies.py +0 -0
  252. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/parsing/schemas.py +0 -0
  253. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/parsing/tests_builddeps.py +0 -0
  254. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/parsing/treesitter.py +0 -0
  255. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/planner.py +0 -0
  256. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/policy.py +0 -0
  257. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/preflight/__init__.py +0 -0
  258. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/preflight/defaults/cli.yaml +0 -0
  259. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/preflight/defaults/generic.yaml +0 -0
  260. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/preflight/defaults/iot.yaml +0 -0
  261. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/preflight/defaults/mobile.yaml +0 -0
  262. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/preflight/defaults/web.yaml +0 -0
  263. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/project_types.py +0 -0
  264. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/propagate.py +0 -0
  265. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/propagation_common.py +0 -0
  266. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/propagator.py +0 -0
  267. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/reconciliation_ledger.py +0 -0
  268. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/reference_resolution.py +0 -0
  269. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/registry.py +0 -0
  270. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/repair/__init__.py +0 -0
  271. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/repair/approval_repair.py +0 -0
  272. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/repair/auto_scope_guard.py +0 -0
  273. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/repair/engine.py +0 -0
  274. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/repair/git_patcher.py +0 -0
  275. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/repair/history.py +0 -0
  276. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/repair/llm_repair_engine.py +0 -0
  277. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/repair/loop.py +0 -0
  278. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/repair/primary_picker.py +0 -0
  279. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/repair/proof_breaks.py +0 -0
  280. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/repair/repair_result.py +0 -0
  281. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/repair/repairability_classifier.py +0 -0
  282. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/repair/schema.py +0 -0
  283. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/repair/templates/analyze_meta.md +0 -0
  284. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/repair/templates/propose_meta.md +0 -0
  285. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/repair/templates/repair_strategy_meta.md +0 -0
  286. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/repair/templates/repairability_meta.md +0 -0
  287. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/repair/test_failure_attribution.py +0 -0
  288. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/repair/verify_runner.py +0 -0
  289. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/repair_slice.py +0 -0
  290. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/require.py +0 -0
  291. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/require_plugins.py +0 -0
  292. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/require_propagate.py +0 -0
  293. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/required_artifacts/defaults/cli.yaml +0 -0
  294. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/required_artifacts/defaults/generic.yaml +0 -0
  295. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/required_artifacts/defaults/iot.yaml +0 -0
  296. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/required_artifacts/defaults/mobile.yaml +0 -0
  297. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/required_artifacts/defaults/web.yaml +0 -0
  298. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/required_artifacts_deriver.py +0 -0
  299. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/requirement_completeness/defaults/cli.yaml +0 -0
  300. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/requirement_completeness/defaults/generic.yaml +0 -0
  301. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/requirement_completeness/defaults/iot.yaml +0 -0
  302. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
  303. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/requirement_completeness/defaults/web.yaml +0 -0
  304. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/requirement_completeness_auditor.py +0 -0
  305. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/requirement_reconciliation.py +0 -0
  306. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/requirements_meta.py +0 -0
  307. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/restoration_report.py +0 -0
  308. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/restore.py +0 -0
  309. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/routes_extractor.py +0 -0
  310. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/runtime_smoke/__init__.py +0 -0
  311. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/runtime_smoke/checks.py +0 -0
  312. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/runtime_smoke/config.py +0 -0
  313. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/runtime_smoke/report.py +0 -0
  314. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/runtime_smoke/runner.py +0 -0
  315. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/scanner.py +0 -0
  316. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/schema_refs.py +0 -0
  317. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/screen_flow_validator.py +0 -0
  318. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/screen_transition_extractor.py +0 -0
  319. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/screen_transitions/defaults.yaml +0 -0
  320. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/skills_cli/__init__.py +0 -0
  321. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/skills_cli/discovery.py +0 -0
  322. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/skills_cli/manager.py +0 -0
  323. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/skills_cli/paths.py +0 -0
  324. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/stack/__init__.py +0 -0
  325. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/stack/adapters/__init__.py +0 -0
  326. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/stack/adapters/_base.py +0 -0
  327. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/stack/adapters/nextjs.py +0 -0
  328. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/stack/adapters/playwright.py +0 -0
  329. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/stack/command_authenticity.py +0 -0
  330. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/stack/command_plan.py +0 -0
  331. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/stack/compose.py +0 -0
  332. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/stack/loader.py +0 -0
  333. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/stack/lock.py +0 -0
  334. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/stack/obligations.py +0 -0
  335. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/stack/profile.py +0 -0
  336. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/stack/profiles/addons/playwright.yaml +0 -0
  337. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/stack/profiles/addons/prisma.yaml +0 -0
  338. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/stack/profiles/frameworks/nextjs.yaml +0 -0
  339. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/stack/project.py +0 -0
  340. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/stack/registry.py +0 -0
  341. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/stack/replacement_proof.py +0 -0
  342. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/stack/resolve.py +0 -0
  343. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/surface_reconciliation.py +0 -0
  344. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/synth.py +0 -0
  345. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/templates/codd.yaml.tmpl +0 -0
  346. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/templates/conventions.yaml.tmpl +0 -0
  347. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/templates/data_dependencies.yaml.tmpl +0 -0
  348. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/templates/doc_links.yaml.tmpl +0 -0
  349. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/templates/extract_ai_prompt_baseline.md +0 -0
  350. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/templates/extracted/api-contract.md.j2 +0 -0
  351. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
  352. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/templates/extracted/module-detail.md.j2 +0 -0
  353. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/templates/extracted/schema-design.md.j2 +0 -0
  354. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/templates/extracted/system-context.md.j2 +0 -0
  355. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/templates/gitignore.tmpl +0 -0
  356. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/templates/lexicon_questions.md +0 -0
  357. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/templates/lexicon_schema.yaml +0 -0
  358. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/templates/overrides.yaml.tmpl +0 -0
  359. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/test_detection.py +0 -0
  360. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/test_import_coherence.py +0 -0
  361. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/traceability.py +0 -0
  362. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/validator.py +0 -0
  363. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/vb_marker_authenticity.py +0 -0
  364. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/vb_rerun_scope.py +0 -0
  365. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/verifiable_behavior_audit.py +0 -0
  366. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/watch/__init__.py +0 -0
  367. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/watch/events.py +0 -0
  368. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/watch/propagation_log.py +0 -0
  369. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/watch/propagation_pipeline.py +0 -0
  370. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/watch/test_runner.py +0 -0
  371. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/watch/watcher.py +0 -0
  372. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd/wiring.py +0 -0
  373. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
  374. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
  375. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
  376. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
  377. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
  378. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
  379. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
  380. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
  381. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
  382. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
  383. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
  384. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
  385. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
  386. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
  387. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
  388. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
  389. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
  390. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
  391. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
  392. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
  393. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
  394. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
  395. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
  396. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
  397. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
  398. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
  399. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
  400. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
  401. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
  402. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
  403. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
  404. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
  405. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
  406. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
  407. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
  408. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
  409. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
  410. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
  411. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
  412. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
  413. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
  414. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
  415. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
  416. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
  417. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
  418. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
  419. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
  420. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
  421. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
  422. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
  423. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
  424. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
  425. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
  426. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
  427. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
  428. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
  429. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
  430. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
  431. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
  432. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/data_aggregation_policies/coverage_matrix.md +0 -0
  433. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/data_aggregation_policies/elicit_extend.md +0 -0
  434. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/data_aggregation_policies/lexicon.yaml +0 -0
  435. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/data_aggregation_policies/manifest.yaml +0 -0
  436. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/data_aggregation_policies/recommended_kinds.yaml +0 -0
  437. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/data_aggregation_policies/severity_rules.yaml +0 -0
  438. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
  439. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
  440. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
  441. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
  442. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
  443. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
  444. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
  445. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
  446. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
  447. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
  448. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
  449. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
  450. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
  451. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
  452. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
  453. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
  454. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
  455. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
  456. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
  457. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
  458. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
  459. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
  460. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
  461. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
  462. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
  463. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
  464. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
  465. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
  466. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
  467. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
  468. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
  469. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
  470. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
  471. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
  472. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
  473. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
  474. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
  475. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
  476. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
  477. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
  478. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
  479. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
  480. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
  481. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
  482. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
  483. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
  484. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
  485. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
  486. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
  487. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
  488. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
  489. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
  490. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
  491. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
  492. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
  493. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
  494. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
  495. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
  496. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
  497. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
  498. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
  499. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
  500. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
  501. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
  502. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
  503. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
  504. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
  505. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
  506. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
  507. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
  508. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
  509. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
  510. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
  511. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
  512. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
  513. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
  514. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
  515. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
  516. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
  517. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
  518. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
  519. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
  520. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
  521. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
  522. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
  523. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
  524. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
  525. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
  526. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
  527. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
  528. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
  529. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
  530. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
  531. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
  532. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
  533. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
  534. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
  535. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
  536. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
  537. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
  538. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
  539. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
  540. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
  541. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
  542. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
  543. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
  544. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
  545. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
  546. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
  547. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
  548. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
  549. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
  550. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
  551. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
  552. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
  553. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
  554. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
  555. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
  556. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
  557. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
  558. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
  559. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
  560. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
  561. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
  562. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
  563. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
  564. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
  565. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
  566. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
  567. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
  568. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
  569. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
  570. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
  571. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
  572. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
  573. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
  574. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
  575. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
  576. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
  577. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
  578. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
  579. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
  580. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
  581. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
  582. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
  583. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
  584. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
  585. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
  586. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
  587. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
  588. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
  589. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
  590. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
  591. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
  592. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
  593. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
  594. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
  595. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
  596. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
  597. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
  598. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
  599. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
  600. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
  601. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
  602. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
  603. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
  604. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
  605. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
  606. {codd_dev-2.100.0 → codd_dev-2.101.0}/codd_plugins/stack_map.yaml +0 -0
  607. {codd_dev-2.100.0 → codd_dev-2.101.0}/docs/cookbook/cdp_browser/README.md +0 -0
  608. {codd_dev-2.100.0 → codd_dev-2.101.0}/docs/cookbook/presentation_aggregation/README.md +0 -0
  609. {codd_dev-2.100.0 → codd_dev-2.101.0}/docs/requirements/README.md +0 -0
  610. {codd_dev-2.100.0 → codd_dev-2.101.0}/dogfood/README.md +0 -0
  611. {codd_dev-2.100.0 → codd_dev-2.101.0}/dogfood/fixtures/flat_py_app/README.md +0 -0
  612. {codd_dev-2.100.0 → codd_dev-2.101.0}/examples/README.md +0 -0
  613. {codd_dev-2.100.0 → codd_dev-2.101.0}/skills/codd-assemble/SKILL.md +0 -0
  614. {codd_dev-2.100.0 → codd_dev-2.101.0}/skills/codd-evolve/SKILL.md +0 -0
  615. {codd_dev-2.100.0 → codd_dev-2.101.0}/skills/codd-generate/SKILL.md +0 -0
  616. {codd_dev-2.100.0 → codd_dev-2.101.0}/skills/codd-greenfield/SKILL.md +0 -0
  617. {codd_dev-2.100.0 → codd_dev-2.101.0}/skills/codd-impact/SKILL.md +0 -0
  618. {codd_dev-2.100.0 → codd_dev-2.101.0}/skills/codd-init/SKILL.md +0 -0
  619. {codd_dev-2.100.0 → codd_dev-2.101.0}/skills/codd-propagate/SKILL.md +0 -0
  620. {codd_dev-2.100.0 → codd_dev-2.101.0}/skills/codd-restore/SKILL.md +0 -0
  621. {codd_dev-2.100.0 → codd_dev-2.101.0}/skills/codd-scan/SKILL.md +0 -0
  622. {codd_dev-2.100.0 → codd_dev-2.101.0}/skills/codd-validate/SKILL.md +0 -0
  623. {codd_dev-2.100.0 → codd_dev-2.101.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.100.0
3
+ Version: 2.101.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.100.0"
3
+ __version__ = "2.101.0"
@@ -589,6 +589,235 @@ def _norm(rel: str) -> str:
589
589
  return str(rel).strip().replace("\\", "/").strip("/")
590
590
 
591
591
 
592
+ # ── configured-root unify (Cut A.3 integration boundary — the source_root DIMENSION) ──
593
+ #
594
+ # THE INVARIANT (anti-false-green, cardinal): the strict v3 oracle must observe the
595
+ # SAME resolved tree that GENERATION routes to. Generation routes by the resolved
596
+ # ``LayoutProfile`` (``codd.project_types.resolve_layout_profile`` →
597
+ # ``source_root`` / ``package_root`` / ``test_root`` from ``scan.source_dirs`` /
598
+ # ``scan.test_dirs``; ``greenfield.pipeline._route_source_into_package`` writes the
599
+ # generated tree there). With ``scan: {source_dirs: ["lib"], test_dirs: ["spec"]}``
600
+ # the code lands in ``lib/<pkg>`` + ``spec``. The v3 oracle adapter, however, reads
601
+ # its roots from ``ctx.language_profile.layout`` (the registry ``LayoutSpec`` — for
602
+ # Python the FIXED ``src/{package_name}`` + ``tests``), so WITHOUT this unify it would
603
+ # certify + execute against ``src/<pkg>`` + ``tests`` while the actually-generated
604
+ # ``lib/<pkg>`` + ``spec`` is unverified — a "proved the wrong tree" false-green (the
605
+ # GPT-5.5 round-2 cross-check blocker for v3.0.0).
606
+ #
607
+ # THE FIX (Option A — project-resolve, drift impossible BY CONSTRUCTION): rebase the
608
+ # registry ``LayoutSpec`` to the SAME resolved ``LayoutProfile`` generation used, so
609
+ # the oracle's source/test/package roots are a FUNCTION of the same resolved roots —
610
+ # they cannot diverge. The adapter stays a pure ``LayoutSpec`` + ``package_name``
611
+ # reader (NO legacy ``source_root``, NO bridge revival — the Cut A.3 lock holds): only
612
+ # the LayoutSpec it reads is now derived from the configured layout instead of the
613
+ # fixed default. The rebase KEEPS the ``{package_name}`` template (the adapter still
614
+ # substitutes + hard-fails on an unresolved name). The COMMON case (scan unset, or
615
+ # scan == the default ``src``/``tests``) rebases to a LayoutSpec that is byte-identical
616
+ # to the registry one (behavior-preserving — no false-RED). A BELT cross-check then
617
+ # asserts the rebased oracle roots equal the generation-routed roots, hard-failing
618
+ # (never silently) if a future change reintroduced drift.
619
+
620
+
621
+ def _rebase_layout_spec_to_profile(layout: Any, profile: "LayoutProfile") -> Any:
622
+ """Rebase a ``LayoutSpec`` so its template roots reflect the resolved ``LayoutProfile``.
623
+
624
+ ``profile`` is the SAME ``LayoutProfile`` generation routing uses (resolved from
625
+ ``scan.source_dirs`` / ``scan.test_dirs`` via :func:`resolve_layout_profile`): its
626
+ ``source_root`` / ``package_root`` / ``test_root`` are the (substituted) roots the
627
+ generated tree lands in. This returns a ``LayoutSpec`` whose single source-set
628
+ root, ``package_root.path``, and single (first) test-set root reflect those roots —
629
+ while PRESERVING the ``{package_name}`` template (so the adapter's substitution +
630
+ unresolved-name HARD FAIL are unchanged) and every other set/field.
631
+
632
+ Mapping by ``package_root.kind``:
633
+ * ``named_package`` (Python ``src/{package_name}``): the source-set + package_root
634
+ path become ``<profile.source_root>/{package_name}`` — the adapter then derives
635
+ ``source_root`` = its parent (``profile.source_root``) and ``package_root`` =
636
+ ``<profile.source_root>/<package_name>`` = ``profile.package_root``. The test
637
+ root becomes ``profile.test_root``.
638
+ * ``path_root`` (TS ``src``, ``package_root == source_root``): the source-set +
639
+ package_root path become ``profile.source_root``; the test root becomes
640
+ ``profile.test_root``.
641
+ * ``none`` (Go — no single package root, no scan-driven src layout): returned
642
+ UNCHANGED (Go routes to the repo root; ``scan.*_dirs`` does not relocate it).
643
+
644
+ Single-root only by intent: only ``source_sets[0]`` / ``test_sets[0]`` are rebased
645
+ (the legacy ``LayoutProfile`` is single-root, and Python/TS declare exactly one
646
+ source-set + one unit test-set). Any extra sets are carried verbatim — the
647
+ single-source / single-required-test HARD FAIL in the adapter still fires for >1.
648
+ """
649
+ from dataclasses import replace
650
+
651
+ pkg = getattr(layout, "package_root", None)
652
+ pkg_kind = getattr(pkg, "kind", "none")
653
+ if pkg_kind == "none":
654
+ # Root-module language (Go): no single package root, no scan-driven relocation.
655
+ return layout
656
+
657
+ source_root = _norm(getattr(profile, "source_root", "") or "")
658
+ test_root = _norm(getattr(profile, "test_root", "") or "")
659
+ if not source_root or not test_root:
660
+ # An incomplete legacy profile — leave the registry LayoutSpec untouched and let
661
+ # the adapter's own scope certification decide (never guess a relocated root).
662
+ return layout
663
+
664
+ if pkg_kind == "named_package":
665
+ new_pkg_path = f"{source_root}/{{package_name}}"
666
+ new_source_root_template = f"{source_root}/{{package_name}}"
667
+ else: # path_root
668
+ new_pkg_path = source_root
669
+ new_source_root_template = source_root
670
+
671
+ source_sets = tuple(getattr(layout, "source_sets", ()) or ())
672
+ test_sets = tuple(getattr(layout, "test_sets", ()) or ())
673
+
674
+ def _rebase_globs(old_root: str, new_root: str, globs: tuple[str, ...]) -> tuple[str, ...]:
675
+ """Re-anchor each glob from the old root prefix to the new one (keep the tail).
676
+
677
+ ``src/{package_name}/**/*.py`` rebased ``src/{package_name}`` → ``lib/{package_name}``
678
+ becomes ``lib/{package_name}/**/*.py``. A glob not under the old root is carried
679
+ verbatim (defensive — only the leading topology changed). The adapter reads
680
+ ``root`` (not globs) for Python, but keeping globs consistent matters for other
681
+ consumers (TS/coverage) and avoids a stale-prefix glob surviving a rebase.
682
+ """
683
+ out: list[str] = []
684
+ old_n = _norm(old_root)
685
+ new_n = _norm(new_root)
686
+ for g in globs:
687
+ g_n = str(g).replace("\\", "/")
688
+ if old_n and (g_n == old_n or g_n.startswith(old_n + "/")):
689
+ out.append(new_n + g_n[len(old_n):])
690
+ else:
691
+ out.append(g)
692
+ return tuple(out)
693
+
694
+ new_source_sets = source_sets
695
+ if source_sets:
696
+ s0 = source_sets[0]
697
+ new_source_sets = (
698
+ replace(
699
+ s0,
700
+ root=new_source_root_template,
701
+ file_globs=_rebase_globs(
702
+ s0.root, new_source_root_template, tuple(getattr(s0, "file_globs", ()) or ())
703
+ ),
704
+ ),
705
+ ) + source_sets[1:]
706
+ new_test_sets = test_sets
707
+ if test_sets:
708
+ t0 = test_sets[0]
709
+ new_test_sets = (
710
+ replace(
711
+ t0,
712
+ root=test_root,
713
+ file_globs=_rebase_globs(
714
+ t0.root, test_root, tuple(getattr(t0, "file_globs", ()) or ())
715
+ ),
716
+ ),
717
+ ) + test_sets[1:]
718
+
719
+ return replace(
720
+ layout,
721
+ source_sets=new_source_sets,
722
+ test_sets=new_test_sets,
723
+ package_root=replace(pkg, path=new_pkg_path),
724
+ )
725
+
726
+
727
+ def _oracle_language_profile(lang_profile: Any, profile: "LayoutProfile | None") -> Any:
728
+ """The resolved ``LanguageProfile`` whose ``.layout`` the oracle adapter observes.
729
+
730
+ Returns ``lang_profile`` with its ``LayoutSpec`` rebased to the SAME resolved
731
+ ``LayoutProfile`` generation routed to (so the oracle certifies + executes against
732
+ the SAME tree — anti-false-green: never a different tree than generation). When
733
+ ``profile`` is ``None`` (a synthetic carrier from :func:`_resolve_registry_oracle`
734
+ for a language with no legacy ``LayoutProfile`` — Go) the registry LayoutSpec is
735
+ returned unchanged (nothing to rebase; the scan knob does not relocate it).
736
+
737
+ The COMMON case rebases to a byte-identical LayoutSpec (scan unset / == default →
738
+ the same template roots), so the adapter's derivation is unchanged there.
739
+ """
740
+ if profile is None:
741
+ return lang_profile
742
+ from dataclasses import replace
743
+
744
+ rebased = _rebase_layout_spec_to_profile(lang_profile.layout, profile)
745
+ if rebased is lang_profile.layout:
746
+ return lang_profile
747
+ return replace(lang_profile, layout=rebased)
748
+
749
+
750
+ def _certify_oracle_observes_generation_tree(
751
+ ctx: Any, oracle_decl: Any, profile: "LayoutProfile | None"
752
+ ) -> None:
753
+ """BELT (defense in depth): hard-fail if the tree the oracle will observe differs
754
+ from the tree generation routes to.
755
+
756
+ Option A rebases the oracle's ``LayoutSpec`` FROM the same resolved ``LayoutProfile``
757
+ generation used, so the two agree BY CONSTRUCTION; this tripwire converts ANY future
758
+ reintroduction of drift into a HARD FAIL (``OracleScopeError``) — never a silent
759
+ "proved the wrong tree" green. It compares the roots the adapter would derive from
760
+ ``ctx`` against the generation-routed ``profile`` roots.
761
+
762
+ ``None`` profile (the synthetic carrier for a no-legacy-LayoutProfile language — Go)
763
+ has nothing to cross-check (Go routes to the repo root; the scan knob does not
764
+ relocate it). A non-named-package (``path_root``/``none``) layout has no single
765
+ ``package_root`` to compare, so only source/test roots are checked. An incomplete
766
+ legacy profile (missing a root) defers to the adapter's own scope certification.
767
+ """
768
+ if profile is None:
769
+ return
770
+ gen_source = _norm(getattr(profile, "source_root", "") or "")
771
+ gen_test = _norm(getattr(profile, "test_root", "") or "")
772
+ gen_package = _norm(getattr(profile, "package_root", "") or "")
773
+ if not (gen_source and gen_test):
774
+ return # incomplete legacy profile — the adapter's own certification governs
775
+
776
+ layout = getattr(getattr(ctx, "language_profile", None), "layout", None)
777
+ if layout is None:
778
+ return
779
+ pkg = getattr(layout, "package_root", None)
780
+ pkg_kind = getattr(pkg, "kind", "none")
781
+ if pkg_kind == "none":
782
+ return # root-module language (Go) — no scan-driven relocation to cross-check
783
+
784
+ source_sets = tuple(getattr(layout, "source_sets", ()) or ())
785
+ test_sets = tuple(getattr(layout, "test_sets", ()) or ())
786
+ if not source_sets or not test_sets:
787
+ return # the adapter's scope certification will hard-fail an empty required set
788
+
789
+ package_name = getattr(ctx, "package_name", None)
790
+
791
+ def _subst(template: str) -> str:
792
+ rendered = str(template)
793
+ if "{package_name}" in rendered and package_name:
794
+ rendered = rendered.replace("{package_name}", str(package_name))
795
+ return _norm(rendered)
796
+
797
+ obs_package = _subst(getattr(pkg, "path", "") or "")
798
+ # Python's ``named_package`` source root is the PARENT of the package dir; a
799
+ # ``path_root`` (TS) has source_root == package_root.
800
+ if pkg_kind == "named_package":
801
+ obs_source = _norm(obs_package.rsplit("/", 1)[0]) if "/" in obs_package else "."
802
+ else:
803
+ obs_source = _subst(source_sets[0].root)
804
+ obs_test = _subst(test_sets[0].root)
805
+
806
+ mismatch = obs_source != gen_source or obs_test != gen_test
807
+ if pkg_kind == "named_package" and gen_package:
808
+ mismatch = mismatch or obs_package != gen_package
809
+ if mismatch:
810
+ raise OracleScopeError(
811
+ "implement-time oracle ABORTED to avoid a false-green: the tree the oracle "
812
+ f"would observe (source={obs_source!r}, package={obs_package!r}, "
813
+ f"test={obs_test!r}) DIFFERS from the tree generation routes to "
814
+ f"(source={gen_source!r}, package={gen_package!r}, test={gen_test!r}). The "
815
+ "strict v3 oracle must observe the SAME resolved tree generation/scaffold "
816
+ "routes to (a green over a different tree proves nothing — the cardinal "
817
+ "anti-false-green rule). This is a HARD FAIL, never a silent pass."
818
+ )
819
+
820
+
592
821
  # NOTE: ``_glob_covers_root`` (the tsconfig include/files coverage test) was
593
822
  # relocated to the TS oracle adapter (Contract Kernel oracle dispatch §7) — the
594
823
  # gate's ``certify_oracle_scope`` now delegates scope certification to the registered
@@ -637,14 +866,23 @@ def certify_oracle_scope(
637
866
  lang_profile, oracle_decl, adapter = contract
638
867
  from codd.languages.adapters.implement_oracle import OracleContext
639
868
 
869
+ # Cut A.3 integration boundary (the source_root DIMENSION): rebase the registry
870
+ # LayoutSpec to the SAME resolved LayoutProfile generation routed to, so the oracle
871
+ # certifies the tree the generated code actually lands in (configured layout =
872
+ # lib/<pkg> + spec, not the fixed src/<pkg> + tests) — never a different tree
873
+ # (anti-false-green). Common case (scan unset / == default) rebases byte-identically.
874
+ oracle_lang_profile = _oracle_language_profile(lang_profile, profile)
640
875
  ctx = OracleContext(
641
876
  project_root=project_root,
642
- layout_profile=lang_profile.layout,
643
- language_profile=lang_profile,
877
+ layout_profile=oracle_lang_profile.layout,
878
+ language_profile=oracle_lang_profile,
644
879
  oracle=oracle_decl,
645
880
  config=None,
646
881
  package_name=getattr(profile, "package_name", None),
647
882
  )
883
+ # BELT: the tree the oracle will observe MUST equal the generation-routed tree
884
+ # (Option A makes them agree by construction; this hard-fails on any future drift).
885
+ _certify_oracle_observes_generation_tree(ctx, oracle_decl, profile)
648
886
  return adapter.certify_scope(ctx)
649
887
 
650
888
 
@@ -994,6 +1232,7 @@ def _run_contract_oracle(
994
1232
  config: Mapping[str, Any] | None,
995
1233
  *,
996
1234
  package_name: str | None = None,
1235
+ layout_profile: "LayoutProfile | None" = None,
997
1236
  ) -> ImplementOracleResult:
998
1237
  """Run a modeled oracle on the contract path (certify already done by caller).
999
1238
 
@@ -1023,14 +1262,22 @@ def _run_contract_oracle(
1023
1262
  )
1024
1263
  from codd.languages.oracle_executor import run_command_sequence
1025
1264
 
1265
+ # Cut A.3 integration boundary (the source_root DIMENSION): rebase the registry
1266
+ # LayoutSpec to the SAME resolved LayoutProfile generation routed to, so the oracle
1267
+ # EXECUTES against the tree the generated code actually lands in (anti-false-green:
1268
+ # never a different tree than generation). Common case rebases byte-identically.
1269
+ oracle_lang_profile = _oracle_language_profile(lang_profile, layout_profile)
1026
1270
  ctx = OracleContext(
1027
1271
  project_root=project_root,
1028
- layout_profile=lang_profile.layout,
1029
- language_profile=lang_profile,
1272
+ layout_profile=oracle_lang_profile.layout,
1273
+ language_profile=oracle_lang_profile,
1030
1274
  oracle=oracle_decl,
1031
1275
  config=config,
1032
1276
  package_name=package_name,
1033
1277
  )
1278
+ # BELT: the tree the oracle will observe MUST equal the generation-routed tree
1279
+ # (Option A makes them agree by construction; this hard-fails on any future drift).
1280
+ _certify_oracle_observes_generation_tree(ctx, oracle_decl, layout_profile)
1034
1281
 
1035
1282
  # Install preflight (language-free, BEFORE dispatch so run_command_sequence stays
1036
1283
  # pure): if ANY oracle step's resolved CommandSpec requires materialized deps AND
@@ -1145,6 +1392,7 @@ def _run_oracle_command(
1145
1392
  return _run_contract_oracle(
1146
1393
  project_root, lang_profile, oracle_decl, adapter, config,
1147
1394
  package_name=getattr(profile, "package_name", None),
1395
+ layout_profile=profile,
1148
1396
  )
1149
1397
 
1150
1398
 
@@ -1411,29 +1411,39 @@ def _py_layout_from_layout_spec(ctx: OracleContext) -> tuple[str, str, str]:
1411
1411
  source_sets = tuple(getattr(layout, "source_sets", ()) or ())
1412
1412
  test_sets = tuple(getattr(layout, "test_sets", ()) or ())
1413
1413
 
1414
- # Multi-set hard-fail (never a silent first-root collapse — anti-false-green).
1415
- if len(source_sets) > 1:
1414
+ # EXACTLY one source-set is required (anti-false-green, both directions):
1415
+ # * >1 → reading only ``source_sets[0]`` would SILENTLY drop the others
1416
+ # (unproven code = false-green); a multi-source-set Python layout is
1417
+ # UNSUPPORTED today (RED, never a silent first-root collapse).
1418
+ # * ==0 → there is NO source root to derive; a silent ``src`` fallback would point
1419
+ # the oracle at a GUESSED tree (a wrong/empty source root = false-green). The
1420
+ # Cut A.3 posture is "if reached, hard-fail" — never a silent default.
1421
+ if len(source_sets) != 1:
1416
1422
  raise OracleScopeError(
1417
1423
  "python implement-time oracle cannot be certified: the resolved layout "
1418
1424
  f"declares {len(source_sets)} source_sets "
1419
- f"({[s.id for s in source_sets]}), but the Python composite oracle is "
1420
- "single-source-root (its first-party import index + compile + collect "
1421
- "scope are rooted at ONE source tree). Observing only the first set would "
1422
- "SILENTLY drop the others (unproven code = false-green); a multi-source-set "
1423
- "Python layout is UNSUPPORTED by this oracle today (RED, never a silent "
1424
- "first-root collapse)."
1425
+ f"({[s.id for s in source_sets]}), but the Python composite oracle requires "
1426
+ "EXACTLY ONE source-set (its first-party import index + compile + collect "
1427
+ "scope are rooted at ONE source tree). >1 would SILENTLY drop the others "
1428
+ "(unproven code = false-green); 0 would force a GUESSED 'src' fallback "
1429
+ "(a wrong source root = false-green). Either is a HARD FAIL — never a silent "
1430
+ "first-root collapse, never a silent default."
1425
1431
  )
1426
- # A REQUIRED (non-optional) test-set count > 1 is the same hazard for the collect
1427
- # scope. ``optional``/``colocated`` sets are not REQUIRED roots, so they do not
1428
- # trigger the hard-fail (the collect layer runs over the single required test root).
1432
+ # EXACTLY one REQUIRED (non-optional) test-set: the collect scope is single-root.
1433
+ # ``optional``/``colocated`` sets are not REQUIRED roots, so they do not count.
1434
+ # * >1 → a multi-required-test-set layout is UNSUPPORTED (RED).
1435
+ # * ==0 → no required test root to collect; a silent ``tests`` fallback would point
1436
+ # the collect layer at a GUESSED tree (false-green). HARD FAIL.
1429
1437
  required_test_sets = tuple(s for s in test_sets if not getattr(s, "optional", False))
1430
- if len(required_test_sets) > 1:
1438
+ if len(required_test_sets) != 1:
1431
1439
  raise OracleScopeError(
1432
1440
  "python implement-time oracle cannot be certified: the resolved layout "
1433
1441
  f"declares {len(required_test_sets)} required test_sets "
1434
1442
  f"({[s.id for s in required_test_sets]}), but the Python composite oracle "
1435
- "collects a SINGLE test root. A multi-required-test-set Python layout is "
1436
- "UNSUPPORTED by this oracle today (RED, never a silent first-root collapse)."
1443
+ "collects a SINGLE test root and requires EXACTLY ONE required test-set. >1 "
1444
+ "is UNSUPPORTED; 0 would force a GUESSED 'tests' fallback (a wrong test root "
1445
+ "= false-green). Either is a HARD FAIL — never a silent first-root collapse, "
1446
+ "never a silent default."
1437
1447
  )
1438
1448
 
1439
1449
  pkg_spec = getattr(layout, "package_root", None)
@@ -1474,20 +1484,52 @@ def _py_layout_from_layout_spec(ctx: OracleContext) -> tuple[str, str, str]:
1474
1484
  )
1475
1485
  package_root = _subst(pkg_path)
1476
1486
  source_root = _py_parent_dir(package_root)
1487
+ # Internal consistency (anti-false-green): for a named_package layout the single
1488
+ # source-set root IS the package dir. A LayoutSpec that says the package root is
1489
+ # ``lib/{package_name}`` but the source-set is ``src/{package_name}`` is
1490
+ # self-contradictory — the oracle would not know which tree to observe. HARD FAIL
1491
+ # rather than silently trust one over the other (a wrong root = false-green).
1492
+ src_set_root = _subst(source_sets[0].root)
1493
+ if src_set_root != package_root:
1494
+ raise OracleScopeError(
1495
+ "python implement-time oracle cannot be certified: the resolved layout is "
1496
+ f"internally contradictory — source_sets[0].root resolves to "
1497
+ f"{src_set_root!r} but package_root resolves to {package_root!r} (for a "
1498
+ "named_package layout the single source-set IS the package dir; they must "
1499
+ "be identical). The oracle cannot decide which tree to observe — HARD FAIL "
1500
+ "(never a silent pick, which would risk proving the wrong tree)."
1501
+ )
1477
1502
  elif pkg_kind == "path_root":
1478
- package_root = _subst(pkg_path) if pkg_path else ""
1503
+ if not pkg_path:
1504
+ raise OracleScopeError(
1505
+ "python implement-time oracle cannot be certified: package_root.kind="
1506
+ "path_root but no path (the layout is incomplete; HARD FAIL — never a "
1507
+ "silent 'src' fallback, which would point the oracle at a guessed tree)."
1508
+ )
1509
+ package_root = _subst(pkg_path)
1479
1510
  source_root = package_root
1480
1511
  else:
1481
- # ``none`` (no single package root — Go) or unknown: derive the source root
1482
- # from the single source-set, package_root == source_root (no named package).
1483
- source_root = _subst(source_sets[0].root) if source_sets else "src"
1512
+ # ``none`` (no single package root) or unknown: derive the source root from the
1513
+ # single (guaranteed-present) source-set; package_root == source_root.
1514
+ source_root = _subst(source_sets[0].root)
1484
1515
  package_root = source_root
1485
1516
 
1517
+ # No silent ``src``/``tests`` fallback: the exactly-one source/test-set checks above
1518
+ # guarantee a set is present, and an empty DERIVED root after substitution is a real
1519
+ # layout defect (a guessed default would be a false-green). HARD FAIL instead.
1486
1520
  if not source_root:
1487
- source_root = "src"
1488
- test_root = _subst(test_sets[0].root) if test_sets else "tests"
1521
+ raise OracleScopeError(
1522
+ "python implement-time oracle cannot be certified: the resolved source root "
1523
+ "is empty after substitution (the layout is incomplete; HARD FAIL — never a "
1524
+ "silent 'src' default that would point the oracle at a guessed tree)."
1525
+ )
1526
+ test_root = _subst(required_test_sets[0].root)
1489
1527
  if not test_root:
1490
- test_root = "tests"
1528
+ raise OracleScopeError(
1529
+ "python implement-time oracle cannot be certified: the resolved test root is "
1530
+ "empty after substitution (the layout is incomplete; HARD FAIL — never a "
1531
+ "silent 'tests' default that would point the collect layer at a guessed tree)."
1532
+ )
1491
1533
  return source_root, package_root, test_root
1492
1534
 
1493
1535
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "codd-dev"
7
- version = "2.100.0"
7
+ version = "2.101.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