codd-dev 3.7.5__tar.gz → 3.25.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (652) hide show
  1. {codd_dev-3.7.5 → codd_dev-3.25.0}/.gitignore +3 -0
  2. {codd_dev-3.7.5 → codd_dev-3.25.0}/PKG-INFO +3 -1
  3. {codd_dev-3.7.5 → codd_dev-3.25.0}/README.md +2 -0
  4. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/__init__.py +1 -1
  5. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/brownfield/pipeline.py +118 -10
  6. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/cli.py +90 -4
  7. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/coverage_execution_coherence.py +454 -115
  8. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/builder.py +498 -85
  9. codd_dev-3.25.0/codd/dag/checks/source_completeness.py +165 -0
  10. codd_dev-3.25.0/codd/dag/checks/unresolved_import_residue.py +138 -0
  11. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/runner.py +2 -0
  12. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/defaults.yaml +39 -1
  13. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/extractor.py +51 -8
  14. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/__init__.py +15 -1
  15. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/verification/cdp_browser.py +8 -5
  16. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/verification/curl.py +5 -1
  17. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/verification/playwright.py +4 -1
  18. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/verification/pytest_http.py +4 -1
  19. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/verification/vitest.py +4 -1
  20. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/e2e_contract_coherence.py +21 -1
  21. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/extractor.py +281 -27
  22. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fixer.py +28 -0
  23. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/generator.py +132 -2
  24. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/greenfield/pipeline.py +1793 -95
  25. codd_dev-3.25.0/codd/greenfield/test_rederivation.py +663 -0
  26. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/implement_oracle.py +127 -52
  27. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/implement_oracle_scope.py +120 -12
  28. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/implement_oracle_types.py +13 -5
  29. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/implementer.py +1139 -150
  30. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/import_coherence.py +219 -32
  31. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/__init__.py +6 -0
  32. codd_dev-3.25.0/codd/languages/adapters/import_resolver.py +36 -0
  33. codd_dev-3.25.0/codd/languages/adapters/oracle_cpp.py +698 -0
  34. codd_dev-3.25.0/codd/languages/adapters/oracle_csharp.py +454 -0
  35. codd_dev-3.25.0/codd/languages/adapters/oracle_java.py +421 -0
  36. codd_dev-3.25.0/codd/languages/adapters/oracle_javascript.py +904 -0
  37. codd_dev-3.25.0/codd/languages/adapters/runner_report.py +1386 -0
  38. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/builtin_adapters.py +53 -8
  39. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/contract.py +73 -1
  40. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/loader.py +36 -2
  41. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/profile.py +115 -2
  42. codd_dev-3.25.0/codd/languages/profiles/cpp.yaml +346 -0
  43. codd_dev-3.25.0/codd/languages/profiles/csharp.yaml +369 -0
  44. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/profiles/go.yaml +19 -0
  45. codd_dev-3.25.0/codd/languages/profiles/java.yaml +413 -0
  46. codd_dev-3.25.0/codd/languages/profiles/javascript.yaml +304 -0
  47. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/profiles/python.yaml +25 -0
  48. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/profiles/typescript.yaml +21 -0
  49. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/registry.py +9 -0
  50. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/verify_executor.py +124 -12
  51. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/verify_plan.py +60 -3
  52. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/criteria_expander.py +9 -0
  53. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/plan_deriver.py +57 -0
  54. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/templates/plan_derive_meta.md +5 -0
  55. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/operational_e2e_audit.py +100 -1
  56. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/parsing/__init__.py +0 -1
  57. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/parsing/_shared.py +211 -0
  58. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/parsing/regex_strategies.py +102 -60
  59. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/parsing/treesitter.py +14 -7
  60. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/project_types.py +1581 -81
  61. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/auto_scope_guard.py +5 -0
  62. codd_dev-3.25.0/codd/repair/design_context.py +415 -0
  63. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/git_patcher.py +26 -2
  64. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/llm_repair_engine.py +112 -4
  65. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/loop.py +259 -23
  66. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/repairability_classifier.py +70 -32
  67. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/schema.py +17 -1
  68. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/templates/propose_meta.md +13 -1
  69. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/templates/repair_strategy_meta.md +15 -10
  70. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/test_failure_attribution.py +61 -6
  71. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/verify_runner.py +247 -15
  72. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/command_plan.py +10 -3
  73. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/vb_marker_authenticity.py +2433 -27
  74. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/vb_rerun_scope.py +24 -11
  75. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/verifiable_behavior_audit.py +308 -16
  76. {codd_dev-3.7.5 → codd_dev-3.25.0}/pyproject.toml +1 -1
  77. codd_dev-3.25.0/skills/codd-fable-consult/SKILL.md +166 -0
  78. codd_dev-3.7.5/codd/languages/adapters/runner_report.py +0 -678
  79. {codd_dev-3.7.5 → codd_dev-3.25.0}/LICENSE +0 -0
  80. {codd_dev-3.7.5 → codd_dev-3.25.0}/bench_fixture/README.md +0 -0
  81. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/__main__.py +0 -0
  82. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/_git_helper.py +0 -0
  83. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/action_outcome.py +0 -0
  84. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/ai_invoke.py +0 -0
  85. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/ai_patch.py +0 -0
  86. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/artifact_contract.py +0 -0
  87. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/artifact_ids.py +0 -0
  88. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/artifacts/catalog.yaml +0 -0
  89. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/ask_user_question_adapter.py +0 -0
  90. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/assembler.py +0 -0
  91. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/bridge.py +0 -0
  92. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/brownfield/__init__.py +0 -0
  93. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/capability_completeness.py +0 -0
  94. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/claude_cli.py +0 -0
  95. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/clustering.py +0 -0
  96. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/coherence_adapters.py +0 -0
  97. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/coherence_engine.py +0 -0
  98. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/confidence.py +0 -0
  99. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/config.py +0 -0
  100. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/config_schema.py +0 -0
  101. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/contracts.py +0 -0
  102. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/contracts_registry/__init__.py +0 -0
  103. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/contracts_registry/__main__.py +0 -0
  104. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/contracts_registry/certify.py +0 -0
  105. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/contracts_registry/generate_matrix.py +0 -0
  106. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/contracts_registry/registry.py +0 -0
  107. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/coverage_auditor.py +0 -0
  108. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/coverage_metrics.py +0 -0
  109. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/__init__.py +0 -0
  110. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/auto_repair.py +0 -0
  111. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/__init__.py +0 -0
  112. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/_one_to_many_detection.py +0 -0
  113. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/artifact_contract_check.py +0 -0
  114. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/cardinality_coverage.py +0 -0
  115. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/ci_health.py +0 -0
  116. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/dependency_freshness.py +0 -0
  117. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/depends_on_consistency.py +0 -0
  118. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/deployment_completeness.py +0 -0
  119. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/edge_validity.py +0 -0
  120. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/environment_coverage.py +0 -0
  121. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/extraction_diagnostics.py +0 -0
  122. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/implementation_coverage.py +0 -0
  123. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/negative_space.py +0 -0
  124. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/node_completeness.py +0 -0
  125. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/opt_out.py +0 -0
  126. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/resource_flow_coherence.py +0 -0
  127. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/semantic_contract_conflict.py +0 -0
  128. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/stale_evidence.py +0 -0
  129. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/task_completion.py +0 -0
  130. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/transitive_closure.py +0 -0
  131. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/ui_coherence.py +0 -0
  132. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/checks/user_journey_coherence.py +0 -0
  133. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/coverage_axes.py +0 -0
  134. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/defaults/cli.yaml +0 -0
  135. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/defaults/cpp_embedded.yaml +0 -0
  136. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/defaults/csharp.yaml +0 -0
  137. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/defaults/elixir.yaml +0 -0
  138. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/defaults/generic.yaml +0 -0
  139. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/defaults/iot.yaml +0 -0
  140. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/defaults/java.yaml +0 -0
  141. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/defaults/kotlin.yaml +0 -0
  142. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/defaults/mobile.yaml +0 -0
  143. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/defaults/ruby.yaml +0 -0
  144. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/defaults/rust.yaml +0 -0
  145. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/defaults/scala.yaml +0 -0
  146. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/defaults/swift.yaml +0 -0
  147. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/defaults/test_frameworks.yaml +0 -0
  148. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/defaults/web.yaml +0 -0
  149. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/extractor.py +0 -0
  150. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/impact.py +0 -0
  151. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/materiality.py +0 -0
  152. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/metadata_access.py +0 -0
  153. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dag/result_status.py +0 -0
  154. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/defaults.py +0 -0
  155. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/dependency_lock_coherence.py +0 -0
  156. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deploy_targets/__init__.py +0 -0
  157. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deploy_targets/app_service.py +0 -0
  158. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deploy_targets/base.py +0 -0
  159. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deploy_targets/docker_compose.py +0 -0
  160. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployer.py +0 -0
  161. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/__init__.py +0 -0
  162. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/checks/__init__.py +0 -0
  163. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/defaults/deploy_targets.yaml +0 -0
  164. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
  165. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/defaults/schema_providers.yaml +0 -0
  166. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/defaults/verification_templates.yaml +0 -0
  167. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/ai_command.py +0 -0
  168. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/ai_command_factory.py +0 -0
  169. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/codex_app_server.py +0 -0
  170. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/llm_consideration.py +0 -0
  171. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/schema/__init__.py +0 -0
  172. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/schema/prisma.py +0 -0
  173. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/target/__init__.py +0 -0
  174. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/target/docker_compose.py +0 -0
  175. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/verification/__init__.py +0 -0
  176. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
  177. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/verification/cdp_engines.py +0 -0
  178. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
  179. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/verification/cdp_wire.py +0 -0
  180. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/verification/form_strategies.py +0 -0
  181. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/deployment/providers/verification/means_catalog.py +0 -0
  182. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/design_md.py +0 -0
  183. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/diff/__init__.py +0 -0
  184. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/diff/apply.py +0 -0
  185. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/diff/engine.py +0 -0
  186. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/diff/persistence.py +0 -0
  187. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/diff/templates/diff_prompt.md +0 -0
  188. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/discovery.py +0 -0
  189. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/drift.py +0 -0
  190. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/e2e_extractor.py +0 -0
  191. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/e2e_generator.py +0 -0
  192. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/e2e_harness.py +0 -0
  193. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/e2e_runner.py +0 -0
  194. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/elicit/__init__.py +0 -0
  195. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/elicit/apply.py +0 -0
  196. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/elicit/engine.py +0 -0
  197. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/elicit/finding.py +0 -0
  198. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/elicit/formatters/__init__.py +0 -0
  199. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/elicit/formatters/base.py +0 -0
  200. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/elicit/formatters/interactive.py +0 -0
  201. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/elicit/formatters/json_fmt.py +0 -0
  202. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/elicit/formatters/md.py +0 -0
  203. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/elicit/gap_to_ask.py +0 -0
  204. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/elicit/lexicon_loader.py +0 -0
  205. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/elicit/persistence.py +0 -0
  206. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/elicit/promote.py +0 -0
  207. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/elicit/routing.py +0 -0
  208. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
  209. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/env_refs.py +0 -0
  210. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/extract_ai.py +0 -0
  211. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/extract_paths.py +0 -0
  212. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fix/__init__.py +0 -0
  213. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fix/candidate_selector.py +0 -0
  214. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fix/design_updater.py +0 -0
  215. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fix/impact_planner.py +0 -0
  216. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fix/impl_propagation.py +0 -0
  217. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fix/interactive_prompt.py +0 -0
  218. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fix/phenomenon_fixer.py +0 -0
  219. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fix/phenomenon_parser.py +0 -0
  220. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fix/risk_classifier.py +0 -0
  221. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fix/templates/clarification_question.txt +0 -0
  222. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fix/templates/design_update.txt +0 -0
  223. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fix/templates/impl_update.txt +0 -0
  224. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fix/templates/phenomenon_parse.txt +0 -0
  225. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fix/templates/risk_assessment.txt +0 -0
  226. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fix/templates_loader.py +0 -0
  227. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fixup_drift.py +0 -0
  228. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fixup_drift_strategies/__init__.py +0 -0
  229. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
  230. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
  231. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/fixup_drift_strategies/url_drift.py +0 -0
  232. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/frontmatter.py +0 -0
  233. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/git_evidence.py +0 -0
  234. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/graph.py +0 -0
  235. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/greenfield/__init__.py +0 -0
  236. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/hitl_session.py +0 -0
  237. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/hooks/__init__.py +0 -0
  238. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/hooks/pre-commit +0 -0
  239. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/hooks/recipes/claude_requirements_nudge.json +0 -0
  240. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/hooks/recipes/claude_settings_example.json +0 -0
  241. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/hooks/recipes/codex_hook.sh +0 -0
  242. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/hooks/recipes/git_post_commit.sh +0 -0
  243. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/hooks/recipes/git_pre_commit.sh +0 -0
  244. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/iac_nfr.py +0 -0
  245. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/implementer/__init__.py +0 -0
  246. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/implementer/chunked_runner.py +0 -0
  247. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/implementer/typecheck_loop.py +0 -0
  248. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/inheritance.py +0 -0
  249. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/init/__init__.py +0 -0
  250. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/init/lexicon_suggest.py +0 -0
  251. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/init/llm_lexicon_suggester.py +0 -0
  252. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/init/stack_detector.py +0 -0
  253. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/knowledge_fetcher.py +0 -0
  254. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/adapters/__init__.py +0 -0
  255. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/adapters/implement_oracle.py +0 -0
  256. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/adapters/oracle_go.py +0 -0
  257. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/adapters/oracle_python.py +0 -0
  258. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/adapters/oracle_typescript.py +0 -0
  259. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/compat.py +0 -0
  260. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/oracle_executor.py +0 -0
  261. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/languages/path_planner.py +0 -0
  262. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/lexicon.py +0 -0
  263. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/lexicon_cli/__init__.py +0 -0
  264. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/lexicon_cli/formatters/__init__.py +0 -0
  265. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/lexicon_cli/formatters/html.py +0 -0
  266. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
  267. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/lexicon_cli/formatters/md.py +0 -0
  268. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/lexicon_cli/inspector.py +0 -0
  269. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/lexicon_cli/manager.py +0 -0
  270. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/lexicon_cli/reporter.py +0 -0
  271. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/lexicon_cli/threshold.py +0 -0
  272. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/__init__.py +0 -0
  273. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/approval.py +0 -0
  274. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/best_practice_augmenter.py +0 -0
  275. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/design_doc_extractor.py +0 -0
  276. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/impl_step_deriver.py +0 -0
  277. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/means_catalog_loader.py +0 -0
  278. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/parser.py +0 -0
  279. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/prompt_builder.py +0 -0
  280. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/strategy_validator.py +0 -0
  281. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/templates/best_practice_augment_meta.md +0 -0
  282. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/templates/criteria_expand_meta.md +0 -0
  283. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/templates/design_doc_extract_meta.md +0 -0
  284. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/templates/impl_step_derive_meta.md +0 -0
  285. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
  286. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/templates/meta_instruction.md +0 -0
  287. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/llm/templates/verification_means_catalog.yaml +0 -0
  288. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/mcp_server.py +0 -0
  289. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/measure.py +0 -0
  290. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/operations_derive.py +0 -0
  291. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/parsing/api_specs.py +0 -0
  292. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/parsing/extractor_registry.py +0 -0
  293. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/parsing/filesystem_routes.py +0 -0
  294. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/parsing/iac.py +0 -0
  295. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/parsing/python_ast.py +0 -0
  296. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/parsing/schemas.py +0 -0
  297. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/parsing/tests_builddeps.py +0 -0
  298. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/path_safety.py +0 -0
  299. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/planner.py +0 -0
  300. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/policy.py +0 -0
  301. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/preflight/__init__.py +0 -0
  302. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/preflight/defaults/cli.yaml +0 -0
  303. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/preflight/defaults/generic.yaml +0 -0
  304. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/preflight/defaults/iot.yaml +0 -0
  305. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/preflight/defaults/mobile.yaml +0 -0
  306. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/preflight/defaults/web.yaml +0 -0
  307. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/propagate.py +0 -0
  308. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/propagation_common.py +0 -0
  309. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/propagator.py +0 -0
  310. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/reconciliation_ledger.py +0 -0
  311. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/reference_resolution.py +0 -0
  312. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/registry.py +0 -0
  313. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/__init__.py +0 -0
  314. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/approval_repair.py +0 -0
  315. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/engine.py +0 -0
  316. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/history.py +0 -0
  317. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/primary_picker.py +0 -0
  318. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/proof_breaks.py +0 -0
  319. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/repair_result.py +0 -0
  320. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/templates/analyze_meta.md +0 -0
  321. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair/templates/repairability_meta.md +0 -0
  322. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/repair_slice.py +0 -0
  323. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/require.py +0 -0
  324. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/require_plugins.py +0 -0
  325. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/require_propagate.py +0 -0
  326. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/required_artifacts/defaults/cli.yaml +0 -0
  327. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/required_artifacts/defaults/generic.yaml +0 -0
  328. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/required_artifacts/defaults/iot.yaml +0 -0
  329. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/required_artifacts/defaults/mobile.yaml +0 -0
  330. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/required_artifacts/defaults/web.yaml +0 -0
  331. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/required_artifacts_deriver.py +0 -0
  332. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/requirement_completeness/defaults/cli.yaml +0 -0
  333. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/requirement_completeness/defaults/generic.yaml +0 -0
  334. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/requirement_completeness/defaults/iot.yaml +0 -0
  335. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
  336. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/requirement_completeness/defaults/web.yaml +0 -0
  337. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/requirement_completeness_auditor.py +0 -0
  338. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/requirement_reconciliation.py +0 -0
  339. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/requirements_meta.py +0 -0
  340. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/restoration_report.py +0 -0
  341. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/restore.py +0 -0
  342. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/routes_extractor.py +0 -0
  343. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/runtime_smoke/__init__.py +0 -0
  344. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/runtime_smoke/checks.py +0 -0
  345. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/runtime_smoke/config.py +0 -0
  346. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/runtime_smoke/report.py +0 -0
  347. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/runtime_smoke/runner.py +0 -0
  348. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/scanner.py +0 -0
  349. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/schema_refs.py +0 -0
  350. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/screen_flow_validator.py +0 -0
  351. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/screen_transition_extractor.py +0 -0
  352. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/screen_transitions/defaults.yaml +0 -0
  353. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/skills_cli/__init__.py +0 -0
  354. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/skills_cli/discovery.py +0 -0
  355. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/skills_cli/manager.py +0 -0
  356. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/skills_cli/paths.py +0 -0
  357. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/__init__.py +0 -0
  358. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/adapters/__init__.py +0 -0
  359. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/adapters/_base.py +0 -0
  360. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/adapters/nextjs.py +0 -0
  361. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/adapters/playwright.py +0 -0
  362. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/adapters/prisma.py +0 -0
  363. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/command_authenticity.py +0 -0
  364. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/command_override.py +0 -0
  365. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/compose.py +0 -0
  366. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/loader.py +0 -0
  367. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/lock.py +0 -0
  368. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/obligations.py +0 -0
  369. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/profile.py +0 -0
  370. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/profiles/addons/playwright.yaml +0 -0
  371. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/profiles/addons/prisma.yaml +0 -0
  372. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/profiles/frameworks/nextjs.yaml +0 -0
  373. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/project.py +0 -0
  374. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/registry.py +0 -0
  375. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/replacement_proof.py +0 -0
  376. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/stack/resolve.py +0 -0
  377. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/surface_reconciliation.py +0 -0
  378. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/synth.py +0 -0
  379. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/templates/codd.yaml.tmpl +0 -0
  380. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/templates/conventions.yaml.tmpl +0 -0
  381. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/templates/data_dependencies.yaml.tmpl +0 -0
  382. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/templates/doc_links.yaml.tmpl +0 -0
  383. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/templates/extract_ai_prompt_baseline.md +0 -0
  384. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/templates/extracted/api-contract.md.j2 +0 -0
  385. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
  386. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/templates/extracted/module-detail.md.j2 +0 -0
  387. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/templates/extracted/schema-design.md.j2 +0 -0
  388. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/templates/extracted/system-context.md.j2 +0 -0
  389. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/templates/gitignore.tmpl +0 -0
  390. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/templates/lexicon_questions.md +0 -0
  391. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/templates/lexicon_schema.yaml +0 -0
  392. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/templates/overrides.yaml.tmpl +0 -0
  393. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/test_detection.py +0 -0
  394. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/test_import_coherence.py +0 -0
  395. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/traceability.py +0 -0
  396. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/validator.py +0 -0
  397. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/watch/__init__.py +0 -0
  398. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/watch/events.py +0 -0
  399. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/watch/propagation_log.py +0 -0
  400. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/watch/propagation_pipeline.py +0 -0
  401. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/watch/test_runner.py +0 -0
  402. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/watch/watcher.py +0 -0
  403. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd/wiring.py +0 -0
  404. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
  405. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
  406. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
  407. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
  408. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
  409. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
  410. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
  411. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
  412. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
  413. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
  414. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
  415. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
  416. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
  417. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
  418. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
  419. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
  420. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
  421. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
  422. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
  423. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
  424. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
  425. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
  426. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
  427. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
  428. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
  429. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
  430. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
  431. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
  432. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
  433. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
  434. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
  435. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
  436. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
  437. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
  438. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
  439. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
  440. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
  441. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
  442. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
  443. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
  444. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
  445. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
  446. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
  447. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
  448. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
  449. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
  450. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
  451. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
  452. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
  453. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
  454. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
  455. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
  456. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
  457. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
  458. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
  459. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
  460. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
  461. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
  462. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
  463. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_aggregation_policies/coverage_matrix.md +0 -0
  464. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_aggregation_policies/elicit_extend.md +0 -0
  465. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_aggregation_policies/lexicon.yaml +0 -0
  466. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_aggregation_policies/manifest.yaml +0 -0
  467. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_aggregation_policies/recommended_kinds.yaml +0 -0
  468. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_aggregation_policies/severity_rules.yaml +0 -0
  469. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
  470. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
  471. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
  472. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
  473. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
  474. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
  475. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
  476. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
  477. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
  478. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
  479. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
  480. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
  481. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
  482. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
  483. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
  484. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
  485. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
  486. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
  487. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
  488. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
  489. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
  490. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
  491. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
  492. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
  493. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
  494. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
  495. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
  496. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
  497. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
  498. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
  499. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
  500. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
  501. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
  502. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
  503. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
  504. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
  505. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
  506. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
  507. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
  508. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
  509. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
  510. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
  511. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
  512. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
  513. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
  514. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
  515. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
  516. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
  517. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
  518. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
  519. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
  520. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
  521. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
  522. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
  523. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
  524. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
  525. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
  526. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
  527. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
  528. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
  529. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
  530. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
  531. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
  532. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
  533. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
  534. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
  535. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
  536. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
  537. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
  538. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
  539. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
  540. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
  541. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
  542. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
  543. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
  544. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
  545. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
  546. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
  547. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
  548. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
  549. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
  550. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
  551. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
  552. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
  553. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
  554. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
  555. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
  556. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
  557. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
  558. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
  559. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
  560. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
  561. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
  562. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
  563. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
  564. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
  565. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
  566. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
  567. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
  568. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
  569. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
  570. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
  571. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
  572. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
  573. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
  574. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
  575. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
  576. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
  577. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
  578. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
  579. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
  580. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
  581. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
  582. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
  583. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
  584. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
  585. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
  586. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
  587. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
  588. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
  589. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
  590. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
  591. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
  592. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
  593. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
  594. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
  595. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
  596. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
  597. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
  598. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
  599. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
  600. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
  601. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
  602. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
  603. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
  604. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
  605. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
  606. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
  607. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
  608. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
  609. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
  610. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
  611. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
  612. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
  613. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
  614. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
  615. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
  616. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
  617. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
  618. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
  619. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
  620. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
  621. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
  622. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
  623. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
  624. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
  625. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
  626. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
  627. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
  628. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
  629. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
  630. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
  631. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
  632. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
  633. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
  634. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
  635. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
  636. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
  637. {codd_dev-3.7.5 → codd_dev-3.25.0}/codd_plugins/stack_map.yaml +0 -0
  638. {codd_dev-3.7.5 → codd_dev-3.25.0}/docs/cookbook/cdp_browser/README.md +0 -0
  639. {codd_dev-3.7.5 → codd_dev-3.25.0}/docs/cookbook/presentation_aggregation/README.md +0 -0
  640. {codd_dev-3.7.5 → codd_dev-3.25.0}/docs/requirements/README.md +0 -0
  641. {codd_dev-3.7.5 → codd_dev-3.25.0}/examples/README.md +0 -0
  642. {codd_dev-3.7.5 → codd_dev-3.25.0}/skills/codd-assemble/SKILL.md +0 -0
  643. {codd_dev-3.7.5 → codd_dev-3.25.0}/skills/codd-evolve/SKILL.md +0 -0
  644. {codd_dev-3.7.5 → codd_dev-3.25.0}/skills/codd-generate/SKILL.md +0 -0
  645. {codd_dev-3.7.5 → codd_dev-3.25.0}/skills/codd-greenfield/SKILL.md +0 -0
  646. {codd_dev-3.7.5 → codd_dev-3.25.0}/skills/codd-impact/SKILL.md +0 -0
  647. {codd_dev-3.7.5 → codd_dev-3.25.0}/skills/codd-init/SKILL.md +0 -0
  648. {codd_dev-3.7.5 → codd_dev-3.25.0}/skills/codd-propagate/SKILL.md +0 -0
  649. {codd_dev-3.7.5 → codd_dev-3.25.0}/skills/codd-restore/SKILL.md +0 -0
  650. {codd_dev-3.7.5 → codd_dev-3.25.0}/skills/codd-scan/SKILL.md +0 -0
  651. {codd_dev-3.7.5 → codd_dev-3.25.0}/skills/codd-validate/SKILL.md +0 -0
  652. {codd_dev-3.7.5 → codd_dev-3.25.0}/tests/integration/standalone_repair_skeleton/README.md +0 -0
