codd-dev 2.17.1__tar.gz → 2.19.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.1 → codd_dev-2.19.0}/PKG-INFO +16 -5
  2. {codd_dev-2.17.1 → codd_dev-2.19.0}/README.md +15 -4
  3. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/bridge.py +10 -11
  4. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/cli.py +39 -73
  5. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/implementer.py +14 -1
  6. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/validator.py +1 -0
  7. {codd_dev-2.17.1 → codd_dev-2.19.0}/pyproject.toml +1 -1
  8. {codd_dev-2.17.1 → codd_dev-2.19.0}/.gitignore +0 -0
  9. {codd_dev-2.17.1 → codd_dev-2.19.0}/LICENSE +0 -0
  10. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/__init__.py +0 -0
  11. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/__main__.py +0 -0
  12. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/_git_helper.py +0 -0
  13. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/ask_user_question_adapter.py +0 -0
  14. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/assembler.py +0 -0
  15. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/brownfield/__init__.py +0 -0
  16. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/brownfield/pipeline.py +0 -0
  17. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/clustering.py +0 -0
  18. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/coherence_adapters.py +0 -0
  19. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/coherence_engine.py +0 -0
  20. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/config.py +0 -0
  21. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/contracts.py +0 -0
  22. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/coverage_auditor.py +0 -0
  23. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/coverage_metrics.py +0 -0
  24. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/__init__.py +0 -0
  25. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/auto_repair.py +0 -0
  26. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/builder.py +0 -0
  27. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/checks/__init__.py +0 -0
  28. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/checks/ci_health.py +0 -0
  29. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/checks/depends_on_consistency.py +0 -0
  30. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/checks/deployment_completeness.py +0 -0
  31. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/checks/edge_validity.py +0 -0
  32. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/checks/environment_coverage.py +0 -0
  33. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/checks/implementation_coverage.py +0 -0
  34. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/checks/node_completeness.py +0 -0
  35. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/checks/opt_out.py +0 -0
  36. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/checks/task_completion.py +0 -0
  37. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/checks/transitive_closure.py +0 -0
  38. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/checks/user_journey_coherence.py +0 -0
  39. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/coverage_axes.py +0 -0
  40. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/defaults/cli.yaml +0 -0
  41. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/defaults/cpp_embedded.yaml +0 -0
  42. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/defaults/csharp.yaml +0 -0
  43. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/defaults/elixir.yaml +0 -0
  44. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/defaults/generic.yaml +0 -0
  45. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/defaults/iot.yaml +0 -0
  46. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/defaults/java.yaml +0 -0
  47. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/defaults/kotlin.yaml +0 -0
  48. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/defaults/mobile.yaml +0 -0
  49. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/defaults/ruby.yaml +0 -0
  50. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/defaults/rust.yaml +0 -0
  51. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/defaults/scala.yaml +0 -0
  52. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/defaults/swift.yaml +0 -0
  53. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/defaults/test_frameworks.yaml +0 -0
  54. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/defaults/web.yaml +0 -0
  55. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/extractor.py +0 -0
  56. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/dag/runner.py +0 -0
  57. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/defaults.py +0 -0
  58. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/defaults.yaml +0 -0
  59. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deploy_targets/__init__.py +0 -0
  60. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deploy_targets/app_service.py +0 -0
  61. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deploy_targets/base.py +0 -0
  62. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deploy_targets/docker_compose.py +0 -0
  63. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployer.py +0 -0
  64. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/__init__.py +0 -0
  65. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/checks/__init__.py +0 -0
  66. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/defaults/deploy_targets.yaml +0 -0
  67. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
  68. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/defaults/schema_providers.yaml +0 -0
  69. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/defaults/verification_templates.yaml +0 -0
  70. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/extractor.py +0 -0
  71. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/__init__.py +0 -0
  72. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/ai_command.py +0 -0
  73. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/llm_consideration.py +0 -0
  74. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/schema/__init__.py +0 -0
  75. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/schema/prisma.py +0 -0
  76. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/target/__init__.py +0 -0
  77. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/target/docker_compose.py +0 -0
  78. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/verification/__init__.py +0 -0
  79. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
  80. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/verification/cdp_browser.py +0 -0
  81. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/verification/cdp_engines.py +0 -0
  82. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
  83. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/verification/cdp_wire.py +0 -0
  84. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/verification/curl.py +0 -0
  85. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/verification/form_strategies.py +0 -0
  86. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/verification/means_catalog.py +0 -0
  87. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/deployment/providers/verification/playwright.py +0 -0
  88. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/design_md.py +0 -0
  89. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/diff/__init__.py +0 -0
  90. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/diff/apply.py +0 -0
  91. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/diff/engine.py +0 -0
  92. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/diff/persistence.py +0 -0
  93. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/diff/templates/diff_prompt.md +0 -0
  94. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/drift.py +0 -0
  95. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/e2e_extractor.py +0 -0
  96. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/e2e_generator.py +0 -0
  97. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/e2e_runner.py +0 -0
  98. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/elicit/__init__.py +0 -0
  99. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/elicit/apply.py +0 -0
  100. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/elicit/engine.py +0 -0
  101. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/elicit/finding.py +0 -0
  102. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/elicit/formatters/__init__.py +0 -0
  103. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/elicit/formatters/base.py +0 -0
  104. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/elicit/formatters/interactive.py +0 -0
  105. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/elicit/formatters/json_fmt.py +0 -0
  106. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/elicit/formatters/md.py +0 -0
  107. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/elicit/lexicon_loader.py +0 -0
  108. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/elicit/persistence.py +0 -0
  109. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
  110. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/env_refs.py +0 -0
  111. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/extract_ai.py +0 -0
  112. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/extractor.py +0 -0
  113. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fix/__init__.py +0 -0
  114. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fix/candidate_selector.py +0 -0
  115. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fix/design_updater.py +0 -0
  116. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fix/interactive_prompt.py +0 -0
  117. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fix/phenomenon_fixer.py +0 -0
  118. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fix/phenomenon_parser.py +0 -0
  119. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fix/risk_classifier.py +0 -0
  120. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fix/templates/clarification_question.txt +0 -0
  121. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fix/templates/design_update.txt +0 -0
  122. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fix/templates/phenomenon_parse.txt +0 -0
  123. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fix/templates/risk_assessment.txt +0 -0
  124. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fix/templates_loader.py +0 -0
  125. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fixer.py +0 -0
  126. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fixup_drift.py +0 -0
  127. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fixup_drift_strategies/__init__.py +0 -0
  128. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
  129. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
  130. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/fixup_drift_strategies/url_drift.py +0 -0
  131. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/generator.py +0 -0
  132. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/graph.py +0 -0
  133. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/hitl_session.py +0 -0
  134. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/hooks/__init__.py +0 -0
  135. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/hooks/pre-commit +0 -0
  136. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/hooks/recipes/claude_settings_example.json +0 -0
  137. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/hooks/recipes/codex_hook.sh +0 -0
  138. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/hooks/recipes/git_post_commit.sh +0 -0
  139. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/hooks/recipes/git_pre_commit.sh +0 -0
  140. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/implementer/__init__.py +0 -0
  141. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/implementer/chunked_runner.py +0 -0
  142. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/implementer/typecheck_loop.py +0 -0
  143. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/inheritance.py +0 -0
  144. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/init/__init__.py +0 -0
  145. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/init/lexicon_suggest.py +0 -0
  146. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/init/llm_lexicon_suggester.py +0 -0
  147. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/init/stack_detector.py +0 -0
  148. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/knowledge_fetcher.py +0 -0
  149. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/lexicon.py +0 -0
  150. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/lexicon_cli/__init__.py +0 -0
  151. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/lexicon_cli/formatters/__init__.py +0 -0
  152. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/lexicon_cli/formatters/html.py +0 -0
  153. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
  154. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/lexicon_cli/formatters/md.py +0 -0
  155. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/lexicon_cli/inspector.py +0 -0
  156. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/lexicon_cli/manager.py +0 -0
  157. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/lexicon_cli/reporter.py +0 -0
  158. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/lexicon_cli/threshold.py +0 -0
  159. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/__init__.py +0 -0
  160. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/approval.py +0 -0
  161. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/best_practice_augmenter.py +0 -0
  162. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/criteria_expander.py +0 -0
  163. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/design_doc_extractor.py +0 -0
  164. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/impl_step_deriver.py +0 -0
  165. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/means_catalog_loader.py +0 -0
  166. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/parser.py +0 -0
  167. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/plan_deriver.py +0 -0
  168. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/prompt_builder.py +0 -0
  169. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/strategy_validator.py +0 -0
  170. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/templates/best_practice_augment_meta.md +0 -0
  171. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/templates/criteria_expand_meta.md +0 -0
  172. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/templates/design_doc_extract_meta.md +0 -0
  173. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/templates/impl_step_derive_meta.md +0 -0
  174. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
  175. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/templates/meta_instruction.md +0 -0
  176. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/templates/plan_derive_meta.md +0 -0
  177. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/llm/templates/verification_means_catalog.yaml +0 -0
  178. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/mcp_server.py +0 -0
  179. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/measure.py +0 -0
  180. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/parsing.py +0 -0
  181. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/planner.py +0 -0
  182. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/policy.py +0 -0
  183. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/preflight/__init__.py +0 -0
  184. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/preflight/defaults/cli.yaml +0 -0
  185. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/preflight/defaults/iot.yaml +0 -0
  186. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/preflight/defaults/mobile.yaml +0 -0
  187. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/preflight/defaults/web.yaml +0 -0
  188. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/propagate.py +0 -0
  189. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/propagator.py +0 -0
  190. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/registry.py +0 -0
  191. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/__init__.py +0 -0
  192. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/approval_repair.py +0 -0
  193. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/engine.py +0 -0
  194. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/git_patcher.py +0 -0
  195. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/history.py +0 -0
  196. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/llm_repair_engine.py +0 -0
  197. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/loop.py +0 -0
  198. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/primary_picker.py +0 -0
  199. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/proof_breaks.py +0 -0
  200. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/repair_result.py +0 -0
  201. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/repairability_classifier.py +0 -0
  202. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/schema.py +0 -0
  203. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/templates/analyze_meta.md +0 -0
  204. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/templates/propose_meta.md +0 -0
  205. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/templates/repair_strategy_meta.md +0 -0
  206. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/templates/repairability_meta.md +0 -0
  207. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair/verify_runner.py +0 -0
  208. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/repair_slice.py +0 -0
  209. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/require.py +0 -0
  210. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/require_plugins.py +0 -0
  211. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/require_propagate.py +0 -0
  212. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/required_artifacts/defaults/cli.yaml +0 -0
  213. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/required_artifacts/defaults/iot.yaml +0 -0
  214. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/required_artifacts/defaults/mobile.yaml +0 -0
  215. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/required_artifacts/defaults/web.yaml +0 -0
  216. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/required_artifacts_deriver.py +0 -0
  217. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/requirement_completeness/defaults/cli.yaml +0 -0
  218. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/requirement_completeness/defaults/iot.yaml +0 -0
  219. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
  220. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/requirement_completeness/defaults/web.yaml +0 -0
  221. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/requirement_completeness_auditor.py +0 -0
  222. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/restore.py +0 -0
  223. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/routes_extractor.py +0 -0
  224. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/scanner.py +0 -0
  225. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/schema_refs.py +0 -0
  226. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/screen_flow_validator.py +0 -0
  227. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/screen_transition_extractor.py +0 -0
  228. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/screen_transitions/defaults.yaml +0 -0
  229. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/synth.py +0 -0
  230. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/templates/codd.yaml.tmpl +0 -0
  231. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/templates/conventions.yaml.tmpl +0 -0
  232. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/templates/data_dependencies.yaml.tmpl +0 -0
  233. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/templates/doc_links.yaml.tmpl +0 -0
  234. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/templates/extract_ai_prompt_baseline.md +0 -0
  235. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/templates/extracted/api-contract.md.j2 +0 -0
  236. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
  237. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/templates/extracted/module-detail.md.j2 +0 -0
  238. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/templates/extracted/schema-design.md.j2 +0 -0
  239. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/templates/extracted/system-context.md.j2 +0 -0
  240. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/templates/gitignore.tmpl +0 -0
  241. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/templates/lexicon_questions.md +0 -0
  242. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/templates/lexicon_schema.yaml +0 -0
  243. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/templates/overrides.yaml.tmpl +0 -0
  244. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/traceability.py +0 -0
  245. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/watch/__init__.py +0 -0
  246. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/watch/events.py +0 -0
  247. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/watch/propagation_log.py +0 -0
  248. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/watch/propagation_pipeline.py +0 -0
  249. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/watch/test_runner.py +0 -0
  250. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/watch/watcher.py +0 -0
  251. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd/wiring.py +0 -0
  252. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
  253. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
  254. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
  255. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
  256. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
  257. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
  258. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
  259. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
  260. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
  261. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
  262. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
  263. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
  264. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
  265. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
  266. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
  267. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
  268. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
  269. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
  270. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
  271. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
  272. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
  273. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
  274. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
  275. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
  276. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
  277. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
  278. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
  279. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
  280. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
  281. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
  282. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
  283. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
  284. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
  285. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
  286. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
  287. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
  288. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
  289. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
  290. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
  291. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
  292. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
  293. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
  294. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
  295. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
  296. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
  297. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
  298. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
  299. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
  300. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
  301. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
  302. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
  303. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
  304. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
  305. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
  306. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
  307. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
  308. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
  309. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
  310. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
  311. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
  312. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
  313. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
  314. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
  315. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
  316. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
  317. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
  318. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
  319. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
  320. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
  321. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
  322. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
  323. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
  324. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
  325. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
  326. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
  327. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
  328. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
  329. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
  330. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
  331. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
  332. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
  333. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
  334. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
  335. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
  336. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
  337. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
  338. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
  339. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
  340. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
  341. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
  342. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
  343. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
  344. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
  345. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
  346. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
  347. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
  348. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
  349. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
  350. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
  351. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
  352. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
  353. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
  354. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
  355. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
  356. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
  357. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
  358. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
  359. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
  360. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
  361. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
  362. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
  363. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
  364. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
  365. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
  366. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
  367. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
  368. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
  369. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
  370. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
  371. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
  372. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
  373. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
  374. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
  375. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
  376. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
  377. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
  378. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
  379. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
  380. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
  381. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
  382. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
  383. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
  384. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
  385. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
  386. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
  387. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
  388. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
  389. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
  390. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
  391. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
  392. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
  393. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
  394. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
  395. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
  396. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
  397. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
  398. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
  399. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
  400. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
  401. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
  402. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
  403. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
  404. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
  405. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
  406. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
  407. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
  408. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
  409. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
  410. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
  411. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
  412. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
  413. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
  414. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
  415. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
  416. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
  417. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
  418. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
  419. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
  420. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
  421. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
  422. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
  423. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
  424. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
  425. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
  426. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
  427. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
  428. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
  429. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
  430. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
  431. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
  432. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
  433. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
  434. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
  435. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
  436. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
  437. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
  438. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
  439. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
  440. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
  441. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
  442. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
  443. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
  444. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
  445. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
  446. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
  447. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
  448. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
  449. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
  450. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
  451. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
  452. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
  453. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
  454. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
  455. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
  456. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
  457. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
  458. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
  459. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
  460. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
  461. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
  462. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
  463. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
  464. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
  465. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
  466. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
  467. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
  468. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
  469. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
  470. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
  471. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
  472. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
  473. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
  474. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
  475. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
  476. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
  477. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
  478. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
  479. {codd_dev-2.17.1 → codd_dev-2.19.0}/codd_plugins/stack_map.yaml +0 -0
  480. {codd_dev-2.17.1 → codd_dev-2.19.0}/docs/cookbook/cdp_browser/README.md +0 -0
  481. {codd_dev-2.17.1 → codd_dev-2.19.0}/docs/requirements/README.md +0 -0
  482. {codd_dev-2.17.1 → codd_dev-2.19.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.1
3
+ Version: 2.19.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). |
@@ -93,8 +102,8 @@ That's it. Three commands, three feedback loops, one coherent project.
93
102
  flowchart LR
