codd-dev 3.26.0__tar.gz → 3.28.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 (652) hide show
  1. {codd_dev-3.26.0 → codd_dev-3.28.0}/PKG-INFO +1 -1
  2. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/__init__.py +1 -1
  3. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/languages/adapters/oracle_cpp.py +82 -2
  4. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/languages/adapters/oracle_java.py +35 -0
  5. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/languages/profiles/java.yaml +14 -0
  6. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/project_types.py +96 -0
  7. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/vb_marker_authenticity.py +18 -2
  8. {codd_dev-3.26.0 → codd_dev-3.28.0}/pyproject.toml +1 -1
  9. {codd_dev-3.26.0 → codd_dev-3.28.0}/.gitignore +0 -0
  10. {codd_dev-3.26.0 → codd_dev-3.28.0}/LICENSE +0 -0
  11. {codd_dev-3.26.0 → codd_dev-3.28.0}/README.md +0 -0
  12. {codd_dev-3.26.0 → codd_dev-3.28.0}/bench_fixture/README.md +0 -0
  13. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/__main__.py +0 -0
  14. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/_git_helper.py +0 -0
  15. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/action_outcome.py +0 -0
  16. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/ai_invoke.py +0 -0
  17. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/ai_patch.py +0 -0
  18. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/artifact_contract.py +0 -0
  19. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/artifact_ids.py +0 -0
  20. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/artifacts/catalog.yaml +0 -0
  21. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/ask_user_question_adapter.py +0 -0
  22. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/assembler.py +0 -0
  23. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/bridge.py +0 -0
  24. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/brownfield/__init__.py +0 -0
  25. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/brownfield/pipeline.py +0 -0
  26. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/capability_completeness.py +0 -0
  27. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/claude_cli.py +0 -0
  28. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/cli.py +0 -0
  29. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/clustering.py +0 -0
  30. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/coherence_adapters.py +0 -0
  31. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/coherence_engine.py +0 -0
  32. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/confidence.py +0 -0
  33. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/config.py +0 -0
  34. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/config_schema.py +0 -0
  35. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/contracts.py +0 -0
  36. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/contracts_registry/__init__.py +0 -0
  37. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/contracts_registry/__main__.py +0 -0
  38. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/contracts_registry/certify.py +0 -0
  39. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/contracts_registry/generate_matrix.py +0 -0
  40. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/contracts_registry/registry.py +0 -0
  41. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/coverage_auditor.py +0 -0
  42. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/coverage_execution_coherence.py +0 -0
  43. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/coverage_metrics.py +0 -0
  44. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/__init__.py +0 -0
  45. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/auto_repair.py +0 -0
  46. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/builder.py +0 -0
  47. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/checks/__init__.py +0 -0
  48. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/checks/_one_to_many_detection.py +0 -0
  49. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/checks/artifact_contract_check.py +0 -0
  50. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/checks/cardinality_coverage.py +0 -0
  51. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/checks/ci_health.py +0 -0
  52. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/checks/dependency_freshness.py +0 -0
  53. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/checks/depends_on_consistency.py +0 -0
  54. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/checks/deployment_completeness.py +0 -0
  55. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/checks/edge_validity.py +0 -0
  56. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/checks/environment_coverage.py +0 -0
  57. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/checks/extraction_diagnostics.py +0 -0
  58. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/checks/implementation_coverage.py +0 -0
  59. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/checks/negative_space.py +0 -0
  60. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/checks/node_completeness.py +0 -0
  61. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/checks/opt_out.py +0 -0
  62. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/checks/resource_flow_coherence.py +0 -0
  63. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/checks/semantic_contract_conflict.py +0 -0
  64. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/checks/source_completeness.py +0 -0
  65. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/checks/stale_evidence.py +0 -0
  66. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/checks/task_completion.py +0 -0
  67. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/checks/transitive_closure.py +0 -0
  68. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/checks/ui_coherence.py +0 -0
  69. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/checks/unresolved_import_residue.py +0 -0
  70. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/checks/user_journey_coherence.py +0 -0
  71. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/coverage_axes.py +0 -0
  72. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/defaults/cli.yaml +0 -0
  73. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/defaults/cpp_embedded.yaml +0 -0
  74. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/defaults/csharp.yaml +0 -0
  75. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/defaults/elixir.yaml +0 -0
  76. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/defaults/generic.yaml +0 -0
  77. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/defaults/iot.yaml +0 -0
  78. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/defaults/java.yaml +0 -0
  79. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/defaults/kotlin.yaml +0 -0
  80. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/defaults/mobile.yaml +0 -0
  81. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/defaults/ruby.yaml +0 -0
  82. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/defaults/rust.yaml +0 -0
  83. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/defaults/scala.yaml +0 -0
  84. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/defaults/swift.yaml +0 -0
  85. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/defaults/test_frameworks.yaml +0 -0
  86. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/defaults/web.yaml +0 -0
  87. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/extractor.py +0 -0
  88. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/impact.py +0 -0
  89. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/materiality.py +0 -0
  90. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/metadata_access.py +0 -0
  91. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/result_status.py +0 -0
  92. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dag/runner.py +0 -0
  93. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/defaults.py +0 -0
  94. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/defaults.yaml +0 -0
  95. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/dependency_lock_coherence.py +0 -0
  96. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deploy_targets/__init__.py +0 -0
  97. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deploy_targets/app_service.py +0 -0
  98. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deploy_targets/base.py +0 -0
  99. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deploy_targets/docker_compose.py +0 -0
  100. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deployer.py +0 -0
  101. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deployment/__init__.py +0 -0
  102. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deployment/checks/__init__.py +0 -0
  103. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deployment/defaults/deploy_targets.yaml +0 -0
  104. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
  105. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deployment/defaults/schema_providers.yaml +0 -0
  106. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deployment/defaults/verification_templates.yaml +0 -0
  107. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deployment/extractor.py +0 -0
  108. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deployment/providers/__init__.py +0 -0
  109. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deployment/providers/ai_command.py +0 -0
  110. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deployment/providers/ai_command_factory.py +0 -0
  111. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deployment/providers/codex_app_server.py +0 -0
  112. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deployment/providers/llm_consideration.py +0 -0
  113. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deployment/providers/schema/__init__.py +0 -0
  114. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deployment/providers/schema/prisma.py +0 -0
  115. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deployment/providers/target/__init__.py +0 -0
  116. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deployment/providers/target/docker_compose.py +0 -0
  117. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deployment/providers/verification/__init__.py +0 -0
  118. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
  119. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deployment/providers/verification/cdp_browser.py +0 -0
  120. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deployment/providers/verification/cdp_engines.py +0 -0
  121. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
  122. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deployment/providers/verification/cdp_wire.py +0 -0
  123. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deployment/providers/verification/curl.py +0 -0
  124. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deployment/providers/verification/form_strategies.py +0 -0
  125. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deployment/providers/verification/means_catalog.py +0 -0
  126. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deployment/providers/verification/playwright.py +0 -0
  127. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deployment/providers/verification/pytest_http.py +0 -0
  128. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/deployment/providers/verification/vitest.py +0 -0
  129. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/design_md.py +0 -0
  130. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/diff/__init__.py +0 -0
  131. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/diff/apply.py +0 -0
  132. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/diff/engine.py +0 -0
  133. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/diff/persistence.py +0 -0
  134. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/diff/templates/diff_prompt.md +0 -0
  135. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/discovery.py +0 -0
  136. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/drift.py +0 -0
  137. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/e2e_contract_coherence.py +0 -0
  138. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/e2e_extractor.py +0 -0
  139. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/e2e_generator.py +0 -0
  140. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/e2e_harness.py +0 -0
  141. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/e2e_runner.py +0 -0
  142. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/elicit/__init__.py +0 -0
  143. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/elicit/apply.py +0 -0
  144. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/elicit/engine.py +0 -0
  145. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/elicit/finding.py +0 -0
  146. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/elicit/formatters/__init__.py +0 -0
  147. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/elicit/formatters/base.py +0 -0
  148. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/elicit/formatters/interactive.py +0 -0
  149. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/elicit/formatters/json_fmt.py +0 -0
  150. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/elicit/formatters/md.py +0 -0
  151. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/elicit/gap_to_ask.py +0 -0
  152. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/elicit/lexicon_loader.py +0 -0
  153. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/elicit/persistence.py +0 -0
  154. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/elicit/promote.py +0 -0
  155. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/elicit/routing.py +0 -0
  156. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
  157. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/env_refs.py +0 -0
  158. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/extract_ai.py +0 -0
  159. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/extract_paths.py +0 -0
  160. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/extractor.py +0 -0
  161. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/fix/__init__.py +0 -0
  162. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/fix/candidate_selector.py +0 -0
  163. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/fix/design_updater.py +0 -0
  164. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/fix/impact_planner.py +0 -0
  165. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/fix/impl_propagation.py +0 -0
  166. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/fix/interactive_prompt.py +0 -0
  167. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/fix/phenomenon_fixer.py +0 -0
  168. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/fix/phenomenon_parser.py +0 -0
  169. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/fix/risk_classifier.py +0 -0
  170. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/fix/templates/clarification_question.txt +0 -0
  171. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/fix/templates/design_update.txt +0 -0
  172. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/fix/templates/impl_update.txt +0 -0
  173. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/fix/templates/phenomenon_parse.txt +0 -0
  174. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/fix/templates/risk_assessment.txt +0 -0
  175. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/fix/templates_loader.py +0 -0
  176. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/fixer.py +0 -0
  177. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/fixup_drift.py +0 -0
  178. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/fixup_drift_strategies/__init__.py +0 -0
  179. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
  180. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
  181. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/fixup_drift_strategies/url_drift.py +0 -0
  182. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/frontmatter.py +0 -0
  183. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/generator.py +0 -0
  184. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/git_evidence.py +0 -0
  185. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/graph.py +0 -0
  186. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/greenfield/__init__.py +0 -0
  187. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/greenfield/pipeline.py +0 -0
  188. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/greenfield/test_rederivation.py +0 -0
  189. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/hitl_session.py +0 -0
  190. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/hooks/__init__.py +0 -0
  191. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/hooks/pre-commit +0 -0
  192. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/hooks/recipes/claude_requirements_nudge.json +0 -0
  193. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/hooks/recipes/claude_settings_example.json +0 -0
  194. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/hooks/recipes/codex_hook.sh +0 -0
  195. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/hooks/recipes/git_post_commit.sh +0 -0
  196. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/hooks/recipes/git_pre_commit.sh +0 -0
  197. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/iac_nfr.py +0 -0
  198. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/implement_oracle.py +0 -0
  199. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/implement_oracle_scope.py +0 -0
  200. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/implement_oracle_types.py +0 -0
  201. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/implementer/__init__.py +0 -0
  202. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/implementer/chunked_runner.py +0 -0
  203. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/implementer/typecheck_loop.py +0 -0
  204. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/implementer.py +0 -0
  205. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/import_coherence.py +0 -0
  206. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/inheritance.py +0 -0
  207. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/init/__init__.py +0 -0
  208. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/init/lexicon_suggest.py +0 -0
  209. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/init/llm_lexicon_suggester.py +0 -0
  210. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/init/stack_detector.py +0 -0
  211. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/json_safe.py +0 -0
  212. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/knowledge_fetcher.py +0 -0
  213. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/languages/__init__.py +0 -0
  214. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/languages/adapters/__init__.py +0 -0
  215. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/languages/adapters/implement_oracle.py +0 -0
  216. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/languages/adapters/import_resolver.py +0 -0
  217. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/languages/adapters/oracle_csharp.py +0 -0
  218. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/languages/adapters/oracle_go.py +0 -0
  219. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/languages/adapters/oracle_javascript.py +0 -0
  220. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/languages/adapters/oracle_python.py +0 -0
  221. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/languages/adapters/oracle_typescript.py +0 -0
  222. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/languages/adapters/runner_report.py +0 -0
  223. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/languages/builtin_adapters.py +0 -0
  224. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/languages/compat.py +0 -0
  225. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/languages/contract.py +0 -0
  226. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/languages/loader.py +0 -0
  227. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/languages/oracle_executor.py +0 -0
  228. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/languages/path_planner.py +0 -0
  229. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/languages/profile.py +0 -0
  230. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/languages/profiles/cpp.yaml +0 -0
  231. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/languages/profiles/csharp.yaml +0 -0
  232. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/languages/profiles/go.yaml +0 -0
  233. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/languages/profiles/javascript.yaml +0 -0
  234. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/languages/profiles/python.yaml +0 -0
  235. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/languages/profiles/typescript.yaml +0 -0
  236. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/languages/registry.py +0 -0
  237. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/languages/verify_executor.py +0 -0
  238. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/languages/verify_plan.py +0 -0
  239. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/lexicon.py +0 -0
  240. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/lexicon_cli/__init__.py +0 -0
  241. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/lexicon_cli/formatters/__init__.py +0 -0
  242. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/lexicon_cli/formatters/html.py +0 -0
  243. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
  244. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/lexicon_cli/formatters/md.py +0 -0
  245. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/lexicon_cli/inspector.py +0 -0
  246. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/lexicon_cli/manager.py +0 -0
  247. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/lexicon_cli/reporter.py +0 -0
  248. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/lexicon_cli/threshold.py +0 -0
  249. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/llm/__init__.py +0 -0
  250. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/llm/approval.py +0 -0
  251. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/llm/best_practice_augmenter.py +0 -0
  252. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/llm/criteria_expander.py +0 -0
  253. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/llm/design_doc_extractor.py +0 -0
  254. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/llm/impl_step_deriver.py +0 -0
  255. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/llm/means_catalog_loader.py +0 -0
  256. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/llm/parser.py +0 -0
  257. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/llm/plan_deriver.py +0 -0
  258. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/llm/prompt_builder.py +0 -0
  259. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/llm/strategy_validator.py +0 -0
  260. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/llm/templates/best_practice_augment_meta.md +0 -0
  261. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/llm/templates/criteria_expand_meta.md +0 -0
  262. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/llm/templates/design_doc_extract_meta.md +0 -0
  263. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/llm/templates/impl_step_derive_meta.md +0 -0
  264. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
  265. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/llm/templates/meta_instruction.md +0 -0
  266. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/llm/templates/plan_derive_meta.md +0 -0
  267. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/llm/templates/verification_means_catalog.yaml +0 -0
  268. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/mcp_server.py +0 -0
  269. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/measure.py +0 -0
  270. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/operational_e2e_audit.py +0 -0
  271. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/operations_derive.py +0 -0
  272. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/parsing/__init__.py +0 -0
  273. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/parsing/_shared.py +0 -0
  274. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/parsing/api_specs.py +0 -0
  275. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/parsing/extractor_registry.py +0 -0
  276. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/parsing/filesystem_routes.py +0 -0
  277. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/parsing/iac.py +0 -0
  278. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/parsing/python_ast.py +0 -0
  279. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/parsing/regex_strategies.py +0 -0
  280. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/parsing/schemas.py +0 -0
  281. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/parsing/tests_builddeps.py +0 -0
  282. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/parsing/treesitter.py +0 -0
  283. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/path_safety.py +0 -0
  284. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/planner.py +0 -0
  285. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/policy.py +0 -0
  286. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/preflight/__init__.py +0 -0
  287. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/preflight/defaults/cli.yaml +0 -0
  288. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/preflight/defaults/generic.yaml +0 -0
  289. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/preflight/defaults/iot.yaml +0 -0
  290. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/preflight/defaults/mobile.yaml +0 -0
  291. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/preflight/defaults/web.yaml +0 -0
  292. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/propagate.py +0 -0
  293. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/propagation_common.py +0 -0
  294. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/propagator.py +0 -0
  295. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/reconciliation_ledger.py +0 -0
  296. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/reference_resolution.py +0 -0
  297. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/registry.py +0 -0
  298. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/repair/__init__.py +0 -0
  299. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/repair/approval_repair.py +0 -0
  300. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/repair/auto_scope_guard.py +0 -0
  301. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/repair/design_context.py +0 -0
  302. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/repair/engine.py +0 -0
  303. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/repair/git_patcher.py +0 -0
  304. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/repair/history.py +0 -0
  305. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/repair/llm_repair_engine.py +0 -0
  306. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/repair/loop.py +0 -0
  307. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/repair/primary_picker.py +0 -0
  308. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/repair/proof_breaks.py +0 -0
  309. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/repair/repair_result.py +0 -0
  310. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/repair/repairability_classifier.py +0 -0
  311. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/repair/schema.py +0 -0
  312. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/repair/templates/analyze_meta.md +0 -0
  313. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/repair/templates/propose_meta.md +0 -0
  314. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/repair/templates/repair_strategy_meta.md +0 -0
  315. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/repair/templates/repairability_meta.md +0 -0
  316. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/repair/test_failure_attribution.py +0 -0
  317. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/repair/verify_runner.py +0 -0
  318. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/repair_slice.py +0 -0
  319. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/require.py +0 -0
  320. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/require_plugins.py +0 -0
  321. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/require_propagate.py +0 -0
  322. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/required_artifacts/defaults/cli.yaml +0 -0
  323. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/required_artifacts/defaults/generic.yaml +0 -0
  324. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/required_artifacts/defaults/iot.yaml +0 -0
  325. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/required_artifacts/defaults/mobile.yaml +0 -0
  326. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/required_artifacts/defaults/web.yaml +0 -0
  327. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/required_artifacts_deriver.py +0 -0
  328. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/requirement_completeness/defaults/cli.yaml +0 -0
  329. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/requirement_completeness/defaults/generic.yaml +0 -0
  330. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/requirement_completeness/defaults/iot.yaml +0 -0
  331. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
  332. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/requirement_completeness/defaults/web.yaml +0 -0
  333. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/requirement_completeness_auditor.py +0 -0
  334. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/requirement_reconciliation.py +0 -0
  335. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/requirements_meta.py +0 -0
  336. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/restoration_report.py +0 -0
  337. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/restore.py +0 -0
  338. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/routes_extractor.py +0 -0
  339. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/runtime_smoke/__init__.py +0 -0
  340. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/runtime_smoke/checks.py +0 -0
  341. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/runtime_smoke/config.py +0 -0
  342. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/runtime_smoke/report.py +0 -0
  343. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/runtime_smoke/runner.py +0 -0
  344. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/scanner.py +0 -0
  345. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/schema_refs.py +0 -0
  346. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/screen_flow_validator.py +0 -0
  347. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/screen_transition_extractor.py +0 -0
  348. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/screen_transitions/defaults.yaml +0 -0
  349. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/skills_cli/__init__.py +0 -0
  350. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/skills_cli/discovery.py +0 -0
  351. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/skills_cli/manager.py +0 -0
  352. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/skills_cli/paths.py +0 -0
  353. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/stack/__init__.py +0 -0
  354. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/stack/adapters/__init__.py +0 -0
  355. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/stack/adapters/_base.py +0 -0
  356. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/stack/adapters/nextjs.py +0 -0
  357. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/stack/adapters/playwright.py +0 -0
  358. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/stack/adapters/prisma.py +0 -0
  359. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/stack/command_authenticity.py +0 -0
  360. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/stack/command_override.py +0 -0
  361. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/stack/command_plan.py +0 -0
  362. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/stack/compose.py +0 -0
  363. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/stack/loader.py +0 -0
  364. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/stack/lock.py +0 -0
  365. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/stack/obligations.py +0 -0
  366. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/stack/profile.py +0 -0
  367. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/stack/profiles/addons/playwright.yaml +0 -0
  368. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/stack/profiles/addons/prisma.yaml +0 -0
  369. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/stack/profiles/frameworks/nextjs.yaml +0 -0
  370. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/stack/project.py +0 -0
  371. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/stack/registry.py +0 -0
  372. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/stack/replacement_proof.py +0 -0
  373. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/stack/resolve.py +0 -0
  374. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/surface_reconciliation.py +0 -0
  375. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/synth.py +0 -0
  376. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/templates/codd.yaml.tmpl +0 -0
  377. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/templates/conventions.yaml.tmpl +0 -0
  378. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/templates/data_dependencies.yaml.tmpl +0 -0
  379. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/templates/doc_links.yaml.tmpl +0 -0
  380. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/templates/extract_ai_prompt_baseline.md +0 -0
  381. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/templates/extracted/api-contract.md.j2 +0 -0
  382. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
  383. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/templates/extracted/module-detail.md.j2 +0 -0
  384. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/templates/extracted/schema-design.md.j2 +0 -0
  385. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/templates/extracted/system-context.md.j2 +0 -0
  386. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/templates/gitignore.tmpl +0 -0
  387. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/templates/lexicon_questions.md +0 -0
  388. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/templates/lexicon_schema.yaml +0 -0
  389. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/templates/overrides.yaml.tmpl +0 -0
  390. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/test_detection.py +0 -0
  391. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/test_import_coherence.py +0 -0
  392. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/traceability.py +0 -0
  393. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/validator.py +0 -0
  394. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/vb_rerun_scope.py +0 -0
  395. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/verifiable_behavior_audit.py +0 -0
  396. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/watch/__init__.py +0 -0
  397. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/watch/events.py +0 -0
  398. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/watch/propagation_log.py +0 -0
  399. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/watch/propagation_pipeline.py +0 -0
  400. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/watch/test_runner.py +0 -0
  401. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/watch/watcher.py +0 -0
  402. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd/wiring.py +0 -0
  403. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
  404. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
  405. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
  406. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
  407. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
  408. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
  409. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
  410. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
  411. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
  412. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
  413. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
  414. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
  415. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
  416. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
  417. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
  418. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
  419. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
  420. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
  421. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
  422. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
  423. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
  424. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
  425. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
  426. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
  427. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
  428. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
  429. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
  430. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
  431. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
  432. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
  433. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
  434. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
  435. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
  436. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
  437. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
  438. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
  439. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
  440. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
  441. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
  442. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
  443. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
  444. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
  445. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
  446. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
  447. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
  448. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
  449. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
  450. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
  451. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
  452. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
  453. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
  454. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
  455. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
  456. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
  457. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
  458. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
  459. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
  460. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
  461. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
  462. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/data_aggregation_policies/coverage_matrix.md +0 -0
  463. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/data_aggregation_policies/elicit_extend.md +0 -0
  464. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/data_aggregation_policies/lexicon.yaml +0 -0
  465. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/data_aggregation_policies/manifest.yaml +0 -0
  466. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/data_aggregation_policies/recommended_kinds.yaml +0 -0
  467. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/data_aggregation_policies/severity_rules.yaml +0 -0
  468. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
  469. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
  470. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
  471. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
  472. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
  473. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
  474. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
  475. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
  476. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
  477. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
  478. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
  479. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
  480. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
  481. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
  482. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
  483. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
  484. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
  485. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
  486. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
  487. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
  488. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
  489. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
  490. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
  491. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
  492. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
  493. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
  494. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
  495. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
  496. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
  497. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
  498. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
  499. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
  500. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
  501. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
  502. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
  503. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
  504. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
  505. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
  506. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
  507. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
  508. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
  509. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
  510. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
  511. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
  512. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
  513. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
  514. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
  515. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
  516. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
  517. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
  518. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
  519. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
  520. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
  521. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
  522. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
  523. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
  524. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
  525. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
  526. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
  527. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
  528. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
  529. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
  530. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
  531. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
  532. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
  533. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
  534. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
  535. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
  536. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
  537. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
  538. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
  539. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
  540. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
  541. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
  542. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
  543. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
  544. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
  545. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
  546. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
  547. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
  548. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
  549. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
  550. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
  551. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
  552. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
  553. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
  554. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
  555. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
  556. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
  557. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
  558. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
  559. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
  560. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
  561. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
  562. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
  563. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
  564. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
  565. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
  566. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
  567. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
  568. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
  569. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
  570. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
  571. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
  572. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
  573. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
  574. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
  575. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
  576. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
  577. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
  578. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
  579. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
  580. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
  581. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
  582. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
  583. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
  584. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
  585. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
  586. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
  587. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
  588. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
  589. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
  590. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
  591. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
  592. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
  593. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
  594. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
  595. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
  596. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
  597. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
  598. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
  599. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
  600. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
  601. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
  602. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
  603. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
  604. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
  605. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
  606. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
  607. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
  608. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
  609. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
  610. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
  611. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
  612. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
  613. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
  614. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
  615. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
  616. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
  617. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
  618. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
  619. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
  620. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
  621. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
  622. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
  623. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
  624. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
  625. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
  626. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
  627. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
  628. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
  629. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
  630. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
  631. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
  632. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
  633. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
  634. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
  635. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
  636. {codd_dev-3.26.0 → codd_dev-3.28.0}/codd_plugins/stack_map.yaml +0 -0
  637. {codd_dev-3.26.0 → codd_dev-3.28.0}/docs/cookbook/cdp_browser/README.md +0 -0
  638. {codd_dev-3.26.0 → codd_dev-3.28.0}/docs/cookbook/presentation_aggregation/README.md +0 -0
  639. {codd_dev-3.26.0 → codd_dev-3.28.0}/docs/requirements/README.md +0 -0
  640. {codd_dev-3.26.0 → codd_dev-3.28.0}/examples/README.md +0 -0
  641. {codd_dev-3.26.0 → codd_dev-3.28.0}/skills/codd-assemble/SKILL.md +0 -0
  642. {codd_dev-3.26.0 → codd_dev-3.28.0}/skills/codd-evolve/SKILL.md +0 -0
  643. {codd_dev-3.26.0 → codd_dev-3.28.0}/skills/codd-fable-consult/SKILL.md +0 -0
  644. {codd_dev-3.26.0 → codd_dev-3.28.0}/skills/codd-generate/SKILL.md +0 -0
  645. {codd_dev-3.26.0 → codd_dev-3.28.0}/skills/codd-greenfield/SKILL.md +0 -0
  646. {codd_dev-3.26.0 → codd_dev-3.28.0}/skills/codd-impact/SKILL.md +0 -0
  647. {codd_dev-3.26.0 → codd_dev-3.28.0}/skills/codd-init/SKILL.md +0 -0
  648. {codd_dev-3.26.0 → codd_dev-3.28.0}/skills/codd-propagate/SKILL.md +0 -0
  649. {codd_dev-3.26.0 → codd_dev-3.28.0}/skills/codd-restore/SKILL.md +0 -0
  650. {codd_dev-3.26.0 → codd_dev-3.28.0}/skills/codd-scan/SKILL.md +0 -0
  651. {codd_dev-3.26.0 → codd_dev-3.28.0}/skills/codd-validate/SKILL.md +0 -0
  652. {codd_dev-3.26.0 → codd_dev-3.28.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: 3.26.0
3
+ Version: 3.28.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__ = "3.26.0"
3
+ __version__ = "3.28.0"
@@ -81,6 +81,7 @@ dependency edge runs gate → executor → adapters → leaf types, never back.
81
81
 
82
82
  from __future__ import annotations
83
83
 
84
+ import dataclasses
84
85
  import re
85
86
  from pathlib import Path, PurePosixPath
86
87
 
@@ -214,6 +215,37 @@ _CPP_HEADER_NOT_FOUND_CLANG = re.compile(
214
215
  r"^'(?P<header>[^']+)'\s+file not found\b"
215
216
  )
216
217
 
218
+ #: GNU ld's undefined-reference diagnostic — the LINK-time analogue of the
219
+ #: undeclared-symbol family (an implementation artifact fails to DEFINE a symbol
220
+ #: another artifact demands). Two shapes, both anchored on the message tail:
221
+ #: * ``/usr/bin/ld: file.cpp:(.text+0x40): undefined reference to `sym'``
222
+ #: * ``file.cpp:(.text+0x40): undefined reference to `sym'`` (no ld prefix)
223
+ #: The referencing TU (``file.cpp``) and the SYMBOL are captured: the symbol is the
224
+ #: repair-feedback identity (WHAT is missing), the TU the best-available file
225
+ #: attribution (WHO demands it). lld/mold keep the same message tail. Without this
226
+ #: regex a pure link failure had NO parseable diagnostic and collapsed to an opaque
227
+ #: environment_build_error, aborting the repair loop (cpp2 exprcalc dogfood,
228
+ #: 2026-07-11).
229
+ _CPP_LD_UNDEFINED_RE = re.compile(
230
+ r"^(?:\S*ld(?:\.\w+)?:\s*)?"
231
+ r"(?:(?P<path>[^\s:][^:\n]*\.(?:h|hpp|hh|hxx|c|cc|cpp|cxx|cppm|ixx)):\(\S*\):\s*)?"
232
+ r"undefined reference to [`'](?P<symbol>[^']+)'"
233
+ )
234
+
235
+ #: ld's two-line context header (``…/main.cpp.o: in function `main':``) — context
236
+ #: for the positioned undefined-reference that follows, never a diagnostic itself.
237
+ _CPP_LD_CONTEXT_RE = re.compile(
238
+ r"^(?:\S*ld(?:\.\w+)?:\s*)?\S+\.o(?:bj)?:\s*in function\s"
239
+ )
240
+
241
+ #: collect2's sign-off (``collect2: error: ld returned 1 exit status``) — a SUMMARY
242
+ #: epilog after the explicit ld error lines above it. Skipped in PARSING only (the
243
+ #: undefined-reference findings are the authority); deliberately NOT recognized in
244
+ #: the benign-accounting path, so a collect2 line with NO accompanying parsed
245
+ #: diagnostic stays an honest opaque RED (anti-false-green — same reasoning as the
246
+ #: ``ninja:`` note above).
247
+ _CPP_LD_EPILOG_RE = re.compile(r"^collect2:\s*(?:fatal error|error):\s*ld returned")
248
+
217
249
  #: cmake progress / informational chatter that is NOT a failure — the C++ analogue
218
250
  #: of Go's ``# pkg`` headers + ``ok``/``?`` run-summary noise. ``--`` status lines
219
251
  #: (``-- Configuring done``, ``-- Detecting C compiler ...``, ``-- Build files have
@@ -412,6 +444,7 @@ def _parse_cpp_tool_output(
412
444
  """
413
445
  findings: list[ImplementOracleFinding] = []
414
446
  failed_paths: list[str] = []
447
+ seen_ld_refs: set[tuple[str | None, str]] = set()
415
448
 
416
449
  def _add(category: str, code: str, message: str, rel: str | None) -> None:
417
450
  findings.append(
@@ -437,11 +470,58 @@ def _parse_cpp_tool_output(
437
470
  ):
438
471
  continue
439
472
 
473
+ # ld undefined-reference → missing_symbol, deduped per (TU, symbol): ld
474
+ # repeats the same reference once per call site; per-site duplicates add
475
+ # no repair signal. The symbol identity rides the message (feedback).
476
+ ld = _CPP_LD_UNDEFINED_RE.match(line)
477
+ if ld is not None:
478
+ symbol = ld.group("symbol").strip()
479
+ raw_path = ld.group("path")
480
+ rel = _cpp_rel_path(raw_path, project_root) if raw_path else None
481
+ key = (rel, symbol)
482
+ if key not in seen_ld_refs:
483
+ seen_ld_refs.add(key)
484
+ _add(
485
+ EVIDENCE_MISSING_SYMBOL,
486
+ "CPP_LD_UNDEFINED_REFERENCE",
487
+ f"undefined reference to `{symbol}' (link-time; referenced "
488
+ f"from {rel or 'unknown TU'})",
489
+ rel,
490
+ )
491
+ continue
492
+ if _CPP_LD_CONTEXT_RE.match(line) or _CPP_LD_EPILOG_RE.match(line):
493
+ continue # ld context / collect2 epilog — the reference lines above are the authority
494
+
440
495
  m = _CPP_DIAG_LINE.match(line)
441
496
  if m is not None:
442
497
  severity = (m.group("severity") or "").strip().lower()
443
- if severity in ("warning", "note"):
444
- continue # a warning/note is not a failure
498
+ if severity == "warning":
499
+ continue # a warning is not a failure
500
+ if severity == "note":
501
+ # A positioned ``note:`` is CONTEXT for the PRECEDING error — the
502
+ # other side of a two-sided diagnostic (``previously defined
503
+ # here`` names the header a redefinition collides with; candidate
504
+ # sites for an overload miss). Attach it to the last finding's
505
+ # message and attribution so the repair feedback carries BOTH
506
+ # sides of the disagreement (cpp3 exprcalc dogfood, 2026-07-11:
507
+ # feedback saw only the .cpp side and oscillated). An orphan note
508
+ # (no preceding finding) stays noise — a note is never a failure
509
+ # of its own. Capped at 2 notes per finding (overload-candidate
510
+ # spam adds no repair signal past the first sites).
511
+ if findings and findings[-1].code.startswith("CPP_"):
512
+ last = findings[-1]
513
+ if last.message.count(": note: ") < 2:
514
+ note_txt = (
515
+ f"{m.group('path')}:{m.group('line')}: note: "
516
+ f"{m.group('message').strip()}"
517
+ )
518
+ findings[-1] = dataclasses.replace(
519
+ last, message=f"{last.message} [{note_txt}]"
520
+ )
521
+ rel_note = _cpp_rel_path(m.group("path"), project_root)
522
+ if rel_note and rel_note not in failed_paths:
523
+ failed_paths.append(rel_note)
524
+ continue
445
525
  classified = _classify_cpp_compiler_diagnostic(
446
526
  severity, m.group("message").strip()
447
527
  )
@@ -139,6 +139,22 @@ _JAVA_ERROR_SUMMARY_RE = re.compile(
139
139
  r"after the errors? )",
140
140
  )
141
141
 
142
+ #: A POSITIONLESS fatal compiler-plugin failure. javac/maven emit it WITHOUT any
143
+ #: ``File.java:`` anchor — canonical shapes:
144
+ #: * ``[ERROR] Failed to execute goal …maven-compiler-plugin…: Fatal error
145
+ #: compiling: error: release version 21 not supported -> [Help 1]``
146
+ #: * ``[ERROR] Fatal error compiling: error: invalid target release: 21``
147
+ #: The tail after ``Fatal error compiling:`` is the authoritative message (the
148
+ #: trailing ``-> [Help N]`` pointer is stripped). Without this catch the whole run
149
+ #: had NO parseable diagnostic — the ``Failed to execute goal`` wrapper is
150
+ #: summary-echo noise — and collapsed to an opaque environment_build_error that
151
+ #: aborts the repair loop (java2 exprcalc dogfood, 2026-07-11). The C# adapter's
152
+ #: positionless ``error CS####`` catch (``_CS_DIAG_NO_POS``) is the parity
153
+ #: precedent for a positionless first-class diagnostic.
154
+ _JAVA_FATAL_COMPILING_RE = re.compile(
155
+ r"\bFatal error compiling:\s*(?P<message>.+?)\s*(?:->\s*\[Help[^\]]*\]?\s*)?$"
156
+ )
157
+
142
158
 
143
159
  # ── pure helpers ─────────────────────────────────────────────────────────────
144
160
 
@@ -209,12 +225,31 @@ def _parse_java_tool_output(
209
225
  """
210
226
  findings: list[ImplementOracleFinding] = []
211
227
  failed_paths: list[str] = []
228
+ seen_fatal: set[str] = set()
212
229
  for raw_line in (output or "").splitlines():
213
230
  line = raw_line.rstrip()
214
231
  if not line.strip():
215
232
  continue
216
233
  matched = _match_java_diagnostic(line)
217
234
  if matched is None:
235
+ # A positionless ``Fatal error compiling: …`` (toolchain-level compile
236
+ # failure, e.g. a --release the installed JDK cannot satisfy) is a
237
+ # first-class diagnostic even without a File.java anchor. Deduped by
238
+ # message: maven prints the same fatal in both the Failed-to-execute-
239
+ # goal wrapper and the bare echo form.
240
+ fatal = _JAVA_FATAL_COMPILING_RE.search(line)
241
+ if fatal is not None:
242
+ message = fatal.group("message").strip()
243
+ if message not in seen_fatal:
244
+ seen_fatal.add(message)
245
+ findings.append(
246
+ ImplementOracleFinding(
247
+ category=EVIDENCE_OTHER,
248
+ code="JAVA_FATAL_COMPILING",
249
+ message=f"[{tool}] Fatal error compiling: {message}",
250
+ path=None,
251
+ )
252
+ )
218
253
  continue
219
254
  path_raw, message = matched
220
255
  category, code = _classify_java_diagnostic(message)
@@ -282,6 +282,20 @@ scaffold:
282
282
  compiler_plugin_version: "3.13.0"
283
283
  build_helper_plugin_version: "3.6.0"
284
284
 
285
+ # Host-toolchain version clamp — the environment-continuation projection of
286
+ # toolchain materialization (v3.15.0 lineage) applied to scaffold DEFAULTS: a
287
+ # declared toolchain level must never EXCEED what the host provides, or the
288
+ # scaffolded pom demands a --release the installed JDK cannot satisfy and the
289
+ # implement oracle reds on "Fatal error compiling: error: release version N
290
+ # not supported" (java2 exprcalc dogfood, 2026-07-11). The probe runs once at
291
+ # scaffold time; min semantics (declared 21 + host 17 → 17; declared 11 +
292
+ # host 17 → 11); probe failure keeps the declared value (fail-open).
293
+ # CONTENT-only: clamped variables must never appear in a template `path`.
294
+ host_version_clamps:
295
+ java_version:
296
+ probe_argv: ["javac", "-version"]
297
+ version_pattern: '(\d+)'
298
+
285
299
  templates:
286
300
  # Single pom.xml: Java's package_root.kind=none means there is no C#-style
287
301
  # nested lib/test project split to enforce deliverable purity. Maven's own
@@ -27,6 +27,7 @@ from __future__ import annotations
27
27
  import dataclasses
28
28
  import json
29
29
  import os
30
+ import re
30
31
  import subprocess
31
32
  import sys
32
33
  from collections.abc import Callable, Mapping
@@ -2807,6 +2808,96 @@ def _generic_template_substitutions(
2807
2808
  return subst
2808
2809
 
2809
2810
 
2811
+ def _probe_host_toolchain_version(argv: tuple[str, ...], pattern: str) -> int | None:
2812
+ """Best-effort host-toolchain MAJOR-version probe (``javac -version`` → ``17``).
2813
+
2814
+ Runs the profile-declared probe argv (10s timeout), searches ``pattern``
2815
+ (first group = the major) across stdout+stderr (``javac -version`` printed to
2816
+ stderr before JDK 9, stdout after), and returns the integer major — or
2817
+ ``None`` on ANY failure (missing binary, timeout, no match, non-integer
2818
+ group). The caller treats ``None`` as "keep the declared default"
2819
+ (fail-open): the probe can only ever LOWER a doomed default, never introduce
2820
+ a new failure mode.
2821
+ """
2822
+ try:
2823
+ proc = subprocess.run(
2824
+ list(argv), capture_output=True, text=True, timeout=10, check=False
2825
+ )
2826
+ except (OSError, subprocess.SubprocessError):
2827
+ return None
2828
+ match = re.search(pattern, f"{proc.stdout}\n{proc.stderr}")
2829
+ if match is None:
2830
+ return None
2831
+ try:
2832
+ return int(match.group(1))
2833
+ except (IndexError, ValueError):
2834
+ return None
2835
+
2836
+
2837
+ def _generic_template_host_clamps(
2838
+ language: str | None,
2839
+ ) -> dict[str, Mapping[str, Any]]:
2840
+ """The profile's ``scaffold.host_version_clamps`` mapping (raw view), or ``{}``.
2841
+
2842
+ Read from ``raw`` like ``scaffold.defaults`` (the ScaffoldSpec dataclass
2843
+ models only adapter/owned_files/templates; ``raw`` is the documented
2844
+ later-phase escape hatch).
2845
+ """
2846
+ lang_profile = _resolve_kernel_language_profile(language)
2847
+ raw = getattr(lang_profile, "raw", None) if lang_profile is not None else None
2848
+ if isinstance(raw, Mapping):
2849
+ raw_scaffold = raw.get("scaffold")
2850
+ if isinstance(raw_scaffold, Mapping):
2851
+ clamps = raw_scaffold.get("host_version_clamps")
2852
+ if isinstance(clamps, Mapping):
2853
+ return {
2854
+ str(k): v for k, v in clamps.items() if isinstance(v, Mapping)
2855
+ }
2856
+ return {}
2857
+
2858
+
2859
+ def _resolve_host_clamped_defaults(
2860
+ defaults: Mapping[str, str], clamps: Mapping[str, Mapping[str, Any]]
2861
+ ) -> tuple[dict[str, str], list[str]]:
2862
+ """Clamp scaffold DEFAULTS to the host toolchain — the environment-continuation
2863
+ projection of toolchain materialization (v3.15.0 lineage) applied to the
2864
+ generic-template scaffold's substitution variables.
2865
+
2866
+ For each profile-declared clamp key: probe the host (profile-declared
2867
+ argv+pattern); when the probed major is LOWER than the declared default's
2868
+ leading integer, replace the default with the probed major (min semantics —
2869
+ a declared ``21`` on a JDK-17 host scaffolds ``17``; a declared ``11`` on a
2870
+ JDK-17 host stays ``11``). A probe failure or a non-numeric declared value
2871
+ keeps the declared default (fail-open). Returns ``(resolved defaults,
2872
+ human-readable clamp notes)`` — the notes ride the scaffold detail so a
2873
+ clamp is never silent. CONTENT-only: the harness-owned PATH declaration
2874
+ (:meth:`LayoutProfile.harness_owned_scaffold_paths`) substitutes UNCLAMPED
2875
+ defaults, so a clamped variable must never appear in a template ``path``.
2876
+ """
2877
+ out = dict(defaults)
2878
+ notes: list[str] = []
2879
+ for key, spec in (clamps or {}).items():
2880
+ declared = out.get(key)
2881
+ if declared is None:
2882
+ continue
2883
+ declared_match = re.match(r"\s*(\d+)", str(declared))
2884
+ if declared_match is None:
2885
+ continue # non-numeric default → this clamp cannot reason about it
2886
+ declared_major = int(declared_match.group(1))
2887
+ argv = tuple(str(a) for a in (spec.get("probe_argv") or ()) if str(a).strip())
2888
+ if not argv:
2889
+ continue
2890
+ pattern = str(spec.get("version_pattern") or r"(\d+)")
2891
+ probed = _probe_host_toolchain_version(argv, pattern)
2892
+ if probed is None or probed >= declared_major:
2893
+ continue
2894
+ out[key] = str(probed)
2895
+ notes.append(
2896
+ f"host-clamped {key} {declared}→{probed} (probe: {' '.join(argv)})"
2897
+ )
2898
+ return out, notes
2899
+
2900
+
2810
2901
  def _apply_template_substitutions(text: str, subst: Mapping[str, str]) -> str:
2811
2902
  """Replace each ``{key}`` token with its value (replace-based, NOT ``str.format`` — so
2812
2903
  a template's literal braces never raise; mirrors the oracle gate's ``{package_name}``
@@ -2862,6 +2953,9 @@ def _scaffold_generic_template(
2862
2953
  code branch — a new generic-template stack is one YAML profile + the opt-in key.
2863
2954
  """
2864
2955
  templates, defaults, _owned = spec
2956
+ defaults, clamp_notes = _resolve_host_clamped_defaults(
2957
+ defaults, _generic_template_host_clamps(profile.language)
2958
+ )
2865
2959
  subst = _generic_template_substitutions(profile, defaults)
2866
2960
  created: list[str] = []
2867
2961
  skipped: list[str] = []
@@ -2891,6 +2985,8 @@ def _scaffold_generic_template(
2891
2985
  f"generic-template: {len(created)} created, {len(skipped)} skipped "
2892
2986
  f"(package={profile.package_name})"
2893
2987
  )
2988
+ if clamp_notes:
2989
+ detail += "; " + "; ".join(clamp_notes)
2894
2990
  return ScaffoldResult(
2895
2991
  language=profile.language,
2896
2992
  created=tuple(created),
@@ -3488,8 +3488,19 @@ _CSHARP_SKIP_ARG_RE = re.compile(r"\bSkip\s*=")
3488
3488
  #: ``(?<![A-Za-z0-9_.])`` so a member access ``foo.Assert.X`` (an unrelated SUT
3489
3489
  #: type that happens to expose an ``Assert`` member) does not masquerade as the
3490
3490
  #: framework's static ``Assert``.
3491
+ #: Optional generic type-argument list between the method name and ``(`` —
3492
+ #: ``Assert.IsType<ParseError>(x)``, ``Assert.Throws<T>(() => …)``, nested up to
3493
+ #: depth 3 (``Assert.IsType<Dictionary<string, List<int>>>(x)``). ``;{}`` are
3494
+ #: excluded so a malformed ``<`` can never swallow past a statement boundary.
3495
+ #: Without this, generic-only asserts were reported as "test with NO assertion"
3496
+ #: (false-RED observed on the csharp exprcalc greenfield dogfood, 2026-07-11).
3497
+ _CSHARP_GENERIC_ARGS = (
3498
+ r"<[^<>;{}]*(?:<[^<>;{}]*(?:<[^<>;{}]*>[^<>;{}]*)*>[^<>;{}]*)*>"
3499
+ )
3491
3500
  _CSHARP_ASSERT_CALL_RE = re.compile(
3492
- r"(?<![A-Za-z0-9_.])Assert\.[A-Z][A-Za-z0-9_]*\s*\("
3501
+ r"(?<![A-Za-z0-9_.])Assert\.[A-Z][A-Za-z0-9_]*\s*(?:"
3502
+ + _CSHARP_GENERIC_ARGS
3503
+ + r")?\s*\("
3493
3504
  )
3494
3505
 
3495
3506
 
@@ -5850,10 +5861,15 @@ def _java_resolve_module(importer_rel: str, spec: str, project_root: Path) -> Pa
5850
5861
  #: helper like ``HarnessAssertions.assertSuccess`` is exactly this shape. A bare
5851
5862
  #: CALL (``assertSuccess(result, "14.0");``) never matches: it has no
5852
5863
  #: return-type-shaped token before it, and it ends in ``;`` rather than ``{``.
5864
+ #: The return type accepts a QUALIFIED / nested name (``Expr.Literal``,
5865
+ #: ``Map.Entry<K, V>``) — dot-separated identifier segments — not just a single
5866
+ #: identifier: a same-file helper returning a nested type was otherwise
5867
+ #: invisible, resolving as ``unresolved_helper`` and false-redding real
5868
+ #: delegated assertions (java3 exprcalc dogfood, 2026-07-11).
5853
5869
  _JAVA_METHOD_DEF_RE = re.compile(
5854
5870
  r"(?<![A-Za-z0-9_.])(?:(?:public|protected|private|static|final|synchronized|"
5855
5871
  r"abstract|default|native|strictfp)\s+)*"
5856
- r"[A-Za-z_][A-Za-z0-9_$]*(?:<[^;{}]*?>)?(?:\[\])*\s+"
5872
+ r"[A-Za-z_][A-Za-z0-9_$]*(?:\.[A-Za-z_][A-Za-z0-9_$]*)*(?:<[^;{}]*?>)?(?:\[\])*\s+"
5857
5873
  r"(?P<name>[A-Za-z_][A-Za-z0-9_]*)\s*\((?P<params>[^;{}]*)\)"
5858
5874
  r"(?:\s*throws\s+[A-Za-z0-9_.,\s<>]+?)?\s*\{",
5859
5875
  re.DOTALL,
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "codd-dev"
7
- version = "3.26.0"
7
+ version = "3.28.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
File without changes
File without changes
File without changes
File without changes
File without changes