codd-dev 2.33.0__tar.gz → 2.35.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 (573) hide show
  1. {codd_dev-2.33.0 → codd_dev-2.35.0}/PKG-INFO +1 -1
  2. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/__init__.py +1 -1
  3. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/vb_marker_authenticity.py +461 -18
  4. {codd_dev-2.33.0 → codd_dev-2.35.0}/pyproject.toml +1 -1
  5. {codd_dev-2.33.0 → codd_dev-2.35.0}/.gitignore +0 -0
  6. {codd_dev-2.33.0 → codd_dev-2.35.0}/LICENSE +0 -0
  7. {codd_dev-2.33.0 → codd_dev-2.35.0}/README.md +0 -0
  8. {codd_dev-2.33.0 → codd_dev-2.35.0}/bench_fixture/README.md +0 -0
  9. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/__main__.py +0 -0
  10. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/_git_helper.py +0 -0
  11. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/action_outcome.py +0 -0
  12. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/ai_invoke.py +0 -0
  13. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/ai_patch.py +0 -0
  14. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/artifact_contract.py +0 -0
  15. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/artifact_ids.py +0 -0
  16. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/artifacts/catalog.yaml +0 -0
  17. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/ask_user_question_adapter.py +0 -0
  18. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/assembler.py +0 -0
  19. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/bridge.py +0 -0
  20. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/brownfield/__init__.py +0 -0
  21. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/brownfield/pipeline.py +0 -0
  22. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/capability_completeness.py +0 -0
  23. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/claude_cli.py +0 -0
  24. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/cli.py +0 -0
  25. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/clustering.py +0 -0
  26. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/coherence_adapters.py +0 -0
  27. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/coherence_engine.py +0 -0
  28. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/confidence.py +0 -0
  29. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/config.py +0 -0
  30. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/config_schema.py +0 -0
  31. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/contracts.py +0 -0
  32. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/coverage_auditor.py +0 -0
  33. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/coverage_execution_coherence.py +0 -0
  34. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/coverage_metrics.py +0 -0
  35. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/__init__.py +0 -0
  36. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/auto_repair.py +0 -0
  37. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/builder.py +0 -0
  38. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/__init__.py +0 -0
  39. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/_one_to_many_detection.py +0 -0
  40. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/artifact_contract_check.py +0 -0
  41. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/ci_health.py +0 -0
  42. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/dependency_freshness.py +0 -0
  43. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/depends_on_consistency.py +0 -0
  44. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/deployment_completeness.py +0 -0
  45. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/edge_validity.py +0 -0
  46. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/environment_coverage.py +0 -0
  47. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/implementation_coverage.py +0 -0
  48. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/node_completeness.py +0 -0
  49. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/opt_out.py +0 -0
  50. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/task_completion.py +0 -0
  51. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/transitive_closure.py +0 -0
  52. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/ui_coherence.py +0 -0
  53. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/checks/user_journey_coherence.py +0 -0
  54. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/coverage_axes.py +0 -0
  55. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/defaults/cli.yaml +0 -0
  56. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/defaults/cpp_embedded.yaml +0 -0
  57. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/defaults/csharp.yaml +0 -0
  58. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/defaults/elixir.yaml +0 -0
  59. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/defaults/generic.yaml +0 -0
  60. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/defaults/iot.yaml +0 -0
  61. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/defaults/java.yaml +0 -0
  62. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/defaults/kotlin.yaml +0 -0
  63. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/defaults/mobile.yaml +0 -0
  64. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/defaults/ruby.yaml +0 -0
  65. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/defaults/rust.yaml +0 -0
  66. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/defaults/scala.yaml +0 -0
  67. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/defaults/swift.yaml +0 -0
  68. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/defaults/test_frameworks.yaml +0 -0
  69. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/defaults/web.yaml +0 -0
  70. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/extractor.py +0 -0
  71. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/impact.py +0 -0
  72. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dag/runner.py +0 -0
  73. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/defaults.py +0 -0
  74. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/defaults.yaml +0 -0
  75. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/dependency_lock_coherence.py +0 -0
  76. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deploy_targets/__init__.py +0 -0
  77. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deploy_targets/app_service.py +0 -0
  78. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deploy_targets/base.py +0 -0
  79. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deploy_targets/docker_compose.py +0 -0
  80. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployer.py +0 -0
  81. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/__init__.py +0 -0
  82. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/checks/__init__.py +0 -0
  83. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/defaults/deploy_targets.yaml +0 -0
  84. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
  85. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/defaults/schema_providers.yaml +0 -0
  86. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/defaults/verification_templates.yaml +0 -0
  87. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/extractor.py +0 -0
  88. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/__init__.py +0 -0
  89. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/ai_command.py +0 -0
  90. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/ai_command_factory.py +0 -0
  91. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/codex_app_server.py +0 -0
  92. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/llm_consideration.py +0 -0
  93. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/schema/__init__.py +0 -0
  94. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/schema/prisma.py +0 -0
  95. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/target/__init__.py +0 -0
  96. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/target/docker_compose.py +0 -0
  97. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/verification/__init__.py +0 -0
  98. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
  99. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/verification/cdp_browser.py +0 -0
  100. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/verification/cdp_engines.py +0 -0
  101. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
  102. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/verification/cdp_wire.py +0 -0
  103. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/verification/curl.py +0 -0
  104. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/verification/form_strategies.py +0 -0
  105. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/verification/means_catalog.py +0 -0
  106. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/verification/playwright.py +0 -0
  107. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/deployment/providers/verification/vitest.py +0 -0
  108. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/design_md.py +0 -0
  109. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/diff/__init__.py +0 -0
  110. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/diff/apply.py +0 -0
  111. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/diff/engine.py +0 -0
  112. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/diff/persistence.py +0 -0
  113. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/diff/templates/diff_prompt.md +0 -0
  114. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/discovery.py +0 -0
  115. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/drift.py +0 -0
  116. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/e2e_contract_coherence.py +0 -0
  117. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/e2e_extractor.py +0 -0
  118. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/e2e_generator.py +0 -0
  119. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/e2e_runner.py +0 -0
  120. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/elicit/__init__.py +0 -0
  121. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/elicit/apply.py +0 -0
  122. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/elicit/engine.py +0 -0
  123. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/elicit/finding.py +0 -0
  124. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/elicit/formatters/__init__.py +0 -0
  125. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/elicit/formatters/base.py +0 -0
  126. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/elicit/formatters/interactive.py +0 -0
  127. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/elicit/formatters/json_fmt.py +0 -0
  128. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/elicit/formatters/md.py +0 -0
  129. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/elicit/lexicon_loader.py +0 -0
  130. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/elicit/persistence.py +0 -0
  131. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
  132. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/env_refs.py +0 -0
  133. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/extract_ai.py +0 -0
  134. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/extract_paths.py +0 -0
  135. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/extractor.py +0 -0
  136. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fix/__init__.py +0 -0
  137. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fix/candidate_selector.py +0 -0
  138. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fix/design_updater.py +0 -0
  139. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fix/impl_propagation.py +0 -0
  140. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fix/interactive_prompt.py +0 -0
  141. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fix/phenomenon_fixer.py +0 -0
  142. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fix/phenomenon_parser.py +0 -0
  143. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fix/risk_classifier.py +0 -0
  144. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fix/templates/clarification_question.txt +0 -0
  145. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fix/templates/design_update.txt +0 -0
  146. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fix/templates/impl_update.txt +0 -0
  147. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fix/templates/phenomenon_parse.txt +0 -0
  148. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fix/templates/risk_assessment.txt +0 -0
  149. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fix/templates_loader.py +0 -0
  150. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fixer.py +0 -0
  151. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fixup_drift.py +0 -0
  152. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fixup_drift_strategies/__init__.py +0 -0
  153. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
  154. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
  155. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/fixup_drift_strategies/url_drift.py +0 -0
  156. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/frontmatter.py +0 -0
  157. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/generator.py +0 -0
  158. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/git_evidence.py +0 -0
  159. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/graph.py +0 -0
  160. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/greenfield/__init__.py +0 -0
  161. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/greenfield/pipeline.py +0 -0
  162. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/hitl_session.py +0 -0
  163. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/hooks/__init__.py +0 -0
  164. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/hooks/pre-commit +0 -0
  165. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/hooks/recipes/claude_requirements_nudge.json +0 -0
  166. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/hooks/recipes/claude_settings_example.json +0 -0
  167. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/hooks/recipes/codex_hook.sh +0 -0
  168. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/hooks/recipes/git_post_commit.sh +0 -0
  169. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/hooks/recipes/git_pre_commit.sh +0 -0
  170. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/iac_nfr.py +0 -0
  171. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/implement_oracle.py +0 -0
  172. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/implement_oracle_scope.py +0 -0
  173. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/implementer/__init__.py +0 -0
  174. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/implementer/chunked_runner.py +0 -0
  175. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/implementer/typecheck_loop.py +0 -0
  176. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/implementer.py +0 -0
  177. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/import_coherence.py +0 -0
  178. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/inheritance.py +0 -0
  179. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/init/__init__.py +0 -0
  180. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/init/lexicon_suggest.py +0 -0
  181. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/init/llm_lexicon_suggester.py +0 -0
  182. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/init/stack_detector.py +0 -0
  183. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/knowledge_fetcher.py +0 -0
  184. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/lexicon.py +0 -0
  185. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/lexicon_cli/__init__.py +0 -0
  186. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/lexicon_cli/formatters/__init__.py +0 -0
  187. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/lexicon_cli/formatters/html.py +0 -0
  188. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
  189. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/lexicon_cli/formatters/md.py +0 -0
  190. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/lexicon_cli/inspector.py +0 -0
  191. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/lexicon_cli/manager.py +0 -0
  192. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/lexicon_cli/reporter.py +0 -0
  193. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/lexicon_cli/threshold.py +0 -0
  194. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/__init__.py +0 -0
  195. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/approval.py +0 -0
  196. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/best_practice_augmenter.py +0 -0
  197. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/criteria_expander.py +0 -0
  198. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/design_doc_extractor.py +0 -0
  199. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/impl_step_deriver.py +0 -0
  200. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/means_catalog_loader.py +0 -0
  201. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/parser.py +0 -0
  202. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/plan_deriver.py +0 -0
  203. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/prompt_builder.py +0 -0
  204. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/strategy_validator.py +0 -0
  205. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/templates/best_practice_augment_meta.md +0 -0
  206. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/templates/criteria_expand_meta.md +0 -0
  207. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/templates/design_doc_extract_meta.md +0 -0
  208. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/templates/impl_step_derive_meta.md +0 -0
  209. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
  210. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/templates/meta_instruction.md +0 -0
  211. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/templates/plan_derive_meta.md +0 -0
  212. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/llm/templates/verification_means_catalog.yaml +0 -0
  213. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/mcp_server.py +0 -0
  214. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/measure.py +0 -0
  215. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/operational_e2e_audit.py +0 -0
  216. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/operations_derive.py +0 -0
  217. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/parsing/__init__.py +0 -0
  218. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/parsing/_shared.py +0 -0
  219. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/parsing/api_specs.py +0 -0
  220. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/parsing/filesystem_routes.py +0 -0
  221. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/parsing/iac.py +0 -0
  222. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/parsing/python_ast.py +0 -0
  223. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/parsing/schemas.py +0 -0
  224. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/parsing/tests_builddeps.py +0 -0
  225. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/parsing/treesitter.py +0 -0
  226. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/planner.py +0 -0
  227. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/policy.py +0 -0
  228. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/preflight/__init__.py +0 -0
  229. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/preflight/defaults/cli.yaml +0 -0
  230. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/preflight/defaults/generic.yaml +0 -0
  231. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/preflight/defaults/iot.yaml +0 -0
  232. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/preflight/defaults/mobile.yaml +0 -0
  233. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/preflight/defaults/web.yaml +0 -0
  234. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/project_types.py +0 -0
  235. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/propagate.py +0 -0
  236. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/propagation_common.py +0 -0
  237. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/propagator.py +0 -0
  238. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/reconciliation_ledger.py +0 -0
  239. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/registry.py +0 -0
  240. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/__init__.py +0 -0
  241. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/approval_repair.py +0 -0
  242. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/auto_scope_guard.py +0 -0
  243. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/engine.py +0 -0
  244. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/git_patcher.py +0 -0
  245. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/history.py +0 -0
  246. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/llm_repair_engine.py +0 -0
  247. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/loop.py +0 -0
  248. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/primary_picker.py +0 -0
  249. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/proof_breaks.py +0 -0
  250. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/repair_result.py +0 -0
  251. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/repairability_classifier.py +0 -0
  252. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/schema.py +0 -0
  253. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/templates/analyze_meta.md +0 -0
  254. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/templates/propose_meta.md +0 -0
  255. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/templates/repair_strategy_meta.md +0 -0
  256. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/templates/repairability_meta.md +0 -0
  257. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/test_failure_attribution.py +0 -0
  258. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair/verify_runner.py +0 -0
  259. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/repair_slice.py +0 -0
  260. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/require.py +0 -0
  261. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/require_plugins.py +0 -0
  262. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/require_propagate.py +0 -0
  263. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/required_artifacts/defaults/cli.yaml +0 -0
  264. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/required_artifacts/defaults/generic.yaml +0 -0
  265. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/required_artifacts/defaults/iot.yaml +0 -0
  266. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/required_artifacts/defaults/mobile.yaml +0 -0
  267. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/required_artifacts/defaults/web.yaml +0 -0
  268. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/required_artifacts_deriver.py +0 -0
  269. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/requirement_completeness/defaults/cli.yaml +0 -0
  270. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/requirement_completeness/defaults/generic.yaml +0 -0
  271. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/requirement_completeness/defaults/iot.yaml +0 -0
  272. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
  273. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/requirement_completeness/defaults/web.yaml +0 -0
  274. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/requirement_completeness_auditor.py +0 -0
  275. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/requirement_reconciliation.py +0 -0
  276. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/requirements_meta.py +0 -0
  277. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/restoration_report.py +0 -0
  278. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/restore.py +0 -0
  279. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/routes_extractor.py +0 -0
  280. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/runtime_smoke/__init__.py +0 -0
  281. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/runtime_smoke/checks.py +0 -0
  282. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/runtime_smoke/config.py +0 -0
  283. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/runtime_smoke/report.py +0 -0
  284. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/runtime_smoke/runner.py +0 -0
  285. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/scanner.py +0 -0
  286. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/schema_refs.py +0 -0
  287. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/screen_flow_validator.py +0 -0
  288. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/screen_transition_extractor.py +0 -0
  289. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/screen_transitions/defaults.yaml +0 -0
  290. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/skills_cli/__init__.py +0 -0
  291. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/skills_cli/discovery.py +0 -0
  292. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/skills_cli/manager.py +0 -0
  293. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/skills_cli/paths.py +0 -0
  294. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/surface_reconciliation.py +0 -0
  295. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/synth.py +0 -0
  296. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/templates/codd.yaml.tmpl +0 -0
  297. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/templates/conventions.yaml.tmpl +0 -0
  298. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/templates/data_dependencies.yaml.tmpl +0 -0
  299. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/templates/doc_links.yaml.tmpl +0 -0
  300. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/templates/extract_ai_prompt_baseline.md +0 -0
  301. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/templates/extracted/api-contract.md.j2 +0 -0
  302. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
  303. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/templates/extracted/module-detail.md.j2 +0 -0
  304. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/templates/extracted/schema-design.md.j2 +0 -0
  305. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/templates/extracted/system-context.md.j2 +0 -0
  306. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/templates/gitignore.tmpl +0 -0
  307. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/templates/lexicon_questions.md +0 -0
  308. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/templates/lexicon_schema.yaml +0 -0
  309. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/templates/overrides.yaml.tmpl +0 -0
  310. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/test_detection.py +0 -0
  311. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/test_import_coherence.py +0 -0
  312. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/traceability.py +0 -0
  313. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/validator.py +0 -0
  314. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/vb_rerun_scope.py +0 -0
  315. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/verifiable_behavior_audit.py +0 -0
  316. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/watch/__init__.py +0 -0
  317. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/watch/events.py +0 -0
  318. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/watch/propagation_log.py +0 -0
  319. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/watch/propagation_pipeline.py +0 -0
  320. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/watch/test_runner.py +0 -0
  321. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/watch/watcher.py +0 -0
  322. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd/wiring.py +0 -0
  323. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
  324. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
  325. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
  326. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
  327. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
  328. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
  329. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
  330. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
  331. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
  332. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
  333. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
  334. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
  335. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
  336. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
  337. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
  338. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
  339. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
  340. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
  341. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
  342. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
  343. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
  344. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
  345. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
  346. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
  347. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
  348. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
  349. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
  350. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
  351. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
  352. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
  353. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
  354. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
  355. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
  356. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
  357. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
  358. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
  359. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
  360. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
  361. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
  362. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
  363. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
  364. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
  365. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
  366. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
  367. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
  368. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
  369. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
  370. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
  371. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
  372. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
  373. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
  374. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
  375. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
  376. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
  377. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
  378. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
  379. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
  380. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
  381. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
  382. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_aggregation_policies/coverage_matrix.md +0 -0
  383. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_aggregation_policies/elicit_extend.md +0 -0
  384. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_aggregation_policies/lexicon.yaml +0 -0
  385. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_aggregation_policies/manifest.yaml +0 -0
  386. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_aggregation_policies/recommended_kinds.yaml +0 -0
  387. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_aggregation_policies/severity_rules.yaml +0 -0
  388. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
  389. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
  390. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
  391. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
  392. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
  393. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
  394. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
  395. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
  396. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
  397. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
  398. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
  399. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
  400. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
  401. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
  402. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
  403. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
  404. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
  405. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
  406. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
  407. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
  408. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
  409. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
  410. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
  411. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
  412. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
  413. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
  414. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
  415. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
  416. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
  417. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
  418. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
  419. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
  420. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
  421. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
  422. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
  423. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
  424. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
  425. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
  426. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
  427. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
  428. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
  429. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
  430. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
  431. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
  432. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
  433. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
  434. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
  435. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
  436. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
  437. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
  438. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
  439. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
  440. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
  441. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
  442. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
  443. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
  444. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
  445. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
  446. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
  447. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
  448. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
  449. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
  450. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
  451. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
  452. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
  453. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
  454. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
  455. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
  456. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
  457. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
  458. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
  459. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
  460. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
  461. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
  462. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
  463. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
  464. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
  465. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
  466. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
  467. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
  468. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
  469. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
  470. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
  471. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
  472. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
  473. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
  474. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
  475. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
  476. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
  477. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
  478. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
  479. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
  480. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
  481. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
  482. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
  483. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
  484. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
  485. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
  486. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
  487. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
  488. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
  489. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
  490. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
  491. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
  492. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
  493. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
  494. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
  495. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
  496. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
  497. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
  498. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
  499. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
  500. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
  501. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
  502. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
  503. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
  504. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
  505. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
  506. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
  507. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
  508. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
  509. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
  510. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
  511. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
  512. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
  513. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
  514. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
  515. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
  516. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
  517. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
  518. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
  519. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
  520. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
  521. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
  522. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
  523. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
  524. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
  525. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
  526. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
  527. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
  528. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
  529. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
  530. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
  531. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
  532. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
  533. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
  534. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
  535. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
  536. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
  537. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
  538. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
  539. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
  540. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
  541. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
  542. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
  543. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
  544. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
  545. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
  546. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
  547. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
  548. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
  549. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
  550. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
  551. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
  552. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
  553. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
  554. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
  555. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
  556. {codd_dev-2.33.0 → codd_dev-2.35.0}/codd_plugins/stack_map.yaml +0 -0
  557. {codd_dev-2.33.0 → codd_dev-2.35.0}/docs/cookbook/cdp_browser/README.md +0 -0
  558. {codd_dev-2.33.0 → codd_dev-2.35.0}/docs/cookbook/presentation_aggregation/README.md +0 -0
  559. {codd_dev-2.33.0 → codd_dev-2.35.0}/docs/requirements/README.md +0 -0
  560. {codd_dev-2.33.0 → codd_dev-2.35.0}/dogfood/README.md +0 -0
  561. {codd_dev-2.33.0 → codd_dev-2.35.0}/dogfood/fixtures/flat_py_app/README.md +0 -0
  562. {codd_dev-2.33.0 → codd_dev-2.35.0}/examples/README.md +0 -0
  563. {codd_dev-2.33.0 → codd_dev-2.35.0}/skills/codd-assemble/SKILL.md +0 -0
  564. {codd_dev-2.33.0 → codd_dev-2.35.0}/skills/codd-evolve/SKILL.md +0 -0
  565. {codd_dev-2.33.0 → codd_dev-2.35.0}/skills/codd-generate/SKILL.md +0 -0
  566. {codd_dev-2.33.0 → codd_dev-2.35.0}/skills/codd-greenfield/SKILL.md +0 -0
  567. {codd_dev-2.33.0 → codd_dev-2.35.0}/skills/codd-impact/SKILL.md +0 -0
  568. {codd_dev-2.33.0 → codd_dev-2.35.0}/skills/codd-init/SKILL.md +0 -0
  569. {codd_dev-2.33.0 → codd_dev-2.35.0}/skills/codd-propagate/SKILL.md +0 -0
  570. {codd_dev-2.33.0 → codd_dev-2.35.0}/skills/codd-restore/SKILL.md +0 -0
  571. {codd_dev-2.33.0 → codd_dev-2.35.0}/skills/codd-scan/SKILL.md +0 -0
  572. {codd_dev-2.33.0 → codd_dev-2.35.0}/skills/codd-validate/SKILL.md +0 -0
  573. {codd_dev-2.33.0 → codd_dev-2.35.0}/tests/integration/standalone_repair_skeleton/README.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codd-dev
3
- Version: 2.33.0
3
+ Version: 2.35.0
4
4
  Summary: CoDD: Coherence-Driven Development — cross-artifact change impact analysis
5
5
  Project-URL: Homepage, https://github.com/yohey-w/codd-dev
6
6
  Project-URL: Repository, https://github.com/yohey-w/codd-dev
@@ -1,3 +1,3 @@
1
1
  """CoDD — Coherence-Driven Development."""
2
2
 
3
- __version__ = "2.33.0"
3
+ __version__ = "2.35.0"
@@ -1001,10 +1001,33 @@ def _net_braces(line: str) -> int:
1001
1001
  # (the argument anchor that defeats no-op / constant-only helpers).
1002
1002
  # A helper that itself delegates to a deeper helper is followed ONE more hop
1003
1003
  # (so expectSuccessfulRun → expectExitCode is honored), bounded to avoid cycles.
1004
+ #
1005
+ # BARREL re-export following (step 2b). The binding module is frequently a
1006
+ # *barrel* — an index module that carries NO definition of its own and only
1007
+ # RE-EXPORTS sibling modules (TS ``export * from "./assertions"`` /
1008
+ # ``export { expectOk as ok } from "./asserts"``; Python ``__init__.py`` with
1009
+ # ``from .asserts import expect_ok``). The conventional e2e shape imports helpers
1010
+ # from such a barrel (``import { expectSuccessResult } from "./helpers"`` →
1011
+ # ``helpers/index.ts`` → ``export * from "./assertions"`` → the real
1012
+ # ``expectSuccessResult`` body). When ``def_finder`` finds no def in the binding
1013
+ # module, the resolver FOLLOWS the module's re-exports to the file that actually
1014
+ # defines the symbol (bounded by ``_MAX_REEXPORT_HOPS`` + a cycle guard). This is
1015
+ # purely an "ability to reach the real body"; the body still has to carry a
1016
+ # PRIMITIVE assertion + argument anchor — a barrel re-exporting a no-op/constant
1017
+ # helper still FAILS, and an unfollowable / depth-exhausted re-export is still an
1018
+ # unresolved helper (greenfield strict ⇒ fail). The follower is per-profile (TS
1019
+ # ``export */named/alias``; Python ``__init__`` ``from .x import y``) so the gate
1020
+ # stays language-agnostic; an unknown stack supplies no follower and degrades.
1004
1021
  # ---------------------------------------------------------------------------
1005
1022
 
1006
1023
 
1007
1024
  _MAX_HELPER_HOPS = 2
1025
+ #: Bound on how many re-export edges (barrel → barrel → … → defining module) the
1026
+ #: resolver will chase for ONE symbol. Generous enough for nested index barrels
1027
+ #: (``helpers/index → assertions/index → cli-assertions``) yet bounded to keep a
1028
+ #: pathological re-export web finite; combined with a per-symbol ``seen`` set of
1029
+ #: visited module files for cycle safety.
1030
+ _MAX_REEXPORT_HOPS = 4
1008
1031
 
1009
1032
  #: A bare or member call ``name(`` / ``a.b.name(`` — captures the dotted callee.
1010
1033
  _CALL_RE = re.compile(r"(?P<callee>[A-Za-z_$][\w$.]*)\s*\(")
@@ -1136,8 +1159,10 @@ def _ts_find_function_def(module_text: str, name: str) -> "tuple[str, list[str]]
1136
1159
  Returns ``(body_text, param_names)`` or ``None``. Anchored on the function
1137
1160
  NAME, then the parameter list is read by paren-matching from the following
1138
1161
  ``(`` (so a MULTI-LINE signature works), and the body is brace-matched from
1139
- the first ``{`` after the params. Arrow / function-expression / ``function``
1140
- declaration forms are all handled.
1162
+ the function-body ``{`` AFTER any return-type annotation (so a brace-bearing
1163
+ return type like ``Promise<{ error: string }>`` / ``: { ok: boolean }`` is not
1164
+ mistaken for the body — see :func:`_ts_body_brace_index`). Arrow /
1165
+ function-expression / ``function`` declaration forms are all handled.
1141
1166
  """
1142
1167
 
1143
1168
  for pattern in _TS_FUNC_NAME_RES:
@@ -1145,11 +1170,12 @@ def _ts_find_function_def(module_text: str, name: str) -> "tuple[str, list[str]]
1145
1170
  if m.group("name") != name:
1146
1171
  continue
1147
1172
  # The name-anchor match ends at the def's opening ``(``; paren-match
1148
- # the (possibly multi-line) params, then brace-match the body.
1173
+ # the (possibly multi-line) params, then locate the BODY ``{`` past
1174
+ # any return-type annotation, then brace-match the body.
1149
1175
  params, after = _read_paren_group(module_text, m.end() - 1)
1150
1176
  if params is None:
1151
1177
  continue
1152
- brace = module_text.find("{", after)
1178
+ brace = _ts_body_brace_index(module_text, after)
1153
1179
  if brace < 0:
1154
1180
  continue
1155
1181
  body = _read_brace_group(module_text, brace)
@@ -1157,6 +1183,167 @@ def _ts_find_function_def(module_text: str, name: str) -> "tuple[str, list[str]]
1157
1183
  return None
1158
1184
 
1159
1185
 
1186
+ def _ts_body_brace_index(text: str, after_params: int) -> int:
1187
+ """Index of the FUNCTION-BODY ``{`` that follows a TS signature's params.
1188
+
1189
+ ``after_params`` is the index just past the params' closing ``)``. Between it
1190
+ and the body there may be a RETURN-TYPE ANNOTATION (``): T {``) and/or an arrow
1191
+ (``) => {``). The naive "first ``{`` after the params" is WRONG when the return
1192
+ type itself contains braces — ``): Promise<{ error: string }> {`` (the noteapi
1193
+ false-RED), ``): { ok: boolean } {`` (object-type literal), or
1194
+ ``): Promise<Array<{ id: number }>> {`` — there the first ``{`` is part of the
1195
+ TYPE, not the body. This skips the annotation and returns the body ``{``.
1196
+
1197
+ The decision uses the ``:`` (return-type marker) as the disambiguator:
1198
+
1199
+ * The first significant token after the params is ``{`` → the BODY (no return
1200
+ type at all, e.g. ``function g(a) {``).
1201
+ * It is ``=>`` → an arrow with NO return type; the body is the next top-level
1202
+ ``{`` (an EXPRESSION-bodied arrow has no block ``{`` → return ``-1`` so the
1203
+ caller degrades rather than mis-extract).
1204
+ * It is ``:`` → a return-type annotation. Consume the type (skipping balanced
1205
+ ``<> () [] {}`` groups so a generic / tuple / object-type literal inside the
1206
+ type is never seen at top level), and stop at the top-level ``{`` (body) or
1207
+ ``=>`` (typed arrow → body is its next ``{``). An object-type literal that is
1208
+ the WHOLE return type (``: { ok: boolean } {``) is the first balanced
1209
+ ``{...}`` right after ``:`` — it is skipped, and the body is the ``{`` after.
1210
+
1211
+ Returns ``-1`` when no body brace is found (unbalanced / expression arrow).
1212
+
1213
+ KNOWN LIMITATION (fails CLOSED, never false-green): a return type that is
1214
+ itself a FUNCTION TYPE (``): (x) => { y: 1 } {``) is not disambiguated — the
1215
+ inner ``=>`` is read as the function's own arrow. This degrades to a wrong
1216
+ body span ⇒ ``helper_no_primitive`` ⇒ the marker FAILS (a conservative
1217
+ false-RED, not a false pass). Such a return annotation on an assertion helper
1218
+ is vanishingly rare; the gate stays anti-false-green either way.
1219
+ """
1220
+
1221
+ n = len(text)
1222
+ i = _ts_skip_trivia(text, after_params)
1223
+ if i >= n:
1224
+ return -1
1225
+ # No return-type annotation: an immediate body brace, or a `=>` arrow.
1226
+ if text[i] == "{":
1227
+ return i
1228
+ if text.startswith("=>", i):
1229
+ j = _ts_skip_trivia(text, i + 2)
1230
+ return j if j < n and text[j] == "{" else -1
1231
+ if text[i] != ":":
1232
+ # Unexpected token between params and body — be permissive: take the next
1233
+ # top-level brace past it (covers exotic but brace-free prefixes).
1234
+ return _ts_scan_type_to_body(text, i)
1235
+ # `:` return-type annotation. Skip it and consume the type up to the body.
1236
+ return _ts_scan_type_to_body(text, i + 1)
1237
+
1238
+
1239
+ def _ts_skip_trivia(text: str, i: int) -> int:
1240
+ """Advance ``i`` past whitespace and ``//`` / ``/* */`` comments."""
1241
+
1242
+ n = len(text)
1243
+ while i < n:
1244
+ ch = text[i]
1245
+ if ch.isspace():
1246
+ i += 1
1247
+ elif ch == "/" and i + 1 < n and text[i + 1] == "/":
1248
+ nl = text.find("\n", i)
1249
+ i = n if nl < 0 else nl + 1
1250
+ elif ch == "/" and i + 1 < n and text[i + 1] == "*":
1251
+ end = text.find("*/", i + 2)
1252
+ i = n if end < 0 else end + 2
1253
+ else:
1254
+ break
1255
+ return i
1256
+
1257
+
1258
+ #: Type-level binary operators that JOIN type atoms (``A | B``, ``A & B``). After
1259
+ #: one of these the parser expects ANOTHER atom, so a following object-type literal
1260
+ #: ``{...}`` is still part of the return type, not the body.
1261
+ _TS_TYPE_JOIN_CHARS = frozenset("|&")
1262
+
1263
+
1264
+ def _ts_scan_type_to_body(text: str, i: int) -> int:
1265
+ """From inside a return-type annotation, return the body ``{`` index (or -1).
1266
+
1267
+ Models the return type as a sequence of type ATOMS joined by ``|`` / ``&``
1268
+ operators, ending at the body ``{`` or a typed-arrow ``=>``. ``expecting_atom``
1269
+ starts True (the type begins right after ``:`` or a join operator); a top-level
1270
+ ``{`` while ``expecting_atom`` is an OBJECT-TYPE LITERAL atom (``: { ok } {`` /
1271
+ ``: A | { err } {``) and is skipped as a balanced group, whereas a top-level
1272
+ ``{`` while NOT expecting an atom (a complete type already consumed, no join
1273
+ operator following) is the BODY. Generics ``<…>``, tuples ``[…]`` and paren
1274
+ types ``(…)`` are skipped as balanced groups (their inner braces never surface).
1275
+ """
1276
+
1277
+ n = len(text)
1278
+ angle = paren = bracket = 0
1279
+ expecting_atom = True
1280
+ in_str: str | None = None
1281
+ prev = ""
1282
+ while i < n:
1283
+ ch = text[i]
1284
+ if in_str is not None:
1285
+ if ch == in_str and prev != "\\":
1286
+ in_str = None
1287
+ prev = ch
1288
+ i += 1
1289
+ continue
1290
+ if ch in ("'", '"', "`"):
1291
+ in_str = ch
1292
+ expecting_atom = False
1293
+ prev = ch
1294
+ i += 1
1295
+ continue
1296
+ if ch == "/" and i + 1 < n and text[i + 1] == "/":
1297
+ nl = text.find("\n", i)
1298
+ i = n if nl < 0 else nl
1299
+ prev = ""
1300
+ continue
1301
+ if ch == "/" and i + 1 < n and text[i + 1] == "*":
1302
+ end = text.find("*/", i + 2)
1303
+ i = n if end < 0 else end + 2
1304
+ prev = ""
1305
+ continue
1306
+ top = angle == 0 and paren == 0 and bracket == 0
1307
+ if ch == "<":
1308
+ angle += 1
1309
+ expecting_atom = False
1310
+ elif ch == ">":
1311
+ if angle > 0:
1312
+ angle -= 1
1313
+ elif ch == "(":
1314
+ paren += 1
1315
+ expecting_atom = False
1316
+ elif ch == "[":
1317
+ bracket += 1
1318
+ expecting_atom = False
1319
+ elif ch in (")", "]"):
1320
+ if ch == ")" and paren > 0:
1321
+ paren -= 1
1322
+ elif ch == "]" and bracket > 0:
1323
+ bracket -= 1
1324
+ elif top and text.startswith("=>", i):
1325
+ # Typed arrow: the body is the next top-level `{`.
1326
+ j = _ts_skip_trivia(text, i + 2)
1327
+ return j if j < n and text[j] == "{" else -1
1328
+ elif top and ch == "{":
1329
+ if not expecting_atom:
1330
+ return i # a complete type precedes this `{` → it is the body.
1331
+ # Object-type literal atom (`: { ok } {` / `A | { err } {`) — skip its
1332
+ # balanced group; an atom is now consumed (no longer expecting one).
1333
+ group = _read_brace_group(text, i)
1334
+ i += len(group)
1335
+ expecting_atom = False
1336
+ prev = "}"
1337
+ continue
1338
+ elif top and ch in _TS_TYPE_JOIN_CHARS:
1339
+ expecting_atom = True # `|`/`&` → another atom follows.
1340
+ elif top and not ch.isspace():
1341
+ expecting_atom = False # identifier / `.` / `:` … consumes/continues an atom
1342
+ prev = ch
1343
+ i += 1
1344
+ return -1
1345
+
1346
+
1160
1347
  def _read_paren_group(text: str, open_idx: int) -> "tuple[str | None, int]":
1161
1348
  """Inner text of the paren group whose ``(`` is at/just after ``open_idx``.
1162
1349
 
@@ -1218,6 +1405,62 @@ def _read_brace_group(text: str, open_brace_idx: int) -> str:
1218
1405
  return text[open_brace_idx:]
1219
1406
 
1220
1407
 
1408
+ # ── TypeScript / JavaScript barrel re-export following ───────────────────────
1409
+ #
1410
+ # A barrel module re-exports siblings instead of defining the symbol. Two forms:
1411
+ # ``export * from "./X"`` (star — symbol unchanged, try X)
1412
+ # ``export { Y } from "./X"`` (named — local name Y, original Y)
1413
+ # ``export { Y as Z } from "./X"`` (named+alias — local Z, original Y)
1414
+ # A ``export {}`` with NO ``from`` clause is a LOCAL re-export of in-file symbols,
1415
+ # not a re-export edge, and is ignored here (the def, if any, is found in-file by
1416
+ # ``_ts_find_function_def`` already).
1417
+
1418
+ #: ``export * from "./x"`` and ``export * as ns from "./x"`` (a namespace star
1419
+ #: binds a NAMESPACE object, not the bare symbol, so it is NOT a transparent
1420
+ #: re-export of ``symbol`` — only the plain ``export * from`` is followed).
1421
+ _TS_EXPORT_STAR_RE = re.compile(
1422
+ r"""^[ \t]*export\s+\*\s+from\s*['"](?P<spec>[^'"]+)['"]""", re.MULTILINE
1423
+ )
1424
+ #: ``export { a, b as c } from "./x"`` (the ``from`` clause makes it a re-export).
1425
+ _TS_EXPORT_NAMED_FROM_RE = re.compile(
1426
+ r"""^[ \t]*export\s+(?:type\s+)?\{(?P<names>[^}]*)\}\s*from\s*['"](?P<spec>[^'"]+)['"]""",
1427
+ re.MULTILINE,
1428
+ )
1429
+
1430
+
1431
+ def _ts_reexport_edges(module_text: str, symbol: str) -> list[tuple[str, str]]:
1432
+ """Re-export edges from a TS barrel that can carry ``symbol`` onward.
1433
+
1434
+ Returns ``(spec, original_name)`` pairs: ``spec`` is the relative module to
1435
+ follow, ``original_name`` is the name to look for THERE (an alias flips the
1436
+ name back). ``export * from "./x"`` forwards ``symbol`` unchanged. A named
1437
+ re-export forwards ONLY when its LOCAL name (after ``as``) equals ``symbol``,
1438
+ and the original (before ``as``) is what the target module defines. Order:
1439
+ explicit named re-exports first (a precise alias should win over a star), then
1440
+ ``export *`` fan-out. Only relative (same-repo) specs are returned.
1441
+ """
1442
+
1443
+ edges: list[tuple[str, str]] = []
1444
+ for match in _TS_EXPORT_NAMED_FROM_RE.finditer(module_text):
1445
+ spec = match.group("spec")
1446
+ if not spec.startswith("."):
1447
+ continue
1448
+ for raw in match.group("names").split(","):
1449
+ name = raw.strip()
1450
+ if not name:
1451
+ continue
1452
+ parts = [p.strip() for p in name.split(" as ")]
1453
+ original = parts[0]
1454
+ local = parts[-1]
1455
+ if local == symbol:
1456
+ edges.append((spec, original))
1457
+ for match in _TS_EXPORT_STAR_RE.finditer(module_text):
1458
+ spec = match.group("spec")
1459
+ if spec.startswith("."):
1460
+ edges.append((spec, symbol)) # star forwards the name unchanged
1461
+ return edges
1462
+
1463
+
1221
1464
  # ── Python resolution ───────────────────────────────────────────────────────
1222
1465
 
1223
1466
  #: ``from pkg.mod import a, b as c`` / ``from .mod import x``.
@@ -1241,6 +1484,42 @@ def _py_imported_module(importer_text: str, symbol: str) -> str | None:
1241
1484
  return None
1242
1485
 
1243
1486
 
1487
+ def _py_reexport_edges(module_text: str, symbol: str) -> list[tuple[str, str]]:
1488
+ """Re-export edges from a Python ``__init__.py`` barrel carrying ``symbol``.
1489
+
1490
+ Mirrors :func:`_ts_reexport_edges` for the Python package-barrel convention.
1491
+ Returns ``(mod, original_name)`` pairs: ``mod`` is the relative module to
1492
+ follow (resolved with the SAME ``_py_resolve_module`` rules, with the barrel's
1493
+ own path as the importer), ``original_name`` is the name to look for there.
1494
+ ``from .x import y`` → forwards ``y`` unchanged when ``y == symbol``
1495
+ ``from .x import y as z`` → forwards ``y`` when the LOCAL ``z == symbol``
1496
+ ``from .x import *`` → forwards ``symbol`` unchanged (star)
1497
+ Only explicit-relative imports (``from .x`` / ``from ..pkg.x``) are followed —
1498
+ an absolute ``from app.x import y`` re-export is unusual in a test barrel and
1499
+ is conservatively skipped (kept out of the same-dir 1-hop re-export graph).
1500
+ """
1501
+
1502
+ edges: list[tuple[str, str]] = []
1503
+ for match in _PY_FROM_IMPORT_RE.finditer(module_text):
1504
+ mod = match.group("mod")
1505
+ if not mod.startswith("."):
1506
+ continue
1507
+ names = match.group("names")
1508
+ for raw in names.replace("(", " ").replace(")", " ").split(","):
1509
+ name = raw.strip()
1510
+ if not name:
1511
+ continue
1512
+ if name == "*":
1513
+ edges.append((mod, symbol)) # star re-export forwards the name
1514
+ continue
1515
+ parts = [p.strip() for p in name.split(" as ")]
1516
+ original = parts[0]
1517
+ local = parts[-1]
1518
+ if local == symbol:
1519
+ edges.append((mod, original))
1520
+ return edges
1521
+
1522
+
1244
1523
  def _py_resolve_module(importer_rel: str, mod: str, project_root: Path) -> Path | None:
1245
1524
  """Resolve a python ``from <mod> import`` module to a sibling file (1 hop).
1246
1525
 
@@ -1351,13 +1630,19 @@ def _resolve_evidence(
1351
1630
  imported_lookup: Callable[[str, str], str | None],
1352
1631
  module_resolver: Callable[[str, str, Path], Path | None],
1353
1632
  def_finder: Callable[[str, str], "tuple[str, list[str]] | None"],
1633
+ reexport_edges: Callable[[str, str], list[tuple[str, str]]] | None = None,
1354
1634
  ) -> AssertionEvidence:
1355
1635
  """Shared 1-hop helper-resolution engine (language plug-ins supply the rest).
1356
1636
 
1357
1637
  ``primitive_re`` detects a primitive assertion/fail in a helper body;
1358
1638
  ``imported_lookup(importer_text, symbol)`` returns the binding specifier/module;
1359
1639
  ``module_resolver(importer_rel, spec, root)`` resolves it to a file;
1360
- ``def_finder(module_text, name)`` returns ``(body, params)`` for the helper.
1640
+ ``def_finder(module_text, name)`` returns ``(body, params)`` for the helper;
1641
+ ``reexport_edges(module_text, symbol)`` (optional) returns the barrel
1642
+ re-export edges that can carry ``symbol`` onward, so a helper imported from a
1643
+ barrel index that only RE-EXPORTS its real definition is still reachable. A
1644
+ profile that supplies no follower simply never crosses a barrel (degrades to
1645
+ the 2.31.0 direct/simple-import behavior).
1361
1646
  """
1362
1647
 
1363
1648
  calls = _extract_helper_calls(block.body_text)
@@ -1379,6 +1664,7 @@ def _resolve_evidence(
1379
1664
  imported_lookup=imported_lookup,
1380
1665
  module_resolver=module_resolver,
1381
1666
  def_finder=def_finder,
1667
+ reexport_edges=reexport_edges,
1382
1668
  hops=_MAX_HELPER_HOPS,
1383
1669
  seen=frozenset(),
1384
1670
  )
@@ -1400,6 +1686,75 @@ def _resolve_evidence(
1400
1686
  return AssertionEvidence(ok=False, reason="no_assertion")
1401
1687
 
1402
1688
 
1689
+ def _follow_reexports_for_def(
1690
+ *,
1691
+ name: str,
1692
+ module_text: str,
1693
+ module_rel: str,
1694
+ project_root: Path,
1695
+ module_resolver: Callable[[str, str, Path], Path | None],
1696
+ def_finder: Callable[[str, str], "tuple[str, list[str]] | None"],
1697
+ reexport_edges: Callable[[str, str], list[tuple[str, str]]],
1698
+ depth: int,
1699
+ visited: frozenset[str],
1700
+ ) -> "tuple[tuple[str, list[str]], str, str] | None":
1701
+ """Follow a barrel's re-export edges to the module that DEFINES ``name``.
1702
+
1703
+ ``module_text`` / ``module_rel`` are the current (barrel) module. Each
1704
+ re-export edge ``(spec, original_name)`` from :func:`reexport_edges` is
1705
+ resolved with the SAME ``module_resolver`` used for imports (the barrel acts
1706
+ as the importer for its own relative re-exports), the target module is read,
1707
+ and ``def_finder`` is tried there for ``original_name``. A target that is
1708
+ itself a barrel is recursed into (``original_name`` carried forward, depth
1709
+ decremented). Returns ``((body, params), defining_text, defining_rel)`` for
1710
+ the FIRST edge that reaches a real def, or ``None`` if no edge within
1711
+ ``depth`` hops resolves. Bounded by ``depth`` and a ``visited`` set of module
1712
+ rel-paths (cycle guard: ``a → b → a`` barrels terminate).
1713
+
1714
+ Pure reach: the returned body is still subject to the caller's primitive +
1715
+ argument-anchor checks, so a barrel that re-exports a no-op/constant helper
1716
+ yields that no-op body (which then FAILS) — never a pass.
1717
+ """
1718
+
1719
+ if depth <= 0 or module_rel in visited:
1720
+ return None
1721
+ visited = visited | {module_rel}
1722
+
1723
+ for spec, original in reexport_edges(module_text, name):
1724
+ target_file = module_resolver(module_rel, spec, project_root)
1725
+ if target_file is None:
1726
+ continue
1727
+ try:
1728
+ target_text = target_file.read_text(encoding="utf-8")
1729
+ except (OSError, UnicodeDecodeError):
1730
+ continue
1731
+ try:
1732
+ target_rel = target_file.resolve().relative_to(project_root).as_posix()
1733
+ except ValueError:
1734
+ target_rel = spec
1735
+ if target_rel in visited:
1736
+ continue
1737
+ found = def_finder(target_text, original)
1738
+ if found is not None:
1739
+ return found, target_text, target_rel
1740
+ # Target is itself a barrel — recurse, carrying the (possibly aliased)
1741
+ # original name onward and decrementing the re-export budget.
1742
+ deeper = _follow_reexports_for_def(
1743
+ name=original,
1744
+ module_text=target_text,
1745
+ module_rel=target_rel,
1746
+ project_root=project_root,
1747
+ module_resolver=module_resolver,
1748
+ def_finder=def_finder,
1749
+ reexport_edges=reexport_edges,
1750
+ depth=depth - 1,
1751
+ visited=visited,
1752
+ )
1753
+ if deeper is not None:
1754
+ return deeper
1755
+ return None
1756
+
1757
+
1403
1758
  def _resolve_one_helper(
1404
1759
  *,
1405
1760
  name: str,
@@ -1410,6 +1765,7 @@ def _resolve_one_helper(
1410
1765
  imported_lookup: Callable[[str, str], str | None],
1411
1766
  module_resolver: Callable[[str, str, Path], Path | None],
1412
1767
  def_finder: Callable[[str, str], "tuple[str, list[str]] | None"],
1768
+ reexport_edges: Callable[[str, str], list[tuple[str, str]]] | None = None,
1413
1769
  hops: int,
1414
1770
  seen: frozenset[str],
1415
1771
  ) -> AssertionEvidence:
@@ -1420,6 +1776,13 @@ def _resolve_one_helper(
1420
1776
  delegates to a DEEPER assertion helper (forwarding its own params, checked via
1421
1777
  ``inner_anchor & param_set`` below) is followed one more hop, so a chain like
1422
1778
  ``expectSuccessfulRun → expectExitCode`` resolves.
1779
+
1780
+ When the binding module is a BARREL (it carries no def of ``name`` and only
1781
+ re-exports siblings), the def is located by following the module's re-export
1782
+ edges via ``reexport_edges`` (bounded by ``_MAX_REEXPORT_HOPS`` + a visited-
1783
+ file cycle guard). The defining module's text/rel then replace the barrel's so
1784
+ the SAME primitive + argument-anchor checks (and any deeper helper hop) run
1785
+ against the real body — barrel following adds reach, never a pass.
1423
1786
  """
1424
1787
 
1425
1788
  if hops <= 0 or name in seen:
@@ -1443,19 +1806,41 @@ def _resolve_one_helper(
1443
1806
  resolved_rel = importer_rel
1444
1807
 
1445
1808
  found = def_finder(module_text, name)
1809
+ if found is None and reexport_edges is not None and spec is not None:
1810
+ # Binding module has no def of ``name`` — it may be a BARREL that only
1811
+ # re-exports the real definition. Follow re-export edges to the defining
1812
+ # module, then continue with the SAME credibility checks below.
1813
+ followed = _follow_reexports_for_def(
1814
+ name=name,
1815
+ module_text=module_text,
1816
+ module_rel=resolved_rel,
1817
+ project_root=project_root,
1818
+ module_resolver=module_resolver,
1819
+ def_finder=def_finder,
1820
+ reexport_edges=reexport_edges,
1821
+ depth=_MAX_REEXPORT_HOPS,
1822
+ visited=frozenset(),
1823
+ )
1824
+ if followed is not None:
1825
+ found, module_text, resolved_rel = followed
1446
1826
  if found is None:
1447
- # Not defined in the binding module (and no same-file def) unresolved.
1827
+ # Not defined in the binding module, no same-file def, and no resolvable
1828
+ # re-export chain reaches a def → unresolved (greenfield strict ⇒ fail).
1448
1829
  return AssertionEvidence(ok=False, reason="unresolved_helper", detail=name)
1449
1830
  body, params = found
1450
1831
  param_set = set(params)
1451
1832
 
1452
1833
  # Primitive assertion/fail in the helper body?
1453
1834
  if primitive_re.search(body):
1454
- # Argument anchor (anti-no-op): a PRIMITIVE assertion LINE must reference
1455
- # one of the helper's own parameters. A helper that asserts only a
1456
- # constant (``expect(true).toBe(true)`` / ``assert True``) never does, so
1835
+ # Argument anchor (anti-no-op): a PRIMITIVE assertion must reference one of
1836
+ # the helper's own parameters OR a local DERIVED from a parameter (1-2
1837
+ # hops), e.g. ``const body = await readJson(response); expect(body.error)``
1838
+ # — ``body`` flows from the ``response`` param, so the assertion IS anchored
1839
+ # to the call's data. A helper that asserts only a constant
1840
+ # (``expect(true).toBe(true)`` / ``assert True``) references neither, so
1457
1841
  # marker-spam delegating to it FAILS — the helper NAME is never trusted.
1458
- if _body_references_params(body, param_set, primitive_re):
1842
+ anchor_set = _params_and_derived_locals(body, param_set)
1843
+ if _body_references_params(body, anchor_set, primitive_re):
1459
1844
  return AssertionEvidence(ok=True, reason="helper_resolved", detail=name)
1460
1845
  return AssertionEvidence(ok=False, reason="constant_helper", detail=name)
1461
1846
 
@@ -1474,6 +1859,7 @@ def _resolve_one_helper(
1474
1859
  imported_lookup=imported_lookup,
1475
1860
  module_resolver=module_resolver,
1476
1861
  def_finder=def_finder,
1862
+ reexport_edges=reexport_edges,
1477
1863
  hops=hops - 1,
1478
1864
  seen=seen,
1479
1865
  )
@@ -1482,20 +1868,75 @@ def _resolve_one_helper(
1482
1868
  return AssertionEvidence(ok=False, reason="helper_no_primitive", detail=name)
1483
1869
 
1484
1870
 
1871
+ #: An ASSIGNMENT binding a local from an expression: ``const body = …`` /
1872
+ #: ``let x = …`` / ``var y = …`` (TS/JS) and a bare ``name = …`` (Python). Captures
1873
+ #: the bound NAME(s) (lhs) and the RHS expression so a local derived from a
1874
+ #: parameter can be added to the anchor set. ``==`` / ``=>`` / ``<=`` / ``>=`` /
1875
+ #: ``!=`` are excluded (comparisons / arrows, not bindings). Single-name binds are
1876
+ #: matched anywhere a line allows; DESTRUCTURING (``const { a, b } = …`` /
1877
+ #: ``const [x] = …``) requires a leading ``const``/``let``/``var`` keyword and may
1878
+ #: not span a newline — this is what stops the lhs ``{…}`` alternative from
1879
+ #: swallowing the FUNCTION BODY's own opening brace.
1880
+ _ASSIGN_RE = re.compile(
1881
+ r"^[ \t]*(?:"
1882
+ r"(?:const|let|var)\s+(?P<destructure>\{[^}\n]*\}|\[[^\]\n]*\])"
1883
+ r"|(?:(?:const|let|var)\s+)?(?P<name>[A-Za-z_$][\w$]*)"
1884
+ r")\s*=(?![=>])\s*(?P<rhs>.+)$",
1885
+ re.MULTILINE,
1886
+ )
1887
+ #: Derivation hops: ``a = f(param); b = g(a); expect(b…)`` resolves with 2 passes.
1888
+ _MAX_DERIVE_PASSES = 2
1889
+
1890
+
1891
+ def _params_and_derived_locals(body: str, param_set: set[str]) -> set[str]:
1892
+ """``param_set`` plus locals DERIVED from a parameter within ``body`` (≤2 hops).
1893
+
1894
+ The argument anchor must credit ``const body = await readJson(response);
1895
+ expect(body.error)…`` — the assertion references ``body``, a local that FLOWS
1896
+ from the ``response`` parameter, so it is genuinely anchored to the call's data
1897
+ (root-cause-#2: the 2.31.0 anchor only saw a DIRECT param reference and wrongly
1898
+ rejected param-derived locals). A binding ``X = <rhs>`` adds ``X`` to the set
1899
+ iff its RHS references something already in the set (a param or an
1900
+ already-derived local). Two passes follow a short ``param → a → b`` chain.
1901
+ Constants never enter the set (``const k = 5`` references no param), so a
1902
+ constant-only helper stays unanchored ⇒ FAIL. Destructured bindings
1903
+ (``const { error } = body``) add each bound name when the RHS is derived.
1904
+ """
1905
+
1906
+ if not param_set:
1907
+ return set()
1908
+ derived = set(param_set)
1909
+ for _ in range(_MAX_DERIVE_PASSES):
1910
+ grew = False
1911
+ for match in _ASSIGN_RE.finditer(body):
1912
+ rhs_idents = set(re.findall(r"[A-Za-z_$][\w$]*", match.group("rhs")))
1913
+ if not (rhs_idents & derived):
1914
+ continue
1915
+ lhs = match.group("destructure") or match.group("name") or ""
1916
+ for lhs_name in re.findall(r"[A-Za-z_$][\w$]*", lhs):
1917
+ if lhs_name not in derived:
1918
+ derived.add(lhs_name)
1919
+ grew = True
1920
+ if not grew:
1921
+ break
1922
+ return derived
1923
+
1924
+
1485
1925
  def _body_references_params(
1486
1926
  body: str, param_set: set[str], primitive_re: re.Pattern[str]
1487
1927
  ) -> bool:
1488
1928
  """A primitive assertion in ``body`` references one of ``param_set``.
1489
1929
 
1490
1930
  The "argument anchor": a primitive assertion must mention a parameter (or a
1491
- value derived from it), so a no-op helper that asserts only a CONSTANT
1492
- (``expect(true).toBe(true)`` / ``assert True``) and merely *names* a param
1493
- elsewhere is NOT anchored. The check is per primitive-assertion STATEMENT,
1494
- where a statement is the assertion line PLUS any following lines indented
1495
- MORE than it (its block) so a context-manager assertion
1496
- (``with pytest.raises(...):\\n fn()``) is anchored by the ``fn()`` call in
1497
- its block, while a trailing same-indent ``log(result)`` after a constant
1498
- ``expect(true)`` is not.
1931
+ value derived from it ``param_set`` is pre-expanded with param-derived locals
1932
+ by :func:`_params_and_derived_locals` at the call site), so a no-op helper that
1933
+ asserts only a CONSTANT (``expect(true).toBe(true)`` / ``assert True``) and
1934
+ merely *names* a param elsewhere is NOT anchored. The check is per
1935
+ primitive-assertion STATEMENT, where a statement is the assertion line PLUS any
1936
+ following lines indented MORE than it (its block) so a context-manager
1937
+ assertion (``with pytest.raises(...):\\n fn()``) is anchored by the ``fn()``
1938
+ call in its block, while a trailing same-indent ``log(result)`` after a
1939
+ constant ``expect(true)`` is not.
1499
1940
  """
1500
1941
 
1501
1942
  if not param_set:
@@ -1541,6 +1982,7 @@ def _resolve_typescript_evidence(
1541
1982
  imported_lookup=_ts_imported_specifier,
1542
1983
  module_resolver=_mod_resolver,
1543
1984
  def_finder=_ts_find_function_def,
1985
+ reexport_edges=_ts_reexport_edges,
1544
1986
  )
1545
1987
 
1546
1988
 
@@ -1559,4 +2001,5 @@ def _resolve_python_evidence(
1559
2001
  imported_lookup=_py_imported_module,
1560
2002
  module_resolver=_mod_resolver,
1561
2003
  def_finder=_py_find_function_def,
2004
+ reexport_edges=_py_reexport_edges,
1562
2005
  )
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "codd-dev"
7
- version = "2.33.0"
7
+ version = "2.35.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