codd-dev 3.7.3__tar.gz → 3.7.4__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 (638) hide show
  1. {codd_dev-3.7.3 → codd_dev-3.7.4}/PKG-INFO +1 -1
  2. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/__init__.py +1 -1
  3. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/builder.py +163 -3
  4. codd_dev-3.7.4/codd/dag/defaults/cpp_embedded.yaml +2 -0
  5. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/extractor.py +6 -1
  6. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/parsing/regex_strategies.py +169 -0
  7. {codd_dev-3.7.3 → codd_dev-3.7.4}/pyproject.toml +1 -1
  8. codd_dev-3.7.3/codd/dag/defaults/cpp_embedded.yaml +0 -2
  9. {codd_dev-3.7.3 → codd_dev-3.7.4}/.gitignore +0 -0
  10. {codd_dev-3.7.3 → codd_dev-3.7.4}/LICENSE +0 -0
  11. {codd_dev-3.7.3 → codd_dev-3.7.4}/README.md +0 -0
  12. {codd_dev-3.7.3 → codd_dev-3.7.4}/bench_fixture/README.md +0 -0
  13. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/__main__.py +0 -0
  14. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/_git_helper.py +0 -0
  15. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/action_outcome.py +0 -0
  16. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/ai_invoke.py +0 -0
  17. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/ai_patch.py +0 -0
  18. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/artifact_contract.py +0 -0
  19. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/artifact_ids.py +0 -0
  20. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/artifacts/catalog.yaml +0 -0
  21. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/ask_user_question_adapter.py +0 -0
  22. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/assembler.py +0 -0
  23. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/bridge.py +0 -0
  24. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/brownfield/__init__.py +0 -0
  25. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/brownfield/pipeline.py +0 -0
  26. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/capability_completeness.py +0 -0
  27. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/claude_cli.py +0 -0
  28. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/cli.py +0 -0
  29. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/clustering.py +0 -0
  30. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/coherence_adapters.py +0 -0
  31. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/coherence_engine.py +0 -0
  32. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/confidence.py +0 -0
  33. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/config.py +0 -0
  34. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/config_schema.py +0 -0
  35. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/contracts.py +0 -0
  36. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/contracts_registry/__init__.py +0 -0
  37. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/contracts_registry/__main__.py +0 -0
  38. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/contracts_registry/certify.py +0 -0
  39. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/contracts_registry/generate_matrix.py +0 -0
  40. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/contracts_registry/registry.py +0 -0
  41. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/coverage_auditor.py +0 -0
  42. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/coverage_execution_coherence.py +0 -0
  43. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/coverage_metrics.py +0 -0
  44. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/__init__.py +0 -0
  45. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/auto_repair.py +0 -0
  46. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/checks/__init__.py +0 -0
  47. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/checks/_one_to_many_detection.py +0 -0
  48. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/checks/artifact_contract_check.py +0 -0
  49. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/checks/cardinality_coverage.py +0 -0
  50. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/checks/ci_health.py +0 -0
  51. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/checks/dependency_freshness.py +0 -0
  52. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/checks/depends_on_consistency.py +0 -0
  53. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/checks/deployment_completeness.py +0 -0
  54. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/checks/edge_validity.py +0 -0
  55. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/checks/environment_coverage.py +0 -0
  56. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/checks/extraction_diagnostics.py +0 -0
  57. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/checks/implementation_coverage.py +0 -0
  58. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/checks/negative_space.py +0 -0
  59. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/checks/node_completeness.py +0 -0
  60. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/checks/opt_out.py +0 -0
  61. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/checks/resource_flow_coherence.py +0 -0
  62. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/checks/semantic_contract_conflict.py +0 -0
  63. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/checks/stale_evidence.py +0 -0
  64. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/checks/task_completion.py +0 -0
  65. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/checks/transitive_closure.py +0 -0
  66. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/checks/ui_coherence.py +0 -0
  67. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/checks/user_journey_coherence.py +0 -0
  68. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/coverage_axes.py +0 -0
  69. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/defaults/cli.yaml +0 -0
  70. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/defaults/csharp.yaml +0 -0
  71. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/defaults/elixir.yaml +0 -0
  72. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/defaults/generic.yaml +0 -0
  73. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/defaults/iot.yaml +0 -0
  74. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/defaults/java.yaml +0 -0
  75. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/defaults/kotlin.yaml +0 -0
  76. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/defaults/mobile.yaml +0 -0
  77. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/defaults/ruby.yaml +0 -0
  78. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/defaults/rust.yaml +0 -0
  79. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/defaults/scala.yaml +0 -0
  80. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/defaults/swift.yaml +0 -0
  81. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/defaults/test_frameworks.yaml +0 -0
  82. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/defaults/web.yaml +0 -0
  83. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/extractor.py +0 -0
  84. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/impact.py +0 -0
  85. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/materiality.py +0 -0
  86. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/metadata_access.py +0 -0
  87. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/result_status.py +0 -0
  88. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dag/runner.py +0 -0
  89. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/defaults.py +0 -0
  90. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/defaults.yaml +0 -0
  91. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/dependency_lock_coherence.py +0 -0
  92. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deploy_targets/__init__.py +0 -0
  93. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deploy_targets/app_service.py +0 -0
  94. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deploy_targets/base.py +0 -0
  95. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deploy_targets/docker_compose.py +0 -0
  96. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deployer.py +0 -0
  97. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deployment/__init__.py +0 -0
  98. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deployment/checks/__init__.py +0 -0
  99. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deployment/defaults/deploy_targets.yaml +0 -0
  100. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
  101. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deployment/defaults/schema_providers.yaml +0 -0
  102. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deployment/defaults/verification_templates.yaml +0 -0
  103. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deployment/extractor.py +0 -0
  104. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deployment/providers/__init__.py +0 -0
  105. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deployment/providers/ai_command.py +0 -0
  106. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deployment/providers/ai_command_factory.py +0 -0
  107. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deployment/providers/codex_app_server.py +0 -0
  108. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deployment/providers/llm_consideration.py +0 -0
  109. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deployment/providers/schema/__init__.py +0 -0
  110. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deployment/providers/schema/prisma.py +0 -0
  111. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deployment/providers/target/__init__.py +0 -0
  112. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deployment/providers/target/docker_compose.py +0 -0
  113. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deployment/providers/verification/__init__.py +0 -0
  114. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
  115. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deployment/providers/verification/cdp_browser.py +0 -0
  116. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deployment/providers/verification/cdp_engines.py +0 -0
  117. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
  118. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deployment/providers/verification/cdp_wire.py +0 -0
  119. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deployment/providers/verification/curl.py +0 -0
  120. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deployment/providers/verification/form_strategies.py +0 -0
  121. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deployment/providers/verification/means_catalog.py +0 -0
  122. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deployment/providers/verification/playwright.py +0 -0
  123. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deployment/providers/verification/pytest_http.py +0 -0
  124. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/deployment/providers/verification/vitest.py +0 -0
  125. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/design_md.py +0 -0
  126. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/diff/__init__.py +0 -0
  127. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/diff/apply.py +0 -0
  128. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/diff/engine.py +0 -0
  129. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/diff/persistence.py +0 -0
  130. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/diff/templates/diff_prompt.md +0 -0
  131. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/discovery.py +0 -0
  132. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/drift.py +0 -0
  133. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/e2e_contract_coherence.py +0 -0
  134. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/e2e_extractor.py +0 -0
  135. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/e2e_generator.py +0 -0
  136. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/e2e_harness.py +0 -0
  137. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/e2e_runner.py +0 -0
  138. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/elicit/__init__.py +0 -0
  139. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/elicit/apply.py +0 -0
  140. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/elicit/engine.py +0 -0
  141. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/elicit/finding.py +0 -0
  142. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/elicit/formatters/__init__.py +0 -0
  143. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/elicit/formatters/base.py +0 -0
  144. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/elicit/formatters/interactive.py +0 -0
  145. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/elicit/formatters/json_fmt.py +0 -0
  146. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/elicit/formatters/md.py +0 -0
  147. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/elicit/gap_to_ask.py +0 -0
  148. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/elicit/lexicon_loader.py +0 -0
  149. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/elicit/persistence.py +0 -0
  150. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/elicit/promote.py +0 -0
  151. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/elicit/routing.py +0 -0
  152. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
  153. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/env_refs.py +0 -0
  154. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/extract_ai.py +0 -0
  155. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/extract_paths.py +0 -0
  156. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/fix/__init__.py +0 -0
  157. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/fix/candidate_selector.py +0 -0
  158. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/fix/design_updater.py +0 -0
  159. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/fix/impact_planner.py +0 -0
  160. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/fix/impl_propagation.py +0 -0
  161. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/fix/interactive_prompt.py +0 -0
  162. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/fix/phenomenon_fixer.py +0 -0
  163. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/fix/phenomenon_parser.py +0 -0
  164. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/fix/risk_classifier.py +0 -0
  165. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/fix/templates/clarification_question.txt +0 -0
  166. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/fix/templates/design_update.txt +0 -0
  167. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/fix/templates/impl_update.txt +0 -0
  168. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/fix/templates/phenomenon_parse.txt +0 -0
  169. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/fix/templates/risk_assessment.txt +0 -0
  170. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/fix/templates_loader.py +0 -0
  171. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/fixer.py +0 -0
  172. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/fixup_drift.py +0 -0
  173. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/fixup_drift_strategies/__init__.py +0 -0
  174. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
  175. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
  176. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/fixup_drift_strategies/url_drift.py +0 -0
  177. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/frontmatter.py +0 -0
  178. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/generator.py +0 -0
  179. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/git_evidence.py +0 -0
  180. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/graph.py +0 -0
  181. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/greenfield/__init__.py +0 -0
  182. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/greenfield/pipeline.py +0 -0
  183. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/hitl_session.py +0 -0
  184. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/hooks/__init__.py +0 -0
  185. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/hooks/pre-commit +0 -0
  186. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/hooks/recipes/claude_requirements_nudge.json +0 -0
  187. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/hooks/recipes/claude_settings_example.json +0 -0
  188. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/hooks/recipes/codex_hook.sh +0 -0
  189. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/hooks/recipes/git_post_commit.sh +0 -0
  190. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/hooks/recipes/git_pre_commit.sh +0 -0
  191. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/iac_nfr.py +0 -0
  192. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/implement_oracle.py +0 -0
  193. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/implement_oracle_scope.py +0 -0
  194. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/implement_oracle_types.py +0 -0
  195. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/implementer/__init__.py +0 -0
  196. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/implementer/chunked_runner.py +0 -0
  197. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/implementer/typecheck_loop.py +0 -0
  198. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/implementer.py +0 -0
  199. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/import_coherence.py +0 -0
  200. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/inheritance.py +0 -0
  201. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/init/__init__.py +0 -0
  202. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/init/lexicon_suggest.py +0 -0
  203. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/init/llm_lexicon_suggester.py +0 -0
  204. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/init/stack_detector.py +0 -0
  205. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/knowledge_fetcher.py +0 -0
  206. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/languages/__init__.py +0 -0
  207. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/languages/adapters/__init__.py +0 -0
  208. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/languages/adapters/implement_oracle.py +0 -0
  209. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/languages/adapters/oracle_go.py +0 -0
  210. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/languages/adapters/oracle_python.py +0 -0
  211. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/languages/adapters/oracle_typescript.py +0 -0
  212. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/languages/adapters/runner_report.py +0 -0
  213. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/languages/builtin_adapters.py +0 -0
  214. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/languages/compat.py +0 -0
  215. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/languages/contract.py +0 -0
  216. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/languages/loader.py +0 -0
  217. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/languages/oracle_executor.py +0 -0
  218. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/languages/path_planner.py +0 -0
  219. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/languages/profile.py +0 -0
  220. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/languages/profiles/go.yaml +0 -0
  221. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/languages/profiles/python.yaml +0 -0
  222. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/languages/profiles/typescript.yaml +0 -0
  223. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/languages/registry.py +0 -0
  224. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/languages/verify_executor.py +0 -0
  225. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/languages/verify_plan.py +0 -0
  226. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/lexicon.py +0 -0
  227. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/lexicon_cli/__init__.py +0 -0
  228. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/lexicon_cli/formatters/__init__.py +0 -0
  229. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/lexicon_cli/formatters/html.py +0 -0
  230. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
  231. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/lexicon_cli/formatters/md.py +0 -0
  232. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/lexicon_cli/inspector.py +0 -0
  233. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/lexicon_cli/manager.py +0 -0
  234. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/lexicon_cli/reporter.py +0 -0
  235. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/lexicon_cli/threshold.py +0 -0
  236. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/llm/__init__.py +0 -0
  237. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/llm/approval.py +0 -0
  238. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/llm/best_practice_augmenter.py +0 -0
  239. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/llm/criteria_expander.py +0 -0
  240. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/llm/design_doc_extractor.py +0 -0
  241. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/llm/impl_step_deriver.py +0 -0
  242. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/llm/means_catalog_loader.py +0 -0
  243. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/llm/parser.py +0 -0
  244. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/llm/plan_deriver.py +0 -0
  245. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/llm/prompt_builder.py +0 -0
  246. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/llm/strategy_validator.py +0 -0
  247. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/llm/templates/best_practice_augment_meta.md +0 -0
  248. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/llm/templates/criteria_expand_meta.md +0 -0
  249. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/llm/templates/design_doc_extract_meta.md +0 -0
  250. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/llm/templates/impl_step_derive_meta.md +0 -0
  251. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
  252. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/llm/templates/meta_instruction.md +0 -0
  253. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/llm/templates/plan_derive_meta.md +0 -0
  254. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/llm/templates/verification_means_catalog.yaml +0 -0
  255. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/mcp_server.py +0 -0
  256. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/measure.py +0 -0
  257. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/operational_e2e_audit.py +0 -0
  258. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/operations_derive.py +0 -0
  259. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/parsing/__init__.py +0 -0
  260. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/parsing/_shared.py +0 -0
  261. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/parsing/api_specs.py +0 -0
  262. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/parsing/extractor_registry.py +0 -0
  263. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/parsing/filesystem_routes.py +0 -0
  264. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/parsing/iac.py +0 -0
  265. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/parsing/python_ast.py +0 -0
  266. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/parsing/schemas.py +0 -0
  267. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/parsing/tests_builddeps.py +0 -0
  268. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/parsing/treesitter.py +0 -0
  269. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/path_safety.py +0 -0
  270. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/planner.py +0 -0
  271. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/policy.py +0 -0
  272. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/preflight/__init__.py +0 -0
  273. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/preflight/defaults/cli.yaml +0 -0
  274. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/preflight/defaults/generic.yaml +0 -0
  275. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/preflight/defaults/iot.yaml +0 -0
  276. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/preflight/defaults/mobile.yaml +0 -0
  277. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/preflight/defaults/web.yaml +0 -0
  278. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/project_types.py +0 -0
  279. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/propagate.py +0 -0
  280. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/propagation_common.py +0 -0
  281. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/propagator.py +0 -0
  282. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/reconciliation_ledger.py +0 -0
  283. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/reference_resolution.py +0 -0
  284. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/registry.py +0 -0
  285. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/repair/__init__.py +0 -0
  286. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/repair/approval_repair.py +0 -0
  287. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/repair/auto_scope_guard.py +0 -0
  288. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/repair/engine.py +0 -0
  289. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/repair/git_patcher.py +0 -0
  290. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/repair/history.py +0 -0
  291. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/repair/llm_repair_engine.py +0 -0
  292. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/repair/loop.py +0 -0
  293. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/repair/primary_picker.py +0 -0
  294. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/repair/proof_breaks.py +0 -0
  295. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/repair/repair_result.py +0 -0
  296. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/repair/repairability_classifier.py +0 -0
  297. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/repair/schema.py +0 -0
  298. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/repair/templates/analyze_meta.md +0 -0
  299. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/repair/templates/propose_meta.md +0 -0
  300. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/repair/templates/repair_strategy_meta.md +0 -0
  301. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/repair/templates/repairability_meta.md +0 -0
  302. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/repair/test_failure_attribution.py +0 -0
  303. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/repair/verify_runner.py +0 -0
  304. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/repair_slice.py +0 -0
  305. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/require.py +0 -0
  306. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/require_plugins.py +0 -0
  307. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/require_propagate.py +0 -0
  308. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/required_artifacts/defaults/cli.yaml +0 -0
  309. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/required_artifacts/defaults/generic.yaml +0 -0
  310. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/required_artifacts/defaults/iot.yaml +0 -0
  311. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/required_artifacts/defaults/mobile.yaml +0 -0
  312. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/required_artifacts/defaults/web.yaml +0 -0
  313. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/required_artifacts_deriver.py +0 -0
  314. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/requirement_completeness/defaults/cli.yaml +0 -0
  315. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/requirement_completeness/defaults/generic.yaml +0 -0
  316. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/requirement_completeness/defaults/iot.yaml +0 -0
  317. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
  318. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/requirement_completeness/defaults/web.yaml +0 -0
  319. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/requirement_completeness_auditor.py +0 -0
  320. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/requirement_reconciliation.py +0 -0
  321. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/requirements_meta.py +0 -0
  322. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/restoration_report.py +0 -0
  323. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/restore.py +0 -0
  324. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/routes_extractor.py +0 -0
  325. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/runtime_smoke/__init__.py +0 -0
  326. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/runtime_smoke/checks.py +0 -0
  327. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/runtime_smoke/config.py +0 -0
  328. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/runtime_smoke/report.py +0 -0
  329. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/runtime_smoke/runner.py +0 -0
  330. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/scanner.py +0 -0
  331. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/schema_refs.py +0 -0
  332. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/screen_flow_validator.py +0 -0
  333. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/screen_transition_extractor.py +0 -0
  334. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/screen_transitions/defaults.yaml +0 -0
  335. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/skills_cli/__init__.py +0 -0
  336. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/skills_cli/discovery.py +0 -0
  337. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/skills_cli/manager.py +0 -0
  338. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/skills_cli/paths.py +0 -0
  339. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/stack/__init__.py +0 -0
  340. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/stack/adapters/__init__.py +0 -0
  341. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/stack/adapters/_base.py +0 -0
  342. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/stack/adapters/nextjs.py +0 -0
  343. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/stack/adapters/playwright.py +0 -0
  344. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/stack/adapters/prisma.py +0 -0
  345. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/stack/command_authenticity.py +0 -0
  346. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/stack/command_override.py +0 -0
  347. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/stack/command_plan.py +0 -0
  348. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/stack/compose.py +0 -0
  349. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/stack/loader.py +0 -0
  350. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/stack/lock.py +0 -0
  351. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/stack/obligations.py +0 -0
  352. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/stack/profile.py +0 -0
  353. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/stack/profiles/addons/playwright.yaml +0 -0
  354. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/stack/profiles/addons/prisma.yaml +0 -0
  355. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/stack/profiles/frameworks/nextjs.yaml +0 -0
  356. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/stack/project.py +0 -0
  357. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/stack/registry.py +0 -0
  358. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/stack/replacement_proof.py +0 -0
  359. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/stack/resolve.py +0 -0
  360. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/surface_reconciliation.py +0 -0
  361. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/synth.py +0 -0
  362. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/templates/codd.yaml.tmpl +0 -0
  363. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/templates/conventions.yaml.tmpl +0 -0
  364. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/templates/data_dependencies.yaml.tmpl +0 -0
  365. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/templates/doc_links.yaml.tmpl +0 -0
  366. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/templates/extract_ai_prompt_baseline.md +0 -0
  367. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/templates/extracted/api-contract.md.j2 +0 -0
  368. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
  369. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/templates/extracted/module-detail.md.j2 +0 -0
  370. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/templates/extracted/schema-design.md.j2 +0 -0
  371. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/templates/extracted/system-context.md.j2 +0 -0
  372. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/templates/gitignore.tmpl +0 -0
  373. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/templates/lexicon_questions.md +0 -0
  374. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/templates/lexicon_schema.yaml +0 -0
  375. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/templates/overrides.yaml.tmpl +0 -0
  376. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/test_detection.py +0 -0
  377. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/test_import_coherence.py +0 -0
  378. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/traceability.py +0 -0
  379. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/validator.py +0 -0
  380. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/vb_marker_authenticity.py +0 -0
  381. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/vb_rerun_scope.py +0 -0
  382. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/verifiable_behavior_audit.py +0 -0
  383. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/watch/__init__.py +0 -0
  384. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/watch/events.py +0 -0
  385. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/watch/propagation_log.py +0 -0
  386. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/watch/propagation_pipeline.py +0 -0
  387. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/watch/test_runner.py +0 -0
  388. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/watch/watcher.py +0 -0
  389. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd/wiring.py +0 -0
  390. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
  391. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
  392. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
  393. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
  394. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
  395. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
  396. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
  397. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
  398. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
  399. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
  400. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
  401. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
  402. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
  403. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
  404. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
  405. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
  406. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
  407. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
  408. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
  409. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
  410. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
  411. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
  412. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
  413. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
  414. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
  415. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
  416. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
  417. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
  418. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
  419. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
  420. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
  421. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
  422. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
  423. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
  424. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
  425. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
  426. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
  427. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
  428. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
  429. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
  430. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
  431. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
  432. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
  433. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
  434. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
  435. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
  436. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
  437. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
  438. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
  439. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
  440. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
  441. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
  442. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
  443. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
  444. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
  445. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
  446. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
  447. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
  448. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
  449. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/data_aggregation_policies/coverage_matrix.md +0 -0
  450. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/data_aggregation_policies/elicit_extend.md +0 -0
  451. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/data_aggregation_policies/lexicon.yaml +0 -0
  452. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/data_aggregation_policies/manifest.yaml +0 -0
  453. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/data_aggregation_policies/recommended_kinds.yaml +0 -0
  454. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/data_aggregation_policies/severity_rules.yaml +0 -0
  455. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
  456. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
  457. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
  458. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
  459. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
  460. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
  461. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
  462. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
  463. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
  464. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
  465. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
  466. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
  467. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
  468. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
  469. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
  470. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
  471. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
  472. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
  473. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
  474. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
  475. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
  476. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
  477. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
  478. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
  479. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
  480. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
  481. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
  482. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
  483. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
  484. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
  485. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
  486. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
  487. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
  488. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
  489. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
  490. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
  491. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
  492. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
  493. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
  494. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
  495. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
  496. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
  497. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
  498. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
  499. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
  500. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
  501. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
  502. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
  503. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
  504. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
  505. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
  506. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
  507. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
  508. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
  509. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
  510. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
  511. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
  512. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
  513. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
  514. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
  515. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
  516. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
  517. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
  518. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
  519. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
  520. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
  521. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
  522. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
  523. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
  524. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
  525. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
  526. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
  527. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
  528. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
  529. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
  530. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
  531. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
  532. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
  533. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
  534. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
  535. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
  536. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
  537. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
  538. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
  539. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
  540. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
  541. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
  542. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
  543. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
  544. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
  545. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
  546. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
  547. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
  548. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
  549. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
  550. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
  551. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
  552. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
  553. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
  554. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
  555. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
  556. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
  557. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
  558. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
  559. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
  560. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
  561. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
  562. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
  563. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
  564. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
  565. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
  566. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
  567. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
  568. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
  569. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
  570. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
  571. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
  572. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
  573. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
  574. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
  575. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
  576. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
  577. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
  578. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
  579. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
  580. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
  581. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
  582. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
  583. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
  584. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
  585. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
  586. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
  587. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
  588. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
  589. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
  590. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
  591. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
  592. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
  593. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
  594. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
  595. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
  596. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
  597. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
  598. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
  599. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
  600. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
  601. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
  602. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
  603. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
  604. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
  605. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
  606. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
  607. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
  608. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
  609. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
  610. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
  611. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
  612. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
  613. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
  614. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
  615. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
  616. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
  617. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
  618. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
  619. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
  620. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
  621. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
  622. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
  623. {codd_dev-3.7.3 → codd_dev-3.7.4}/codd_plugins/stack_map.yaml +0 -0
  624. {codd_dev-3.7.3 → codd_dev-3.7.4}/docs/cookbook/cdp_browser/README.md +0 -0
  625. {codd_dev-3.7.3 → codd_dev-3.7.4}/docs/cookbook/presentation_aggregation/README.md +0 -0
  626. {codd_dev-3.7.3 → codd_dev-3.7.4}/docs/requirements/README.md +0 -0
  627. {codd_dev-3.7.3 → codd_dev-3.7.4}/examples/README.md +0 -0
  628. {codd_dev-3.7.3 → codd_dev-3.7.4}/skills/codd-assemble/SKILL.md +0 -0
  629. {codd_dev-3.7.3 → codd_dev-3.7.4}/skills/codd-evolve/SKILL.md +0 -0
  630. {codd_dev-3.7.3 → codd_dev-3.7.4}/skills/codd-generate/SKILL.md +0 -0
  631. {codd_dev-3.7.3 → codd_dev-3.7.4}/skills/codd-greenfield/SKILL.md +0 -0
  632. {codd_dev-3.7.3 → codd_dev-3.7.4}/skills/codd-impact/SKILL.md +0 -0
  633. {codd_dev-3.7.3 → codd_dev-3.7.4}/skills/codd-init/SKILL.md +0 -0
  634. {codd_dev-3.7.3 → codd_dev-3.7.4}/skills/codd-propagate/SKILL.md +0 -0
  635. {codd_dev-3.7.3 → codd_dev-3.7.4}/skills/codd-restore/SKILL.md +0 -0
  636. {codd_dev-3.7.3 → codd_dev-3.7.4}/skills/codd-scan/SKILL.md +0 -0
  637. {codd_dev-3.7.3 → codd_dev-3.7.4}/skills/codd-validate/SKILL.md +0 -0
  638. {codd_dev-3.7.3 → codd_dev-3.7.4}/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.7.3
3
+ Version: 3.7.4
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.7.3"
3
+ __version__ = "3.7.4"
@@ -924,6 +924,19 @@ def _resolve_import_target(
924
924
  return resolved
925
925
  return None
926
926
 
927
+ # C++ ``#include`` specifiers are dispatched by the IMPORTING file's C/C++
928
+ # suffix (DATA, not a ``language ==`` core branch). Resolution is PATH-based
929
+ # (the specifier already carries its extension, e.g. ``fmt/core.h``), the key
930
+ # divergence from Java's FQN→path synthesis: a quote-form include resolves
931
+ # relative-to-file first, then via include roots; an angle-form include is
932
+ # system/STL and produces no edge.
933
+ if file_path.suffix in _CPP_SOURCE_SUFFIXES:
934
+ for candidate in _cpp_include_candidates(import_ref, file_path, path_to_node):
935
+ resolved = _resolve_file_candidate(candidate, path_to_node)
936
+ if resolved:
937
+ return resolved
938
+ return None
939
+
927
940
  candidates: list[Path] = []
928
941
  if _is_js_relative_specifier(import_ref):
929
942
  # JS/TS relative: ``./foo`` / ``../foo`` — resolve against the file dir
@@ -1107,6 +1120,105 @@ def _sorted_java_dir_files(package_dir: Path) -> list[Path]:
1107
1120
  )