94
103
  R["Requirements (.md)"] --> E["codd elicit"]
95
104
  E -->|gap findings| H{HITL: approve / reject}
96
- H -->|[x]| L["project_lexicon.yaml + requirements TODOs"]
97
- H -->|[r]| I["ignored_findings.yaml"]
105
+ H -->|approve| L["project_lexicon.yaml + requirements TODOs"]
106
+ H -->|reject| I["ignored_findings.yaml"]
98
107
  L --> V["codd dag verify --auto-repair"]
99
108
  V -->|violation| AR["LLM patch propose → apply"]
100
109
  AR --> V
@@ -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). |
@@ -53,8 +62,8 @@ That's it. Three commands, three feedback loops, one coherent project.
53
62
  flowchart LR
54
63
  R["Requirements (.md)"] --> E["codd elicit"]
55
64
  E -->|gap findings| H{HITL: approve / reject}
56
- H -->|[x]| L["project_lexicon.yaml + requirements TODOs"]
57
- H -->|[r]| I["ignored_findings.yaml"]
65
+ H -->|approve| L["project_lexicon.yaml + requirements TODOs"]
66
+ H -->|reject| I["ignored_findings.yaml"]
58
67
  L --> V["codd dag verify --auto-repair"]
59
68
  V -->|violation| AR["LLM patch propose → apply"]
60
69
  AR --> V
@@ -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
 
@@ -1,4 +1,4 @@
1
- """Bridge helpers for optional codd-pro extensions and plugin registration."""
1
+ """Bridge helpers for optional plugin registration."""
2
2
 
3
3
  from __future__ import annotations
4
4
 
@@ -8,10 +8,6 @@ from typing import Any, Callable
8
8
 
9
9
 
10
10
  PLUGIN_GROUP = "codd.plugins"
11
- PRO_COMMAND_INSTALL_MESSAGE = (
12
- "このコマンドは codd-pro に移動しました。"
13
- "pip install codd-pro でインストールできます。"
14
- )
15
11
 
16
12
 
17
13
  @dataclass
@@ -22,7 +18,6 @@ class BridgeRegistry:
22
18
  validator_handler: Callable[..., Any] | None = None
23
19
  policy_handler: Callable[..., Any] | None = None
24
20
  risk_builder: Callable[..., Any] | None = None
25
- command_handlers: dict[str, Callable[..., Any]] = field(default_factory=dict)
26
21
  mcp_tools: dict[str, dict[str, Any]] = field(default_factory=dict)
27
22
  mcp_handlers: dict[str, Callable[..., Any]] = field(default_factory=dict)
28
23
 
@@ -38,9 +33,6 @@ class BridgeRegistry:
38
33
  def register_risk_builder(self, handler: Callable[..., Any]) -> None:
39
34
  self.risk_builder = handler
40
35
 
41
- def register_command(self, name: str, handler: Callable[..., Any]) -> None:
42
- self.command_handlers[name] = handler
43
-
44
36
  def register_mcp_tool(self, tool: dict[str, Any], handler: Callable[..., Any]) -> None:
45
37
  name = str(tool.get("name") or "")
46
38
  if not name:
@@ -79,5 +71,12 @@ def load_bridge_registry() -> BridgeRegistry:
79
71
 
80
72
 
81
73
  def get_command_handler(name: str) -> Callable[..., Any] | None:
82
- """Return the registered handler for a Pro-only CLI command."""
83
- return load_bridge_registry().command_handlers.get(name)
74
+ """Return an optional plugin-provided command handler."""
75
+ registry = load_bridge_registry()
76
+ resolver = getattr(registry, "resolve_command_handler", None)
77
+ if callable(resolver):
78
+ handler = resolver(name)
79
+ return handler if callable(handler) else None
80
+
81
+ handler = getattr(registry, f"{name}_handler", None)
82
+ return handler if callable(handler) else None
@@ -14,7 +14,7 @@ from typing import Any
14
14
  import click
15
15
  import yaml
16
16
 
17
- from codd.bridge import PRO_COMMAND_INSTALL_MESSAGE, get_command_handler
17
+ from codd.bridge import get_command_handler
18
18
  from codd.config import find_codd_dir, load_project_config
19
19
  from codd.lexicon import LEXICON_FILENAME, load_lexicon, load_project_extends
20
20
 
@@ -172,18 +172,6 @@ def _compare_version_keys(installed: tuple[int, ...], op: str, expected: tuple[i
172
172
  return False
173
173
 
174
174
 
175
- def _run_pro_command(name: str, **kwargs):
176
- """Dispatch a Pro-only command when the bridge plugin is installed."""
177
- handler = get_command_handler(name)
178
- if handler is None:
179
- click.echo(PRO_COMMAND_INSTALL_MESSAGE)
180
- raise SystemExit(1)
181
-
182
- result = handler(**kwargs)
183
- if type(result) is int:
184
- raise SystemExit(result)
185
-
186
-
187
175
  def _require_codd_dir(project_root: Path) -> Path:
188
176
  """Return the CoDD config dir or exit with a helpful message."""
189
177
  codd_dir = find_codd_dir(project_root)
@@ -2109,6 +2097,15 @@ def implement_augment_cmd(
2109
2097
  help="Seconds before one chunk is interrupted",
2110
2098
  )
2111
2099
  @click.option("--enable-typecheck-loop", is_flag=True, default=False, help="Run configured typecheck repair loop after implementation")
2100
+ @click.option(
2101
+ "--language",
2102
+ default=None,
2103
+ help=(
2104
+ "Override project.language for this invocation only. Useful when "
2105
+ "`codd init --language js` was chosen but a downstream spec/design "
2106
+ "doc requires TypeScript (Issue #20). codd.yaml is not modified."
2107
+ ),
2108
+ )
2112
2109
  def implement_run_cmd(
2113
2110
  task_id: str | None,
2114
2111
  project_path: str,
@@ -2117,6 +2114,7 @@ def implement_run_cmd(
2117
2114
  chunk_size: int | None,
2118
2115
  timeout_per_chunk: int,
2119
2116
  enable_typecheck_loop: bool,
2117
+ language: str | None,
2120
2118
  ):
2121
2119
  """Run implementation with optional derived step injection."""
2122
2120
  from codd.implementer import auto_detect_task, implement_tasks
@@ -2140,6 +2138,7 @@ def implement_run_cmd(
2140
2138
  chunk_size=chunk_size,
2141
2139
  timeout_per_chunk=timeout_per_chunk,
2142
2140
  history=None,
2141
+ language=language,
2143
2142
  )
2144
2143
  except (FileNotFoundError, ValueError, CoddCLIError) as exc:
2145
2144
  click.echo(f"Error: {exc}")
@@ -2165,6 +2164,7 @@ def implement_run_cmd(
2165
2164
  task=task_id,
2166
2165
  ai_command=ai_cmd,
2167
2166
  use_derived_steps=_optional_bool(use_derived_steps),
2167
+ language=language,
2168
2168
  )
2169
2169
  except (FileNotFoundError, ValueError, CoddCLIError) as exc:
2170
2170
  click.echo(f"Error: {exc}")
@@ -2237,6 +2237,7 @@ def _run_chunked_implementation(
2237
2237
  chunk_size: int,
2238
2238
  timeout_per_chunk: int,
2239
2239
  history: str | None,
2240
+ language: str | None = None,
2240
2241
  ):
2241
2242
  if not task_id:
2242
2243
  raise ValueError("--task is required when chunked execution is enabled")
@@ -2245,6 +2246,13 @@ def _run_chunked_implementation(
2245
2246
  from codd.implementer.chunked_runner import ChunkedRunner
2246
2247
 
2247
2248
  config = _load_optional_project_config(project_root)
2249
+ if language:
2250
+ # Per-invocation language override (Issue #20, v-kato): align with
2251
+ # implement_tasks() so both code paths honour the CLI flag without
2252
+ # mutating codd.yaml on disk.
2253
+ project_cfg = dict(config.get("project") or {})
2254
+ project_cfg["language"] = language
2255
+ config = {**config, "project": project_cfg}
2248
2256
  task_item, steps = _chunked_task_and_steps(project_root, config, task_id)
2249
2257
  resolved_ai_command = generator_module._resolve_ai_command(config, ai_cmd, command_name="implement")
2250
2258
 
@@ -2413,11 +2421,12 @@ def verify(
2413
2421
  return
2414
2422
  if e2e or deploy:
2415
2423
  from codd.e2e_runner import run_e2e
2424
+
2416
2425
  run_e2e(path=path, deploy=deploy, base_url=base_url)
2417
2426
  return
2418
2427
 
2419
2428
  if not auto_repair:
2420
- _run_pro_command("verify", path=path, sprint=sprint)
2429
+ _run_verify_once(path=path, sprint=sprint, prefer_standalone=True)
2421
2430
  return
2422
2431
 
2423
2432
  project_root = Path(path).resolve()
@@ -2805,28 +2814,6 @@ def repair_slice_cmd(path, files, issue, issue_file, language, source_dirs, top_
2805
2814
  click.echo(result)
2806
2815
 
2807
2816
 
2808
- @main.command()
2809
- @click.option("--path", default=".", help="Project root directory")
2810
- @click.option("--scope", default=None, help="Review a single document by node_id")
2811
- @click.option("--json", "as_json", is_flag=True, help="Output results as JSON")
2812
- @click.option(
2813
- "--ai-cmd",
2814
- default=None,
2815
- help="Override AI CLI command (defaults to codd.yaml ai_command)",
2816
- )
2817
- def review(path: str, scope: str | None, as_json: bool, ai_cmd: str | None):
2818
- """Review design documents for content quality using AI.
2819
-
2820
- Evaluates artifacts against type-specific criteria (architecture soundness,
2821
- completeness, consistency with upstream docs, etc.) and returns PASS/FAIL
2822
- with a score and detailed feedback.
2823
-
2824
- Without --scope: reviews all documents.
2825
- With --scope: reviews a single document by node_id.
2826
- """
2827
- _run_pro_command("review", path=path, scope=scope, as_json=as_json, ai_cmd=ai_cmd)
2828
-
2829
-
2830
2817
  @main.command()
2831
2818
  @click.option("--lexicon", is_flag=True, default=False, help="Validate against project_lexicon.yaml")
2832
2819
  @click.option(
@@ -3297,41 +3284,6 @@ def fixup_drift(path: str, dry_run: bool, severity: str, kind: str):
3297
3284
  click.echo(f"Error: {error}")
3298
3285
 
3299
3286
 
3300
- @main.command()
3301
- @click.option("--diff", default="HEAD", help="Git diff target (default: HEAD)")
3302
- @click.option("--path", default=".", help="Project root directory")
3303
- @click.option("--json", "as_json", is_flag=True, help="Output as JSON")
3304
- @click.option("--skip-review", is_flag=True, help="Skip AI review (faster, no AI cost)")
3305
- @click.option("--output", default=None, help="Output file (default: stdout)")
3306
- @click.option("--ai-cmd", default=None, help="Override AI command for review phase")
3307
- def audit(diff: str, path: str, as_json: bool, skip_review: bool, output: str | None, ai_cmd: str | None):
3308
- """Change review pack — validate + impact + policy + review in one report.
3309
-
3310
- Produces a consolidated audit report for PM/QA to make merge/release
3311
- decisions. Runs four phases: structural validation, impact analysis,
3312
- policy check (enterprise rules from codd.yaml), and (optionally) AI
3313
- quality review.
3314
-
3315
- Exit code: 0 = APPROVE, 1 = CONDITIONAL or REJECT.
3316
- """
3317
- _run_pro_command(
3318
- "audit",
3319
- diff=diff,
3320
- path=path,
3321
- as_json=as_json,
3322
- skip_review=skip_review,
3323
- output=output,
3324
- ai_cmd=ai_cmd,
3325
- )
3326
-
3327
-
3328
- @main.command()
3329
- @click.option("--path", default=".", help="Project root directory")
3330
- def risk(path: str):
3331
- """Analyze change risk using the codd-pro extension pack."""
3332
- _run_pro_command("risk", path=path)
3333
-
3334
-
3335
3287
  @main.command()
3336
3288
  @click.argument("phenomenon", nargs=-1)
3337
3289
  @click.option("--path", default=".", help="Project root directory")
@@ -4543,11 +4495,12 @@ def _run_verify_once(
4543
4495
  *,
4544
4496
  prefer_standalone: bool = False,
4545
4497
  ) -> _CliVerificationResult:
4546
- if prefer_standalone or get_command_handler("verify") is None:
4498
+ handler = None if prefer_standalone else get_command_handler("verify")
4499
+ if handler is None:
4547
4500
  return _run_standalone_verify_once(path)
4548
4501
 
4549
4502
  try:
4550
- _run_pro_command("verify", path=path, sprint=sprint)
4503
+ result = handler(path=path, sprint=sprint)
4551
4504
  except SystemExit as exc:
4552
4505
  exit_code = _system_exit_code(exc)
4553
4506
  passed = exit_code == 0
@@ -4560,6 +4513,19 @@ def _run_verify_once(
4560
4513
  {},
4561
4514
  )
4562
4515
  return _CliVerificationResult(passed=passed, exit_code=exit_code, failure=failure)
4516
+ if isinstance(result, _CliVerificationResult):
4517
+ return result
4518
+ if type(result) is int:
4519
+ passed = result == 0
4520
+ failure = None
4521
+ if not passed:
4522
+ failure = _verification_failure_report(
4523
+ "verify",
4524
+ [],
4525
+ [f"codd verify exited with code {result}"],
4526
+ {},
4527
+ )
4528
+ return _CliVerificationResult(passed=passed, exit_code=result, failure=failure)
4563
4529
  return _CliVerificationResult(passed=True, exit_code=0, failure=None)
4564
4530
 
4565
4531
 
@@ -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.1"
7
+ version = "2.19.0"
8
8
  description = "CoDD: Coherence-Driven Development — cross-artifact change impact analysis"
9
9
  readme = "README.md"
10
10
  license = "MIT"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes