codd-dev 2.29.0__tar.gz → 2.31.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 (572) hide show
  1. {codd_dev-2.29.0 → codd_dev-2.31.0}/PKG-INFO +1 -1
  2. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/__init__.py +1 -1
  3. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/e2e_generator.py +11 -0
  4. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/generator.py +1 -0
  5. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/greenfield/pipeline.py +203 -21
  6. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/implementer.py +4 -3
  7. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/project_types.py +28 -0
  8. codd_dev-2.31.0/codd/vb_marker_authenticity.py +1562 -0
  9. codd_dev-2.31.0/codd/vb_rerun_scope.py +225 -0
  10. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/verifiable_behavior_audit.py +52 -1
  11. {codd_dev-2.29.0 → codd_dev-2.31.0}/pyproject.toml +1 -1
  12. {codd_dev-2.29.0 → codd_dev-2.31.0}/.gitignore +0 -0
  13. {codd_dev-2.29.0 → codd_dev-2.31.0}/LICENSE +0 -0
  14. {codd_dev-2.29.0 → codd_dev-2.31.0}/README.md +0 -0
  15. {codd_dev-2.29.0 → codd_dev-2.31.0}/bench_fixture/README.md +0 -0
  16. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/__main__.py +0 -0
  17. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/_git_helper.py +0 -0
  18. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/action_outcome.py +0 -0
  19. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/ai_invoke.py +0 -0
  20. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/ai_patch.py +0 -0
  21. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/artifact_contract.py +0 -0
  22. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/artifact_ids.py +0 -0
  23. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/artifacts/catalog.yaml +0 -0
  24. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/ask_user_question_adapter.py +0 -0
  25. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/assembler.py +0 -0
  26. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/bridge.py +0 -0
  27. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/brownfield/__init__.py +0 -0
  28. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/brownfield/pipeline.py +0 -0
  29. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/capability_completeness.py +0 -0
  30. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/claude_cli.py +0 -0
  31. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/cli.py +0 -0
  32. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/clustering.py +0 -0
  33. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/coherence_adapters.py +0 -0
  34. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/coherence_engine.py +0 -0
  35. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/confidence.py +0 -0
  36. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/config.py +0 -0
  37. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/config_schema.py +0 -0
  38. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/contracts.py +0 -0
  39. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/coverage_auditor.py +0 -0
  40. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/coverage_metrics.py +0 -0
  41. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/__init__.py +0 -0
  42. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/auto_repair.py +0 -0
  43. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/builder.py +0 -0
  44. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/checks/__init__.py +0 -0
  45. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/checks/_one_to_many_detection.py +0 -0
  46. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/checks/artifact_contract_check.py +0 -0
  47. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/checks/ci_health.py +0 -0
  48. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/checks/dependency_freshness.py +0 -0
  49. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/checks/depends_on_consistency.py +0 -0
  50. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/checks/deployment_completeness.py +0 -0
  51. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/checks/edge_validity.py +0 -0
  52. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/checks/environment_coverage.py +0 -0
  53. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/checks/implementation_coverage.py +0 -0
  54. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/checks/node_completeness.py +0 -0
  55. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/checks/opt_out.py +0 -0
  56. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/checks/task_completion.py +0 -0
  57. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/checks/transitive_closure.py +0 -0
  58. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/checks/ui_coherence.py +0 -0
  59. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/checks/user_journey_coherence.py +0 -0
  60. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/coverage_axes.py +0 -0
  61. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/defaults/cli.yaml +0 -0
  62. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/defaults/cpp_embedded.yaml +0 -0
  63. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/defaults/csharp.yaml +0 -0
  64. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/defaults/elixir.yaml +0 -0
  65. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/defaults/generic.yaml +0 -0
  66. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/defaults/iot.yaml +0 -0
  67. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/defaults/java.yaml +0 -0
  68. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/defaults/kotlin.yaml +0 -0
  69. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/defaults/mobile.yaml +0 -0
  70. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/defaults/ruby.yaml +0 -0
  71. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/defaults/rust.yaml +0 -0
  72. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/defaults/scala.yaml +0 -0
  73. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/defaults/swift.yaml +0 -0
  74. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/defaults/test_frameworks.yaml +0 -0
  75. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/defaults/web.yaml +0 -0
  76. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/extractor.py +0 -0
  77. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/impact.py +0 -0
  78. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dag/runner.py +0 -0
  79. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/defaults.py +0 -0
  80. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/defaults.yaml +0 -0
  81. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/dependency_lock_coherence.py +0 -0
  82. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deploy_targets/__init__.py +0 -0
  83. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deploy_targets/app_service.py +0 -0
  84. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deploy_targets/base.py +0 -0
  85. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deploy_targets/docker_compose.py +0 -0
  86. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deployer.py +0 -0
  87. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deployment/__init__.py +0 -0
  88. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deployment/checks/__init__.py +0 -0
  89. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deployment/defaults/deploy_targets.yaml +0 -0
  90. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
  91. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deployment/defaults/schema_providers.yaml +0 -0
  92. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deployment/defaults/verification_templates.yaml +0 -0
  93. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deployment/extractor.py +0 -0
  94. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deployment/providers/__init__.py +0 -0
  95. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deployment/providers/ai_command.py +0 -0
  96. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deployment/providers/ai_command_factory.py +0 -0
  97. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deployment/providers/codex_app_server.py +0 -0
  98. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deployment/providers/llm_consideration.py +0 -0
  99. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deployment/providers/schema/__init__.py +0 -0
  100. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deployment/providers/schema/prisma.py +0 -0
  101. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deployment/providers/target/__init__.py +0 -0
  102. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deployment/providers/target/docker_compose.py +0 -0
  103. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deployment/providers/verification/__init__.py +0 -0
  104. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
  105. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deployment/providers/verification/cdp_browser.py +0 -0
  106. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deployment/providers/verification/cdp_engines.py +0 -0
  107. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
  108. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deployment/providers/verification/cdp_wire.py +0 -0
  109. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deployment/providers/verification/curl.py +0 -0
  110. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deployment/providers/verification/form_strategies.py +0 -0
  111. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deployment/providers/verification/means_catalog.py +0 -0
  112. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deployment/providers/verification/playwright.py +0 -0
  113. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/deployment/providers/verification/vitest.py +0 -0
  114. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/design_md.py +0 -0
  115. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/diff/__init__.py +0 -0
  116. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/diff/apply.py +0 -0
  117. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/diff/engine.py +0 -0
  118. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/diff/persistence.py +0 -0
  119. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/diff/templates/diff_prompt.md +0 -0
  120. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/discovery.py +0 -0
  121. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/drift.py +0 -0
  122. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/e2e_contract_coherence.py +0 -0
  123. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/e2e_extractor.py +0 -0
  124. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/e2e_runner.py +0 -0
  125. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/elicit/__init__.py +0 -0
  126. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/elicit/apply.py +0 -0
  127. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/elicit/engine.py +0 -0
  128. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/elicit/finding.py +0 -0
  129. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/elicit/formatters/__init__.py +0 -0
  130. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/elicit/formatters/base.py +0 -0
  131. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/elicit/formatters/interactive.py +0 -0
  132. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/elicit/formatters/json_fmt.py +0 -0
  133. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/elicit/formatters/md.py +0 -0
  134. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/elicit/lexicon_loader.py +0 -0
  135. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/elicit/persistence.py +0 -0
  136. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
  137. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/env_refs.py +0 -0
  138. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/extract_ai.py +0 -0
  139. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/extract_paths.py +0 -0
  140. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/extractor.py +0 -0
  141. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/fix/__init__.py +0 -0
  142. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/fix/candidate_selector.py +0 -0
  143. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/fix/design_updater.py +0 -0
  144. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/fix/impl_propagation.py +0 -0
  145. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/fix/interactive_prompt.py +0 -0
  146. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/fix/phenomenon_fixer.py +0 -0
  147. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/fix/phenomenon_parser.py +0 -0
  148. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/fix/risk_classifier.py +0 -0
  149. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/fix/templates/clarification_question.txt +0 -0
  150. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/fix/templates/design_update.txt +0 -0
  151. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/fix/templates/impl_update.txt +0 -0
  152. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/fix/templates/phenomenon_parse.txt +0 -0
  153. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/fix/templates/risk_assessment.txt +0 -0
  154. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/fix/templates_loader.py +0 -0
  155. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/fixer.py +0 -0
  156. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/fixup_drift.py +0 -0
  157. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/fixup_drift_strategies/__init__.py +0 -0
  158. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
  159. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
  160. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/fixup_drift_strategies/url_drift.py +0 -0
  161. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/frontmatter.py +0 -0
  162. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/git_evidence.py +0 -0
  163. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/graph.py +0 -0
  164. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/greenfield/__init__.py +0 -0
  165. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/hitl_session.py +0 -0
  166. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/hooks/__init__.py +0 -0
  167. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/hooks/pre-commit +0 -0
  168. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/hooks/recipes/claude_requirements_nudge.json +0 -0
  169. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/hooks/recipes/claude_settings_example.json +0 -0
  170. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/hooks/recipes/codex_hook.sh +0 -0
  171. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/hooks/recipes/git_post_commit.sh +0 -0
  172. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/hooks/recipes/git_pre_commit.sh +0 -0
  173. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/iac_nfr.py +0 -0
  174. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/implement_oracle.py +0 -0
  175. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/implement_oracle_scope.py +0 -0
  176. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/implementer/__init__.py +0 -0
  177. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/implementer/chunked_runner.py +0 -0
  178. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/implementer/typecheck_loop.py +0 -0
  179. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/import_coherence.py +0 -0
  180. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/inheritance.py +0 -0
  181. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/init/__init__.py +0 -0
  182. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/init/lexicon_suggest.py +0 -0
  183. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/init/llm_lexicon_suggester.py +0 -0
  184. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/init/stack_detector.py +0 -0
  185. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/knowledge_fetcher.py +0 -0
  186. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/lexicon.py +0 -0
  187. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/lexicon_cli/__init__.py +0 -0
  188. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/lexicon_cli/formatters/__init__.py +0 -0
  189. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/lexicon_cli/formatters/html.py +0 -0
  190. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
  191. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/lexicon_cli/formatters/md.py +0 -0
  192. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/lexicon_cli/inspector.py +0 -0
  193. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/lexicon_cli/manager.py +0 -0
  194. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/lexicon_cli/reporter.py +0 -0
  195. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/lexicon_cli/threshold.py +0 -0
  196. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/llm/__init__.py +0 -0
  197. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/llm/approval.py +0 -0
  198. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/llm/best_practice_augmenter.py +0 -0
  199. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/llm/criteria_expander.py +0 -0
  200. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/llm/design_doc_extractor.py +0 -0
  201. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/llm/impl_step_deriver.py +0 -0
  202. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/llm/means_catalog_loader.py +0 -0
  203. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/llm/parser.py +0 -0
  204. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/llm/plan_deriver.py +0 -0
  205. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/llm/prompt_builder.py +0 -0
  206. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/llm/strategy_validator.py +0 -0
  207. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/llm/templates/best_practice_augment_meta.md +0 -0
  208. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/llm/templates/criteria_expand_meta.md +0 -0
  209. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/llm/templates/design_doc_extract_meta.md +0 -0
  210. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/llm/templates/impl_step_derive_meta.md +0 -0
  211. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
  212. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/llm/templates/meta_instruction.md +0 -0
  213. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/llm/templates/plan_derive_meta.md +0 -0
  214. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/llm/templates/verification_means_catalog.yaml +0 -0
  215. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/mcp_server.py +0 -0
  216. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/measure.py +0 -0
  217. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/operational_e2e_audit.py +0 -0
  218. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/operations_derive.py +0 -0
  219. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/parsing/__init__.py +0 -0
  220. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/parsing/_shared.py +0 -0
  221. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/parsing/api_specs.py +0 -0
  222. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/parsing/filesystem_routes.py +0 -0
  223. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/parsing/iac.py +0 -0
  224. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/parsing/python_ast.py +0 -0
  225. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/parsing/schemas.py +0 -0
  226. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/parsing/tests_builddeps.py +0 -0
  227. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/parsing/treesitter.py +0 -0
  228. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/planner.py +0 -0
  229. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/policy.py +0 -0
  230. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/preflight/__init__.py +0 -0
  231. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/preflight/defaults/cli.yaml +0 -0
  232. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/preflight/defaults/generic.yaml +0 -0
  233. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/preflight/defaults/iot.yaml +0 -0
  234. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/preflight/defaults/mobile.yaml +0 -0
  235. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/preflight/defaults/web.yaml +0 -0
  236. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/propagate.py +0 -0
  237. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/propagation_common.py +0 -0
  238. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/propagator.py +0 -0
  239. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/reconciliation_ledger.py +0 -0
  240. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/registry.py +0 -0
  241. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/repair/__init__.py +0 -0
  242. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/repair/approval_repair.py +0 -0
  243. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/repair/auto_scope_guard.py +0 -0
  244. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/repair/engine.py +0 -0
  245. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/repair/git_patcher.py +0 -0
  246. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/repair/history.py +0 -0
  247. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/repair/llm_repair_engine.py +0 -0
  248. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/repair/loop.py +0 -0
  249. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/repair/primary_picker.py +0 -0
  250. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/repair/proof_breaks.py +0 -0
  251. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/repair/repair_result.py +0 -0
  252. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/repair/repairability_classifier.py +0 -0
  253. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/repair/schema.py +0 -0
  254. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/repair/templates/analyze_meta.md +0 -0
  255. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/repair/templates/propose_meta.md +0 -0
  256. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/repair/templates/repair_strategy_meta.md +0 -0
  257. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/repair/templates/repairability_meta.md +0 -0
  258. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/repair/test_failure_attribution.py +0 -0
  259. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/repair/verify_runner.py +0 -0
  260. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/repair_slice.py +0 -0
  261. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/require.py +0 -0
  262. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/require_plugins.py +0 -0
  263. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/require_propagate.py +0 -0
  264. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/required_artifacts/defaults/cli.yaml +0 -0
  265. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/required_artifacts/defaults/generic.yaml +0 -0
  266. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/required_artifacts/defaults/iot.yaml +0 -0
  267. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/required_artifacts/defaults/mobile.yaml +0 -0
  268. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/required_artifacts/defaults/web.yaml +0 -0
  269. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/required_artifacts_deriver.py +0 -0
  270. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/requirement_completeness/defaults/cli.yaml +0 -0
  271. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/requirement_completeness/defaults/generic.yaml +0 -0
  272. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/requirement_completeness/defaults/iot.yaml +0 -0
  273. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
  274. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/requirement_completeness/defaults/web.yaml +0 -0
  275. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/requirement_completeness_auditor.py +0 -0
  276. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/requirement_reconciliation.py +0 -0
  277. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/requirements_meta.py +0 -0
  278. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/restoration_report.py +0 -0
  279. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/restore.py +0 -0
  280. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/routes_extractor.py +0 -0
  281. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/runtime_smoke/__init__.py +0 -0
  282. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/runtime_smoke/checks.py +0 -0
  283. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/runtime_smoke/config.py +0 -0
  284. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/runtime_smoke/report.py +0 -0
  285. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/runtime_smoke/runner.py +0 -0
  286. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/scanner.py +0 -0
  287. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/schema_refs.py +0 -0
  288. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/screen_flow_validator.py +0 -0
  289. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/screen_transition_extractor.py +0 -0
  290. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/screen_transitions/defaults.yaml +0 -0
  291. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/skills_cli/__init__.py +0 -0
  292. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/skills_cli/discovery.py +0 -0
  293. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/skills_cli/manager.py +0 -0
  294. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/skills_cli/paths.py +0 -0
  295. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/surface_reconciliation.py +0 -0
  296. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/synth.py +0 -0
  297. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/templates/codd.yaml.tmpl +0 -0
  298. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/templates/conventions.yaml.tmpl +0 -0
  299. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/templates/data_dependencies.yaml.tmpl +0 -0
  300. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/templates/doc_links.yaml.tmpl +0 -0
  301. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/templates/extract_ai_prompt_baseline.md +0 -0
  302. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/templates/extracted/api-contract.md.j2 +0 -0
  303. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
  304. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/templates/extracted/module-detail.md.j2 +0 -0
  305. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/templates/extracted/schema-design.md.j2 +0 -0
  306. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/templates/extracted/system-context.md.j2 +0 -0
  307. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/templates/gitignore.tmpl +0 -0
  308. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/templates/lexicon_questions.md +0 -0
  309. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/templates/lexicon_schema.yaml +0 -0
  310. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/templates/overrides.yaml.tmpl +0 -0
  311. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/test_detection.py +0 -0
  312. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/test_import_coherence.py +0 -0
  313. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/traceability.py +0 -0
  314. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/validator.py +0 -0
  315. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/watch/__init__.py +0 -0
  316. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/watch/events.py +0 -0
  317. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/watch/propagation_log.py +0 -0
  318. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/watch/propagation_pipeline.py +0 -0
  319. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/watch/test_runner.py +0 -0
  320. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/watch/watcher.py +0 -0
  321. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd/wiring.py +0 -0
  322. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
  323. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
  324. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
  325. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
  326. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
  327. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
  328. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
  329. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
  330. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
  331. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
  332. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
  333. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
  334. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
  335. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
  336. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
  337. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
  338. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
  339. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
  340. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
  341. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
  342. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
  343. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
  344. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
  345. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
  346. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
  347. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
  348. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
  349. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
  350. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
  351. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
  352. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
  353. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
  354. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
  355. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
  356. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
  357. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
  358. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
  359. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
  360. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
  361. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
  362. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
  363. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
  364. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
  365. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
  366. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
  367. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
  368. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
  369. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
  370. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
  371. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
  372. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
  373. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
  374. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
  375. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
  376. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
  377. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
  378. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
  379. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
  380. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
  381. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/data_aggregation_policies/coverage_matrix.md +0 -0
  382. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/data_aggregation_policies/elicit_extend.md +0 -0
  383. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/data_aggregation_policies/lexicon.yaml +0 -0
  384. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/data_aggregation_policies/manifest.yaml +0 -0
  385. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/data_aggregation_policies/recommended_kinds.yaml +0 -0
  386. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/data_aggregation_policies/severity_rules.yaml +0 -0
  387. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
  388. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
  389. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
  390. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
  391. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
  392. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
  393. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
  394. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
  395. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
  396. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
  397. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
  398. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
  399. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
  400. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
  401. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
  402. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
  403. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
  404. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
  405. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
  406. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
  407. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
  408. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
  409. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
  410. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
  411. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
  412. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
  413. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
  414. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
  415. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
  416. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
  417. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
  418. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
  419. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
  420. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
  421. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
  422. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
  423. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
  424. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
  425. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
  426. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
  427. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
  428. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
  429. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
  430. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
  431. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
  432. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
  433. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
  434. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
  435. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
  436. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
  437. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
  438. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
  439. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
  440. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
  441. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
  442. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
  443. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
  444. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
  445. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
  446. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
  447. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
  448. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
  449. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
  450. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
  451. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
  452. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
  453. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
  454. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
  455. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
  456. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
  457. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
  458. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
  459. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
  460. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
  461. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
  462. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
  463. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
  464. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
  465. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
  466. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
  467. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
  468. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
  469. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
  470. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
  471. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
  472. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
  473. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
  474. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
  475. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
  476. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
  477. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
  478. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
  479. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
  480. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
  481. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
  482. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
  483. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
  484. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
  485. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
  486. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
  487. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
  488. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
  489. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
  490. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
  491. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
  492. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
  493. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
  494. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
  495. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
  496. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
  497. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
  498. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
  499. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
  500. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
  501. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
  502. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
  503. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
  504. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
  505. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
  506. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
  507. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
  508. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
  509. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
  510. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
  511. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
  512. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
  513. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
  514. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
  515. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
  516. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
  517. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
  518. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
  519. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
  520. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
  521. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
  522. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
  523. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
  524. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
  525. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
  526. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
  527. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
  528. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
  529. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
  530. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
  531. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
  532. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
  533. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
  534. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
  535. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
  536. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
  537. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
  538. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
  539. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
  540. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
  541. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
  542. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
  543. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
  544. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
  545. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
  546. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
  547. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
  548. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
  549. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
  550. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
  551. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
  552. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
  553. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
  554. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
  555. {codd_dev-2.29.0 → codd_dev-2.31.0}/codd_plugins/stack_map.yaml +0 -0
  556. {codd_dev-2.29.0 → codd_dev-2.31.0}/docs/cookbook/cdp_browser/README.md +0 -0
  557. {codd_dev-2.29.0 → codd_dev-2.31.0}/docs/cookbook/presentation_aggregation/README.md +0 -0
  558. {codd_dev-2.29.0 → codd_dev-2.31.0}/docs/requirements/README.md +0 -0
  559. {codd_dev-2.29.0 → codd_dev-2.31.0}/dogfood/README.md +0 -0
  560. {codd_dev-2.29.0 → codd_dev-2.31.0}/dogfood/fixtures/flat_py_app/README.md +0 -0
  561. {codd_dev-2.29.0 → codd_dev-2.31.0}/examples/README.md +0 -0
  562. {codd_dev-2.29.0 → codd_dev-2.31.0}/skills/codd-assemble/SKILL.md +0 -0
  563. {codd_dev-2.29.0 → codd_dev-2.31.0}/skills/codd-evolve/SKILL.md +0 -0
  564. {codd_dev-2.29.0 → codd_dev-2.31.0}/skills/codd-generate/SKILL.md +0 -0
  565. {codd_dev-2.29.0 → codd_dev-2.31.0}/skills/codd-greenfield/SKILL.md +0 -0
  566. {codd_dev-2.29.0 → codd_dev-2.31.0}/skills/codd-impact/SKILL.md +0 -0
  567. {codd_dev-2.29.0 → codd_dev-2.31.0}/skills/codd-init/SKILL.md +0 -0
  568. {codd_dev-2.29.0 → codd_dev-2.31.0}/skills/codd-propagate/SKILL.md +0 -0
  569. {codd_dev-2.29.0 → codd_dev-2.31.0}/skills/codd-restore/SKILL.md +0 -0
  570. {codd_dev-2.29.0 → codd_dev-2.31.0}/skills/codd-scan/SKILL.md +0 -0
  571. {codd_dev-2.29.0 → codd_dev-2.31.0}/skills/codd-validate/SKILL.md +0 -0
  572. {codd_dev-2.29.0 → codd_dev-2.31.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.29.0
3
+ Version: 2.31.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.29.0"
3
+ __version__ = "2.31.0"
@@ -375,6 +375,17 @@ def _render_header_comments(scenario: UserScenario, context: GenerationContext,
375
375
  if scenario.kind == "operational":
376
376
  source_operation = _source_operation_label(scenario)
377
377
  coverage_axis = scenario.coverage_axis or "unspecified"
378
+ # Machine-injection guard (anti-false-coverage): injecting a coverage
379
+ # marker is ONLY safe here because the mapping is HARNESS-OWNED and
380
+ # machine-known — this is a skeleton the harness itself generates for
381
+ # ``operation=<X>`` and the marker names that same operation. NEVER
382
+ # inject ``codd: covers vb=<id>`` into a free-form unit/integration test
383
+ # by guessing the VB from a test name or nearby text: a guessed marker is
384
+ # a false coverage claim the authenticity gate exists to reject. A VB
385
+ # marker may only be authored by the SUT on a test that genuinely proves
386
+ # the behavior, or attached to a harness-generated VB-specific skeleton
387
+ # whose asserting body the SUT fills in (still subject to the
388
+ # assertion-presence gate).
378
389
  lines.extend(
379
390
  [
380
391
  "// Operational E2E policy: run the whole generated suite, collect all failures, then repair after the full campaign finishes.",
@@ -226,6 +226,7 @@ _TEST_DOC_CANONICAL_VB_HEAD = [
226
226
  "- Every verifiable behavior must map to at least one test scenario — if a design document specifies a transition chain (e.g. action → intermediate state → final state), each link in the chain requires a separate assertion.",
227
227
  "- Include a traceability section that lists each verifiable behavior and its corresponding test scenario(s). Flag any behavior that lacks coverage.",
228
228
  "- Write that traceability section as a Markdown table whose FIRST column is a stable verifiable-behavior id of the form `VB-<id>` (e.g. `VB-01`, `VB-AUTH-02`), one row per verifiable behavior. Header wording and language are free; CoDD machine-parses the `VB-` id in the first cell (`codd test audit`), so never merge multiple behaviors into one row and never omit the id column.",
229
+ "- Each VB id must be ATOMIC — name exactly one behavior. Never use range or list shorthand in an id (no `VB-EVAL-02..06`, no `VB-02,03`, no `VB-02〜06`); write one row with a distinct atomic id per behavior instead. A range id cannot be honestly covered by a single test marker, and its members would read as permanently uncovered.",
229
230
  "- Declare each behavior under exactly one stable id; do not split one behavior across two ids or reuse an id for two different behaviors.",
230
231
  "- Treat design-time `operation_flow` records as the authoritative source for operational test obligations. Do not invent E2E-only behavior that is absent from requirements or design; instead flag missing design obligations.",
231
232
  ]
@@ -733,16 +733,29 @@ class GreenfieldPipeline:
733
733
  # — code that does not even typecheck cannot have meaningful VB coverage.
734
734
  self._enforce_implement_oracle_gate(project_root, tasks, options)
735
735
 
736
- # Project-wide VB coverage gate — ONCE, after every implement task has
737
- # run and all covering tests therefore exist. Per-task enforcement was
738
- # disabled in _default_implement_task_runner precisely because the gate
739
- # is project-wide; this is where it belongs. Honors the greenfield
740
- # coverage_gate option (--no-coverage-gate / greenfield.coverage_gate:
741
- # false) — when the owner turned it off, the final gate is skipped too.
736
+ # Project-wide VB coverage + marker-authenticity gate — ONCE, after every
737
+ # implement task has run and all covering tests therefore exist. Per-task
738
+ # enforcement was disabled in _default_implement_task_runner precisely
739
+ # because the gate is project-wide; this is where it belongs. Honors the
740
+ # greenfield coverage_gate option (--no-coverage-gate /
741
+ # greenfield.coverage_gate: false) — when the owner turned it off, the
742
+ # final gate is skipped too. The rerun is wired (was dormant): an
743
+ # uncovered VB drives a bounded, TEST-SCOPED re-implementation (source is
744
+ # never edited by a VB rerun) with gap feedback, and the native oracle is
745
+ # re-asserted after each test edit.
746
+ coverage_on = bool(options.get("coverage_gate", True))
742
747
  _enforce_stage_coverage_gate(
743
748
  project_root,
744
- coverage_gate=bool(options.get("coverage_gate", True)),
749
+ coverage_gate=coverage_on,
745
750
  echo=self.echo,
751
+ rerun=self._make_vb_rerun_callback(project_root, tasks, options) if coverage_on else None,
752
+ rerun_oracle=(
753
+ (lambda: self._enforce_implement_oracle_gate(project_root, tasks, options))
754
+ if coverage_on
755
+ else None
756
+ ),
757
+ scope_resolver=self._make_vb_scope_resolver(project_root, tasks) if coverage_on else None,
758
+ authenticity_profile=self._resolve_layout_profile(project_root) if coverage_on else None,
746
759
  )
747
760
  record["detail"] = f"{len(tasks)} task(s) implemented"
748
761
 
@@ -1051,6 +1064,91 @@ class GreenfieldPipeline:
1051
1064
  feedback=feedback,
1052
1065
  )
1053
1066
 
1067
+ def _make_vb_rerun_callback(
1068
+ self,
1069
+ project_root: Path,
1070
+ tasks: list[ImplementTaskRef],
1071
+ options: dict[str, Any],
1072
+ ) -> Callable[[str, Any], None]:
1073
+ """A ``rerun(feedback, scope)`` for the VB coverage gate's feedback loop.
1074
+
1075
+ Reuses the oracle's scoped, write-fenced rerun dispatch
1076
+ (:meth:`_rerun_tasks_with_feedback`): a TEST-scoped
1077
+ :class:`~codd.implement_oracle_scope.OracleRerunScope` re-implements ONLY
1078
+ its test tasks, fenced to test files/helpers, so a VB coverage rerun can
1079
+ never rewrite production source.
1080
+ """
1081
+
1082
+ def _rerun(feedback: str, scope: Any = None) -> None:
1083
+ self._rerun_tasks_with_feedback(project_root, tasks, feedback, options, scope=scope)
1084
+
1085
+ return _rerun
1086
+
1087
+ def _make_vb_scope_resolver(
1088
+ self,
1089
+ project_root: Path,
1090
+ tasks: list[ImplementTaskRef],
1091
+ ) -> Callable[[list[str]], Any]:
1092
+ """A resolver mapping uncovered VB source docs → a TEST-scoped rerun scope.
1093
+
1094
+ Delegates to :func:`codd.vb_rerun_scope.derive_vb_rerun_scope` with the
1095
+ pipeline's ``_output_paths_for_task`` so each task's outputs resolve the
1096
+ same way the rerun itself resolves them. A derivation failure degrades to
1097
+ a broad scope (never aborts the gate).
1098
+ """
1099
+ from codd.config import load_project_config
1100
+
1101
+ def _resolve(uncovered_source_docs: list[str]) -> Any:
1102
+ try:
1103
+ config = load_project_config(project_root)
1104
+ except (FileNotFoundError, ValueError):
1105
+ config = {}
1106
+ try:
1107
+ from codd.vb_rerun_scope import derive_vb_rerun_scope
1108
+
1109
+ return derive_vb_rerun_scope(
1110
+ uncovered_source_docs,
1111
+ tasks,
1112
+ config=config,
1113
+ path_resolver=_output_paths_for_task,
1114
+ )
1115
+ except Exception as exc: # noqa: BLE001 — degrade to broad, never abort.
1116
+ self.echo(f"[greenfield] VB rerun: scope derivation failed ({exc}); rerun stays broad.")
1117
+ from codd.implement_oracle_scope import SCOPE_BROAD, OracleRerunScope
1118
+
1119
+ return OracleRerunScope(
1120
+ rung=SCOPE_BROAD, # canonical broad ⇒ is_broad() True ⇒ unfenced
1121
+ task_ids=tuple(task.task_id for task in tasks),
1122
+ allowed_paths=(),
1123
+ detail="VB rerun: scope derivation error — broad fallback",
1124
+ )
1125
+
1126
+ return _resolve
1127
+
1128
+ def _resolve_layout_profile(self, project_root: Path) -> Any:
1129
+ """Resolve the active :class:`~codd.project_types.LayoutProfile` (or None).
1130
+
1131
+ Used by the marker-authenticity gate to obtain the per-language
1132
+ test-block adapter (``profile.test_block_profile()``). Best-effort: any
1133
+ resolution failure returns ``None`` so the gate degrades to its
1134
+ language-agnostic stage-1 (orphan) check rather than aborting.
1135
+ """
1136
+ try:
1137
+ from codd.project_types import resolve_layout_profile
1138
+
1139
+ config, language, source_dirs, test_dirs = self._layout_inputs(project_root)
1140
+ return resolve_layout_profile(
1141
+ language=language,
1142
+ project_name=self._layout_project_name(project_root, config),
1143
+ source_dirs=source_dirs,
1144
+ test_dirs=test_dirs,
1145
+ config=config,
1146
+ project_root=project_root,
1147
+ )
1148
+ except Exception as exc: # noqa: BLE001 — authenticity degrades without a profile.
1149
+ self.echo(f"[greenfield] VB authenticity: layout profile unavailable ({exc}); stage-1 only.")
1150
+ return None
1151
+
1054
1152
  def _default_implement_task_runner(
1055
1153
  self,
1056
1154
  project_root: Path,
@@ -1997,8 +2095,12 @@ def _enforce_stage_coverage_gate(
1997
2095
  *,
1998
2096
  coverage_gate: bool,
1999
2097
  echo: Callable[[str], None],
2098
+ rerun: Callable[[str, Any], None] | None = None,
2099
+ rerun_oracle: Callable[[], None] | None = None,
2100
+ scope_resolver: Callable[[list[str]], Any] | None = None,
2101
+ authenticity_profile: Any = None,
2000
2102
  ) -> None:
2001
- """Project-wide verifiable-behavior coverage gate for the implement STAGE.
2103
+ """Project-wide verifiable-behavior coverage + authenticity gate (implement STAGE).
2002
2104
 
2003
2105
  Runs ONCE after every implement task has completed, so all covering tests
2004
2106
  already exist. This is the correct granularity for the project-wide VB
@@ -2008,20 +2110,35 @@ def _enforce_stage_coverage_gate(
2008
2110
  — an early fixtures/helper task that writes no covering tests would
2009
2111
  otherwise hard-fail against the whole project's VBs.)
2010
2112
 
2011
- No ``rerun`` is wired: by stage end the build is complete, so any remaining
2012
- uncovered VB is a genuine failure of the whole implement stage, not a
2013
- transient gap to re-implement away. The failure is raised as a
2014
- :class:`StageError` carrying the gap list, which the pipeline records on the
2015
- implement stage record and surfaces through the existing checkpoint/resume
2016
- machinery.
2017
-
2018
- Honors the greenfield ``coverage_gate`` option: when it is off
2019
- (``--no-coverage-gate`` / ``greenfield.coverage_gate: false``) the gate is
2020
- skipped entirely. The project-level ``test_coverage.gate`` config is also
2021
- respected (via :func:`run_implement_coverage_gate`).
2113
+ Two gates, both HARD (raise :class:`StageError` on failure):
2114
+
2115
+ 1. **Coverage** (:func:`run_implement_coverage_gate`): every declared VB has a
2116
+ ``covers``/``blocked`` marker. When a ``rerun`` callback is wired, an
2117
+ uncovered gap drives a bounded, TEST-SCOPED re-implementation with gap
2118
+ feedback (the previously-dormant feedback loop, now live) before failing.
2119
+ 2. **Authenticity** (:func:`build_authenticity_report`): each ``covers``
2120
+ marker is a *credible* claim attached to an executable test block that
2121
+ contains an assertion (anti-false-green; "add a marker" cannot be
2122
+ satisfied by marking an empty/skipped test). Gracefully degrades for
2123
+ stacks/files it cannot structurally parse.
2124
+
2125
+ ``rerun(feedback, scope)`` re-implements the scoped TEST tasks under a
2126
+ write-fence (source is never edited by a VB rerun). ``scope_resolver`` maps
2127
+ the uncovered VB source docs to that scope. ``rerun_oracle`` re-runs the
2128
+ native implement-oracle AFTER a VB rerun (a test edit can break a helper
2129
+ symbol; the pipeline order is oracle→VB, so the oracle must be re-asserted).
2130
+
2131
+ Honors the greenfield ``coverage_gate`` option and the project-level
2132
+ ``test_coverage.gate`` config.
2022
2133
  """
2023
2134
  from codd.config import load_project_config
2024
- from codd.verifiable_behavior_audit import run_implement_coverage_gate
2135
+ from codd.verifiable_behavior_audit import (
2136
+ build_vb_coverage_audit,
2137
+ coverage_gate_enabled,
2138
+ coverage_gate_max_retries,
2139
+ format_gap_feedback,
2140
+ run_implement_coverage_gate,
2141
+ )
2025
2142
 
2026
2143
  if not coverage_gate:
2027
2144
  return
@@ -2031,6 +2148,9 @@ def _enforce_stage_coverage_gate(
2031
2148
  except (FileNotFoundError, ValueError):
2032
2149
  config = {}
2033
2150
 
2151
+ if not coverage_gate_enabled(config):
2152
+ return
2153
+
2034
2154
  # Pass the configured test dirs as the audited output paths so the gate
2035
2155
  # treats this as a test-related run (it is — every test the build will ever
2036
2156
  # have now exists) and evaluates the FULL project VB universe in one pass.
@@ -2040,13 +2160,52 @@ def _enforce_stage_coverage_gate(
2040
2160
  else:
2041
2161
  audited_paths = ["tests/"]
2042
2162
 
2163
+ # --- Gate 1: coverage, with the (now-live) TEST-scoped feedback rerun. ---
2164
+ if rerun is not None and scope_resolver is not None:
2165
+ # Drive the bounded feedback loop HERE so each rerun is TEST-scoped (the
2166
+ # scope is recomputed from the current gap) and the native oracle is
2167
+ # re-asserted after each test edit. ``run_implement_coverage_gate`` is
2168
+ # then called once more with rerun=None to produce the final verdict +
2169
+ # gap reporting (no second loop).
2170
+ max_retries = coverage_gate_max_retries(config)
2171
+ report = build_vb_coverage_audit(project_root, config=config)
2172
+ attempt = 0
2173
+ while report.rows and report.uncovered_rows and attempt < max_retries:
2174
+ attempt += 1
2175
+ uncovered_docs = sorted({row.source_doc for row in report.uncovered_rows if row.source_doc})
2176
+ scope = scope_resolver(uncovered_docs)
2177
+ echo(
2178
+ f"Test coverage gate: {len(report.uncovered_rows)} uncovered verifiable behavior(s); "
2179
+ f"re-running TEST tasks with gap feedback (attempt {attempt}/{max_retries})"
2180
+ )
2181
+ try:
2182
+ rerun(format_gap_feedback(report), scope)
2183
+ if rerun_oracle is not None:
2184
+ # A VB test rerun can break test↔helper symbol coherence;
2185
+ # re-assert the native oracle so a type/import break never
2186
+ # rides into verify.
2187
+ rerun_oracle()
2188
+ except Exception as exc: # noqa: BLE001
2189
+ # A rerun that cannot proceed (e.g. a codegen/environment error)
2190
+ # must NOT mask the gate's verdict: log and stop the bounded loop,
2191
+ # then fall through to the final coverage audit, which fails
2192
+ # HONESTLY on whatever VBs are still uncovered. (The oracle gate
2193
+ # treats its rerun failures as hard because they ARE the defect;
2194
+ # here the authority is the coverage audit below, not the rerun.)
2195
+ echo(
2196
+ f"Test coverage gate: re-run attempt {attempt} could not complete ({exc}); "
2197
+ "stopping the feedback loop and evaluating coverage as-is."
2198
+ )
2199
+ break
2200
+ report = build_vb_coverage_audit(project_root, config=config)
2201
+
2043
2202
  passed = run_implement_coverage_gate(
2044
2203
  project_root,
2045
2204
  config=config,
2046
2205
  design_node=None,
2047
2206
  output_paths=audited_paths,
2048
2207
  opt_out=not coverage_gate,
2049
- rerun=None,
2208
+ rerun=None, # the scoped loop (above) already ran; this is the final verdict
2050
2209
  echo=echo,
2051
2210
  echo_error=echo,
2052
2211
  )
@@ -2057,6 +2216,29 @@ def _enforce_stage_coverage_gate(
2057
2216
  "marker after all implement tasks completed (see the gap list above)"
2058
2217
  )
2059
2218
 
2219
+ # --- Gate 2: marker authenticity (anti-false-green). HARD gate. ---
2220
+ from codd.vb_marker_authenticity import build_authenticity_report
2221
+
2222
+ auth = build_authenticity_report(project_root, config=config, profile=authenticity_profile)
2223
+ if auth.degraded_paths:
2224
+ echo(
2225
+ "Test coverage gate: marker-authenticity attachment/assertion checks skipped for "
2226
+ f"{len(auth.degraded_paths)} un-parseable file(s) (stage-1 orphan check still applied): "
2227
+ + ", ".join(auth.degraded_paths)
2228
+ )
2229
+ if not auth.passed:
2230
+ for violation in auth.violations:
2231
+ echo(violation.message)
2232
+ raise StageError(
2233
+ "verifiable-behavior marker-authenticity gate failed for the implement stage: "
2234
+ f"{len(auth.violations)} `codd: covers vb=` marker(s) are not credible coverage claims "
2235
+ "(attached to a skipped/empty test, an orphan id, or a test with no assertion). A "
2236
+ "covers marker must sit on an executable test that asserts the behavior."
2237
+ )
2238
+ echo(
2239
+ f"Test coverage gate: marker authenticity OK ({len(auth.degraded_paths)} file(s) stage-1-only)."
2240
+ )
2241
+
2060
2242
 
2061
2243
  def _default_verify_runner(
2062
2244
  project_root: Path,
@@ -1884,9 +1884,10 @@ def _build_implementation_prompt(
1884
1884
  if _spec_targets_tests(spec, config):
1885
1885
  lines.extend(
1886
1886
  [
1887
- "Verifiable-behavior traceability markers:",
1888
- "- If the design or dependency test documents declare verifiable-behavior ids (a traceability table whose first column is `VB-<id>`), annotate each generated test with a comment marker `codd: covers vb=<id>` for every behavior that test proves (`codd test audit` reconciles these markers).",
1889
- "- If a declared behavior cannot be tested yet, add an explicit `codd: blocked vb=<id> reason=<short_reason>` comment marker instead of leaving it silently uncovered.",
1887
+ "Verifiable-behavior traceability markers (release-blocking — the implement stage gate fails the build on any gap):",
1888
+ "- The design and its dependency test documents declare verifiable behaviors in a traceability table whose first column is `VB-<id>`. Reconcile EVERY declared VB id against the tests you write: for each VB, produce either a real test that PROVES it (carrying a `codd: covers vb=<id>` comment marker) or, if it genuinely cannot be tested yet, an explicit `codd: blocked vb=<id> reason=<short_reason>` marker. Never leave a declared VB silently uncovered.",
1889
+ "- A `codd: covers vb=<id>` marker is a CLAIM that the test proves that behavior. Only attach it to a test that (a) is actually executed — not `it.skip`/`test.todo`/`describe.skip`/`@pytest.mark.skip`/disabled and (b) contains at least one assertion that would FAIL if the behavior were broken. A marker on an empty test, a skipped test, or a smoke test with no assertion is a false coverage claim and the authenticity gate will reject it. If no proving test exists, create or extend a real one FIRST, then mark it — do not add the marker to make the gate pass.",
1890
+ "- One marker per behavior, placed inside the test file (a comment immediately above the proving test). Example (pytest): `# codd: covers vb=VB-07` directly above `def test_rejects_missing_id(): ...` whose body asserts the rejection. Example (vitest): `// codd: covers vb=VB-07` directly above the `it('rejects missing id', () => { expect(...).toThrow(); })`.",
1890
1891
  "",
1891
1892
  "Scoped assertions (precision, not weakening):",
1892
1893
  "- When a test asserts a CONTENT constraint over rendered or serialized output (e.g. \"displayed amounts contain no decimal point\", \"no personal data appears in the response\", \"every listed price shows a currency symbol\"), assert ONLY against the specific values or elements the constraint governs: parse and read the relevant nodes/fields under test (DOM elements, table cells, the parsed JSON values, the matched record), not the whole response body.",
@@ -589,6 +589,34 @@ class LayoutProfile:
589
589
 
590
590
  return tuple(paths)
591
591
 
592
+ def test_block_profile(self) -> Any:
593
+ """Resolve this stack's test-structure adapter for the VB authenticity gate.
594
+
595
+ Returns a ``codd.vb_marker_authenticity.TestBlockProfile`` (a per-language
596
+ parser that locates executable test blocks and resolves skip/assertion
597
+ facts) or ``None`` for a stack with no adapter — in which case the
598
+ authenticity gate gracefully degrades to its language-agnostic stage 1
599
+ (orphan-marker) check only. This is the SINGLE registration point for a
600
+ new stack's test parser, mirroring :meth:`harness_owned_scaffold_paths`
601
+ (dispatch on ``self.language``, no per-language logic in the gate). The
602
+ import is lazy so the authenticity module (which imports the VB audit) is
603
+ never pulled in at ``project_types`` import time.
604
+ """
605
+
606
+ try:
607
+ from codd.vb_marker_authenticity import (
608
+ PythonTestBlockProfile,
609
+ TypeScriptTestBlockProfile,
610
+ )
611
+ except Exception: # noqa: BLE001 — adapter is optional; degrade if unavailable.
612
+ return None
613
+
614
+ if self.language == "python":
615
+ return PythonTestBlockProfile()
616
+ if self.language in ("typescript", "node", "javascript"):
617
+ return TypeScriptTestBlockProfile()
618
+ return None
619
+
592
620
 
593
621
  def normalize_package_name(project_name: str | None, *, fallback: str = "app") -> str:
594
622
  """Derive a valid Python package identifier from a project name.