@@ -33,3 +33,6 @@ dogfood/*
33
33
 
34
34
  # Internal task reports (cmd_* process records) — kept LOCAL, not published
35
35
  reports/
36
+
37
+ # Claude Code project-local settings (machine-specific paths, e.g. autoMemoryDirectory) — kept LOCAL, not published
38
+ .claude/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codd-dev
3
- Version: 3.7.5
3
+ Version: 3.25.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
@@ -118,6 +118,8 @@ codd greenfield --requirements docs/requirements/requirements.md
118
118
 
119
119
  It saves a checkpoint after every step, so `codd greenfield --resume` continues where it left off. Add `--dry-run` to preview the plan first, or `--ntfy-topic <topic>` to get progress pings on your phone.
120
120
 
121
+ > **Language coverage today:** unattended greenfield is empirically validated end-to-end on **TypeScript and Python**. The other supported languages share the same language-profile machinery but have not yet had unattended end-to-end validation.
122
+
121
123
  The same one-command pipeline (`codd greenfield --requirements FILE`) also ships as three transparent, adaptable vehicles you can read and tweak: a shell script ([`examples/greenfield_autopilot.sh`](examples/greenfield_autopilot.sh)), a Claude Code workflow ([`examples/claude_workflows/codd-greenfield.js`](examples/claude_workflows/codd-greenfield.js)), and a skill (`codd skills install codd-greenfield --target both`).
122
124
 
123
125
  ### 2. Work on an existing codebase — `codd init` + `codd scan`
@@ -76,6 +76,8 @@ codd greenfield --requirements docs/requirements/requirements.md
76
76
 
77
77
  It saves a checkpoint after every step, so `codd greenfield --resume` continues where it left off. Add `--dry-run` to preview the plan first, or `--ntfy-topic <topic>` to get progress pings on your phone.
78
78
 
79
+ > **Language coverage today:** unattended greenfield is empirically validated end-to-end on **TypeScript and Python**. The other supported languages share the same language-profile machinery but have not yet had unattended end-to-end validation.
80
+
79
81
  The same one-command pipeline (`codd greenfield --requirements FILE`) also ships as three transparent, adaptable vehicles you can read and tweak: a shell script ([`examples/greenfield_autopilot.sh`](examples/greenfield_autopilot.sh)), a Claude Code workflow ([`examples/claude_workflows/codd-greenfield.js`](examples/claude_workflows/codd-greenfield.js)), and a skill (`codd skills install codd-greenfield --target both`).
80
82
 
81
83
  ### 2. Work on an existing codebase — `codd init` + `codd scan`
@@ -1,3 +1,3 @@
1
1
  """CoDD — Coherence-Driven Development."""
2
2
 
3
- __version__ = "3.7.5"
3
+ __version__ = "3.25.0"
@@ -28,6 +28,7 @@ class BrownfieldResult:
28
28
  lexicon_path: Path | None = None
29
29
  extract_result: Any | None = None
30
30
  elicit_result: ElicitResult | Any | None = None
31
+ stage_status: dict[str, Any] | None = None
31
32
 
32
33
  def to_dict(self) -> dict[str, Any]:
33
34
  payload: dict[str, Any] = {
@@ -44,6 +45,11 @@ class BrownfieldResult:
44
45
  "merged_findings": len(self.merged_findings),
45
46
  },
46
47
  }
48
+ # Machine-readable honesty signal: when a stage was skipped/partial/empty
49
+ # the counts above are not the whole story. Only emitted for real
50
+ # pipeline runs (directly-constructed results stay byte-stable / legacy).
51
+ if self.stage_status is not None:
52
+ payload["stage_status"] = self.stage_status
47
53
  if isinstance(self.elicit_result, ElicitResult):
48
54
  payload["elicit"] = {
49
55
  "all_covered": self.elicit_result.all_covered,
@@ -86,7 +92,9 @@ class BrownfieldPipeline:
86
92
  extract_output = project_root / ".codd" / "extract"
87
93
  extract_result = self._run_extract(project_root, extract_output)
88
94
  result_output = Path(getattr(extract_result, "output_dir", extract_output))
89
- extract_input = _ensure_aggregate_extract(result_output, getattr(extract_result, "generated_files", []))
95
+ extract_input, extract_status = _ensure_aggregate_extract(
96
+ result_output, getattr(extract_result, "generated_files", [])
97
+ )
90
98
 
91
99
  requirements = _resolve_optional_file(
92
100
  project_root,
@@ -97,6 +105,11 @@ class BrownfieldPipeline:
97
105
  diff_findings: list[Finding] = []
98
106
  if requirements is not None:
99
107
  diff_findings = list(self._run_diff(project_root, extract_input, requirements))
108
+ diff_status: dict[str, Any] = (
109
+ {"status": "executed", "reason": None}
110
+ if requirements is not None
111
+ else {"status": "skipped", "reason": "no requirements.md"}
112
+ )
100
113
 
101
114
  lexicon = _resolve_optional_path(
102
115
  project_root,
@@ -107,6 +120,16 @@ class BrownfieldPipeline:
107
120
  lexicon_config = self._load_lexicon(lexicon) if lexicon is not None else None
108
121
  elicit_result = self._run_elicit(project_root, lexicon_config)
109
122
  elicit_findings = _findings_from_elicit_result(elicit_result)
123
+ elicit_status = {
124
+ "status": "ok",
125
+ "mode": "lexicon" if lexicon is not None else "discovery",
126
+ }
127
+
128
+ stage_status = {
129
+ "extract": extract_status,
130
+ "diff": diff_status,
131
+ "elicit": elicit_status,
132
+ }
110
133
 
111
134
  merged_findings = merge_findings(diff_findings, elicit_findings)
112
135
  return BrownfieldResult(
@@ -119,6 +142,7 @@ class BrownfieldPipeline:
119
142
  merged_findings=merged_findings,
120
143
  extract_result=extract_result,
121
144
  elicit_result=elicit_result,
145
+ stage_status=stage_status,
122
146
  )
123
147
 
124
148
  def _run_extract(self, project_root: Path, output_dir: Path) -> Any:
@@ -188,6 +212,10 @@ def format_brownfield_result(result: BrownfieldResult, format_name: str) -> str:
188
212
  def _format_brownfield_markdown(result: BrownfieldResult) -> str:
189
213
  from codd.elicit.formatters.md import MdFormatter
190
214
 
215
+ stage_status = result.stage_status
216
+ diff_stage = (stage_status or {}).get("diff") or {}
217
+ diff_skipped = diff_stage.get("status") == "skipped"
218
+
191
219
  lines = [
192
220
  "# Brownfield Report",
193
221
  "",
@@ -197,17 +225,64 @@ def _format_brownfield_markdown(result: BrownfieldResult) -> str:
197
225
  f"- extract_input: `{_path_text(result.extract_input)}`",
198
226
  f"- requirements_path: `{_path_text(result.requirements_path) or 'skipped'}`",
199
227
  f"- lexicon_path: `{_path_text(result.lexicon_path) or 'discovery mode'}`",
200
- f"- diff_findings: {len(result.diff_findings)}",
201
- f"- elicit_findings: {len(result.elicit_findings)}",
202
- f"- merged_findings: {len(result.merged_findings)}",
203
- "",
204
228
  ]
229
+ if diff_skipped:
230
+ reason = diff_stage.get("reason") or "no requirements.md"
231
+ # Honest headline: a skipped diff must not read as "0 findings" (pass).
232
+ lines.append(f"- diff: SKIPPED ({reason})")
233
+ else:
234
+ lines.append(f"- diff_findings: {len(result.diff_findings)}")
235
+ lines.extend(
236
+ [
237
+ f"- elicit_findings: {len(result.elicit_findings)}",
238
+ f"- merged_findings: {len(result.merged_findings)}",
239
+ "",
240
+ ]
241
+ )
242
+ if stage_status:
243
+ lines.extend(_format_stage_status_markdown(stage_status))
205
244
  findings_report = MdFormatter().format(result.merged_findings).strip()
206
245
  lines.append(findings_report)
207
246
  lines.append("")
208
247
  return "\n".join(lines)
209
248
 
210
249
 
250
+ def _format_stage_status_markdown(stage_status: dict[str, Any]) -> list[str]:
251
+ lines = ["## Stage status", ""]
252
+
253
+ extract = stage_status.get("extract") or {}
254
+ failed = extract.get("files_failed") or []
255
+ extract_status = extract.get("status", "unknown")
256
+ if extract_status == "reused":
257
+ # A reused aggregate was not re-read: report no fabricated count.
258
+ lines.append(
259
+ "- extract: reused (prior aggregate reused; content not re-verified; "
260
+ f"discovered={extract.get('files_discovered', 0)})"
261
+ )
262
+ else:
263
+ lines.append(
264
+ f"- extract: {extract_status} "
265
+ f"(discovered={extract.get('files_discovered', 0)}, "
266
+ f"aggregated={extract.get('files_aggregated', 0)}, "
267
+ f"failed={len(failed)})"
268
+ )
269
+ for entry in failed:
270
+ path, reason = entry[0], entry[1]
271
+ lines.append(f" - failed: `{path}` — {reason}")
272
+
273
+ diff = stage_status.get("diff") or {}
274
+ if diff.get("status") == "skipped":
275
+ reason = diff.get("reason") or "no requirements.md"
276
+ lines.append(f"- diff: SKIPPED ({reason})")
277
+ else:
278
+ lines.append(f"- diff: {diff.get('status', 'unknown')}")
279
+
280
+ elicit = stage_status.get("elicit") or {}
281
+ lines.append(f"- elicit: {elicit.get('status', 'unknown')} (mode={elicit.get('mode', 'unknown')})")
282
+ lines.append("")
283
+ return lines
284
+
285
+
211
286
  def _resolve_project_root(value: Path | str) -> Path:
212
287
  project_root = Path(value).expanduser().resolve()
213
288
  if not project_root.exists():
@@ -251,18 +326,36 @@ def _resolve_optional_path(
251
326
  return None
252
327
 
253
328
 
254
- def _ensure_aggregate_extract(output_dir: Path, generated_files: Iterable[Path]) -> Path:
329
+ def _ensure_aggregate_extract(
330
+ output_dir: Path, generated_files: Iterable[Path]
331
+ ) -> tuple[Path, dict[str, Any]]:
255
332
  output_dir = Path(output_dir)
256
333
  aggregate_path = output_dir / "extracted.md"
334
+ paths = _extract_markdown_paths(output_dir, generated_files)
257
335
  if aggregate_path.is_file():
258
- return aggregate_path
336
+ # A prior run already built the aggregate; reuse it as-is. We do NOT
337
+ # re-read or re-aggregate its content, so we must NOT fabricate an "ok"
338
+ # verdict or an aggregated count over unread inputs. Since nothing ever
339
+ # deletes/rewrites this file, every run after the first lands here — a
340
+ # fabricated "ok" would make the honesty signal first-run-only. Emit an
341
+ # honest "reused" status instead (files_aggregated=None = "not counted").
342
+ status = {
343
+ "status": "reused",
344
+ "files_discovered": len(paths),
345
+ "files_aggregated": None,
346
+ "files_failed": [],
347
+ }
348
+ return aggregate_path, status
259
349
 
260
- paths = _extract_markdown_paths(output_dir, generated_files)
261
350
  sections: list[str] = []
351
+ files_failed: list[tuple[str, str]] = []
262
352
  for path in paths:
263
353
  try:
264
354
  text = path.read_text(encoding="utf-8", errors="replace").strip()
265
- except OSError:
355
+ except OSError as exc:
356
+ # Do NOT silently drop read failures: a partial aggregate that hides
357
+ # unreadable inputs is a false-green. Collect and surface them.
358
+ files_failed.append((_relative_to(path, output_dir), str(exc) or exc.__class__.__name__))
266
359
  continue
267
360
  if not text:
268
361
  continue
@@ -271,7 +364,22 @@ def _ensure_aggregate_extract(output_dir: Path, generated_files: Iterable[Path])
271
364
  body = "\n\n---\n\n".join(sections) if sections else "No extracted documents generated."
272
365
  output_dir.mkdir(parents=True, exist_ok=True)
273
366
  aggregate_path.write_text(f"# Extracted Brownfield Facts\n\n{body}\n", encoding="utf-8")
274
- return aggregate_path
367
+
368
+ if not sections:
369
+ # A stub body (currently written unconditionally) is NOT an "ok" extract:
370
+ # nothing usable was aggregated.
371
+ status_name = "empty"
372
+ elif files_failed:
373
+ status_name = "partial"
374
+ else:
375
+ status_name = "ok"
376
+ status = {
377
+ "status": status_name,
378
+ "files_discovered": len(paths),
379
+ "files_aggregated": len(sections),
380
+ "files_failed": files_failed,
381
+ }
382
+ return aggregate_path, status
275
383
 
276
384
 
277
385
  def _extract_markdown_paths(output_dir: Path, generated_files: Iterable[Path]) -> list[Path]:
@@ -427,6 +427,59 @@ def _format_yaml_list(items: list[str], *, indent: int = 4) -> str:
427
427
  return "\n".join(f'{" " * indent}- "{item}"' for item in items)
428
428
 
429
429
 
430
+ def _default_scan_source_dirs(language: str) -> list[str]:
431
+ """Compute the default ``scan.source_dirs`` for a freshly-``codd init``'d project.
432
+
433
+ Baseline is the historical ``["src/"]`` default — preserved byte-for-byte
434
+ when the language is blank/unresolvable, or its profile declares no
435
+ ``layout.source_sets`` beyond a templated root (e.g. Python's
436
+ ``src/{package_name}``: substitution is PathPlanner's job, not this
437
+ bootstrap default's, so a templated root is skipped here).
438
+
439
+ When the resolved profile declares additional LITERAL source-set roots not
440
+ already covered by an entry already in the list — e.g. C++'s conventional
441
+ ``include/`` public-header split sitting alongside ``src/`` (design: public
442
+ headers and implementation are separate ``source_sets``, both
443
+ ``role: first_party*``) — each is appended, in profile order. A root
444
+ "covered" by an existing entry (e.g. Java's ``src/main/java`` under the
445
+ ``src/`` baseline) is skipped to avoid a redundant/overlapping scan root.
446
+
447
+ This is the language-free resolution seam (mirrors
448
+ ``codd.project_types._resolve_kernel_language_profile``): it keys off
449
+ profile DATA (``layout.source_sets``), never a ``language == "..."``
450
+ literal, so any current or future multi-root language layout is covered
451
+ with zero changes here — the only thing that decides the result is what
452
+ that language's profile YAML declares.
453
+ """
454
+ source_dirs = ["src/"]
455
+ try:
456
+ from codd.languages.registry import UnknownLanguageError, default_registry
457
+ except Exception: # noqa: BLE001 — registry optional; degrade to the baseline.
458
+ return source_dirs
459
+ try:
460
+ profile = default_registry.resolve(language)
461
+ except UnknownLanguageError:
462
+ return source_dirs
463
+ except Exception: # noqa: BLE001 — a malformed profile is the loader's gate; degrade here.
464
+ return source_dirs
465
+
466
+ for source_set in profile.layout.source_sets:
467
+ root = (source_set.root or "").strip()
468
+ if not root or "{" in root:
469
+ # Unresolved template placeholder — not a literal path we can use
470
+ # for a bootstrap default (mirrors PathPlanner._subst_root's own
471
+ # "{" in root test for the same distinction).
472
+ continue
473
+ normalized = f"{root.strip('/')}/"
474
+ if any(
475
+ Path(normalized.rstrip("/")).is_relative_to(Path(existing.rstrip("/")))
476
+ for existing in source_dirs
477
+ ):
478
+ continue
479
+ source_dirs.append(normalized)
480
+ return source_dirs
481
+
482
+
430
483
  def _display_path(path: Path, project_root: Path) -> str:
431
484
  try:
432
485
  return path.relative_to(project_root).as_posix()
@@ -816,12 +869,14 @@ def check_cmd(project_path: str, run_full: bool, apply_fixes: bool, output_forma
816
869
  else:
817
870
  _line(" PASS — no warnings")
818
871
 
819
- # --- vb declarations (gate) -------------------------------------------
872
+ # --- verifiable-behavior declarations (gate) --------------------------
820
873
  # Incoherent verifiable-behavior declarations (same id, different meaning in
821
874
  # two docs) make 100% coverage structurally impossible — fail loudly. The
822
875
  # WARNING-severity case (a non-canonical doc with first-column VB rows) is
823
- # already surfaced as a doctor advisory above with migration guidance.
824
- _section("vb declarations")
876
+ # already surfaced as a doctor advisory above with migration guidance. The
877
+ # label spells out "verifiable-behavior" (the ``vb`` abbreviation read like
878
+ # Visual Basic — it is the V-Model verification boundary, not a language).
879
+ _section("verifiable-behavior declarations")
825
880
  try:
826
881
  vb_errors = _vb_declaration_issue_messages(project_root, load_project_config(project_root), severity="error")
827
882
  except (FileNotFoundError, ValueError) as exc:
@@ -2355,7 +2410,7 @@ def init(
2355
2410
  _render_template("codd.yaml.tmpl", codd_dir / "codd.yaml", {
2356
2411
  "project_name": project_name,
2357
2412
  "language": language,
2358
- "source_dirs": _format_yaml_list(["src/"]),
2413
+ "source_dirs": _format_yaml_list(_default_scan_source_dirs(language)),
2359
2414
  "test_dirs": _format_yaml_list(["tests/"]),
2360
2415
  "doc_dirs": _format_yaml_list(["docs/"]),
2361
2416
  "graph_path": f"{config_dir}/scan",
@@ -3775,6 +3830,37 @@ def brownfield_cmd(
3775
3830
  f"elicit_findings={len(result.elicit_findings)}, "
3776
3831
  f"merged_findings={len(result.merged_findings)}"
3777
3832
  )
3833
+
3834
+ stage_status = getattr(result, "stage_status", None)
3835
+ if stage_status:
3836
+ extract = stage_status.get("extract") or {}
3837
+ diff = stage_status.get("diff") or {}
3838
+ elicit = stage_status.get("elicit") or {}
3839
+ if extract.get("status") == "reused":
3840
+ # Reused aggregate was not re-read: no fabricated aggregated count.
3841
+ click.echo(
3842
+ " extract: reused (prior aggregate reused; content not re-verified; "
3843
+ f"discovered={extract.get('files_discovered', 0)})"
3844
+ )
3845
+ else:
3846
+ click.echo(
3847
+ f" extract: {extract.get('status', 'unknown')} "
3848
+ f"(discovered={extract.get('files_discovered', 0)}, "
3849
+ f"aggregated={extract.get('files_aggregated', 0)}, "
3850
+ f"failed={len(extract.get('files_failed') or [])})"
3851
+ )
3852
+ if diff.get("status") == "skipped":
3853
+ click.echo(f" diff: SKIPPED ({diff.get('reason') or 'no requirements.md'})")
3854
+ else:
3855
+ click.echo(f" diff: {diff.get('status', 'unknown')}")
3856
+ click.echo(f" elicit: {elicit.get('status', 'unknown')} (mode={elicit.get('mode', 'unknown')})")
3857
+
3858
+ # Honest headline: if any coherence surface was skipped/partial/empty, the
3859
+ # "complete" line above is not the whole story. Exit code stays 0 (an
3860
+ # exit-code escalation is a NEW red and is owner-gated).
3861
+ if extract.get("status") in {"partial", "empty"} or diff.get("status") == "skipped":
3862
+ click.echo("PARTIAL — not all coherence surfaces were checked")
3863
+
3778
3864
  click.echo(f"Output: {_display_path(output_path, project_root)}")
3779
3865
 
3780
3866