codd-dev 2.17.0__tar.gz → 2.18.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 (482) hide show
  1. {codd_dev-2.17.0 → codd_dev-2.18.0}/PKG-INFO +14 -3
  2. {codd_dev-2.17.0 → codd_dev-2.18.0}/README.md +13 -2
  3. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/cli.py +20 -0
  4. codd_dev-2.18.0/codd/fix/templates/clarification_question.txt +34 -0
  5. codd_dev-2.18.0/codd/fix/templates/design_update.txt +33 -0
  6. codd_dev-2.18.0/codd/fix/templates/phenomenon_parse.txt +34 -0
  7. codd_dev-2.18.0/codd/fix/templates/risk_assessment.txt +32 -0
  8. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/implementer.py +14 -1
  9. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/validator.py +1 -0
  10. {codd_dev-2.17.0 → codd_dev-2.18.0}/pyproject.toml +2 -1
  11. {codd_dev-2.17.0 → codd_dev-2.18.0}/.gitignore +0 -0
  12. {codd_dev-2.17.0 → codd_dev-2.18.0}/LICENSE +0 -0
  13. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/__init__.py +0 -0
  14. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/__main__.py +0 -0
  15. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/_git_helper.py +0 -0
  16. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/ask_user_question_adapter.py +0 -0
  17. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/assembler.py +0 -0
  18. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/bridge.py +0 -0
  19. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/brownfield/__init__.py +0 -0
  20. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/brownfield/pipeline.py +0 -0
  21. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/clustering.py +0 -0
  22. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/coherence_adapters.py +0 -0
  23. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/coherence_engine.py +0 -0
  24. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/config.py +0 -0
  25. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/contracts.py +0 -0
  26. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/coverage_auditor.py +0 -0
  27. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/coverage_metrics.py +0 -0
  28. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/__init__.py +0 -0
  29. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/auto_repair.py +0 -0
  30. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/builder.py +0 -0
  31. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/checks/__init__.py +0 -0
  32. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/checks/ci_health.py +0 -0
  33. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/checks/depends_on_consistency.py +0 -0
  34. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/checks/deployment_completeness.py +0 -0
  35. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/checks/edge_validity.py +0 -0
  36. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/checks/environment_coverage.py +0 -0
  37. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/checks/implementation_coverage.py +0 -0
  38. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/checks/node_completeness.py +0 -0
  39. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/checks/opt_out.py +0 -0
  40. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/checks/task_completion.py +0 -0
  41. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/checks/transitive_closure.py +0 -0
  42. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/checks/user_journey_coherence.py +0 -0
  43. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/coverage_axes.py +0 -0
  44. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/defaults/cli.yaml +0 -0
  45. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/defaults/cpp_embedded.yaml +0 -0
  46. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/defaults/csharp.yaml +0 -0
  47. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/defaults/elixir.yaml +0 -0
  48. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/defaults/generic.yaml +0 -0
  49. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/defaults/iot.yaml +0 -0
  50. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/defaults/java.yaml +0 -0
  51. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/defaults/kotlin.yaml +0 -0
  52. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/defaults/mobile.yaml +0 -0
  53. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/defaults/ruby.yaml +0 -0
  54. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/defaults/rust.yaml +0 -0
  55. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/defaults/scala.yaml +0 -0
  56. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/defaults/swift.yaml +0 -0
  57. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/defaults/test_frameworks.yaml +0 -0
  58. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/defaults/web.yaml +0 -0
  59. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/extractor.py +0 -0
  60. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/dag/runner.py +0 -0
  61. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/defaults.py +0 -0
  62. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/defaults.yaml +0 -0
  63. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/deploy_targets/__init__.py +0 -0
  64. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/deploy_targets/app_service.py +0 -0
  65. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/deploy_targets/base.py +0 -0
  66. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/deploy_targets/docker_compose.py +0 -0
  67. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/deployer.py +0 -0
  68. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/deployment/__init__.py +0 -0
  69. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/deployment/checks/__init__.py +0 -0
  70. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/deployment/defaults/deploy_targets.yaml +0 -0
  71. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
  72. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/deployment/defaults/schema_providers.yaml +0 -0
  73. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/deployment/defaults/verification_templates.yaml +0 -0
  74. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/deployment/extractor.py +0 -0
  75. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/deployment/providers/__init__.py +0 -0
  76. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/deployment/providers/ai_command.py +0 -0
  77. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/deployment/providers/llm_consideration.py +0 -0
  78. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/deployment/providers/schema/__init__.py +0 -0
  79. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/deployment/providers/schema/prisma.py +0 -0
  80. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/deployment/providers/target/__init__.py +0 -0
  81. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/deployment/providers/target/docker_compose.py +0 -0
  82. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/deployment/providers/verification/__init__.py +0 -0
  83. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
  84. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/deployment/providers/verification/cdp_browser.py +0 -0
  85. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/deployment/providers/verification/cdp_engines.py +0 -0
  86. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
  87. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/deployment/providers/verification/cdp_wire.py +0 -0
  88. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/deployment/providers/verification/curl.py +0 -0
  89. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/deployment/providers/verification/form_strategies.py +0 -0
  90. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/deployment/providers/verification/means_catalog.py +0 -0
  91. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/deployment/providers/verification/playwright.py +0 -0
  92. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/design_md.py +0 -0
  93. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/diff/__init__.py +0 -0
  94. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/diff/apply.py +0 -0
  95. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/diff/engine.py +0 -0
  96. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/diff/persistence.py +0 -0
  97. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/diff/templates/diff_prompt.md +0 -0
  98. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/drift.py +0 -0
  99. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/e2e_extractor.py +0 -0
  100. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/e2e_generator.py +0 -0
  101. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/e2e_runner.py +0 -0
  102. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/elicit/__init__.py +0 -0
  103. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/elicit/apply.py +0 -0
  104. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/elicit/engine.py +0 -0
  105. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/elicit/finding.py +0 -0
  106. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/elicit/formatters/__init__.py +0 -0
  107. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/elicit/formatters/base.py +0 -0
  108. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/elicit/formatters/interactive.py +0 -0
  109. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/elicit/formatters/json_fmt.py +0 -0
  110. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/elicit/formatters/md.py +0 -0
  111. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/elicit/lexicon_loader.py +0 -0
  112. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/elicit/persistence.py +0 -0
  113. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
  114. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/env_refs.py +0 -0
  115. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/extract_ai.py +0 -0
  116. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/extractor.py +0 -0
  117. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/fix/__init__.py +0 -0
  118. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/fix/candidate_selector.py +0 -0
  119. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/fix/design_updater.py +0 -0
  120. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/fix/interactive_prompt.py +0 -0
  121. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/fix/phenomenon_fixer.py +0 -0
  122. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/fix/phenomenon_parser.py +0 -0
  123. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/fix/risk_classifier.py +0 -0
  124. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/fix/templates_loader.py +0 -0
  125. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/fixer.py +0 -0
  126. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/fixup_drift.py +0 -0
  127. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/fixup_drift_strategies/__init__.py +0 -0
  128. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
  129. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
  130. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/fixup_drift_strategies/url_drift.py +0 -0
  131. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/generator.py +0 -0
  132. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/graph.py +0 -0
  133. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/hitl_session.py +0 -0
  134. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/hooks/__init__.py +0 -0
  135. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/hooks/pre-commit +0 -0
  136. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/hooks/recipes/claude_settings_example.json +0 -0
  137. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/hooks/recipes/codex_hook.sh +0 -0
  138. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/hooks/recipes/git_post_commit.sh +0 -0
  139. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/hooks/recipes/git_pre_commit.sh +0 -0
  140. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/implementer/__init__.py +0 -0
  141. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/implementer/chunked_runner.py +0 -0
  142. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/implementer/typecheck_loop.py +0 -0
  143. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/inheritance.py +0 -0
  144. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/init/__init__.py +0 -0
  145. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/init/lexicon_suggest.py +0 -0
  146. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/init/llm_lexicon_suggester.py +0 -0
  147. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/init/stack_detector.py +0 -0
  148. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/knowledge_fetcher.py +0 -0
  149. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/lexicon.py +0 -0
  150. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/lexicon_cli/__init__.py +0 -0
  151. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/lexicon_cli/formatters/__init__.py +0 -0
  152. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/lexicon_cli/formatters/html.py +0 -0
  153. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
  154. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/lexicon_cli/formatters/md.py +0 -0
  155. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/lexicon_cli/inspector.py +0 -0
  156. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/lexicon_cli/manager.py +0 -0
  157. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/lexicon_cli/reporter.py +0 -0
  158. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/lexicon_cli/threshold.py +0 -0
  159. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/llm/__init__.py +0 -0
  160. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/llm/approval.py +0 -0
  161. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/llm/best_practice_augmenter.py +0 -0
  162. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/llm/criteria_expander.py +0 -0
  163. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/llm/design_doc_extractor.py +0 -0
  164. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/llm/impl_step_deriver.py +0 -0
  165. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/llm/means_catalog_loader.py +0 -0
  166. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/llm/parser.py +0 -0
  167. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/llm/plan_deriver.py +0 -0
  168. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/llm/prompt_builder.py +0 -0
  169. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/llm/strategy_validator.py +0 -0
  170. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/llm/templates/best_practice_augment_meta.md +0 -0
  171. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/llm/templates/criteria_expand_meta.md +0 -0
  172. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/llm/templates/design_doc_extract_meta.md +0 -0
  173. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/llm/templates/impl_step_derive_meta.md +0 -0
  174. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
  175. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/llm/templates/meta_instruction.md +0 -0
  176. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/llm/templates/plan_derive_meta.md +0 -0
  177. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/llm/templates/verification_means_catalog.yaml +0 -0
  178. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/mcp_server.py +0 -0
  179. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/measure.py +0 -0
  180. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/parsing.py +0 -0
  181. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/planner.py +0 -0
  182. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/policy.py +0 -0
  183. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/preflight/__init__.py +0 -0
  184. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/preflight/defaults/cli.yaml +0 -0
  185. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/preflight/defaults/iot.yaml +0 -0
  186. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/preflight/defaults/mobile.yaml +0 -0
  187. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/preflight/defaults/web.yaml +0 -0
  188. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/propagate.py +0 -0
  189. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/propagator.py +0 -0
  190. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/registry.py +0 -0
  191. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/repair/__init__.py +0 -0
  192. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/repair/approval_repair.py +0 -0
  193. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/repair/engine.py +0 -0
  194. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/repair/git_patcher.py +0 -0
  195. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/repair/history.py +0 -0
  196. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/repair/llm_repair_engine.py +0 -0
  197. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/repair/loop.py +0 -0
  198. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/repair/primary_picker.py +0 -0
  199. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/repair/proof_breaks.py +0 -0
  200. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/repair/repair_result.py +0 -0
  201. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/repair/repairability_classifier.py +0 -0
  202. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/repair/schema.py +0 -0
  203. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/repair/templates/analyze_meta.md +0 -0
  204. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/repair/templates/propose_meta.md +0 -0
  205. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/repair/templates/repair_strategy_meta.md +0 -0
  206. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/repair/templates/repairability_meta.md +0 -0
  207. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/repair/verify_runner.py +0 -0
  208. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/repair_slice.py +0 -0
  209. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/require.py +0 -0
  210. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/require_plugins.py +0 -0
  211. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/require_propagate.py +0 -0
  212. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/required_artifacts/defaults/cli.yaml +0 -0
  213. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/required_artifacts/defaults/iot.yaml +0 -0
  214. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/required_artifacts/defaults/mobile.yaml +0 -0
  215. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/required_artifacts/defaults/web.yaml +0 -0
  216. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/required_artifacts_deriver.py +0 -0
  217. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/requirement_completeness/defaults/cli.yaml +0 -0
  218. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/requirement_completeness/defaults/iot.yaml +0 -0
  219. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
  220. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/requirement_completeness/defaults/web.yaml +0 -0
  221. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/requirement_completeness_auditor.py +0 -0
  222. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/restore.py +0 -0
  223. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/routes_extractor.py +0 -0
  224. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/scanner.py +0 -0
  225. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/schema_refs.py +0 -0
  226. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/screen_flow_validator.py +0 -0
  227. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/screen_transition_extractor.py +0 -0
  228. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/screen_transitions/defaults.yaml +0 -0
  229. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/synth.py +0 -0
  230. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/templates/codd.yaml.tmpl +0 -0
  231. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/templates/conventions.yaml.tmpl +0 -0
  232. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/templates/data_dependencies.yaml.tmpl +0 -0
  233. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/templates/doc_links.yaml.tmpl +0 -0
  234. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/templates/extract_ai_prompt_baseline.md +0 -0
  235. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/templates/extracted/api-contract.md.j2 +0 -0
  236. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
  237. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/templates/extracted/module-detail.md.j2 +0 -0
  238. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/templates/extracted/schema-design.md.j2 +0 -0
  239. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/templates/extracted/system-context.md.j2 +0 -0
  240. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/templates/gitignore.tmpl +0 -0
  241. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/templates/lexicon_questions.md +0 -0
  242. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/templates/lexicon_schema.yaml +0 -0
  243. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/templates/overrides.yaml.tmpl +0 -0
  244. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/traceability.py +0 -0
  245. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/watch/__init__.py +0 -0
  246. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/watch/events.py +0 -0
  247. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/watch/propagation_log.py +0 -0
  248. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/watch/propagation_pipeline.py +0 -0
  249. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/watch/test_runner.py +0 -0
  250. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/watch/watcher.py +0 -0
  251. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd/wiring.py +0 -0
  252. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
  253. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
  254. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
  255. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
  256. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
  257. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
  258. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
  259. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
  260. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
  261. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
  262. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
  263. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
  264. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
  265. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
  266. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
  267. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
  268. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
  269. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
  270. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
  271. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
  272. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
  273. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
  274. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
  275. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
  276. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
  277. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
  278. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
  279. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
  280. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
  281. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
  282. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
  283. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
  284. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
  285. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
  286. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
  287. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
  288. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
  289. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
  290. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
  291. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
  292. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
  293. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
  294. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
  295. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
  296. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
  297. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
  298. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
  299. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
  300. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
  301. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
  302. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
  303. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
  304. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
  305. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
  306. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
  307. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
  308. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
  309. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
  310. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
  311. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
  312. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
  313. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
  314. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
  315. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
  316. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
  317. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
  318. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
  319. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
  320. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
  321. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
  322. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
  323. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
  324. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
  325. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
  326. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
  327. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
  328. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
  329. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
  330. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
  331. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
  332. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
  333. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
  334. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
  335. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
  336. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
  337. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
  338. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
  339. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
  340. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
  341. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
  342. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
  343. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
  344. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
  345. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
  346. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
  347. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
  348. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
  349. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
  350. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
  351. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
  352. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
  353. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
  354. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
  355. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
  356. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
  357. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
  358. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
  359. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
  360. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
  361. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
  362. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
  363. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
  364. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
  365. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
  366. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
  367. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
  368. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
  369. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
  370. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
  371. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
  372. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
  373. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
  374. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
  375. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
  376. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
  377. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
  378. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
  379. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
  380. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
  381. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
  382. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
  383. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
  384. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
  385. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
  386. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
  387. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
  388. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
  389. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
  390. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
  391. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
  392. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
  393. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
  394. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
  395. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
  396. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
  397. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
  398. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
  399. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
  400. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
  401. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
  402. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
  403. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
  404. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
  405. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
  406. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
  407. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
  408. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
  409. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
  410. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
  411. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
  412. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
  413. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
  414. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
  415. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
  416. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
  417. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
  418. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
  419. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
  420. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
  421. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
  422. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
  423. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
  424. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
  425. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
  426. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
  427. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
  428. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
  429. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
  430. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
  431. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
  432. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
  433. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
  434. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
  435. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
  436. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
  437. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
  438. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
  439. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
  440. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
  441. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
  442. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
  443. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
  444. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
  445. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
  446. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
  447. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
  448. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
  449. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
  450. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
  451. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
  452. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
  453. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
  454. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
  455. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
  456. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
  457. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
  458. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
  459. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
  460. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
  461. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
  462. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
  463. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
  464. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
  465. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
  466. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
  467. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
  468. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
  469. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
  470. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
  471. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
  472. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
  473. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
  474. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
  475. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
  476. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
  477. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
  478. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
  479. {codd_dev-2.17.0 → codd_dev-2.18.0}/codd_plugins/stack_map.yaml +0 -0
  480. {codd_dev-2.17.0 → codd_dev-2.18.0}/docs/cookbook/cdp_browser/README.md +0 -0
  481. {codd_dev-2.17.0 → codd_dev-2.18.0}/docs/requirements/README.md +0 -0
  482. {codd_dev-2.17.0 → codd_dev-2.18.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.17.0
3
+ Version: 2.18.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
@@ -68,6 +68,14 @@ codd dag verify --auto-repair --max-attempts 10 # AI fixes coherence violations
68
68
 
69
69
  That's it. Three commands, three feedback loops, one coherent project.
70
70
 
71
+ ### 💡 Already shipping? Describe what you want fixed.
72
+
73
+ ```bash
74
+ codd fix "login error messages are hard to understand" # natural-language phenomenon mode
75
+ ```
76
+
77
+ `codd fix [PHENOMENON]` (v2.16.0+) is the **second entry-point** of CoDD's North Star: tell CoDD a desired change in plain words, it identifies the affected design docs via lexicon + semantic scoring, updates them with an LLM, and runs the DAG verify gate before any code is touched. Add `--dry-run` to preview, `--non-interactive` for CI.
78
+
71
79
  > Real-world: dogfooded against a Next.js + Prisma + PostgreSQL LMS. See [Case study](#-case-study-real-world-lms).
72
80
 
73
81
  ---
@@ -79,6 +87,7 @@ That's it. Three commands, three feedback loops, one coherent project.
79
87
  | 🔍 **`codd elicit`** | LLM finds **specification holes** in your requirements, scoped against industry-standard lexicons (BABOK, OWASP, WCAG, PCI DSS, ISO 25010, …). |
80
88
  | 🔄 **`codd diff`** | Detects **drift** between requirements and the actual implementation (brownfield-friendly). |
81
89
  | 🛠️ **`codd dag verify --auto-repair`** | Validates the requirements → design → implementation → tests DAG; an LLM proposes patches when violations appear and the loop retries until SUCCESS or MAX_ATTEMPTS. |
90
+ | 🎯 **`codd fix`** / **`codd fix [PHENOMENON]`** | Two modes. *Legacy*: auto-detects test/CI failures, maps them to the DAG, asks an LLM to patch implementation, re-runs the verify gate. *PHENOMENON* (v2.16.0+, North Star entry-point 2): take a natural-language phenomenon (e.g. `"dashboard layout breaks on mobile"`), identify candidate design docs via Tier-1 lexicon + Tier-2 semantic scoring, update them with the LLM, then propagate. Full interactive HITL + `--non-interactive` + `--dry-run`. |
82
91
  | 📦 **38 lexicon plug-ins** | Industry standards bundled as opt-in coverage axes — Web (WCAG / OWASP / Web Vitals / WebAuthn / forms / SEO / PWA / browser-compat / responsive), Mobile (HIG / Material 3 / a11y / MASVS), Backend (REST / GraphQL / gRPC / events), Data (SQL / JSON Schema / event sourcing / governance), Ops (CI/CD / Kubernetes / Terraform / observability / DORA), Compliance (ISO 27001 / HIPAA / PCI DSS / GDPR / EU AI Act), Process (ISO 25010 / 29119 / DDD / 12-factor / i18n / model cards / API rate-limit), and Methodology (BABOK). |
83
92
  | 🌐 **`codd brownfield`** | Extract → diff → elicit pipeline: point CoDD at an existing codebase and it reverse-engineers requirements, finds drift, and surfaces gaps in one shot. |
84
93
  | 🎯 **`codd init --suggest-lexicons --llm-enhanced`** | LLM reads your code/docs, identifies data types and function traits, and recommends which lexicons to install (with confidence + reasoning). |
@@ -153,14 +162,16 @@ This is what lets CoDD ship one core that works for Next.js, Django, FastAPI, Ra
153
162
 
154
163
  ## 🧭 Roadmap
155
164
 
156
- - **v2.17.0 (current)** — `node_completeness` honours `kind: common` (cmd_470). Fixes a v2.15.0 oversight: `expects` edges pointing at common (shared infrastructure) nodes were misreported as missing impl files even when the file existed. 6 new tests, 2914 total PASS, SKIP=0. See [CHANGELOG](CHANGELOG.md).
165
+ - **v2.18.0 (current)** — Greenfield triage from [@v-kato](https://github.com/v-kato) (cmd_473). Issue #20: `codd implement run --language` now overrides `project.language` per invocation (no more re-init when `codd init --language` was the wrong choice). Issue #21: `detailed_design` added to `DEFAULT_NODE_PREFIXES` so `codd plan --init` no longer emits node ids its own `codd validate` rejects. Issue #22: `_strip_code_fence` is non-greedy + non-anchored, dropping trailing markdown prose that LLMs occasionally appended after the closing fence. 12 new tests, 2937 total PASS, SKIP=0.
166
+ - **v2.17.1** — emergency patch for `codd fix [PHENOMENON]` (cmd_471). Issue #23: `codd/fix/templates/*.txt` are now shipped inside the wheel (a hatch `include` regression caused `FileNotFoundError` after `pip install`). Issue #24: replaced `---` wrappers in `design_update.txt` / `risk_assessment.txt` with `<document>` / `<diff>` XML-style tags so the rendered prompt no longer collides with markdown frontmatter or unified-diff `--- a/path` lines. 11 new tests, 2925 total PASS, SKIP=0.
167
+ - **v2.17.0** — `node_completeness` honours `kind: common` (cmd_470). Fixes a v2.15.0 oversight: `expects` edges pointing at common (shared infrastructure) nodes were misreported as missing impl files even when the file existed. 6 new tests, 2914 total PASS, SKIP=0.
157
168
  - **v2.16.0** — `codd fix [PHENOMENON]` — North Star entry-point 2 (cmd_468). Express a desired change in natural language; CoDD identifies affected design docs via Tier-1 lexicon + Tier-2 semantic scoring, updates them with LLM, runs the DAG verify gate. Full interactive HITL (candidate selection, ambiguity clarification, risk confirmation) with `--non-interactive` for CI. 66 new tests, 2908 total PASS, SKIP=0.
158
169
  - **v2.15.0** — `kind: common` for shared infrastructure (cmd_467). C5 amber −79.2% on dogfood project (125 → 26). `**` glob translator fix.
159
170
  - **v2.14.0** — 8 structural gaps closed (cmd_466 dogfood). Sidecar `<test>.codd.yaml` with `verified_by:` (C6) / `axis_matrix:` (C9); lexicon schema SSoT; completeness_audit batch; `scan.exclude` bug fix (−52%); `codd dag verify --auto-repair`; elicit mock-AI sentinel; AI timeout 3600 s SSoT. Red 22 → 0.
160
171
  - **v2.13.0** — Opt-out protection: `OptOutPolicy` requires `justification` + `expires_at`. Silent SKIP abolished; severity preserved.
161
172
  - **v2.12.0** — Test-completeness gates: C7 amber promotion + C8 `ci_health` static check.
162
173
  - **v2.11.0** — Sprint-less `codd implement` (`--design <path> --output <dir>` directly).
163
- - **v2.18.0 (next)** — impl/test auto-propagation from PHENOMENON (AC #8 completion); Codex wrapper for PHENOMENON mode.
174
+ - **v2.19.0 (next)** — impl/test auto-propagation from PHENOMENON (AC #8 completion); Codex wrapper for PHENOMENON mode.
164
175
 
165
176
  ---
166
177
 
@@ -28,6 +28,14 @@ codd dag verify --auto-repair --max-attempts 10 # AI fixes coherence violations
28
28
 
29
29
  That's it. Three commands, three feedback loops, one coherent project.
30
30
 
31
+ ### 💡 Already shipping? Describe what you want fixed.
32
+
33
+ ```bash
34
+ codd fix "login error messages are hard to understand" # natural-language phenomenon mode
35
+ ```
36
+
37
+ `codd fix [PHENOMENON]` (v2.16.0+) is the **second entry-point** of CoDD's North Star: tell CoDD a desired change in plain words, it identifies the affected design docs via lexicon + semantic scoring, updates them with an LLM, and runs the DAG verify gate before any code is touched. Add `--dry-run` to preview, `--non-interactive` for CI.
38
+
31
39
  > Real-world: dogfooded against a Next.js + Prisma + PostgreSQL LMS. See [Case study](#-case-study-real-world-lms).
32
40
 
33
41
  ---
@@ -39,6 +47,7 @@ That's it. Three commands, three feedback loops, one coherent project.
39
47
  | 🔍 **`codd elicit`** | LLM finds **specification holes** in your requirements, scoped against industry-standard lexicons (BABOK, OWASP, WCAG, PCI DSS, ISO 25010, …). |
40
48
  | 🔄 **`codd diff`** | Detects **drift** between requirements and the actual implementation (brownfield-friendly). |
41
49
  | 🛠️ **`codd dag verify --auto-repair`** | Validates the requirements → design → implementation → tests DAG; an LLM proposes patches when violations appear and the loop retries until SUCCESS or MAX_ATTEMPTS. |
50
+ | 🎯 **`codd fix`** / **`codd fix [PHENOMENON]`** | Two modes. *Legacy*: auto-detects test/CI failures, maps them to the DAG, asks an LLM to patch implementation, re-runs the verify gate. *PHENOMENON* (v2.16.0+, North Star entry-point 2): take a natural-language phenomenon (e.g. `"dashboard layout breaks on mobile"`), identify candidate design docs via Tier-1 lexicon + Tier-2 semantic scoring, update them with the LLM, then propagate. Full interactive HITL + `--non-interactive` + `--dry-run`. |
42
51
  | 📦 **38 lexicon plug-ins** | Industry standards bundled as opt-in coverage axes — Web (WCAG / OWASP / Web Vitals / WebAuthn / forms / SEO / PWA / browser-compat / responsive), Mobile (HIG / Material 3 / a11y / MASVS), Backend (REST / GraphQL / gRPC / events), Data (SQL / JSON Schema / event sourcing / governance), Ops (CI/CD / Kubernetes / Terraform / observability / DORA), Compliance (ISO 27001 / HIPAA / PCI DSS / GDPR / EU AI Act), Process (ISO 25010 / 29119 / DDD / 12-factor / i18n / model cards / API rate-limit), and Methodology (BABOK). |
43
52
  | 🌐 **`codd brownfield`** | Extract → diff → elicit pipeline: point CoDD at an existing codebase and it reverse-engineers requirements, finds drift, and surfaces gaps in one shot. |
44
53
  | 🎯 **`codd init --suggest-lexicons --llm-enhanced`** | LLM reads your code/docs, identifies data types and function traits, and recommends which lexicons to install (with confidence + reasoning). |
@@ -113,14 +122,16 @@ This is what lets CoDD ship one core that works for Next.js, Django, FastAPI, Ra
113
122
 
114
123
  ## 🧭 Roadmap
115
124
 
116
- - **v2.17.0 (current)** — `node_completeness` honours `kind: common` (cmd_470). Fixes a v2.15.0 oversight: `expects` edges pointing at common (shared infrastructure) nodes were misreported as missing impl files even when the file existed. 6 new tests, 2914 total PASS, SKIP=0. See [CHANGELOG](CHANGELOG.md).
125
+ - **v2.18.0 (current)** — Greenfield triage from [@v-kato](https://github.com/v-kato) (cmd_473). Issue #20: `codd implement run --language` now overrides `project.language` per invocation (no more re-init when `codd init --language` was the wrong choice). Issue #21: `detailed_design` added to `DEFAULT_NODE_PREFIXES` so `codd plan --init` no longer emits node ids its own `codd validate` rejects. Issue #22: `_strip_code_fence` is non-greedy + non-anchored, dropping trailing markdown prose that LLMs occasionally appended after the closing fence. 12 new tests, 2937 total PASS, SKIP=0.
126
+ - **v2.17.1** — emergency patch for `codd fix [PHENOMENON]` (cmd_471). Issue #23: `codd/fix/templates/*.txt` are now shipped inside the wheel (a hatch `include` regression caused `FileNotFoundError` after `pip install`). Issue #24: replaced `---` wrappers in `design_update.txt` / `risk_assessment.txt` with `<document>` / `<diff>` XML-style tags so the rendered prompt no longer collides with markdown frontmatter or unified-diff `--- a/path` lines. 11 new tests, 2925 total PASS, SKIP=0.
127
+ - **v2.17.0** — `node_completeness` honours `kind: common` (cmd_470). Fixes a v2.15.0 oversight: `expects` edges pointing at common (shared infrastructure) nodes were misreported as missing impl files even when the file existed. 6 new tests, 2914 total PASS, SKIP=0.
117
128
  - **v2.16.0** — `codd fix [PHENOMENON]` — North Star entry-point 2 (cmd_468). Express a desired change in natural language; CoDD identifies affected design docs via Tier-1 lexicon + Tier-2 semantic scoring, updates them with LLM, runs the DAG verify gate. Full interactive HITL (candidate selection, ambiguity clarification, risk confirmation) with `--non-interactive` for CI. 66 new tests, 2908 total PASS, SKIP=0.
118
129
  - **v2.15.0** — `kind: common` for shared infrastructure (cmd_467). C5 amber −79.2% on dogfood project (125 → 26). `**` glob translator fix.
119
130
  - **v2.14.0** — 8 structural gaps closed (cmd_466 dogfood). Sidecar `<test>.codd.yaml` with `verified_by:` (C6) / `axis_matrix:` (C9); lexicon schema SSoT; completeness_audit batch; `scan.exclude` bug fix (−52%); `codd dag verify --auto-repair`; elicit mock-AI sentinel; AI timeout 3600 s SSoT. Red 22 → 0.
120
131
  - **v2.13.0** — Opt-out protection: `OptOutPolicy` requires `justification` + `expires_at`. Silent SKIP abolished; severity preserved.
121
132
  - **v2.12.0** — Test-completeness gates: C7 amber promotion + C8 `ci_health` static check.
122
133
  - **v2.11.0** — Sprint-less `codd implement` (`--design <path> --output <dir>` directly).
123
- - **v2.18.0 (next)** — impl/test auto-propagation from PHENOMENON (AC #8 completion); Codex wrapper for PHENOMENON mode.
134
+ - **v2.19.0 (next)** — impl/test auto-propagation from PHENOMENON (AC #8 completion); Codex wrapper for PHENOMENON mode.
124
135
 
125
136
  ---
126
137
 
@@ -2109,6 +2109,15 @@ def implement_augment_cmd(
2109
2109
  help="Seconds before one chunk is interrupted",
2110
2110
  )
2111
2111
  @click.option("--enable-typecheck-loop", is_flag=True, default=False, help="Run configured typecheck repair loop after implementation")
2112
+ @click.option(
2113
+ "--language",
2114
+ default=None,
2115
+ help=(
2116
+ "Override project.language for this invocation only. Useful when "
2117
+ "`codd init --language js` was chosen but a downstream spec/design "
2118
+ "doc requires TypeScript (Issue #20). codd.yaml is not modified."
2119
+ ),
2120
+ )
2112
2121
  def implement_run_cmd(
2113
2122
  task_id: str | None,
2114
2123
  project_path: str,
@@ -2117,6 +2126,7 @@ def implement_run_cmd(
2117
2126
  chunk_size: int | None,
2118
2127
  timeout_per_chunk: int,
2119
2128
  enable_typecheck_loop: bool,
2129
+ language: str | None,
2120
2130
  ):
2121
2131
  """Run implementation with optional derived step injection."""
2122
2132
  from codd.implementer import auto_detect_task, implement_tasks
@@ -2140,6 +2150,7 @@ def implement_run_cmd(
2140
2150
  chunk_size=chunk_size,
2141
2151
  timeout_per_chunk=timeout_per_chunk,
2142
2152
  history=None,
2153
+ language=language,
2143
2154
  )
2144
2155
  except (FileNotFoundError, ValueError, CoddCLIError) as exc:
2145
2156
  click.echo(f"Error: {exc}")
@@ -2165,6 +2176,7 @@ def implement_run_cmd(
2165
2176
  task=task_id,
2166
2177
  ai_command=ai_cmd,
2167
2178
  use_derived_steps=_optional_bool(use_derived_steps),
2179
+ language=language,
2168
2180
  )
2169
2181
  except (FileNotFoundError, ValueError, CoddCLIError) as exc:
2170
2182
  click.echo(f"Error: {exc}")
@@ -2237,6 +2249,7 @@ def _run_chunked_implementation(
2237
2249
  chunk_size: int,
2238
2250
  timeout_per_chunk: int,
2239
2251
  history: str | None,
2252
+ language: str | None = None,
2240
2253
  ):
2241
2254
  if not task_id:
2242
2255
  raise ValueError("--task is required when chunked execution is enabled")
@@ -2245,6 +2258,13 @@ def _run_chunked_implementation(
2245
2258
  from codd.implementer.chunked_runner import ChunkedRunner
2246
2259
 
2247
2260
  config = _load_optional_project_config(project_root)
2261
+ if language:
2262
+ # Per-invocation language override (Issue #20, v-kato): align with
2263
+ # implement_tasks() so both code paths honour the CLI flag without
2264
+ # mutating codd.yaml on disk.
2265
+ project_cfg = dict(config.get("project") or {})
2266
+ project_cfg["language"] = language
2267
+ config = {**config, "project": project_cfg}
2248
2268
  task_item, steps = _chunked_task_and_steps(project_root, config, task_id)
2249
2269
  resolved_ai_command = generator_module._resolve_ai_command(config, ai_cmd, command_name="implement")
2250
2270
 
@@ -0,0 +1,34 @@
1
+ You are CoDD's clarification interviewer. The user described a
2
+ phenomenon, but the description is too ambiguous to act on safely.
3
+ Generate one short clarification question and 2-4 candidate options,
4
+ then a final free-text option.
5
+
6
+ STRICT RULES:
7
+ - Question and options MUST be derived from the lexicon and the
8
+ phenomenon analysis. Do NOT invent terms not present in either.
9
+ - Each option is a single short sentence (<=80 chars).
10
+ - The final option must always be "Other (free text)".
11
+ - Do not propose options that contradict the project lexicon.
12
+ - Output JSON only.
13
+
14
+ Output shape:
15
+ {
16
+ "question": "string",
17
+ "options": [
18
+ {"id": "a", "label": "string"},
19
+ {"id": "b", "label": "string"},
20
+ ...
21
+ {"id": "other", "label": "Other (free text)"}
22
+ ]
23
+ }
24
+
25
+ PHENOMENON_TEXT:
26
+ {phenomenon_text}
27
+
28
+ PHENOMENON_ANALYSIS (JSON):
29
+ {analysis_json}
30
+
31
+ PROJECT_LEXICON (may be empty):
32
+ {lexicon_context}
33
+
34
+ JSON OUTPUT:
@@ -0,0 +1,33 @@
1
+ You are CoDD's design document updater. The user reported a phenomenon
2
+ they want fixed. Update the target design document to reflect the
3
+ required change.
4
+
5
+ STRICT RULES:
6
+ 1. Preserve every existing user_journey, acceptance_criterion, persona,
7
+ and lexicon_term unless explicit removal was requested.
8
+ 2. Never touch the frontmatter `codd:` block (codd.* metadata is owned
9
+ by the tooling).
10
+ 3. Make the smallest cohesive edit that captures the new requirement.
11
+ Add a bullet, refine a sentence, append an acceptance criterion.
12
+ 4. Do NOT rewrite the whole document. No reorganization. No tone change.
13
+ 5. If the phenomenon does not actually require any design change,
14
+ return the document UNCHANGED (exact byte-for-byte).
15
+ 6. Do not delete content unless ALLOW_DELETE is "true".
16
+
17
+ PHENOMENON_TEXT:
18
+ {phenomenon_text}
19
+
20
+ PHENOMENON_ANALYSIS (JSON):
21
+ {analysis_json}
22
+
23
+ ALLOW_DELETE: {allow_delete}
24
+
25
+ CURRENT_DOCUMENT_PATH: {target_path}
26
+
27
+ CURRENT_DOCUMENT_CONTENT:
28
+ <document>
29
+ {current_content}
30
+ </document>
31
+
32
+ Return ONLY the full updated document body (including frontmatter).
33
+ No commentary, no code fences, no <document> tags, no diff markers.
@@ -0,0 +1,34 @@
1
+ You are CoDD's PHENOMENON parser. The user described a phenomenon they
2
+ want fixed in their software. Extract a structured analysis.
3
+
4
+ Return ONLY a JSON object with this exact shape:
5
+
6
+ {
7
+ "intent": "improvement | bugfix | new_feature | clarification | unknown",
8
+ "subject_terms": ["natural-language keyword", "..."],
9
+ "lexicon_hits": ["normalized lexicon id", "..."],
10
+ "ambiguity_score": 0.0,
11
+ "acceptance_signal": "short natural-language description of done"
12
+ }
13
+
14
+ Rules:
15
+ - intent: choose exactly one. "unknown" if not derivable.
16
+ - subject_terms: 1-6 short noun-phrases that describe what the phenomenon
17
+ is about, in the user's own words. No metaphors, no boilerplate.
18
+ - lexicon_hits: only include ids that appear in the supplied lexicon.
19
+ If no lexicon hit, return [].
20
+ - ambiguity_score: 0.0 = totally clear and actionable.
21
+ 1.0 = the phenomenon is so vague that any fix could be wrong.
22
+ Be honest. 0.4+ means a clarification question is warranted.
23
+ - acceptance_signal: at most 140 chars. "" if cannot be inferred.
24
+
25
+ PHENOMENON_TEXT:
26
+ {phenomenon_text}
27
+
28
+ PROJECT_LEXICON (may be empty):
29
+ {lexicon_context}
30
+
31
+ DESIGN_DOC_SUMMARIES (id → frontmatter description, may be empty):
32
+ {design_summaries}
33
+
34
+ JSON OUTPUT:
@@ -0,0 +1,32 @@
1
+ You are CoDD's risk classifier. Given a unified diff produced by an
2
+ automated fix, decide whether it includes a destructive or otherwise
3
+ risky change that warrants explicit user confirmation.
4
+
5
+ Return ONLY a JSON object:
6
+
7
+ {
8
+ "risky": true | false,
9
+ "categories": ["schema_migration", "dependency_add", "mass_deletion",
10
+ "test_removal", "config_change"],
11
+ "summary": "one sentence explaining the risk, or '' if not risky"
12
+ }
13
+
14
+ Detection guidance:
15
+ - schema_migration: prisma/migrations, alembic versions, *.sql files,
16
+ DDL keywords in the diff (ALTER, DROP, CREATE TABLE).
17
+ - dependency_add: changes to pyproject.toml [project.dependencies],
18
+ package.json dependencies, requirements*.txt, Gemfile, Cargo.toml.
19
+ - mass_deletion: removed lines outnumber added lines by 3x or more,
20
+ OR a whole file is removed.
21
+ - test_removal: tests or spec files deleted, OR test cases removed
22
+ without replacement.
23
+ - config_change: CI workflow, deploy config, security policy, env vars.
24
+
25
+ DIFF:
26
+ <diff>
27
+ {diff_text}
28
+ </diff>
29
+
30
+ HEURISTIC_FLAGS (already detected): {heuristic_flags}
31
+
32
+ JSON OUTPUT:
@@ -382,10 +382,19 @@ def implement_tasks(
382
382
  clean: bool = False,
383
383
  use_derived_steps: bool | None = None,
384
384
  task: str | None = None,
385
+ language: str | None = None,
385
386
  **_ignored: Any,
386
387
  ) -> list[ImplementationResult]:
387
388
  project_root = Path(project_root).resolve()
388
389
  config = _load_project_config(project_root)
390
+ if language:
391
+ # Per-invocation language override (Issue #20, v-kato): mismatched
392
+ # codd init --language doesn't force a full re-init; spec authors can
393
+ # ship an implement run with --language typescript and the project's
394
+ # codd.yaml stays untouched.
395
+ project_cfg = dict(config.get("project") or {})
396
+ project_cfg["language"] = language
397
+ config = {**config, "project": project_cfg}
389
398
  design_node = design or task
390
399
  if not design_node:
391
400
  raise ValueError("--design is required")
@@ -1382,7 +1391,11 @@ def _prepend_traceability_comment(relative_path: str, comment_block: str, conten
1382
1391
 
1383
1392
  def _strip_code_fence(block: str) -> str:
1384
1393
  stripped = block.strip()
1385
- fenced = re.match(r"^```(?:[a-zA-Z0-9_+-]+)?\s*\n(?P<body>.*)\n```$", stripped, re.DOTALL)
1394
+ # Non-greedy `.*?` captures up to the FIRST closing fence; any trailing
1395
+ # prose/markdown after the fence is discarded (Issue #22, v-kato).
1396
+ # Drop the `$` end-of-string anchor so the match still wins when the
1397
+ # LLM ignored the "no commentary" instruction and appended explanations.
1398
+ fenced = re.match(r"^```(?:[a-zA-Z0-9_+-]+)?\s*\n(?P<body>.*?)\n```", stripped, re.DOTALL)
1386
1399
  if fenced:
1387
1400
  return fenced.group("body")
1388
1401
  return stripped
@@ -24,6 +24,7 @@ DEFAULT_NODE_PREFIXES = {
24
24
  "design",
25
25
  "detail",
26
26
  "detailed",
27
+ "detailed_design",
27
28
  "doc",
28
29
  "endpoint",
29
30
  "file",
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "codd-dev"
7
- version = "2.17.0"
7
+ version = "2.18.0"
8
8
  description = "CoDD: Coherence-Driven Development — cross-artifact change impact analysis"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -63,6 +63,7 @@ include = [
63
63
  "codd/**/*.py",
64
64
  "codd/**/*.md",
65
65
  "codd/**/*.yaml",
66
+ "codd/**/*.txt",
66
67
  "codd/hooks/recipes/*.json",
67
68
  "codd/hooks/recipes/*.sh",
68
69
  "codd/templates/**/*.j2",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes