codd-dev 2.85.0__tar.gz → 2.86.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 (618) hide show
  1. {codd_dev-2.85.0 → codd_dev-2.86.0}/PKG-INFO +1 -1
  2. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/__init__.py +1 -1
  3. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/profiles/python.yaml +19 -0
  4. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/profiles/typescript.yaml +11 -0
  5. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/project_types.py +284 -63
  6. {codd_dev-2.85.0 → codd_dev-2.86.0}/pyproject.toml +1 -1
  7. {codd_dev-2.85.0 → codd_dev-2.86.0}/.gitignore +0 -0
  8. {codd_dev-2.85.0 → codd_dev-2.86.0}/LICENSE +0 -0
  9. {codd_dev-2.85.0 → codd_dev-2.86.0}/README.md +0 -0
  10. {codd_dev-2.85.0 → codd_dev-2.86.0}/bench_fixture/README.md +0 -0
  11. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/__main__.py +0 -0
  12. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/_git_helper.py +0 -0
  13. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/action_outcome.py +0 -0
  14. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/ai_invoke.py +0 -0
  15. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/ai_patch.py +0 -0
  16. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/artifact_contract.py +0 -0
  17. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/artifact_ids.py +0 -0
  18. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/artifacts/catalog.yaml +0 -0
  19. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/ask_user_question_adapter.py +0 -0
  20. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/assembler.py +0 -0
  21. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/bridge.py +0 -0
  22. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/brownfield/__init__.py +0 -0
  23. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/brownfield/pipeline.py +0 -0
  24. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/capability_completeness.py +0 -0
  25. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/claude_cli.py +0 -0
  26. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/cli.py +0 -0
  27. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/clustering.py +0 -0
  28. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/coherence_adapters.py +0 -0
  29. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/coherence_engine.py +0 -0
  30. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/confidence.py +0 -0
  31. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/config.py +0 -0
  32. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/config_schema.py +0 -0
  33. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/contracts.py +0 -0
  34. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/contracts_registry/__init__.py +0 -0
  35. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/contracts_registry/__main__.py +0 -0
  36. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/contracts_registry/certify.py +0 -0
  37. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/contracts_registry/generate_matrix.py +0 -0
  38. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/contracts_registry/registry.py +0 -0
  39. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/coverage_auditor.py +0 -0
  40. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/coverage_execution_coherence.py +0 -0
  41. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/coverage_metrics.py +0 -0
  42. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/__init__.py +0 -0
  43. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/auto_repair.py +0 -0
  44. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/builder.py +0 -0
  45. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/__init__.py +0 -0
  46. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/_one_to_many_detection.py +0 -0
  47. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/artifact_contract_check.py +0 -0
  48. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/ci_health.py +0 -0
  49. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/dependency_freshness.py +0 -0
  50. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/depends_on_consistency.py +0 -0
  51. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/deployment_completeness.py +0 -0
  52. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/edge_validity.py +0 -0
  53. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/environment_coverage.py +0 -0
  54. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/implementation_coverage.py +0 -0
  55. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/node_completeness.py +0 -0
  56. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/opt_out.py +0 -0
  57. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/task_completion.py +0 -0
  58. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/transitive_closure.py +0 -0
  59. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/ui_coherence.py +0 -0
  60. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/checks/user_journey_coherence.py +0 -0
  61. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/coverage_axes.py +0 -0
  62. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/defaults/cli.yaml +0 -0
  63. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/defaults/cpp_embedded.yaml +0 -0
  64. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/defaults/csharp.yaml +0 -0
  65. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/defaults/elixir.yaml +0 -0
  66. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/defaults/generic.yaml +0 -0
  67. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/defaults/iot.yaml +0 -0
  68. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/defaults/java.yaml +0 -0
  69. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/defaults/kotlin.yaml +0 -0
  70. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/defaults/mobile.yaml +0 -0
  71. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/defaults/ruby.yaml +0 -0
  72. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/defaults/rust.yaml +0 -0
  73. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/defaults/scala.yaml +0 -0
  74. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/defaults/swift.yaml +0 -0
  75. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/defaults/test_frameworks.yaml +0 -0
  76. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/defaults/web.yaml +0 -0
  77. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/extractor.py +0 -0
  78. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/impact.py +0 -0
  79. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dag/runner.py +0 -0
  80. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/defaults.py +0 -0
  81. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/defaults.yaml +0 -0
  82. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/dependency_lock_coherence.py +0 -0
  83. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deploy_targets/__init__.py +0 -0
  84. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deploy_targets/app_service.py +0 -0
  85. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deploy_targets/base.py +0 -0
  86. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deploy_targets/docker_compose.py +0 -0
  87. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployer.py +0 -0
  88. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/__init__.py +0 -0
  89. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/checks/__init__.py +0 -0
  90. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/defaults/deploy_targets.yaml +0 -0
  91. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
  92. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/defaults/schema_providers.yaml +0 -0
  93. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/defaults/verification_templates.yaml +0 -0
  94. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/extractor.py +0 -0
  95. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/__init__.py +0 -0
  96. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/ai_command.py +0 -0
  97. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/ai_command_factory.py +0 -0
  98. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/codex_app_server.py +0 -0
  99. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/llm_consideration.py +0 -0
  100. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/schema/__init__.py +0 -0
  101. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/schema/prisma.py +0 -0
  102. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/target/__init__.py +0 -0
  103. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/target/docker_compose.py +0 -0
  104. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/verification/__init__.py +0 -0
  105. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
  106. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/verification/cdp_browser.py +0 -0
  107. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/verification/cdp_engines.py +0 -0
  108. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
  109. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/verification/cdp_wire.py +0 -0
  110. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/verification/curl.py +0 -0
  111. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/verification/form_strategies.py +0 -0
  112. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/verification/means_catalog.py +0 -0
  113. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/verification/playwright.py +0 -0
  114. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/verification/pytest_http.py +0 -0
  115. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/deployment/providers/verification/vitest.py +0 -0
  116. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/design_md.py +0 -0
  117. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/diff/__init__.py +0 -0
  118. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/diff/apply.py +0 -0
  119. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/diff/engine.py +0 -0
  120. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/diff/persistence.py +0 -0
  121. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/diff/templates/diff_prompt.md +0 -0
  122. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/discovery.py +0 -0
  123. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/drift.py +0 -0
  124. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/e2e_contract_coherence.py +0 -0
  125. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/e2e_extractor.py +0 -0
  126. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/e2e_generator.py +0 -0
  127. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/e2e_harness.py +0 -0
  128. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/e2e_runner.py +0 -0
  129. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/elicit/__init__.py +0 -0
  130. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/elicit/apply.py +0 -0
  131. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/elicit/engine.py +0 -0
  132. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/elicit/finding.py +0 -0
  133. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/elicit/formatters/__init__.py +0 -0
  134. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/elicit/formatters/base.py +0 -0
  135. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/elicit/formatters/interactive.py +0 -0
  136. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/elicit/formatters/json_fmt.py +0 -0
  137. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/elicit/formatters/md.py +0 -0
  138. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/elicit/lexicon_loader.py +0 -0
  139. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/elicit/persistence.py +0 -0
  140. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
  141. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/env_refs.py +0 -0
  142. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/extract_ai.py +0 -0
  143. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/extract_paths.py +0 -0
  144. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/extractor.py +0 -0
  145. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fix/__init__.py +0 -0
  146. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fix/candidate_selector.py +0 -0
  147. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fix/design_updater.py +0 -0
  148. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fix/impl_propagation.py +0 -0
  149. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fix/interactive_prompt.py +0 -0
  150. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fix/phenomenon_fixer.py +0 -0
  151. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fix/phenomenon_parser.py +0 -0
  152. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fix/risk_classifier.py +0 -0
  153. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fix/templates/clarification_question.txt +0 -0
  154. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fix/templates/design_update.txt +0 -0
  155. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fix/templates/impl_update.txt +0 -0
  156. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fix/templates/phenomenon_parse.txt +0 -0
  157. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fix/templates/risk_assessment.txt +0 -0
  158. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fix/templates_loader.py +0 -0
  159. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fixer.py +0 -0
  160. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fixup_drift.py +0 -0
  161. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fixup_drift_strategies/__init__.py +0 -0
  162. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
  163. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
  164. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/fixup_drift_strategies/url_drift.py +0 -0
  165. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/frontmatter.py +0 -0
  166. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/generator.py +0 -0
  167. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/git_evidence.py +0 -0
  168. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/graph.py +0 -0
  169. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/greenfield/__init__.py +0 -0
  170. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/greenfield/pipeline.py +0 -0
  171. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/hitl_session.py +0 -0
  172. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/hooks/__init__.py +0 -0
  173. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/hooks/pre-commit +0 -0
  174. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/hooks/recipes/claude_requirements_nudge.json +0 -0
  175. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/hooks/recipes/claude_settings_example.json +0 -0
  176. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/hooks/recipes/codex_hook.sh +0 -0
  177. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/hooks/recipes/git_post_commit.sh +0 -0
  178. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/hooks/recipes/git_pre_commit.sh +0 -0
  179. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/iac_nfr.py +0 -0
  180. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/implement_oracle.py +0 -0
  181. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/implement_oracle_scope.py +0 -0
  182. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/implement_oracle_types.py +0 -0
  183. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/implementer/__init__.py +0 -0
  184. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/implementer/chunked_runner.py +0 -0
  185. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/implementer/typecheck_loop.py +0 -0
  186. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/implementer.py +0 -0
  187. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/import_coherence.py +0 -0
  188. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/inheritance.py +0 -0
  189. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/init/__init__.py +0 -0
  190. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/init/lexicon_suggest.py +0 -0
  191. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/init/llm_lexicon_suggester.py +0 -0
  192. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/init/stack_detector.py +0 -0
  193. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/knowledge_fetcher.py +0 -0
  194. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/__init__.py +0 -0
  195. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/adapters/__init__.py +0 -0
  196. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/adapters/implement_oracle.py +0 -0
  197. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/adapters/oracle_go.py +0 -0
  198. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/adapters/oracle_python.py +0 -0
  199. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/adapters/oracle_typescript.py +0 -0
  200. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/adapters/runner_report.py +0 -0
  201. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/builtin_adapters.py +0 -0
  202. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/compat.py +0 -0
  203. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/contract.py +0 -0
  204. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/loader.py +0 -0
  205. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/oracle_executor.py +0 -0
  206. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/path_planner.py +0 -0
  207. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/profile.py +0 -0
  208. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/profiles/go.yaml +0 -0
  209. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/registry.py +0 -0
  210. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/verify_executor.py +0 -0
  211. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/languages/verify_plan.py +0 -0
  212. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/lexicon.py +0 -0
  213. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/lexicon_cli/__init__.py +0 -0
  214. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/lexicon_cli/formatters/__init__.py +0 -0
  215. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/lexicon_cli/formatters/html.py +0 -0
  216. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
  217. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/lexicon_cli/formatters/md.py +0 -0
  218. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/lexicon_cli/inspector.py +0 -0
  219. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/lexicon_cli/manager.py +0 -0
  220. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/lexicon_cli/reporter.py +0 -0
  221. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/lexicon_cli/threshold.py +0 -0
  222. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/__init__.py +0 -0
  223. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/approval.py +0 -0
  224. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/best_practice_augmenter.py +0 -0
  225. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/criteria_expander.py +0 -0
  226. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/design_doc_extractor.py +0 -0
  227. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/impl_step_deriver.py +0 -0
  228. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/means_catalog_loader.py +0 -0
  229. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/parser.py +0 -0
  230. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/plan_deriver.py +0 -0
  231. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/prompt_builder.py +0 -0
  232. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/strategy_validator.py +0 -0
  233. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/templates/best_practice_augment_meta.md +0 -0
  234. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/templates/criteria_expand_meta.md +0 -0
  235. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/templates/design_doc_extract_meta.md +0 -0
  236. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/templates/impl_step_derive_meta.md +0 -0
  237. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
  238. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/templates/meta_instruction.md +0 -0
  239. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/templates/plan_derive_meta.md +0 -0
  240. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/llm/templates/verification_means_catalog.yaml +0 -0
  241. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/mcp_server.py +0 -0
  242. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/measure.py +0 -0
  243. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/operational_e2e_audit.py +0 -0
  244. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/operations_derive.py +0 -0
  245. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/parsing/__init__.py +0 -0
  246. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/parsing/_shared.py +0 -0
  247. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/parsing/api_specs.py +0 -0
  248. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/parsing/filesystem_routes.py +0 -0
  249. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/parsing/iac.py +0 -0
  250. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/parsing/python_ast.py +0 -0
  251. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/parsing/schemas.py +0 -0
  252. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/parsing/tests_builddeps.py +0 -0
  253. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/parsing/treesitter.py +0 -0
  254. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/planner.py +0 -0
  255. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/policy.py +0 -0
  256. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/preflight/__init__.py +0 -0
  257. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/preflight/defaults/cli.yaml +0 -0
  258. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/preflight/defaults/generic.yaml +0 -0
  259. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/preflight/defaults/iot.yaml +0 -0
  260. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/preflight/defaults/mobile.yaml +0 -0
  261. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/preflight/defaults/web.yaml +0 -0
  262. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/propagate.py +0 -0
  263. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/propagation_common.py +0 -0
  264. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/propagator.py +0 -0
  265. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/reconciliation_ledger.py +0 -0
  266. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/reference_resolution.py +0 -0
  267. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/registry.py +0 -0
  268. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/__init__.py +0 -0
  269. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/approval_repair.py +0 -0
  270. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/auto_scope_guard.py +0 -0
  271. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/engine.py +0 -0
  272. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/git_patcher.py +0 -0
  273. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/history.py +0 -0
  274. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/llm_repair_engine.py +0 -0
  275. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/loop.py +0 -0
  276. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/primary_picker.py +0 -0
  277. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/proof_breaks.py +0 -0
  278. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/repair_result.py +0 -0
  279. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/repairability_classifier.py +0 -0
  280. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/schema.py +0 -0
  281. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/templates/analyze_meta.md +0 -0
  282. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/templates/propose_meta.md +0 -0
  283. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/templates/repair_strategy_meta.md +0 -0
  284. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/templates/repairability_meta.md +0 -0
  285. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/test_failure_attribution.py +0 -0
  286. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair/verify_runner.py +0 -0
  287. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/repair_slice.py +0 -0
  288. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/require.py +0 -0
  289. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/require_plugins.py +0 -0
  290. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/require_propagate.py +0 -0
  291. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/required_artifacts/defaults/cli.yaml +0 -0
  292. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/required_artifacts/defaults/generic.yaml +0 -0
  293. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/required_artifacts/defaults/iot.yaml +0 -0
  294. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/required_artifacts/defaults/mobile.yaml +0 -0
  295. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/required_artifacts/defaults/web.yaml +0 -0
  296. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/required_artifacts_deriver.py +0 -0
  297. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/requirement_completeness/defaults/cli.yaml +0 -0
  298. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/requirement_completeness/defaults/generic.yaml +0 -0
  299. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/requirement_completeness/defaults/iot.yaml +0 -0
  300. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
  301. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/requirement_completeness/defaults/web.yaml +0 -0
  302. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/requirement_completeness_auditor.py +0 -0
  303. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/requirement_reconciliation.py +0 -0
  304. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/requirements_meta.py +0 -0
  305. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/restoration_report.py +0 -0
  306. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/restore.py +0 -0
  307. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/routes_extractor.py +0 -0
  308. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/runtime_smoke/__init__.py +0 -0
  309. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/runtime_smoke/checks.py +0 -0
  310. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/runtime_smoke/config.py +0 -0
  311. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/runtime_smoke/report.py +0 -0
  312. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/runtime_smoke/runner.py +0 -0
  313. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/scanner.py +0 -0
  314. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/schema_refs.py +0 -0
  315. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/screen_flow_validator.py +0 -0
  316. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/screen_transition_extractor.py +0 -0
  317. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/screen_transitions/defaults.yaml +0 -0
  318. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/skills_cli/__init__.py +0 -0
  319. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/skills_cli/discovery.py +0 -0
  320. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/skills_cli/manager.py +0 -0
  321. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/skills_cli/paths.py +0 -0
  322. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/__init__.py +0 -0
  323. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/adapters/__init__.py +0 -0
  324. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/adapters/_base.py +0 -0
  325. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/adapters/nextjs.py +0 -0
  326. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/adapters/playwright.py +0 -0
  327. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/compose.py +0 -0
  328. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/loader.py +0 -0
  329. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/lock.py +0 -0
  330. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/obligations.py +0 -0
  331. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/profile.py +0 -0
  332. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/profiles/addons/playwright.yaml +0 -0
  333. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/profiles/addons/prisma.yaml +0 -0
  334. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/profiles/frameworks/nextjs.yaml +0 -0
  335. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/project.py +0 -0
  336. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/registry.py +0 -0
  337. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/stack/resolve.py +0 -0
  338. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/surface_reconciliation.py +0 -0
  339. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/synth.py +0 -0
  340. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/templates/codd.yaml.tmpl +0 -0
  341. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/templates/conventions.yaml.tmpl +0 -0
  342. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/templates/data_dependencies.yaml.tmpl +0 -0
  343. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/templates/doc_links.yaml.tmpl +0 -0
  344. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/templates/extract_ai_prompt_baseline.md +0 -0
  345. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/templates/extracted/api-contract.md.j2 +0 -0
  346. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
  347. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/templates/extracted/module-detail.md.j2 +0 -0
  348. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/templates/extracted/schema-design.md.j2 +0 -0
  349. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/templates/extracted/system-context.md.j2 +0 -0
  350. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/templates/gitignore.tmpl +0 -0
  351. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/templates/lexicon_questions.md +0 -0
  352. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/templates/lexicon_schema.yaml +0 -0
  353. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/templates/overrides.yaml.tmpl +0 -0
  354. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/test_detection.py +0 -0
  355. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/test_import_coherence.py +0 -0
  356. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/traceability.py +0 -0
  357. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/validator.py +0 -0
  358. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/vb_marker_authenticity.py +0 -0
  359. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/vb_rerun_scope.py +0 -0
  360. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/verifiable_behavior_audit.py +0 -0
  361. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/watch/__init__.py +0 -0
  362. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/watch/events.py +0 -0
  363. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/watch/propagation_log.py +0 -0
  364. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/watch/propagation_pipeline.py +0 -0
  365. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/watch/test_runner.py +0 -0
  366. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/watch/watcher.py +0 -0
  367. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd/wiring.py +0 -0
  368. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
  369. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
  370. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
  371. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
  372. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
  373. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
  374. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
  375. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
  376. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
  377. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
  378. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
  379. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
  380. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
  381. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
  382. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
  383. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
  384. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
  385. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
  386. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
  387. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
  388. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
  389. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
  390. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
  391. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
  392. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
  393. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
  394. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
  395. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
  396. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
  397. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
  398. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
  399. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
  400. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
  401. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
  402. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
  403. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
  404. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
  405. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
  406. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
  407. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
  408. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
  409. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
  410. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
  411. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
  412. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
  413. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
  414. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
  415. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
  416. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
  417. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
  418. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
  419. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
  420. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
  421. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
  422. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
  423. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
  424. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
  425. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
  426. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
  427. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_aggregation_policies/coverage_matrix.md +0 -0
  428. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_aggregation_policies/elicit_extend.md +0 -0
  429. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_aggregation_policies/lexicon.yaml +0 -0
  430. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_aggregation_policies/manifest.yaml +0 -0
  431. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_aggregation_policies/recommended_kinds.yaml +0 -0
  432. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_aggregation_policies/severity_rules.yaml +0 -0
  433. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
  434. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
  435. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
  436. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
  437. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
  438. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
  439. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
  440. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
  441. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
  442. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
  443. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
  444. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
  445. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
  446. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
  447. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
  448. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
  449. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
  450. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
  451. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
  452. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
  453. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
  454. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
  455. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
  456. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
  457. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
  458. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
  459. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
  460. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
  461. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
  462. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
  463. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
  464. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
  465. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
  466. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
  467. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
  468. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
  469. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
  470. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
  471. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
  472. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
  473. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
  474. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
  475. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
  476. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
  477. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
  478. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
  479. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
  480. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
  481. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
  482. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
  483. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
  484. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
  485. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
  486. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
  487. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
  488. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
  489. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
  490. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
  491. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
  492. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
  493. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
  494. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
  495. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
  496. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
  497. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
  498. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
  499. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
  500. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
  501. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
  502. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
  503. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
  504. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
  505. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
  506. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
  507. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
  508. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
  509. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
  510. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
  511. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
  512. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
  513. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
  514. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
  515. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
  516. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
  517. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
  518. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
  519. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
  520. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
  521. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
  522. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
  523. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
  524. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
  525. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
  526. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
  527. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
  528. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
  529. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
  530. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
  531. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
  532. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
  533. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
  534. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
  535. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
  536. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
  537. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
  538. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
  539. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
  540. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
  541. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
  542. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
  543. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
  544. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
  545. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
  546. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
  547. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
  548. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
  549. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
  550. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
  551. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
  552. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
  553. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
  554. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
  555. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
  556. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
  557. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
  558. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
  559. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
  560. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
  561. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
  562. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
  563. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
  564. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
  565. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
  566. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
  567. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
  568. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
  569. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
  570. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
  571. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
  572. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
  573. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
  574. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
  575. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
  576. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
  577. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
  578. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
  579. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
  580. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
  581. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
  582. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
  583. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
  584. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
  585. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
  586. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
  587. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
  588. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
  589. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
  590. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
  591. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
  592. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
  593. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
  594. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
  595. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
  596. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
  597. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
  598. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
  599. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
  600. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
  601. {codd_dev-2.85.0 → codd_dev-2.86.0}/codd_plugins/stack_map.yaml +0 -0
  602. {codd_dev-2.85.0 → codd_dev-2.86.0}/docs/cookbook/cdp_browser/README.md +0 -0
  603. {codd_dev-2.85.0 → codd_dev-2.86.0}/docs/cookbook/presentation_aggregation/README.md +0 -0
  604. {codd_dev-2.85.0 → codd_dev-2.86.0}/docs/requirements/README.md +0 -0
  605. {codd_dev-2.85.0 → codd_dev-2.86.0}/dogfood/README.md +0 -0
  606. {codd_dev-2.85.0 → codd_dev-2.86.0}/dogfood/fixtures/flat_py_app/README.md +0 -0
  607. {codd_dev-2.85.0 → codd_dev-2.86.0}/examples/README.md +0 -0
  608. {codd_dev-2.85.0 → codd_dev-2.86.0}/skills/codd-assemble/SKILL.md +0 -0
  609. {codd_dev-2.85.0 → codd_dev-2.86.0}/skills/codd-evolve/SKILL.md +0 -0
  610. {codd_dev-2.85.0 → codd_dev-2.86.0}/skills/codd-generate/SKILL.md +0 -0
  611. {codd_dev-2.85.0 → codd_dev-2.86.0}/skills/codd-greenfield/SKILL.md +0 -0
  612. {codd_dev-2.85.0 → codd_dev-2.86.0}/skills/codd-impact/SKILL.md +0 -0
  613. {codd_dev-2.85.0 → codd_dev-2.86.0}/skills/codd-init/SKILL.md +0 -0
  614. {codd_dev-2.85.0 → codd_dev-2.86.0}/skills/codd-propagate/SKILL.md +0 -0
  615. {codd_dev-2.85.0 → codd_dev-2.86.0}/skills/codd-restore/SKILL.md +0 -0
  616. {codd_dev-2.85.0 → codd_dev-2.86.0}/skills/codd-scan/SKILL.md +0 -0
  617. {codd_dev-2.85.0 → codd_dev-2.86.0}/skills/codd-validate/SKILL.md +0 -0
  618. {codd_dev-2.85.0 → codd_dev-2.86.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.85.0
3
+ Version: 2.86.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.85.0"
3
+ __version__ = "2.86.0"
@@ -143,6 +143,25 @@ scaffold:
143
143
  - "src/{package_name}/__main__.py"
144
144
  - "tests/__init__.py"
145
145
 
146
+ # Legacy project-types bridge (Contract Kernel v2.71): the declarative seam that
147
+ # lets the language-free core route the LEGACY codd.project_types builders /
148
+ # scaffolder / test-runner ensurer WITHOUT a language-name literal in core code.
149
+ # * accepted_names — the EXACT set of runtime language names the legacy
150
+ # ``resolve_layout_profile`` / ``ensure_test_runner_config`` accept for this
151
+ # stack (preserves byte-identical support: Python accepts only ``python``,
152
+ # NOT every registry alias like ``py``/``python3``). Language names live in
153
+ # the PROFILE (an allowed zone), never in core .py.
154
+ # * realizer ids — HARNESS-POLICY capability names (not language names) the core
155
+ # maps to the concrete legacy builder/scaffolder/ensurer. They carry the
156
+ # runner/install/oracle/toolchain/verify POLICY the YAML does not yet model
157
+ # (that full externalization is the v3.0.0 gate; this increment only removes
158
+ # the language-name DISPATCH).
159
+ legacy_project_types:
160
+ accepted_names: ["python"]
161
+ layout_builder: "src-package-pytest-editable-layout-v1"
162
+ scaffolder: "pyproject-src-package-scaffold-v1"
163
+ test_runner_ensurer: "pyproject-pytest-runner-v1"
164
+
146
165
  artifacts:
147
166
  harness_root: ".codd"
148
167
 
@@ -154,6 +154,17 @@ scaffold:
154
154
  - "tsconfig.json"
155
155
  - "vitest.config.ts"
156
156
 
157
+ # Legacy project-types bridge (Contract Kernel v2.71) — see python.yaml for the
158
+ # rationale. TypeScript accepts EXACTLY ``typescript`` + ``node`` (the historical
159
+ # legacy-dict keys), NOT the wider registry aliases ``ts``/``js``/``javascript`` —
160
+ # preserving byte-identical support. The realizer ids are harness-policy capability
161
+ # names (npm/vitest/tsc), not language names.
162
+ legacy_project_types:
163
+ accepted_names: ["typescript", "node"]
164
+ layout_builder: "npm-vitest-tsc-layout-v1"
165
+ scaffolder: "npm-tsconfig-vitest-scaffold-v1"
166
+ test_runner_ensurer: "npm-vitest-runner-v1"
167
+
157
168
  artifacts:
158
169
  harness_root: ".codd"
159
170
 
@@ -262,6 +262,113 @@ def _as_choice(value: Any, allowed: set[str], fallback: str) -> str:
262
262
  _VALID_TEST_IMPORT_POLICIES = {"package_absolute", "flat", "relative"}
263
263
 
264
264
 
265
+ # ═══════════════════════════════════════════════════════════
266
+ # Contract-Kernel language resolution seam (v2.71: de-literalize the dispatch)
267
+ # ═══════════════════════════════════════════════════════════
268
+ #
269
+ # The Contract Kernel rule (Cut Condition A): the core branches on a RESOLVED
270
+ # language contract + registered adapter capability, NEVER on a language-NAME
271
+ # literal. The functions below resolve a runtime language VALUE (a string the
272
+ # caller already holds — allowed) to the declarative ``LanguageProfile`` (loaded
273
+ # from ``codd/languages/profiles/*.yaml``) so layout/scaffold/test-block
274
+ # decisions read profile DATA instead of ``self.language == "python"`` dispatch.
275
+ #
276
+ # Anti-false-green: a declared-but-UNKNOWN language degrades to ``None`` (the
277
+ # conservative non-stack behaviour — no scaffolder engages, no stack paths are
278
+ # declared), mirroring ``codd.repair.verify_runner._declared_language_profile``.
279
+ # It is NEVER coerced to a wrong-layout default (that would be a silent green).
280
+
281
+
282
+ def _resolve_kernel_language_profile(language: str | None) -> Any:
283
+ """Resolve a runtime language value to its declarative ``LanguageProfile``.
284
+
285
+ Returns the loaded profile (matched by id OR alias, case-insensitively
286
+ through :data:`codd.languages.registry.default_registry`) or ``None`` when
287
+ the language is blank/unknown. The language string is a RUNTIME VALUE the
288
+ caller already holds (not a hardcoded literal), so this is the language-free
289
+ resolution seam — it replaces the removed ``self.language == "<name>"`` /
290
+ language-name-keyed builder-dict dispatch. Import is lazy so the language
291
+ package is not pulled in at ``project_types`` import time / on the hot path.
292
+ """
293
+ if not language or not str(language).strip():
294
+ return None
295
+ try:
296
+ from codd.languages.registry import UnknownLanguageError, default_registry
297
+ except Exception: # noqa: BLE001 — registry optional; degrade (never crash).
298
+ return None
299
+ try:
300
+ return default_registry.resolve(str(language))
301
+ except UnknownLanguageError:
302
+ return None
303
+ except Exception: # noqa: BLE001 — a malformed profile is the loader's gate; degrade here.
304
+ return None
305
+
306
+
307
+ # ── Legacy project-types bridge (the byte-identical, language-name-free seam) ──
308
+ #
309
+ # The LEGACY ``codd.project_types`` builders / scaffolders / test-runner ensurers
310
+ # still carry HARNESS POLICY (runner / install_mode / oracle / toolchain / verify
311
+ # campaign) the declarative ``LanguageProfile`` does NOT yet model — full policy
312
+ # externalization is the v3.0.0 gate. THIS increment removes the language-NAME
313
+ # DISPATCH only. The seam: a profile declares a ``legacy_project_types:`` block
314
+ # (preserved in ``profile.extra``) with
315
+ # * ``accepted_names`` — the EXACT runtime names the legacy path accepts
316
+ # for this stack (so support stays byte-identical: ``python`` accepts only
317
+ # ``python``, NOT every registry alias like ``py``/``python3``; ``typescript``
318
+ # accepts only ``typescript``+``node``, NOT ``ts``/``js``/``javascript``).
319
+ # * realizer ids — HARNESS-POLICY capability names (``layout_builder``
320
+ # / ``scaffolder`` / ``test_runner_ensurer``) the core maps to the concrete
321
+ # legacy function via the registries at the bottom of this module. The keys are
322
+ # policy capability ids, NEVER language names — so the core stays language-free.
323
+ #
324
+ # A profile WITHOUT this block (Go) is not bridged to the legacy path at all (Go's
325
+ # coherence is owned by the contract/implement-oracle path). Anti-false-green: an
326
+ # unknown / unaccepted name resolves to NO realizer (the conservative degradation —
327
+ # the caller stays on its no-profile path, never a wrong builder writing a wrong
328
+ # layout). Language names live in the PROFILE YAML (an allowed zone), never here.
329
+
330
+ _LEGACY_BRIDGE_KEY = "legacy_project_types"
331
+
332
+
333
+ def _legacy_bridge_block(language: str | None) -> Mapping[str, Any] | None:
334
+ """The profile's ``legacy_project_types`` block IFF ``language`` is accepted.
335
+
336
+ Resolves the runtime ``language`` to its :class:`LanguageProfile`, then returns
337
+ the declared ``legacy_project_types`` mapping ONLY when ``language`` (case-
338
+ insensitively) is in that block's ``accepted_names``. ``None`` otherwise — a
339
+ blank/unknown language, an alias the legacy path historically did NOT accept,
340
+ or a profile that declares no bridge (Go). This is the byte-identical support
341
+ gate: it restores the legacy dict's EXACT accepted-name set without a
342
+ language-name literal in core code.
343
+ """
344
+ profile = _resolve_kernel_language_profile(language)
345
+ extra = getattr(profile, "extra", None) if profile is not None else None
346
+ block = extra.get(_LEGACY_BRIDGE_KEY) if isinstance(extra, Mapping) else None
347
+ if not isinstance(block, Mapping):
348
+ return None
349
+ accepted = block.get("accepted_names")
350
+ accepted_set = {
351
+ str(n).strip().lower() for n in (accepted or ()) if str(n).strip()
352
+ } if isinstance(accepted, (list, tuple)) else set()
353
+ if (language or "").strip().lower() not in accepted_set:
354
+ return None
355
+ return block
356
+
357
+
358
+ def _legacy_realizer_id(language: str | None, field: str) -> str | None:
359
+ """The realizer capability id for ``field`` from an ACCEPTED legacy bridge.
360
+
361
+ ``field`` is one of ``layout_builder`` / ``scaffolder`` / ``test_runner_ensurer``.
362
+ ``None`` when the language is not bridged/accepted or the field is undeclared —
363
+ the conservative degradation (no legacy realizer engages).
364
+ """
365
+ block = _legacy_bridge_block(language)
366
+ if block is None:
367
+ return None
368
+ value = block.get(field)
369
+ return str(value) if value else None
370
+
371
+
265
372
  # ═══════════════════════════════════════════════════════════
266
373
  # Implement-time native-oracle spec (the "first head" of the Artifact Contract
267
374
  # Graph → Native Oracle Adapter: see memory/project_codd_language_generality_acg)
@@ -688,12 +795,20 @@ class LayoutProfile:
688
795
  (e.g. TS ``vitest.config.ts`` / ``tsconfig.json``) is never mis-flagged as
689
796
  an unowned orphan and never reverted by the fence.
690
797
 
691
- Language-agnostic: each path is DERIVED from this profile's own fields
692
- (the same values the scaffolder uses) + the toolchain manifest/lock
693
- filenames, so a new stack inherits the contract by populating its profile,
694
- with no per-language logic in the gate. The list is a STATIC declaration of
695
- what the scaffolder *can* create (not what is present on disk); callers
696
- that need only existing files filter by ``is_file()``.
798
+ PROFILE-DRIVEN (Contract Kernel v2.71): the stack-specific scaffold files
799
+ are selected by the resolved :class:`LanguageProfile`'s legacy-bridge
800
+ ``scaffolder`` realizer id (a harness-policy capability name Python's
801
+ package-topology scaffolder vs TS's config scaffolder), NOT a
802
+ ``self.language ==`` literal. Each path is still DERIVED from this
803
+ ``LayoutProfile``'s own fields (``package_root`` / ``test_root`` /
804
+ ``requires_*`` — the same values the scaffolder uses) + the toolchain
805
+ manifest/lock filenames, so a new stack inherits the contract by declaring
806
+ its ``legacy_project_types`` bridge, with no language-name logic in the gate.
807
+ A stack with no legacy bridge (Go) or an unknown/unaccepted language declares
808
+ no stack-specific scaffold files (only the toolchain manifest/lock, if any).
809
+ The list is a STATIC declaration of what the scaffolder *can* create (not
810
+ what is present on disk); callers that need only existing files filter by
811
+ ``is_file()``.
697
812
  """
698
813
  paths: list[str] = []
699
814
 
@@ -710,7 +825,10 @@ class LayoutProfile:
710
825
  for lock in toolchain.lock_filenames:
711
826
  _add(lock)
712
827
 
713
- if self.language == "python":
828
+ # Route the stack-scaffold files by the legacy-bridge scaffolder realizer id
829
+ # (a harness-policy capability name from the profile), never a language name.
830
+ scaffolder_id = _legacy_realizer_id(self.language, "scaffolder")
831
+ if scaffolder_id == _SCAFFOLDER_PY_SRC_PACKAGE:
714
832
  # _scaffold_python: pyproject + package <__init__>/<__main__> + test <__init__>.
715
833
  _add(_PYPROJECT_FILENAME)
716
834
  if self.requires_package_init:
@@ -718,7 +836,7 @@ class LayoutProfile:
718
836
  _add(f"{self.package_root}/__main__.py")
719
837
  if self.requires_test_init:
720
838
  _add(f"{self.test_root}/__init__.py")
721
- elif self.language in ("typescript", "node"):
839
+ elif scaffolder_id == _SCAFFOLDER_TS_NPM:
722
840
  # _scaffold_typescript: tsconfig + vitest config + package.json.
723
841
  _add(_TSCONFIG_FILENAME)
724
842
  _add(_VITEST_CONFIG_FILENAME)
@@ -733,13 +851,27 @@ class LayoutProfile:
733
851
  parser that locates executable test blocks and resolves skip/assertion
734
852
  facts) or ``None`` for a stack with no adapter — in which case the
735
853
  authenticity gate gracefully degrades to its language-agnostic stage 1
736
- (orphan-marker) check only. This is the SINGLE registration point for a
737
- new stack's test parser, mirroring :meth:`harness_owned_scaffold_paths`
738
- (dispatch on ``self.language``, no per-language logic in the gate). The
739
- import is lazy so the authenticity module (which imports the VB audit) is
740
- never pulled in at ``project_types`` import time.
854
+ (orphan-marker) check only.
855
+
856
+ PROFILE-DRIVEN (Contract Kernel v2.71): the parser is selected by the
857
+ resolved :class:`LanguageProfile`'s ``tests.semantics_adapter`` CAPABILITY
858
+ ID (``python-test-semantics`` / ``typescript-test-semantics`` /
859
+ ``go-test-semantics``), NOT a ``self.language ==`` literal. The id is a
860
+ capability name declared in the language YAML, so a new stack registers its
861
+ parser by declaring its semantics adapter id + adding one entry to the
862
+ adapter-id→parser table below — no language-name logic in the gate. An
863
+ unknown language / a profile with no semantics adapter ⇒ ``None`` (the
864
+ authenticity gate degrades to its stage-1 check). Imports are lazy so the
865
+ authenticity module (which imports the VB audit) is never pulled in at
866
+ ``project_types`` import time.
741
867
  """
742
868
 
869
+ profile = _resolve_kernel_language_profile(self.language)
870
+ tests = getattr(profile, "tests", None) if profile is not None else None
871
+ adapter_id = getattr(tests, "semantics_adapter", None) if tests is not None else None
872
+ if not adapter_id:
873
+ return None
874
+
743
875
  try:
744
876
  from codd.vb_marker_authenticity import (
745
877
  GoTestBlockProfile,
@@ -749,13 +881,15 @@ class LayoutProfile:
749
881
  except Exception: # noqa: BLE001 — adapter is optional; degrade if unavailable.
750
882
  return None
751
883
 
752
- if self.language == "python":
753
- return PythonTestBlockProfile()
754
- if self.language in ("typescript", "node", "javascript"):
755
- return TypeScriptTestBlockProfile()
756
- if self.language in ("go", "golang"):
757
- return GoTestBlockProfile()
758
- return None
884
+ # adapter-id → test-block parser. The keys are CAPABILITY ids from the
885
+ # language profiles (never language names), so this is language-free.
886
+ builders = {
887
+ "python-test-semantics": PythonTestBlockProfile,
888
+ "typescript-test-semantics": TypeScriptTestBlockProfile,
889
+ "go-test-semantics": GoTestBlockProfile,
890
+ }
891
+ builder = builders.get(str(adapter_id))
892
+ return builder() if builder is not None else None
759
893
 
760
894
  def runner_report_adapter(self) -> Any:
761
895
  """Resolve this stack's runner-report adapter for the coherence gate.
@@ -1096,19 +1230,66 @@ def _typescript_layout_profile(
1096
1230
  )
1097
1231
 
1098
1232
 
1099
- # Language → layout-profile builder. ONE entry per stack (the only place a stack
1100
- # registers its topology). go/rust extend here with a single function each.
1233
+ # Realizer capability id legacy layout-profile builder (Contract Kernel v2.71).
1234
+ # The dispatch key is the HARNESS-POLICY capability id a profile declares in its
1235
+ # ``legacy_project_types.layout_builder`` — NOT a language name. The builder carries
1236
+ # the runner/install/oracle/toolchain/verify POLICY the declarative profile does not
1237
+ # yet model (full externalization = the v3.0.0 gate; this increment removes only the
1238
+ # language-name DISPATCH). A new stack maps to an existing builder by declaring that
1239
+ # realizer id, or registers a new builder here under a new id.
1101
1240
  _LayoutProfileBuilder = Callable[..., LayoutProfile]
1102
- _LAYOUT_PROFILE_BUILDERS: dict[str, _LayoutProfileBuilder] = {
1103
- "python": _python_layout_profile,
1104
- "typescript": _typescript_layout_profile,
1105
- "node": _typescript_layout_profile,
1241
+ #: Realizer capability ids (must match the profile YAML ``legacy_project_types``).
1242
+ _LAYOUT_BUILDER_PY_SRC_PACKAGE = "src-package-pytest-editable-layout-v1"
1243
+ _LAYOUT_BUILDER_TS_NPM = "npm-vitest-tsc-layout-v1"
1244
+ _LAYOUT_BUILDERS_BY_REALIZER: dict[str, _LayoutProfileBuilder] = {
1245
+ _LAYOUT_BUILDER_PY_SRC_PACKAGE: _python_layout_profile,
1246
+ _LAYOUT_BUILDER_TS_NPM: _typescript_layout_profile,
1106
1247
  }
1107
1248
 
1108
1249
 
1250
+ def _legacy_bridged_names(field: str) -> list[str]:
1251
+ """Sorted runtime names whose profile bridges ``field`` to a known realizer.
1252
+
1253
+ Walks the language registry and, for every profile declaring a
1254
+ ``legacy_project_types`` block whose ``field`` realizer id is registered,
1255
+ contributes that block's ``accepted_names`` (the EXACT historical names — NOT
1256
+ the wider registry aliases). This is the PROFILE-DRIVEN, byte-identical
1257
+ replacement for the old hardcoded ``sorted(_DICT)`` over language-name keys.
1258
+ """
1259
+ realizers = {
1260
+ "layout_builder": _LAYOUT_BUILDERS_BY_REALIZER,
1261
+ "test_runner_ensurer": _TEST_RUNNER_ENSURERS_BY_REALIZER,
1262
+ }.get(field, {})
1263
+ names: set[str] = set()
1264
+ try:
1265
+ from codd.languages.registry import default_registry
1266
+
1267
+ for profile in default_registry.all_profiles():
1268
+ extra = getattr(profile, "extra", None)
1269
+ block = extra.get(_LEGACY_BRIDGE_KEY) if isinstance(extra, Mapping) else None
1270
+ if not isinstance(block, Mapping):
1271
+ continue
1272
+ realizer = block.get(field)
1273
+ if not realizer or str(realizer) not in realizers:
1274
+ continue
1275
+ for n in block.get("accepted_names") or ():
1276
+ if str(n).strip():
1277
+ names.add(str(n).strip().lower())
1278
+ except Exception: # noqa: BLE001 — registry optional; empty list is the safe degrade.
1279
+ return []
1280
+ return sorted(names)
1281
+
1282
+
1109
1283
  def supported_layout_profile_languages() -> list[str]:
1110
- """Languages with a harness-owned layout profile (deterministic topology)."""
1111
- return sorted(_LAYOUT_PROFILE_BUILDERS)
1284
+ """Runtime names with a harness-owned layout profile (deterministic topology).
1285
+
1286
+ PROFILE-DRIVEN (Contract Kernel v2.71): the union of every profile's
1287
+ ``legacy_project_types.accepted_names`` whose ``layout_builder`` realizer is
1288
+ registered — never a hardcoded language-name table. Byte-identical to the legacy
1289
+ dict's key set (``node``/``python``/``typescript``): only the EXPLICITLY accepted
1290
+ names, not the wider registry aliases, and not Go (no legacy bridge).
1291
+ """
1292
+ return _legacy_bridged_names("layout_builder")
1112
1293
 
1113
1294
 
1114
1295
  def resolve_layout_profile(
@@ -1122,18 +1303,28 @@ def resolve_layout_profile(
1122
1303
  ) -> LayoutProfile | None:
1123
1304
  """Resolve the :class:`LayoutProfile` for a stack, or ``None`` if unsupported.
1124
1305
 
1125
- Stack-general dispatch through :data:`_LAYOUT_PROFILE_BUILDERS`. Every path
1126
- is derived from ``project_name`` + the configured ``scan.*_dirs`` — there
1127
- are NO hardcoded ``src``/``tests``/``<package>`` literals outside the
1128
- per-stack builder's documented defaults.
1129
-
1130
- ``config`` (the loaded project config) and ``project_root`` are optional and
1131
- feed the harness-owned CANONICAL package-name resolution (config override >
1132
- derive-from-actual single package > project-name default) for stacks that use
1133
- a named package (Python). Stacks that resolve by path (TypeScript) ignore
1134
- them. Omitting both preserves the pure project-name default (back-compat).
1306
+ PROFILE-DRIVEN dispatch (Contract Kernel v2.71): the runtime ``language`` value is
1307
+ resolved to its :class:`LanguageProfile`, the profile's ``legacy_project_types``
1308
+ bridge gates it (``language`` must be in ``accepted_names`` — so support stays
1309
+ byte-identical: ``node`` resolves to the canonical TypeScript profile, but the
1310
+ wider aliases ``ts``/``js``/``py`` do NOT), then the builder is selected by the
1311
+ bridge's ``layout_builder`` realizer id NOT a ``language ==``/dict-keyed-by-name
1312
+ literal. A blank/unknown/unaccepted language, or a profile with no bridge (Go),
1313
+ resolves to ``None`` (the conservative degradation the caller stays on its
1314
+ no-profile path, never a wrong-layout default).
1315
+
1316
+ Every path the builder produces is derived from ``project_name`` + the configured
1317
+ ``scan.*_dirs`` — there are NO hardcoded ``src``/``tests``/``<package>`` literals
1318
+ outside the per-stack builder's documented defaults.
1319
+
1320
+ ``config`` (the loaded project config) and ``project_root`` are optional and feed
1321
+ the harness-owned CANONICAL package-name resolution (config override >
1322
+ derive-from-actual single package > project-name default) for stacks that use a
1323
+ named package (Python). Stacks that resolve by path (TypeScript) ignore them.
1324
+ Omitting both preserves the pure project-name default (back-compat).
1135
1325
  """
1136
- builder = _LAYOUT_PROFILE_BUILDERS.get((language or "").strip().lower())
1326
+ realizer_id = _legacy_realizer_id(language, "layout_builder")
1327
+ builder = _LAYOUT_BUILDERS_BY_REALIZER.get(realizer_id) if realizer_id else None
1137
1328
  if builder is None:
1138
1329
  return None
1139
1330
  return builder(
@@ -1177,18 +1368,32 @@ class ScaffoldResult:
1177
1368
  detail: str = ""
1178
1369
 
1179
1370
 
1371
+ #: Scaffolder realizer capability ids (Contract Kernel v2.71 — must match the
1372
+ #: profile YAML ``legacy_project_types.scaffolder``). Harness-policy names, NOT
1373
+ #: language names: the dispatch key for which legacy scaffolder realizes a profile.
1374
+ _SCAFFOLDER_PY_SRC_PACKAGE = "pyproject-src-package-scaffold-v1"
1375
+ _SCAFFOLDER_TS_NPM = "npm-tsconfig-vitest-scaffold-v1"
1376
+
1377
+
1180
1378
  def scaffold_layout(
1181
1379
  project_root: Path | str,
1182
1380
  profile: LayoutProfile,
1183
1381
  ) -> ScaffoldResult:
1184
1382
  """Create the profile's topology (create-only, idempotent, non-clobbering).
1185
1383
 
1186
- Returns the relative paths created vs. skipped (already present). Only the
1187
- Python profile is realized today; an unknown ``profile.language`` is a no-op.
1384
+ Returns the relative paths created vs. skipped (already present).
1385
+
1386
+ PROFILE-DRIVEN (Contract Kernel v2.71): the scaffolder is selected by the
1387
+ resolved :class:`LanguageProfile`'s legacy-bridge ``scaffolder`` realizer id (a
1388
+ harness-policy capability name — Python package-topology vs TS config), NOT a
1389
+ ``profile.language ==`` literal. A stack with no legacy bridge (Go) or an
1390
+ unknown/unaccepted language is a strict no-op (the conservative degradation —
1391
+ never a wrong scaffolder writing a wrong layout).
1188
1392
  """
1189
- if profile.language == "python":
1393
+ scaffolder_id = _legacy_realizer_id(profile.language, "scaffolder")
1394
+ if scaffolder_id == _SCAFFOLDER_PY_SRC_PACKAGE:
1190
1395
  return _scaffold_python(Path(project_root), profile)
1191
- if profile.language in ("typescript", "node"):
1396
+ if scaffolder_id == _SCAFFOLDER_TS_NPM:
1192
1397
  return _scaffold_typescript(Path(project_root), profile)
1193
1398
  return ScaffoldResult(language=profile.language, detail="no scaffolder for stack")
1194
1399
 
@@ -1893,21 +2098,32 @@ def _ensure_typescript_test_runner(
1893
2098
  )
1894
2099
 
1895
2100
 
1896
- # Language ensurer. Add a stack here (and only here) to make its greenfield
1897
- # builds deterministically verifiable: node a package.json test script, go →
1898
- # go.mod, rust Cargo.toml, etc. Each ensurer drives off the resolved
1899
- # :class:`LayoutProfile` for its stack, so topology lives in ONE place.
2101
+ # Realizer capability id legacy test-runner ensurer (Contract Kernel v2.71). The
2102
+ # dispatch key is the profile's ``legacy_project_types.test_runner_ensurer`` realizer
2103
+ # id a harness-policy capability name, NOT a language name. A stack with no legacy
2104
+ # bridge (Go's profile declares none) or an unknown/unaccepted language is the
2105
+ # "unsupported" advisory no-op in :func:`ensure_test_runner_config`. Each ensurer
2106
+ # drives off the resolved :class:`LayoutProfile`, so topology lives in ONE place.
1900
2107
  _TestRunnerEnsurer = Callable[..., EnsureTestRunnerResult]
1901
- _TEST_RUNNER_ENSURERS: dict[str, _TestRunnerEnsurer] = {
1902
- "python": _ensure_python_test_runner,
1903
- "typescript": _ensure_typescript_test_runner,
1904
- "node": _ensure_typescript_test_runner,
2108
+ #: Realizer capability ids (must match the profile YAML ``legacy_project_types``).
2109
+ _ENSURER_PY_PYPROJECT = "pyproject-pytest-runner-v1"
2110
+ _ENSURER_TS_NPM = "npm-vitest-runner-v1"
2111
+ _TEST_RUNNER_ENSURERS_BY_REALIZER: dict[str, _TestRunnerEnsurer] = {
2112
+ _ENSURER_PY_PYPROJECT: _ensure_python_test_runner,
2113
+ _ENSURER_TS_NPM: _ensure_typescript_test_runner,
1905
2114
  }
1906
2115
 
1907
2116
 
1908
2117
  def supported_test_runner_languages() -> list[str]:
1909
- """Languages for which greenfield can deterministically ensure a test runner."""
1910
- return sorted(_TEST_RUNNER_ENSURERS)
2118
+ """Runtime names for which greenfield can deterministically ensure a test runner.
2119
+
2120
+ PROFILE-DRIVEN (Contract Kernel v2.71): the union of every profile's
2121
+ ``legacy_project_types.accepted_names`` whose ``test_runner_ensurer`` realizer is
2122
+ registered — never a hardcoded language-name table. Byte-identical to the legacy
2123
+ dict's key set (``node``/``python``/``typescript``): only the explicitly accepted
2124
+ names, not the wider registry aliases, and not Go (no legacy bridge).
2125
+ """
2126
+ return _legacy_bridged_names("test_runner_ensurer")
1911
2127
 
1912
2128
 
1913
2129
  def ensure_test_runner_config(
@@ -1920,13 +2136,17 @@ def ensure_test_runner_config(
1920
2136
  ) -> EnsureTestRunnerResult:
1921
2137
  """Guarantee a RUNNABLE, detectable test setup for ``language``'s stack.
