codd-dev 3.25.0__tar.gz → 3.27.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.25.0 → codd_dev-3.27.0}/PKG-INFO +1 -1
  2. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/__init__.py +1 -1
  3. codd_dev-3.27.0/codd/json_safe.py +32 -0
  4. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/languages/adapters/oracle_cpp.py +54 -0
  5. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/languages/adapters/oracle_java.py +35 -0
  6. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/languages/profiles/java.yaml +14 -0
  7. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/project_types.py +96 -0
  8. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/scanner.py +14 -5
  9. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/vb_marker_authenticity.py +12 -1
  10. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/watch/propagation_log.py +4 -1
  11. {codd_dev-3.25.0 → codd_dev-3.27.0}/pyproject.toml +1 -1
  12. {codd_dev-3.25.0 → codd_dev-3.27.0}/.gitignore +0 -0
  13. {codd_dev-3.25.0 → codd_dev-3.27.0}/LICENSE +0 -0
  14. {codd_dev-3.25.0 → codd_dev-3.27.0}/README.md +0 -0
  15. {codd_dev-3.25.0 → codd_dev-3.27.0}/bench_fixture/README.md +0 -0
  16. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/__main__.py +0 -0
  17. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/_git_helper.py +0 -0
  18. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/action_outcome.py +0 -0
  19. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/ai_invoke.py +0 -0
  20. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/ai_patch.py +0 -0
  21. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/artifact_contract.py +0 -0
  22. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/artifact_ids.py +0 -0
  23. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/artifacts/catalog.yaml +0 -0
  24. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/ask_user_question_adapter.py +0 -0
  25. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/assembler.py +0 -0
  26. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/bridge.py +0 -0
  27. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/brownfield/__init__.py +0 -0
  28. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/brownfield/pipeline.py +0 -0
  29. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/capability_completeness.py +0 -0
  30. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/claude_cli.py +0 -0
  31. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/cli.py +0 -0
  32. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/clustering.py +0 -0
  33. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/coherence_adapters.py +0 -0
  34. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/coherence_engine.py +0 -0
  35. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/confidence.py +0 -0
  36. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/config.py +0 -0
  37. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/config_schema.py +0 -0
  38. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/contracts.py +0 -0
  39. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/contracts_registry/__init__.py +0 -0
  40. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/contracts_registry/__main__.py +0 -0
  41. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/contracts_registry/certify.py +0 -0
  42. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/contracts_registry/generate_matrix.py +0 -0
  43. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/contracts_registry/registry.py +0 -0
  44. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/coverage_auditor.py +0 -0
  45. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/coverage_execution_coherence.py +0 -0
  46. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/coverage_metrics.py +0 -0
  47. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/__init__.py +0 -0
  48. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/auto_repair.py +0 -0
  49. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/builder.py +0 -0
  50. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/checks/__init__.py +0 -0
  51. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/checks/_one_to_many_detection.py +0 -0
  52. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/checks/artifact_contract_check.py +0 -0
  53. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/checks/cardinality_coverage.py +0 -0
  54. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/checks/ci_health.py +0 -0
  55. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/checks/dependency_freshness.py +0 -0
  56. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/checks/depends_on_consistency.py +0 -0
  57. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/checks/deployment_completeness.py +0 -0
  58. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/checks/edge_validity.py +0 -0
  59. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/checks/environment_coverage.py +0 -0
  60. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/checks/extraction_diagnostics.py +0 -0
  61. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/checks/implementation_coverage.py +0 -0
  62. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/checks/negative_space.py +0 -0
  63. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/checks/node_completeness.py +0 -0
  64. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/checks/opt_out.py +0 -0
  65. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/checks/resource_flow_coherence.py +0 -0
  66. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/checks/semantic_contract_conflict.py +0 -0
  67. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/checks/source_completeness.py +0 -0
  68. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/checks/stale_evidence.py +0 -0
  69. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/checks/task_completion.py +0 -0
  70. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/checks/transitive_closure.py +0 -0
  71. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/checks/ui_coherence.py +0 -0
  72. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/checks/unresolved_import_residue.py +0 -0
  73. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/checks/user_journey_coherence.py +0 -0
  74. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/coverage_axes.py +0 -0
  75. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/defaults/cli.yaml +0 -0
  76. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/defaults/cpp_embedded.yaml +0 -0
  77. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/defaults/csharp.yaml +0 -0
  78. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/defaults/elixir.yaml +0 -0
  79. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/defaults/generic.yaml +0 -0
  80. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/defaults/iot.yaml +0 -0
  81. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/defaults/java.yaml +0 -0
  82. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/defaults/kotlin.yaml +0 -0
  83. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/defaults/mobile.yaml +0 -0
  84. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/defaults/ruby.yaml +0 -0
  85. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/defaults/rust.yaml +0 -0
  86. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/defaults/scala.yaml +0 -0
  87. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/defaults/swift.yaml +0 -0
  88. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/defaults/test_frameworks.yaml +0 -0
  89. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/defaults/web.yaml +0 -0
  90. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/extractor.py +0 -0
  91. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/impact.py +0 -0
  92. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/materiality.py +0 -0
  93. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/metadata_access.py +0 -0
  94. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/result_status.py +0 -0
  95. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dag/runner.py +0 -0
  96. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/defaults.py +0 -0
  97. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/defaults.yaml +0 -0
  98. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/dependency_lock_coherence.py +0 -0
  99. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deploy_targets/__init__.py +0 -0
  100. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deploy_targets/app_service.py +0 -0
  101. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deploy_targets/base.py +0 -0
  102. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deploy_targets/docker_compose.py +0 -0
  103. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deployer.py +0 -0
  104. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deployment/__init__.py +0 -0
  105. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deployment/checks/__init__.py +0 -0
  106. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deployment/defaults/deploy_targets.yaml +0 -0
  107. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
  108. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deployment/defaults/schema_providers.yaml +0 -0
  109. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deployment/defaults/verification_templates.yaml +0 -0
  110. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deployment/extractor.py +0 -0
  111. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deployment/providers/__init__.py +0 -0
  112. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deployment/providers/ai_command.py +0 -0
  113. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deployment/providers/ai_command_factory.py +0 -0
  114. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deployment/providers/codex_app_server.py +0 -0
  115. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deployment/providers/llm_consideration.py +0 -0
  116. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deployment/providers/schema/__init__.py +0 -0
  117. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deployment/providers/schema/prisma.py +0 -0
  118. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deployment/providers/target/__init__.py +0 -0
  119. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deployment/providers/target/docker_compose.py +0 -0
  120. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deployment/providers/verification/__init__.py +0 -0
  121. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
  122. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deployment/providers/verification/cdp_browser.py +0 -0
  123. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deployment/providers/verification/cdp_engines.py +0 -0
  124. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
  125. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deployment/providers/verification/cdp_wire.py +0 -0
  126. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deployment/providers/verification/curl.py +0 -0
  127. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deployment/providers/verification/form_strategies.py +0 -0
  128. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deployment/providers/verification/means_catalog.py +0 -0
  129. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deployment/providers/verification/playwright.py +0 -0
  130. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deployment/providers/verification/pytest_http.py +0 -0
  131. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/deployment/providers/verification/vitest.py +0 -0
  132. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/design_md.py +0 -0
  133. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/diff/__init__.py +0 -0
  134. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/diff/apply.py +0 -0
  135. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/diff/engine.py +0 -0
  136. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/diff/persistence.py +0 -0
  137. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/diff/templates/diff_prompt.md +0 -0
  138. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/discovery.py +0 -0
  139. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/drift.py +0 -0
  140. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/e2e_contract_coherence.py +0 -0
  141. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/e2e_extractor.py +0 -0
  142. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/e2e_generator.py +0 -0
  143. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/e2e_harness.py +0 -0
  144. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/e2e_runner.py +0 -0
  145. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/elicit/__init__.py +0 -0
  146. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/elicit/apply.py +0 -0
  147. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/elicit/engine.py +0 -0
  148. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/elicit/finding.py +0 -0
  149. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/elicit/formatters/__init__.py +0 -0
  150. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/elicit/formatters/base.py +0 -0
  151. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/elicit/formatters/interactive.py +0 -0
  152. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/elicit/formatters/json_fmt.py +0 -0
  153. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/elicit/formatters/md.py +0 -0
  154. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/elicit/gap_to_ask.py +0 -0
  155. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/elicit/lexicon_loader.py +0 -0
  156. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/elicit/persistence.py +0 -0
  157. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/elicit/promote.py +0 -0
  158. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/elicit/routing.py +0 -0
  159. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
  160. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/env_refs.py +0 -0
  161. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/extract_ai.py +0 -0
  162. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/extract_paths.py +0 -0
  163. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/extractor.py +0 -0
  164. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/fix/__init__.py +0 -0
  165. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/fix/candidate_selector.py +0 -0
  166. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/fix/design_updater.py +0 -0
  167. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/fix/impact_planner.py +0 -0
  168. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/fix/impl_propagation.py +0 -0
  169. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/fix/interactive_prompt.py +0 -0
  170. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/fix/phenomenon_fixer.py +0 -0
  171. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/fix/phenomenon_parser.py +0 -0
  172. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/fix/risk_classifier.py +0 -0
  173. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/fix/templates/clarification_question.txt +0 -0
  174. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/fix/templates/design_update.txt +0 -0
  175. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/fix/templates/impl_update.txt +0 -0
  176. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/fix/templates/phenomenon_parse.txt +0 -0
  177. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/fix/templates/risk_assessment.txt +0 -0
  178. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/fix/templates_loader.py +0 -0
  179. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/fixer.py +0 -0
  180. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/fixup_drift.py +0 -0
  181. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/fixup_drift_strategies/__init__.py +0 -0
  182. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
  183. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
  184. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/fixup_drift_strategies/url_drift.py +0 -0
  185. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/frontmatter.py +0 -0
  186. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/generator.py +0 -0
  187. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/git_evidence.py +0 -0
  188. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/graph.py +0 -0
  189. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/greenfield/__init__.py +0 -0
  190. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/greenfield/pipeline.py +0 -0
  191. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/greenfield/test_rederivation.py +0 -0
  192. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/hitl_session.py +0 -0
  193. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/hooks/__init__.py +0 -0
  194. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/hooks/pre-commit +0 -0
  195. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/hooks/recipes/claude_requirements_nudge.json +0 -0
  196. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/hooks/recipes/claude_settings_example.json +0 -0
  197. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/hooks/recipes/codex_hook.sh +0 -0
  198. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/hooks/recipes/git_post_commit.sh +0 -0
  199. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/hooks/recipes/git_pre_commit.sh +0 -0
  200. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/iac_nfr.py +0 -0
  201. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/implement_oracle.py +0 -0
  202. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/implement_oracle_scope.py +0 -0
  203. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/implement_oracle_types.py +0 -0
  204. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/implementer/__init__.py +0 -0
  205. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/implementer/chunked_runner.py +0 -0
  206. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/implementer/typecheck_loop.py +0 -0
  207. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/implementer.py +0 -0
  208. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/import_coherence.py +0 -0
  209. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/inheritance.py +0 -0
  210. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/init/__init__.py +0 -0
  211. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/init/lexicon_suggest.py +0 -0
  212. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/init/llm_lexicon_suggester.py +0 -0
  213. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/init/stack_detector.py +0 -0
  214. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/knowledge_fetcher.py +0 -0
  215. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/languages/__init__.py +0 -0
  216. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/languages/adapters/__init__.py +0 -0
  217. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/languages/adapters/implement_oracle.py +0 -0
  218. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/languages/adapters/import_resolver.py +0 -0
  219. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/languages/adapters/oracle_csharp.py +0 -0
  220. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/languages/adapters/oracle_go.py +0 -0
  221. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/languages/adapters/oracle_javascript.py +0 -0
  222. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/languages/adapters/oracle_python.py +0 -0
  223. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/languages/adapters/oracle_typescript.py +0 -0
  224. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/languages/adapters/runner_report.py +0 -0
  225. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/languages/builtin_adapters.py +0 -0
  226. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/languages/compat.py +0 -0
  227. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/languages/contract.py +0 -0
  228. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/languages/loader.py +0 -0
  229. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/languages/oracle_executor.py +0 -0
  230. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/languages/path_planner.py +0 -0
  231. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/languages/profile.py +0 -0
  232. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/languages/profiles/cpp.yaml +0 -0
  233. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/languages/profiles/csharp.yaml +0 -0
  234. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/languages/profiles/go.yaml +0 -0
  235. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/languages/profiles/javascript.yaml +0 -0
  236. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/languages/profiles/python.yaml +0 -0
  237. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/languages/profiles/typescript.yaml +0 -0
  238. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/languages/registry.py +0 -0
  239. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/languages/verify_executor.py +0 -0
  240. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/languages/verify_plan.py +0 -0
  241. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/lexicon.py +0 -0
  242. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/lexicon_cli/__init__.py +0 -0
  243. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/lexicon_cli/formatters/__init__.py +0 -0
  244. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/lexicon_cli/formatters/html.py +0 -0
  245. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
  246. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/lexicon_cli/formatters/md.py +0 -0
  247. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/lexicon_cli/inspector.py +0 -0
  248. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/lexicon_cli/manager.py +0 -0
  249. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/lexicon_cli/reporter.py +0 -0
  250. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/lexicon_cli/threshold.py +0 -0
  251. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/llm/__init__.py +0 -0
  252. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/llm/approval.py +0 -0
  253. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/llm/best_practice_augmenter.py +0 -0
  254. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/llm/criteria_expander.py +0 -0
  255. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/llm/design_doc_extractor.py +0 -0
  256. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/llm/impl_step_deriver.py +0 -0
  257. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/llm/means_catalog_loader.py +0 -0
  258. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/llm/parser.py +0 -0
  259. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/llm/plan_deriver.py +0 -0
  260. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/llm/prompt_builder.py +0 -0
  261. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/llm/strategy_validator.py +0 -0
  262. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/llm/templates/best_practice_augment_meta.md +0 -0
  263. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/llm/templates/criteria_expand_meta.md +0 -0
  264. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/llm/templates/design_doc_extract_meta.md +0 -0
  265. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/llm/templates/impl_step_derive_meta.md +0 -0
  266. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
  267. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/llm/templates/meta_instruction.md +0 -0
  268. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/llm/templates/plan_derive_meta.md +0 -0
  269. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/llm/templates/verification_means_catalog.yaml +0 -0
  270. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/mcp_server.py +0 -0
  271. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/measure.py +0 -0
  272. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/operational_e2e_audit.py +0 -0
  273. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/operations_derive.py +0 -0
  274. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/parsing/__init__.py +0 -0
  275. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/parsing/_shared.py +0 -0
  276. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/parsing/api_specs.py +0 -0
  277. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/parsing/extractor_registry.py +0 -0
  278. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/parsing/filesystem_routes.py +0 -0
  279. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/parsing/iac.py +0 -0
  280. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/parsing/python_ast.py +0 -0
  281. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/parsing/regex_strategies.py +0 -0
  282. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/parsing/schemas.py +0 -0
  283. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/parsing/tests_builddeps.py +0 -0
  284. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/parsing/treesitter.py +0 -0
  285. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/path_safety.py +0 -0
  286. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/planner.py +0 -0
  287. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/policy.py +0 -0
  288. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/preflight/__init__.py +0 -0
  289. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/preflight/defaults/cli.yaml +0 -0
  290. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/preflight/defaults/generic.yaml +0 -0
  291. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/preflight/defaults/iot.yaml +0 -0
  292. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/preflight/defaults/mobile.yaml +0 -0
  293. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/preflight/defaults/web.yaml +0 -0
  294. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/propagate.py +0 -0
  295. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/propagation_common.py +0 -0
  296. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/propagator.py +0 -0
  297. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/reconciliation_ledger.py +0 -0
  298. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/reference_resolution.py +0 -0
  299. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/registry.py +0 -0
  300. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/repair/__init__.py +0 -0
  301. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/repair/approval_repair.py +0 -0
  302. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/repair/auto_scope_guard.py +0 -0
  303. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/repair/design_context.py +0 -0
  304. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/repair/engine.py +0 -0
  305. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/repair/git_patcher.py +0 -0
  306. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/repair/history.py +0 -0
  307. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/repair/llm_repair_engine.py +0 -0
  308. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/repair/loop.py +0 -0
  309. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/repair/primary_picker.py +0 -0
  310. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/repair/proof_breaks.py +0 -0
  311. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/repair/repair_result.py +0 -0
  312. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/repair/repairability_classifier.py +0 -0
  313. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/repair/schema.py +0 -0
  314. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/repair/templates/analyze_meta.md +0 -0
  315. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/repair/templates/propose_meta.md +0 -0
  316. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/repair/templates/repair_strategy_meta.md +0 -0
  317. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/repair/templates/repairability_meta.md +0 -0
  318. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/repair/test_failure_attribution.py +0 -0
  319. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/repair/verify_runner.py +0 -0
  320. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/repair_slice.py +0 -0
  321. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/require.py +0 -0
  322. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/require_plugins.py +0 -0
  323. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/require_propagate.py +0 -0
  324. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/required_artifacts/defaults/cli.yaml +0 -0
  325. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/required_artifacts/defaults/generic.yaml +0 -0
  326. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/required_artifacts/defaults/iot.yaml +0 -0
  327. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/required_artifacts/defaults/mobile.yaml +0 -0
  328. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/required_artifacts/defaults/web.yaml +0 -0
  329. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/required_artifacts_deriver.py +0 -0
  330. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/requirement_completeness/defaults/cli.yaml +0 -0
  331. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/requirement_completeness/defaults/generic.yaml +0 -0
  332. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/requirement_completeness/defaults/iot.yaml +0 -0
  333. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
  334. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/requirement_completeness/defaults/web.yaml +0 -0
  335. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/requirement_completeness_auditor.py +0 -0
  336. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/requirement_reconciliation.py +0 -0
  337. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/requirements_meta.py +0 -0
  338. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/restoration_report.py +0 -0
  339. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/restore.py +0 -0
  340. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/routes_extractor.py +0 -0
  341. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/runtime_smoke/__init__.py +0 -0
  342. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/runtime_smoke/checks.py +0 -0
  343. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/runtime_smoke/config.py +0 -0
  344. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/runtime_smoke/report.py +0 -0
  345. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/runtime_smoke/runner.py +0 -0
  346. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/schema_refs.py +0 -0
  347. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/screen_flow_validator.py +0 -0
  348. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/screen_transition_extractor.py +0 -0
  349. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/screen_transitions/defaults.yaml +0 -0
  350. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/skills_cli/__init__.py +0 -0
  351. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/skills_cli/discovery.py +0 -0
  352. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/skills_cli/manager.py +0 -0
  353. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/skills_cli/paths.py +0 -0
  354. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/stack/__init__.py +0 -0
  355. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/stack/adapters/__init__.py +0 -0
  356. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/stack/adapters/_base.py +0 -0
  357. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/stack/adapters/nextjs.py +0 -0
  358. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/stack/adapters/playwright.py +0 -0
  359. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/stack/adapters/prisma.py +0 -0
  360. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/stack/command_authenticity.py +0 -0
  361. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/stack/command_override.py +0 -0
  362. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/stack/command_plan.py +0 -0
  363. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/stack/compose.py +0 -0
  364. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/stack/loader.py +0 -0
  365. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/stack/lock.py +0 -0
  366. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/stack/obligations.py +0 -0
  367. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/stack/profile.py +0 -0
  368. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/stack/profiles/addons/playwright.yaml +0 -0
  369. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/stack/profiles/addons/prisma.yaml +0 -0
  370. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/stack/profiles/frameworks/nextjs.yaml +0 -0
  371. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/stack/project.py +0 -0
  372. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/stack/registry.py +0 -0
  373. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/stack/replacement_proof.py +0 -0
  374. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/stack/resolve.py +0 -0
  375. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/surface_reconciliation.py +0 -0
  376. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/synth.py +0 -0
  377. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/templates/codd.yaml.tmpl +0 -0
  378. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/templates/conventions.yaml.tmpl +0 -0
  379. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/templates/data_dependencies.yaml.tmpl +0 -0
  380. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/templates/doc_links.yaml.tmpl +0 -0
  381. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/templates/extract_ai_prompt_baseline.md +0 -0
  382. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/templates/extracted/api-contract.md.j2 +0 -0
  383. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
  384. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/templates/extracted/module-detail.md.j2 +0 -0
  385. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/templates/extracted/schema-design.md.j2 +0 -0
  386. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/templates/extracted/system-context.md.j2 +0 -0
  387. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/templates/gitignore.tmpl +0 -0
  388. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/templates/lexicon_questions.md +0 -0
  389. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/templates/lexicon_schema.yaml +0 -0
  390. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/templates/overrides.yaml.tmpl +0 -0
  391. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/test_detection.py +0 -0
  392. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/test_import_coherence.py +0 -0
  393. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/traceability.py +0 -0
  394. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/validator.py +0 -0
  395. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/vb_rerun_scope.py +0 -0
  396. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/verifiable_behavior_audit.py +0 -0
  397. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/watch/__init__.py +0 -0
  398. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/watch/events.py +0 -0
  399. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/watch/propagation_pipeline.py +0 -0
  400. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/watch/test_runner.py +0 -0
  401. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/watch/watcher.py +0 -0
  402. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd/wiring.py +0 -0
  403. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
  404. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
  405. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
  406. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
  407. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
  408. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
  409. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
  410. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
  411. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
  412. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
  413. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
  414. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
  415. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
  416. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
  417. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
  418. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
  419. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
  420. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
  421. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
  422. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
  423. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
  424. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
  425. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
  426. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
  427. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
  428. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
  429. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
  430. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
  431. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
  432. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
  433. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
  434. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
  435. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
  436. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
  437. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
  438. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
  439. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
  440. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
  441. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
  442. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
  443. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
  444. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
  445. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
  446. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
  447. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
  448. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
  449. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
  450. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
  451. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
  452. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
  453. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
  454. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
  455. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
  456. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
  457. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
  458. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
  459. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
  460. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
  461. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
  462. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/data_aggregation_policies/coverage_matrix.md +0 -0
  463. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/data_aggregation_policies/elicit_extend.md +0 -0
  464. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/data_aggregation_policies/lexicon.yaml +0 -0
  465. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/data_aggregation_policies/manifest.yaml +0 -0
  466. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/data_aggregation_policies/recommended_kinds.yaml +0 -0
  467. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/data_aggregation_policies/severity_rules.yaml +0 -0
  468. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
  469. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
  470. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
  471. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
  472. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
  473. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
  474. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
  475. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
  476. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
  477. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
  478. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
  479. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
  480. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
  481. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
  482. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
  483. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
  484. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
  485. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
  486. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
  487. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
  488. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
  489. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
  490. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
  491. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
  492. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
  493. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
  494. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
  495. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
  496. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
  497. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
  498. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
  499. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
  500. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
  501. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
  502. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
  503. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
  504. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
  505. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
  506. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
  507. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
  508. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
  509. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
  510. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
  511. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
  512. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
  513. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
  514. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
  515. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
  516. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
  517. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
  518. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
  519. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
  520. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
  521. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
  522. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
  523. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
  524. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
  525. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
  526. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
  527. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
  528. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
  529. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
  530. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
  531. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
  532. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
  533. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
  534. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
  535. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
  536. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
  537. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
  538. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
  539. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
  540. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
  541. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
  542. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
  543. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
  544. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
  545. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
  546. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
  547. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
  548. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
  549. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
  550. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
  551. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
  552. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
  553. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
  554. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
  555. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
  556. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
  557. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
  558. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
  559. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
  560. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
  561. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
  562. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
  563. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
  564. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
  565. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
  566. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
  567. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
  568. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
  569. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
  570. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
  571. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
  572. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
  573. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
  574. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
  575. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
  576. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
  577. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
  578. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
  579. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
  580. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
  581. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
  582. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
  583. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
  584. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
  585. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
  586. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
  587. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
  588. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
  589. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
  590. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
  591. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
  592. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
  593. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
  594. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
  595. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
  596. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
  597. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
  598. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
  599. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
  600. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
  601. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
  602. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
  603. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
  604. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
  605. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
  606. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
  607. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
  608. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
  609. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
  610. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
  611. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
  612. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
  613. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
  614. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
  615. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
  616. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
  617. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
  618. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
  619. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
  620. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
  621. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
  622. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
  623. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
  624. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
  625. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
  626. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
  627. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
  628. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
  629. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
  630. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
  631. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
  632. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
  633. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
  634. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
  635. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
  636. {codd_dev-3.25.0 → codd_dev-3.27.0}/codd_plugins/stack_map.yaml +0 -0
  637. {codd_dev-3.25.0 → codd_dev-3.27.0}/docs/cookbook/cdp_browser/README.md +0 -0
  638. {codd_dev-3.25.0 → codd_dev-3.27.0}/docs/cookbook/presentation_aggregation/README.md +0 -0
  639. {codd_dev-3.25.0 → codd_dev-3.27.0}/docs/requirements/README.md +0 -0
  640. {codd_dev-3.25.0 → codd_dev-3.27.0}/examples/README.md +0 -0
  641. {codd_dev-3.25.0 → codd_dev-3.27.0}/skills/codd-assemble/SKILL.md +0 -0
  642. {codd_dev-3.25.0 → codd_dev-3.27.0}/skills/codd-evolve/SKILL.md +0 -0
  643. {codd_dev-3.25.0 → codd_dev-3.27.0}/skills/codd-fable-consult/SKILL.md +0 -0
  644. {codd_dev-3.25.0 → codd_dev-3.27.0}/skills/codd-generate/SKILL.md +0 -0
  645. {codd_dev-3.25.0 → codd_dev-3.27.0}/skills/codd-greenfield/SKILL.md +0 -0
  646. {codd_dev-3.25.0 → codd_dev-3.27.0}/skills/codd-impact/SKILL.md +0 -0
  647. {codd_dev-3.25.0 → codd_dev-3.27.0}/skills/codd-init/SKILL.md +0 -0
  648. {codd_dev-3.25.0 → codd_dev-3.27.0}/skills/codd-propagate/SKILL.md +0 -0
  649. {codd_dev-3.25.0 → codd_dev-3.27.0}/skills/codd-restore/SKILL.md +0 -0
  650. {codd_dev-3.25.0 → codd_dev-3.27.0}/skills/codd-scan/SKILL.md +0 -0
  651. {codd_dev-3.25.0 → codd_dev-3.27.0}/skills/codd-validate/SKILL.md +0 -0
  652. {codd_dev-3.25.0 → codd_dev-3.27.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.25.0
3
+ Version: 3.27.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.25.0"
3
+ __version__ = "3.27.0"
@@ -0,0 +1,32 @@
1
+ """Shared JSON serialization defaults for CoDD.
2
+
3
+ Design-doc frontmatter and impact/event payloads can carry values the stdlib
4
+ ``json`` encoder rejects — most commonly a bare ``date: 2026-05-29`` which PyYAML
5
+ parses to a :class:`datetime.date` (issue #28). Every ``json.dumps`` that may
6
+ serialize frontmatter-derived or impact/event data must pass
7
+ ``default=json_default`` so serialization never raises.
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ import json
13
+ from datetime import date, datetime
14
+ from typing import Any
15
+
16
+
17
+ def json_default(obj: Any) -> Any:
18
+ """Fallback for ``json.dumps(default=...)``.
19
+
20
+ Coerce date/datetime to ISO 8601 and any other non-serializable value to its
21
+ string form so serialization never raises. Generic by design: not tied to any
22
+ field name, project, or code path.
23
+ """
24
+ if isinstance(obj, (date, datetime)):
25
+ return obj.isoformat()
26
+ return str(obj)
27
+
28
+
29
+ def dumps(obj: Any, **kwargs: Any) -> str:
30
+ """``json.dumps`` with :func:`json_default` pre-wired (override via kwargs)."""
31
+ kwargs.setdefault("default", json_default)
32
+ return json.dumps(obj, **kwargs)
@@ -214,6 +214,37 @@ _CPP_HEADER_NOT_FOUND_CLANG = re.compile(
214
214
  r"^'(?P<header>[^']+)'\s+file not found\b"
215
215
  )
216
216
 
217
+ #: GNU ld's undefined-reference diagnostic — the LINK-time analogue of the
218
+ #: undeclared-symbol family (an implementation artifact fails to DEFINE a symbol
219
+ #: another artifact demands). Two shapes, both anchored on the message tail:
220
+ #: * ``/usr/bin/ld: file.cpp:(.text+0x40): undefined reference to `sym'``
221
+ #: * ``file.cpp:(.text+0x40): undefined reference to `sym'`` (no ld prefix)
222
+ #: The referencing TU (``file.cpp``) and the SYMBOL are captured: the symbol is the
223
+ #: repair-feedback identity (WHAT is missing), the TU the best-available file
224
+ #: attribution (WHO demands it). lld/mold keep the same message tail. Without this
225
+ #: regex a pure link failure had NO parseable diagnostic and collapsed to an opaque
226
+ #: environment_build_error, aborting the repair loop (cpp2 exprcalc dogfood,
227
+ #: 2026-07-11).
228
+ _CPP_LD_UNDEFINED_RE = re.compile(
229
+ r"^(?:\S*ld(?:\.\w+)?:\s*)?"
230
+ r"(?:(?P<path>[^\s:][^:\n]*\.(?:h|hpp|hh|hxx|c|cc|cpp|cxx|cppm|ixx)):\(\S*\):\s*)?"
231
+ r"undefined reference to [`'](?P<symbol>[^']+)'"
232
+ )
233
+
234
+ #: ld's two-line context header (``…/main.cpp.o: in function `main':``) — context
235
+ #: for the positioned undefined-reference that follows, never a diagnostic itself.
236
+ _CPP_LD_CONTEXT_RE = re.compile(
237
+ r"^(?:\S*ld(?:\.\w+)?:\s*)?\S+\.o(?:bj)?:\s*in function\s"
238
+ )
239
+
240
+ #: collect2's sign-off (``collect2: error: ld returned 1 exit status``) — a SUMMARY
241
+ #: epilog after the explicit ld error lines above it. Skipped in PARSING only (the
242
+ #: undefined-reference findings are the authority); deliberately NOT recognized in
243
+ #: the benign-accounting path, so a collect2 line with NO accompanying parsed
244
+ #: diagnostic stays an honest opaque RED (anti-false-green — same reasoning as the
245
+ #: ``ninja:`` note above).
246
+ _CPP_LD_EPILOG_RE = re.compile(r"^collect2:\s*(?:fatal error|error):\s*ld returned")
247
+
217
248
  #: cmake progress / informational chatter that is NOT a failure — the C++ analogue
218
249
  #: of Go's ``# pkg`` headers + ``ok``/``?`` run-summary noise. ``--`` status lines
219
250
  #: (``-- Configuring done``, ``-- Detecting C compiler ...``, ``-- Build files have
@@ -412,6 +443,7 @@ def _parse_cpp_tool_output(
412
443
  """
413
444
  findings: list[ImplementOracleFinding] = []
414
445
  failed_paths: list[str] = []
446
+ seen_ld_refs: set[tuple[str | None, str]] = set()
415
447
 
416
448
  def _add(category: str, code: str, message: str, rel: str | None) -> None:
417
449
  findings.append(
@@ -437,6 +469,28 @@ def _parse_cpp_tool_output(
437
469
  ):
438
470
  continue
439
471
 
472
+ # ld undefined-reference → missing_symbol, deduped per (TU, symbol): ld
473
+ # repeats the same reference once per call site; per-site duplicates add
474
+ # no repair signal. The symbol identity rides the message (feedback).
475
+ ld = _CPP_LD_UNDEFINED_RE.match(line)
476
+ if ld is not None:
477
+ symbol = ld.group("symbol").strip()
478
+ raw_path = ld.group("path")
479
+ rel = _cpp_rel_path(raw_path, project_root) if raw_path else None
480
+ key = (rel, symbol)
481
+ if key not in seen_ld_refs:
482
+ seen_ld_refs.add(key)
483
+ _add(
484
+ EVIDENCE_MISSING_SYMBOL,
485
+ "CPP_LD_UNDEFINED_REFERENCE",
486
+ f"undefined reference to `{symbol}' (link-time; referenced "
487
+ f"from {rel or 'unknown TU'})",
488
+ rel,
489
+ )
490
+ continue
491
+ if _CPP_LD_CONTEXT_RE.match(line) or _CPP_LD_EPILOG_RE.match(line):
492
+ continue # ld context / collect2 epilog — the reference lines above are the authority
493
+
440
494
  m = _CPP_DIAG_LINE.match(line)
441
495
  if m is not None:
442
496
  severity = (m.group("severity") or "").strip().lower()
@@ -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),
@@ -14,7 +14,7 @@ from typing import Any
14
14
  import yaml
15
15
 
16
16
  from codd.discovery import scan_exclude_patterns
17
- from codd.frontmatter import read_frontmatter
17
+ from codd.frontmatter import as_list, read_frontmatter
18
18
  from codd.graph import CEG
19
19
  from codd.parsing import get_extractor
20
20
  from codd.path_safety import require_project_path, resolve_project_path
@@ -344,8 +344,14 @@ def _load_frontmatter(ceg: CEG, doc_path: str, codd: dict):
344
344
  node_type = codd.get("type", "document")
345
345
  ceg.upsert_node(node_id, node_type, path=doc_path, name=node_id)
346
346
 
347
- # Process depends_on (outgoing edges from this document)
348
- for dep in codd.get("depends_on", []):
347
+ # Process depends_on (outgoing edges from this document).
348
+ # ``as_list`` normalizes null-vs-missing: a bare ``depends_on:`` key parses
349
+ # to None, which would raise TypeError on iteration (issue #33). Non-dict
350
+ # entries are malformed shape (the validator reports them); skip them here so
351
+ # a scan never crashes on hand-authored frontmatter.
352
+ for dep in as_list(codd.get("depends_on")):
353
+ if not isinstance(dep, dict):
354
+ continue
349
355
  target_id = dep.get("id")
350
356
  if not target_id:
351
357
  continue
@@ -357,8 +363,11 @@ def _load_frontmatter(ceg: CEG, doc_path: str, codd: dict):
357
363
  ceg.add_evidence(edge_id, "frontmatter", "frontmatter", 0.9,
358
364
  detail=f"from {doc_path}")
359
365
 
360
- # Process depended_by (incoming edges — other things that depend on this)
361
- for dep in codd.get("depended_by", []):
366
+ # Process depended_by (incoming edges — other things that depend on this).
367
+ # Same null-vs-missing normalization + malformed-shape skip as depends_on.
368
+ for dep in as_list(codd.get("depended_by")):
369
+ if not isinstance(dep, dict):
370
+ continue
362
371
  source_id = dep.get("id")
363
372
  if not source_id:
364
373
  continue
@@ -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
 
@@ -5,6 +5,7 @@ from __future__ import annotations
5
5
  import json
6
6
  from pathlib import Path
7
7
 
8
+ from codd.json_safe import json_default
8
9
  from codd.watch.events import FileChangeEvent
9
10
 
10
11
  PROPAGATION_LOG_PATH = ".codd/propagation_log.jsonl"
@@ -26,7 +27,9 @@ def append_propagation_log(
26
27
 
27
28
  with log_path.open("w", encoding="utf-8") as handle:
28
29
  for item in entries:
29
- handle.write(json.dumps(item, ensure_ascii=False) + "\n")
30
+ # default=json_default: a propagated design doc's `date:` frontmatter
31
+ # parses to datetime.date, which raw json.dumps rejects (issue #28).
32
+ handle.write(json.dumps(item, ensure_ascii=False, default=json_default) + "\n")
30
33
 
31
34
 
32
35
  def read_propagation_log(project_root: Path) -> list[dict]:
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "codd-dev"
7
- version = "3.25.0"
7
+ version = "3.27.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