1108
1121
 
1109
1122
 
1123
+ #: C/C++ source/header suffixes whose ``#include`` directives carry the intra-tree
1124
+ #: dependency graph. Used to suffix-dispatch the PATH-based resolver branch (DATA,
1125
+ #: not a ``language ==`` core gate). Kept in sync with the ``.h``/``.cc``/… keys of
1126
+ #: ``_SUFFIX_SPECIFIER_EXTRACTORS``.
1127
+ _CPP_SOURCE_SUFFIXES = frozenset({".h", ".hpp", ".hh", ".cc", ".cpp", ".cxx"})
1128
+
1129
+ #: Conventional C/C++ include-root directory names. A quote-form include such as
1130
+ #: ``"fmt/core.h"`` that is not relative to the including file is probed under
1131
+ #: these roots (``include`` covers fmt's ``include/fmt/*.h`` layout). Harvested
1132
+ #: header-node parent dirs are added at resolution time so unconventional roots
1133
+ #: still resolve from DATA.
1134
+ _CPP_INCLUDE_ROOTS = ("include", "src", "inc")
1135
+
1136
+
1137
+ def _cpp_include_candidates(
1138
+ import_ref: str,
1139
+ file_path: Path,
1140
+ path_to_node: dict[Path, str],
1141
+ ) -> list[Path]:
1142
+ """Map a C++ ``#include`` specifier to filesystem candidates (PATH-based).
1143
+
1144
+ The specifier is marker-prefixed by ``_extract_cpp_include_specifiers``:
1145
+
1146
+ * ``angle:vector`` (``#include <vector>``) → system/STL: NO candidates, so no
1147
+ edge forms (mirrors Java ``java.*`` producing no edge).
1148
+ * ``quote:fmt/core.h`` (``#include "fmt/core.h"``) → local header. The path
1149
+ ALREADY has its extension, so there is NO suffix synthesis (the divergence
1150
+ from Java's FQN→path mapping). Resolution order:
1151
+ 1. relative to the including file's directory (``file.parent / spec``);
1152
+ 2. each conventional include root (``include``/``src``/``inc``) under the
1153
+ project tree, located by walking up from the including file;
1154
+ 3. the parent directory of every header node already in the file-set
1155
+ (harvested from DATA), so unconventional include roots still resolve.
1156
+
1157
+ ``_resolve_file_candidate`` matches exact node paths first, so a fully-pathed
1158
+ candidate (``…/include/fmt/core.h``) resolves directly to its node.
1159
+ """
1160
+ if import_ref.startswith(_CPP_ANGLE_SPECIFIER):
1161
+ return []
1162
+ if import_ref.startswith(_CPP_QUOTE_SPECIFIER):
1163
+ spec = import_ref[len(_CPP_QUOTE_SPECIFIER):]
1164
+ else:
1165
+ # Defensive: an unmarked specifier (e.g. a future extractor) is treated
1166
+ # as a quote-form local include.
1167
+ spec = import_ref
1168
+ spec = spec.strip()
1169
+ if not spec:
1170
+ return []
1171
+
1172
+ rel = Path(spec)
1173
+ candidates: list[Path] = []
1174
+ # 1. Relative to the including file's own directory (quote-form's primary
1175
+ # rule — ``#include "lib/b.h"`` next to ``a.cc``).
1176
+ candidates.append((file_path.parent / rel).resolve())
1177
+
1178
+ # 2. Conventional include roots discovered by walking up the including file's
1179
+ # ancestors (so ``include/fmt/core.h`` resolves from ``src/format.cc``).
1180
+ seen: set[Path] = set()
1181
+ for ancestor in [file_path.parent, *file_path.parents]:
1182
+ for root_name in _CPP_INCLUDE_ROOTS:
1183
+ root = ancestor / root_name
1184
+ key = root.resolve()
1185
+ if key in seen:
1186
+ continue
1187
+ seen.add(key)
1188
+ candidates.append((root / rel).resolve())
1189
+
1190
+ # 3. Harvest header-node parent directories from the file-set (DATA), so an
1191
+ # unconventional include root still resolves the trailing path segment(s).
1192
+ for header_dir in _cpp_header_root_dirs(path_to_node):
1193
+ candidates.append((header_dir / rel).resolve())
1194
+
1195
+ return candidates
1196
+
1197
+
1198
+ def _cpp_header_root_dirs(path_to_node: dict[Path, str]) -> list[Path]:
1199
+ """Candidate include roots harvested from header nodes in the file-set.
1200
+
1201
+ For a header node ``…/include/fmt/core.h`` whose include path is ``fmt/core.h``
1202
+ the include ROOT is ``…/include``. We cannot know the split a priori, so we
1203
+ offer each header's parent AND grandparent dirs as roots; the joined
1204
+ candidate only resolves when it matches a real node path, so over-offering is
1205
+ harmless (no false edges).
1206
+ """
1207
+ roots: dict[str, Path] = {}
1208
+ for node_path in path_to_node:
1209
+ if node_path.suffix not in _CPP_HEADER_SUFFIXES:
1210
+ continue
1211
+ for ancestor in (node_path.parent, node_path.parent.parent):
1212
+ resolved = ancestor.resolve()
1213
+ roots[str(resolved)] = resolved
1214
+ return sorted(roots.values(), key=lambda path: len(path.parts), reverse=True)
1215
+
1216
+
1217
+ #: C/C++ header suffixes (subset of ``_CPP_SOURCE_SUFFIXES``) used to harvest
1218
+ #: include-root directories from the node file-set.
1219
+ _CPP_HEADER_SUFFIXES = frozenset({".h", ".hpp", ".hh"})
1220
+
1221
+
1110
1222
  def _infer_test_targets(
1111
1223
  test_path: Path,
1112
1224
  project_root: Path,
@@ -1197,14 +1309,59 @@ def _extract_java_import_specifiers(file_path: Path) -> list[str]:
1197
1309
  return fallback
1198
1310
 
1199
1311
 
1312
+ # C++ ``#include`` directives. The DAG resolver needs to know quote-form
1313
+ # (``"…"`` — local, relative-first) vs angle-form (``<…>`` — system/STL, no
1314
+ # edge), so the extractor preserves that distinction by prefixing a marker:
1315
+ # ``"fmt/core.h"`` → ``quote:fmt/core.h``
1316
+ # ``<vector>`` → ``angle:vector``
1317
+ # Built-in regex (NOT routed through the registry): tree-sitter-cpp is not
1318
+ # installed, and ``RegexExtractor.extract_import_specifiers`` returns ``[]`` for
1319
+ # C++, so a self-contained regex is the source of these specifiers. The marker
1320
+ # is stripped by the resolver's ``.suffix``-dispatched C++ branch.
1321
+ _CPP_QUOTE_SPECIFIER = "quote:"
1322
+ _CPP_ANGLE_SPECIFIER = "angle:"
1323
+ _CPP_INCLUDE_RE = re.compile(
1324
+ r'^\s*#\s*include\s*(?:"([^"]+)"|<([^>]+)>)',
1325
+ re.MULTILINE,
1326
+ )
1327
+
1328
+
1329
+ def _extract_cpp_include_specifiers(file_path: Path) -> list[str]:
1330
+ """Return raw C++ ``#include`` specifiers (quote/angle-marked) for the DAG.
1331
+
1332
+ Mirrors ``_extract_java_import_specifiers`` in role (suffix-dispatched raw
1333
+ specifier extraction) but uses a built-in regex because tree-sitter-cpp is
1334
+ absent. The quote/angle form is carried as a marker prefix so the
1335
+ PATH-based resolver can apply the right rule: quote-form resolves
1336
+ relative-to-file then via include roots; angle-form is system/STL and forms
1337
+ no edge (analogous to Java ``java.*`` producing no edge).
1338
+ """
1339
+
1340
+ content = file_path.read_text(encoding="utf-8", errors="ignore")
1341
+ specifiers: list[str] = []
1342
+ for quote_target, angle_target in _CPP_INCLUDE_RE.findall(content):
1343
+ if quote_target:
1344
+ specifiers.append(f"{_CPP_QUOTE_SPECIFIER}{quote_target}")
1345
+ elif angle_target:
1346
+ specifiers.append(f"{_CPP_ANGLE_SPECIFIER}{angle_target}")
1347
+ return specifiers
1348
+
1349
+
1200
1350
  #: Suffix → raw-specifier extractor (DATA dispatch). A source file whose language
1201
1351
  #: carries its intra-tree dependency graph in DOTTED specifiers (Python modules,
1202
- #: Java FQNs) resolves edges from these, instead of the builder's quoted-string
1203
- #: ``extract_imports`` seam (JS/TS ``from '…'`` / ``require('…')``). Adding a
1204
- #: language here is pure data — no core ``if language ==`` branch.
1352
+ #: Java FQNs) or ``#include`` directives (C/C++) resolves edges from these,
1353
+ #: instead of the builder's quoted-string ``extract_imports`` seam (JS/TS
1354
+ #: ``from '…'`` / ``require('…')``). Adding a language here is pure data — no
1355
+ #: core ``if language ==`` branch.
1205
1356
  _SUFFIX_SPECIFIER_EXTRACTORS: dict[str, "Callable[[Path], list[str]]"] = {
1206
1357
  ".py": _extract_python_import_specifiers,
1207
1358
  ".java": _extract_java_import_specifiers,
1359
+ ".h": _extract_cpp_include_specifiers,
1360
+ ".hpp": _extract_cpp_include_specifiers,
1361
+ ".hh": _extract_cpp_include_specifiers,
1362
+ ".cc": _extract_cpp_include_specifiers,
1363
+ ".cpp": _extract_cpp_include_specifiers,
1364
+ ".cxx": _extract_cpp_include_specifiers,
1208
1365
  }
1209
1366
 
1210
1367
 
@@ -1949,8 +2106,11 @@ def _language_for_path(path: Path) -> str:
1949
2106
  ".cs": "csharp",
1950
2107
  ".c": "c",
1951
2108
  ".cpp": "cpp",
2109
+ ".cc": "cpp",
2110
+ ".cxx": "cpp",
1952
2111
  ".h": "cpp",
1953
2112
  ".hpp": "cpp",
2113
+ ".hh": "cpp",
1954
2114
  ".kt": "kotlin",
1955
2115
  ".kts": "kotlin",
1956
2116
  ".swift": "swift",
@@ -0,0 +1,2 @@
1
+ implementation_suffixes: [".c", ".cc", ".cpp", ".cxx", ".h", ".hpp", ".hh"]
2
+ test_suffixes: [".cpp", ".cc", ".cxx", ".test.cpp"]
@@ -305,6 +305,11 @@ def _detect_language(project_root: Path, exclude_patterns: list[str]) -> str:
305
305
  ".py": "python", ".ts": "typescript", ".tsx": "typescript",
306
306
  ".js": "javascript", ".jsx": "javascript",
307
307
  ".java": "java", ".go": "go",
308
+ # C++ (incl. the common .cc/.cxx/.hh/.hpp variants). Listed as DATA so a
309
+ # header-heavy project like fmt (15 headers + .cc sources) is detected as
310
+ # ``cpp`` instead of vacuously falling back to ``python``.
311
+ ".cc": "cpp", ".cpp": "cpp", ".cxx": "cpp",
312
+ ".h": "cpp", ".hpp": "cpp", ".hh": "cpp",
308
313
  }
309
314
 
310
315
  for root, dirs, files in os.walk(project_root):
@@ -340,7 +345,7 @@ def _detect_source_dirs(project_root: Path, language: str) -> list[str]:
340
345
  # not also pick up ``src/test/<lang>`` (which _detect_test_dirs claims).
341
346
  return jvm_source
342
347
 
343
- candidates = ["src", "lib", "app", "pkg", "cmd", "internal"]
348
+ candidates = ["src", "lib", "app", "pkg", "cmd", "internal", "include"]
344
349
  found = []
345
350
 
346
351
  for c in candidates:
@@ -231,6 +231,83 @@ def _symbols_go(content: str, rel_path: str) -> "list[Symbol]":
231
231
  return symbols
232
232
 
233
233
 
234
+ #: C++ type-declaration keyword → emitted symbol kind. ``struct`` keeps its own
235
+ #: kind (distinct from ``class``) since it is meaningful in C++; ``enum`` (incl.
236
+ #: ``enum class``) and ``namespace`` map to their literal kinds.
237
+ _CPP_TYPE_KEYWORD_KINDS = (
238
+ (re.compile(r'^\s*(?:template\s*<[^>]*>\s*)?class\s+(\w+)'), "class"),
239
+ (re.compile(r'^\s*(?:template\s*<[^>]*>\s*)?struct\s+(\w+)'), "struct"),
240
+ (re.compile(r'^\s*enum\s+(?:class\s+|struct\s+)?(\w+)'), "enum"),
241
+ (re.compile(r'^\s*namespace\s+(\w+)'), "namespace"),
242
+ )
243
+
244
+ #: A free-function definition/declaration line. Deliberately conservative: a
245
+ #: return type (one or more type tokens, optional ``*``/``&``) followed by a name
246
+ #: and a parameter list. Excludes control-flow keywords so ``if (...)`` /
247
+ #: ``while (...)`` / ``for (...)`` / ``switch (...)`` never read as functions.
248
+ _CPP_FUNCTION_RE = re.compile(
249
+ r'^\s*(?:[\w:]+[\w:<>,\s\*&]*?\s+[\*&]?)(\w+)\s*\([^;{]*\)\s*(?:const\s*)?[{;]'
250
+ )
251
+ _CPP_CONTROL_KEYWORDS = frozenset({
252
+ "if", "for", "while", "switch", "return", "else", "do", "catch", "sizeof",
253
+ })
254
+
255
+
256
+ def _symbols_cpp(content: str, rel_path: str) -> "list[Symbol]":
257
+ symbols: list = []
258
+ for i, line in enumerate(content.splitlines(), 1):
259
+ matched_type = False
260
+ for pattern, kind in _CPP_TYPE_KEYWORD_KINDS:
261
+ m = pattern.match(line)
262
+ if m:
263
+ symbols.append(_symbol(m.group(1), kind, rel_path, i))
264
+ matched_type = True
265
+ break
266
+ if matched_type:
267
+ continue
268
+ m = _CPP_FUNCTION_RE.match(line)
269
+ if m and m.group(1) not in _CPP_CONTROL_KEYWORDS:
270
+ symbols.append(_symbol(m.group(1), "function", rel_path, i))
271
+ return symbols
272
+
273
+
274
+ #: C++ ``#include`` directive: quote-form (``"…"`` — local/first-party) vs
275
+ #: angle-form (``<…>`` — system/STL). Mirrors ``builder._CPP_INCLUDE_RE`` so the
276
+ #: scan-path parser and the DAG builder agree on a C++ project's include graph.
277
+ _CPP_INCLUDE_RE = re.compile(r'^\s*#\s*include\s*(?:"([^"]+)"|<([^>]+)>)')
278
+
279
+
280
+ def _imports_cpp(content, project_root, src_dir, file_path):
281
+ """Classify C++ includes: quote-form ``internal`` vs angle-form ``external``.
282
+
283
+ The regex sibling of the DAG builder's include extraction (there is no
284
+ tree-sitter-cpp binding). Quote-form ``#include "demo/core.h"`` is a
285
+ first-party include (kept as ``internal`` with the raw line, bucketed by the
286
+ include path's first segment); angle-form ``#include <vector>`` is system/STL
287
+ (``external``, keyed by the bare header token). Returns the
288
+ ``(internal, external)`` shape every ``extract_imports`` strategy yields.
289
+ """
290
+ internal: dict[str, list[str]] = {}
291
+ external: set[str] = set()
292
+
293
+ for line in content.splitlines():
294
+ m = _CPP_INCLUDE_RE.match(line)
295
+ if not m:
296
+ continue
297
+ quote_target, angle_target = m.group(1), m.group(2)
298
+ if quote_target:
299
+ # Bucket by the first path segment (``demo`` for ``demo/core.h``); the
300
+ # DAG builder owns the precise path→file resolution for edges.
301
+ bucket = quote_target.split("/", 1)[0] or "root"
302
+ internal.setdefault(bucket, []).append(line.strip())
303
+ elif angle_target:
304
+ # ``<sys/types.h>`` keys on the bare top token; bare ``<vector>`` on
305
+ # itself. Either way it is a system/STL external.
306
+ external.add(angle_target)
307
+
308
+ return internal, external
309
+
310
+
234
311
  # ─────────────────────────────────────────────────────────────────────────────
235
312
  # Import extraction (verbatim bodies of the old _extract_imports ladder).
236
313
  # stdlib subtraction is applied by RegexLanguageStrategy.imports().
@@ -499,6 +576,20 @@ _GO = RegexLanguageStrategy(
499
576
  guess_test_target=None,
500
577
  )
501
578
 
579
+ _CPP = RegexLanguageStrategy(
580
+ name="cpp",
581
+ extensions=frozenset({".c", ".cc", ".cpp", ".cxx", ".h", ".hpp", ".hh"}),
582
+ # stdlib stays EMPTY: ``_imports_cpp`` already classifies angle-form includes
583
+ # (the STL/system headers) into ``external`` itself; there is no name-set to
584
+ # subtract (C++ system headers are arbitrary tokens, not a fixed list).
585
+ entry_points=("main.cc", "main.cpp", "main.cxx"),
586
+ extract_symbols=_symbols_cpp,
587
+ extract_imports=_imports_cpp,
588
+ detect_code_patterns=None,
589
+ file_to_module=_file_to_module_first_part,
590
+ guess_test_target=None,
591
+ )
592
+
502
593
  #: The generic fallback for an unknown language — best-effort no-op analysis,
503
594
  #: matching the implicit ``else`` of every old ladder (empty symbols/imports,
504
595
  #: no patterns, first-path-part module name, no test-target, no extensions).
@@ -513,6 +604,7 @@ _STRATEGIES: dict[str, RegexLanguageStrategy] = {
513
604
  "javascript": _JAVASCRIPT,
514
605
  "java": _JAVA,
515
606
  "go": _GO,
607
+ "cpp": _CPP,
516
608
  }
517
609
 
518
610
 
@@ -623,6 +715,82 @@ def _ceg_targets_java(
623
715
  return targets
624
716
 
625
717
 
718
+ #: C/C++ include-root directory names probed when a quote-form include is not
719
+ #: relative to the including file (mirrors ``builder._CPP_INCLUDE_ROOTS``).
720
+ _CPP_INCLUDE_ROOTS = ("include", "src", "inc")
721
+ _CPP_INCLUDE_LINE_RE = re.compile(r'#\s*include\s*"([^"]+)"')
722
+
723
+
724
+ def _ceg_targets_cpp(
725
+ internal: dict, project_root: Path, file_path: Path
726
+ ) -> "list[CegImportTarget]":
727
+ """C++ quote-form includes → PATH-resolved ``file:`` CEG nodes.
728
+
729
+ Modeled on ``_ceg_targets_ts_js`` (path-resolved ``file:`` nodes), NOT the
730
+ Java module-node resolver — C++ resolution is PATH-based. A quote-form
731
+ include already carries its extension, so there is no suffix synthesis: the
732
+ path is resolved relative to the including file first, then under the
733
+ conventional include roots, and emitted as a ``file:`` node keyed by the
734
+ in-tree relative path. Angle-form includes never reach ``internal`` (they are
735
+ classified ``external`` by ``_imports_cpp``), so only first-party headers
736
+ become nodes.
737
+ """
738
+ targets: list[CegImportTarget] = []
739
+ seen: set[str] = set()
740
+ for include_lines in internal.values():
741
+ for line in include_lines:
742
+ match = _CPP_INCLUDE_LINE_RE.search(line)
743
+ if not match:
744
+ continue
745
+ spec = match.group(1)
746
+ resolved = _resolve_cpp_include_path(spec, project_root, file_path)
747
+ if resolved is None or resolved in seen:
748
+ continue
749
+ seen.add(resolved)
750
+ targets.append(
751
+ CegImportTarget(
752
+ target_id=f"file:{resolved}",
753
+ node_type="file",
754
+ node_kwargs={"path": resolved},
755
+ evidence_method="cpp_include",
756
+ confidence=0.95,
757
+ )
758
+ )
759
+ return targets
760
+
761
+
762
+ def _resolve_cpp_include_path(
763
+ spec: str, project_root: Path, file_path: Path
764
+ ) -> str | None:
765
+ """Resolve a quote-form include path to an in-tree posix path, or ``None``.
766
+
767
+ Tries (1) relative to the including file's directory, then (2) each
768
+ conventional include root walked up from the file. Returns the
769
+ project-relative posix path of the first candidate that exists on disk and
770
+ lies inside the project tree (so an out-of-tree ``../`` escape yields no
771
+ node → no false edge).
772
+ """
773
+ rel = Path(spec)
774
+ candidates = [(file_path.parent / rel)]
775
+ seen_roots: set[Path] = set()
776
+ for ancestor in [file_path.parent, *file_path.parents]:
777
+ for root_name in _CPP_INCLUDE_ROOTS:
778
+ root = (ancestor / root_name).resolve()
779
+ if root in seen_roots:
780
+ continue
781
+ seen_roots.add(root)
782
+ candidates.append(ancestor / root_name / rel)
783
+ for candidate in candidates:
784
+ resolved = candidate.resolve()
785
+ if not resolved.is_file():
786
+ continue
787
+ try:
788
+ return resolved.relative_to(project_root.resolve()).as_posix()
789
+ except ValueError:
790
+ continue
791
+ return None
792
+
793
+
626
794
  #: Per-language scanner CEG-import resolvers (registry DATA). Languages without
627
795
  #: an entry contribute NO import edges, byte-identical to the former scanner
628
796
  #: block that only handled python and typescript/javascript.
@@ -633,6 +801,7 @@ _CEG_IMPORT_RESOLVERS: dict[
633
801
  "javascript": _ceg_targets_ts_js,
634
802
  "python": _ceg_targets_python,
635
803
  "java": _ceg_targets_java,
804
+ "cpp": _ceg_targets_cpp,
636
805
  }
637
806
 
638
807
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "codd-dev"
7
- version = "3.7.3"
7
+ version = "3.7.4"
8
8
  description = "CoDD: Coherence-Driven Development — cross-artifact change impact analysis"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -1,2 +0,0 @@
1
- implementation_suffixes: [".c", ".cpp", ".h", ".hpp"]
2
- test_suffixes: [".cpp", ".test.cpp"]
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