1922
2138
 
1923
- Stack-general entry point. For a language WITH a registered ensurer, the
1924
- ensurer owns the present/augment/create decision (it checks its own STRONG
1925
- marker e.g. a ``[tool.pytest`` section, not mere ``pyproject.toml``
1926
- presence so it can upgrade a bare config that is detectable but not
1927
- runnable). For a language WITHOUT an ensurer, this returns an
1928
- ``"unsupported"`` no-op UNLESS a test command is already detectable, in which
1929
- case a provided (possibly non-native) setup is respected.
2139
+ Stack-general entry point. PROFILE-DRIVEN dispatch (Contract Kernel v2.71): the
2140
+ runtime ``language`` is resolved to its :class:`LanguageProfile`, gated by the
2141
+ profile's ``legacy_project_types`` bridge (``accepted_names`` so support stays
2142
+ byte-identical), and the ensurer is selected by the bridge's ``test_runner_ensurer``
2143
+ realizer id — NOT a ``language ==``/dict-keyed-by-name literal. For a stack WITH a
2144
+ registered ensurer, the ensurer owns the present/augment/create decision (it checks
2145
+ its own STRONG marker e.g. a ``[tool.pytest`` section, not mere ``pyproject.toml``
2146
+ presence — so it can upgrade a bare config that is detectable but not runnable). For
2147
+ a stack WITHOUT an ensurer (Go's profile declares no bridge, or an unknown/unaccepted
2148
+ language), this returns an ``"unsupported"`` no-op UNLESS a test command is already
2149
+ detectable, in which case a provided (possibly non-native) setup is respected.
1930
2150
 
1931
2151
  Either way an AI/user-provided setup is never clobbered, and the verify layer
1932
2152
  remains the authority that refuses to certify an unexecuted build. All paths
@@ -1936,7 +2156,8 @@ def ensure_test_runner_config(
1936
2156
  root = Path(project_root)
1937
2157
  lang = (language or "").strip().lower()
1938
2158
 
1939
- ensurer = _TEST_RUNNER_ENSURERS.get(lang)
2159
+ ensurer_id = _legacy_realizer_id(lang, "test_runner_ensurer")
2160
+ ensurer = _TEST_RUNNER_ENSURERS_BY_REALIZER.get(ensurer_id) if ensurer_id else None
1940
2161
  if ensurer is None:
1941
2162
  # No native ensurer for this stack. Respect any test command an AI/user
1942
2163
  # already wired up (stack-agnostic), otherwise it is an advisory no-op:
@@ -1967,8 +2188,8 @@ def ensure_test_runner_config(
1967
2188
  if profile is not None:
1968
2189
  return ensurer(root, profile=profile)
1969
2190
 
1970
- # Fallback (no profile builder for an ensurer-having stack — shouldn't
1971
- # happen, but keep the path total): synthesize a minimal profile from dirs.
2191
+ # Fallback (no LayoutProfile for an ensurer-having shape — shouldn't happen, but
2192
+ # keep the path total): synthesize a minimal profile from dirs.
1972
2193
  source_root = _first_clean_dir(source_dirs, "src")
1973
2194
  test_root = _first_clean_dir(test_dirs, "tests")
1974
2195
  package_name = normalize_package_name(project_name)
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "codd-dev"
7
- version = "2.85.0"
7
+ version = "2.86.0"
8
8
  description = "CoDD: Coherence-Driven Development — cross-artifact change impact analysis"
9
9
  readme = "README.md"
10
10
  license = "MIT"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes