codd-dev 2.10.0__tar.gz → 2.12.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 (470) hide show
  1. codd_dev-2.12.0/PKG-INFO +207 -0
  2. codd_dev-2.12.0/README.md +167 -0
  3. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/assembler.py +6 -4
  4. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/cli.py +32 -29
  5. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/dag/builder.py +3 -1
  6. codd_dev-2.12.0/codd/dag/checks/ci_health.py +358 -0
  7. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/dag/checks/user_journey_coherence.py +113 -1
  8. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/dag/runner.py +1 -0
  9. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/deployer.py +76 -1
  10. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/diff/apply.py +9 -11
  11. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/elicit/__init__.py +3 -1
  12. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/elicit/engine.py +230 -3
  13. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/elicit/finding.py +22 -3
  14. codd_dev-2.12.0/codd/implementer.py +1429 -0
  15. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/llm/plan_deriver.py +11 -2
  16. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/templates/codd.yaml.tmpl +10 -0
  17. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/stack_map.yaml +8 -0
  18. {codd_dev-2.10.0 → codd_dev-2.12.0}/pyproject.toml +1 -1
  19. codd_dev-2.10.0/PKG-INFO +0 -399
  20. codd_dev-2.10.0/README.md +0 -359
  21. codd_dev-2.10.0/codd/implementer.py +0 -2011
  22. {codd_dev-2.10.0 → codd_dev-2.12.0}/.gitignore +0 -0
  23. {codd_dev-2.10.0 → codd_dev-2.12.0}/LICENSE +0 -0
  24. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/__init__.py +0 -0
  25. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/__main__.py +0 -0
  26. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/_git_helper.py +0 -0
  27. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/ask_user_question_adapter.py +0 -0
  28. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/bridge.py +0 -0
  29. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/brownfield/__init__.py +0 -0
  30. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/brownfield/pipeline.py +0 -0
  31. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/clustering.py +0 -0
  32. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/coherence_adapters.py +0 -0
  33. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/coherence_engine.py +0 -0
  34. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/config.py +0 -0
  35. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/contracts.py +0 -0
  36. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/coverage_auditor.py +0 -0
  37. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/coverage_metrics.py +0 -0
  38. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/dag/__init__.py +0 -0
  39. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/dag/checks/__init__.py +0 -0
  40. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/dag/checks/depends_on_consistency.py +0 -0
  41. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/dag/checks/deployment_completeness.py +0 -0
  42. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/dag/checks/edge_validity.py +0 -0
  43. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/dag/checks/environment_coverage.py +0 -0
  44. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/dag/checks/implementation_coverage.py +0 -0
  45. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/dag/checks/node_completeness.py +0 -0
  46. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/dag/checks/task_completion.py +0 -0
  47. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/dag/checks/transitive_closure.py +0 -0
  48. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/dag/coverage_axes.py +0 -0
  49. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/dag/defaults/cli.yaml +0 -0
  50. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/dag/defaults/cpp_embedded.yaml +0 -0
  51. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/dag/defaults/csharp.yaml +0 -0
  52. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/dag/defaults/elixir.yaml +0 -0
  53. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/dag/defaults/generic.yaml +0 -0
  54. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/dag/defaults/iot.yaml +0 -0
  55. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/dag/defaults/java.yaml +0 -0
  56. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/dag/defaults/kotlin.yaml +0 -0
  57. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/dag/defaults/mobile.yaml +0 -0
  58. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/dag/defaults/ruby.yaml +0 -0
  59. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/dag/defaults/rust.yaml +0 -0
  60. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/dag/defaults/scala.yaml +0 -0
  61. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/dag/defaults/swift.yaml +0 -0
  62. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/dag/defaults/test_frameworks.yaml +0 -0
  63. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/dag/defaults/web.yaml +0 -0
  64. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/dag/extractor.py +0 -0
  65. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/defaults.yaml +0 -0
  66. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/deploy_targets/__init__.py +0 -0
  67. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/deploy_targets/app_service.py +0 -0
  68. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/deploy_targets/base.py +0 -0
  69. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/deploy_targets/docker_compose.py +0 -0
  70. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/deployment/__init__.py +0 -0
  71. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/deployment/checks/__init__.py +0 -0
  72. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/deployment/defaults/deploy_targets.yaml +0 -0
  73. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
  74. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/deployment/defaults/schema_providers.yaml +0 -0
  75. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/deployment/defaults/verification_templates.yaml +0 -0
  76. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/deployment/extractor.py +0 -0
  77. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/deployment/providers/__init__.py +0 -0
  78. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/deployment/providers/ai_command.py +0 -0
  79. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/deployment/providers/llm_consideration.py +0 -0
  80. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/deployment/providers/schema/__init__.py +0 -0
  81. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/deployment/providers/schema/prisma.py +0 -0
  82. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/deployment/providers/target/__init__.py +0 -0
  83. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/deployment/providers/target/docker_compose.py +0 -0
  84. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/deployment/providers/verification/__init__.py +0 -0
  85. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
  86. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/deployment/providers/verification/cdp_browser.py +0 -0
  87. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/deployment/providers/verification/cdp_engines.py +0 -0
  88. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
  89. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/deployment/providers/verification/cdp_wire.py +0 -0
  90. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/deployment/providers/verification/curl.py +0 -0
  91. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/deployment/providers/verification/form_strategies.py +0 -0
  92. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/deployment/providers/verification/means_catalog.py +0 -0
  93. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/deployment/providers/verification/playwright.py +0 -0
  94. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/design_md.py +0 -0
  95. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/diff/__init__.py +0 -0
  96. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/diff/engine.py +0 -0
  97. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/diff/persistence.py +0 -0
  98. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/diff/templates/diff_prompt.md +0 -0
  99. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/drift.py +0 -0
  100. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/e2e_extractor.py +0 -0
  101. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/e2e_generator.py +0 -0
  102. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/e2e_runner.py +0 -0
  103. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/elicit/apply.py +0 -0
  104. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/elicit/formatters/__init__.py +0 -0
  105. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/elicit/formatters/base.py +0 -0
  106. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/elicit/formatters/interactive.py +0 -0
  107. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/elicit/formatters/json_fmt.py +0 -0
  108. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/elicit/formatters/md.py +0 -0
  109. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/elicit/lexicon_loader.py +0 -0
  110. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/elicit/persistence.py +0 -0
  111. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
  112. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/env_refs.py +0 -0
  113. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/extract_ai.py +0 -0
  114. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/extractor.py +0 -0
  115. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/fixer.py +0 -0
  116. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/fixup_drift.py +0 -0
  117. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/fixup_drift_strategies/__init__.py +0 -0
  118. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
  119. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
  120. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/fixup_drift_strategies/url_drift.py +0 -0
  121. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/generator.py +0 -0
  122. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/graph.py +0 -0
  123. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/hitl_session.py +0 -0
  124. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/hooks/__init__.py +0 -0
  125. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/hooks/pre-commit +0 -0
  126. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/hooks/recipes/claude_settings_example.json +0 -0
  127. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/hooks/recipes/codex_hook.sh +0 -0
  128. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/hooks/recipes/git_post_commit.sh +0 -0
  129. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/hooks/recipes/git_pre_commit.sh +0 -0
  130. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/implementer/__init__.py +0 -0
  131. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/implementer/chunked_runner.py +0 -0
  132. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/implementer/typecheck_loop.py +0 -0
  133. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/inheritance.py +0 -0
  134. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/init/__init__.py +0 -0
  135. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/init/lexicon_suggest.py +0 -0
  136. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/init/llm_lexicon_suggester.py +0 -0
  137. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/init/stack_detector.py +0 -0
  138. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/knowledge_fetcher.py +0 -0
  139. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/lexicon.py +0 -0
  140. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/lexicon_cli/__init__.py +0 -0
  141. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/lexicon_cli/formatters/__init__.py +0 -0
  142. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/lexicon_cli/formatters/html.py +0 -0
  143. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/lexicon_cli/formatters/json_fmt.py +0 -0
  144. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/lexicon_cli/formatters/md.py +0 -0
  145. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/lexicon_cli/inspector.py +0 -0
  146. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/lexicon_cli/manager.py +0 -0
  147. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/lexicon_cli/reporter.py +0 -0
  148. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/lexicon_cli/threshold.py +0 -0
  149. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/llm/__init__.py +0 -0
  150. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/llm/approval.py +0 -0
  151. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/llm/best_practice_augmenter.py +0 -0
  152. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/llm/criteria_expander.py +0 -0
  153. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/llm/design_doc_extractor.py +0 -0
  154. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/llm/impl_step_deriver.py +0 -0
  155. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/llm/means_catalog_loader.py +0 -0
  156. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/llm/parser.py +0 -0
  157. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/llm/prompt_builder.py +0 -0
  158. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/llm/strategy_validator.py +0 -0
  159. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/llm/templates/best_practice_augment_meta.md +0 -0
  160. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/llm/templates/criteria_expand_meta.md +0 -0
  161. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/llm/templates/design_doc_extract_meta.md +0 -0
  162. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/llm/templates/impl_step_derive_meta.md +0 -0
  163. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
  164. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/llm/templates/meta_instruction.md +0 -0
  165. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/llm/templates/plan_derive_meta.md +0 -0
  166. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/llm/templates/verification_means_catalog.yaml +0 -0
  167. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/mcp_server.py +0 -0
  168. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/measure.py +0 -0
  169. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/parsing.py +0 -0
  170. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/planner.py +0 -0
  171. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/policy.py +0 -0
  172. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/preflight/__init__.py +0 -0
  173. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/preflight/defaults/cli.yaml +0 -0
  174. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/preflight/defaults/iot.yaml +0 -0
  175. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/preflight/defaults/mobile.yaml +0 -0
  176. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/preflight/defaults/web.yaml +0 -0
  177. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/propagate.py +0 -0
  178. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/propagator.py +0 -0
  179. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/registry.py +0 -0
  180. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/repair/__init__.py +0 -0
  181. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/repair/approval_repair.py +0 -0
  182. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/repair/engine.py +0 -0
  183. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/repair/git_patcher.py +0 -0
  184. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/repair/history.py +0 -0
  185. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/repair/llm_repair_engine.py +0 -0
  186. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/repair/loop.py +0 -0
  187. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/repair/primary_picker.py +0 -0
  188. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/repair/proof_breaks.py +0 -0
  189. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/repair/repair_result.py +0 -0
  190. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/repair/repairability_classifier.py +0 -0
  191. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/repair/schema.py +0 -0
  192. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/repair/templates/analyze_meta.md +0 -0
  193. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/repair/templates/propose_meta.md +0 -0
  194. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/repair/templates/repair_strategy_meta.md +0 -0
  195. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/repair/templates/repairability_meta.md +0 -0
  196. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/repair/verify_runner.py +0 -0
  197. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/repair_slice.py +0 -0
  198. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/require.py +0 -0
  199. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/require_plugins.py +0 -0
  200. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/require_propagate.py +0 -0
  201. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/required_artifacts/defaults/cli.yaml +0 -0
  202. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/required_artifacts/defaults/iot.yaml +0 -0
  203. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/required_artifacts/defaults/mobile.yaml +0 -0
  204. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/required_artifacts/defaults/web.yaml +0 -0
  205. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/required_artifacts_deriver.py +0 -0
  206. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/requirement_completeness/defaults/cli.yaml +0 -0
  207. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/requirement_completeness/defaults/iot.yaml +0 -0
  208. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
  209. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/requirement_completeness/defaults/web.yaml +0 -0
  210. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/requirement_completeness_auditor.py +0 -0
  211. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/restore.py +0 -0
  212. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/routes_extractor.py +0 -0
  213. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/scanner.py +0 -0
  214. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/schema_refs.py +0 -0
  215. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/screen_flow_validator.py +0 -0
  216. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/screen_transition_extractor.py +0 -0
  217. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/screen_transitions/defaults.yaml +0 -0
  218. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/synth.py +0 -0
  219. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/templates/conventions.yaml.tmpl +0 -0
  220. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/templates/data_dependencies.yaml.tmpl +0 -0
  221. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/templates/doc_links.yaml.tmpl +0 -0
  222. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/templates/extract_ai_prompt_baseline.md +0 -0
  223. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/templates/extracted/api-contract.md.j2 +0 -0
  224. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
  225. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/templates/extracted/module-detail.md.j2 +0 -0
  226. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/templates/extracted/schema-design.md.j2 +0 -0
  227. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/templates/extracted/system-context.md.j2 +0 -0
  228. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/templates/gitignore.tmpl +0 -0
  229. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/templates/lexicon_questions.md +0 -0
  230. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/templates/lexicon_schema.yaml +0 -0
  231. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/templates/overrides.yaml.tmpl +0 -0
  232. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/traceability.py +0 -0
  233. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/validator.py +0 -0
  234. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/watch/__init__.py +0 -0
  235. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/watch/events.py +0 -0
  236. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/watch/propagation_log.py +0 -0
  237. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/watch/propagation_pipeline.py +0 -0
  238. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/watch/test_runner.py +0 -0
  239. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/watch/watcher.py +0 -0
  240. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd/wiring.py +0 -0
  241. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
  242. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
  243. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
  244. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
  245. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
  246. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
  247. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/api_rate_limiting_caching/coverage_matrix.md +0 -0
  248. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/api_rate_limiting_caching/elicit_extend.md +0 -0
  249. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/api_rate_limiting_caching/lexicon.yaml +0 -0
  250. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/api_rate_limiting_caching/manifest.yaml +0 -0
  251. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/api_rate_limiting_caching/recommended_kinds.yaml +0 -0
  252. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/api_rate_limiting_caching/severity_rules.yaml +0 -0
  253. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
  254. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
  255. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
  256. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
  257. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
  258. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
  259. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
  260. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/babok/lexicon.yaml +0 -0
  261. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
  262. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
  263. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/babok/severity_rules.yaml +0 -0
  264. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
  265. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
  266. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
  267. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
  268. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
  269. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
  270. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
  271. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
  272. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
  273. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
  274. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
  275. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
  276. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
  277. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
  278. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
  279. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
  280. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
  281. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
  282. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
  283. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
  284. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
  285. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
  286. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
  287. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
  288. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
  289. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
  290. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
  291. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
  292. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
  293. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
  294. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
  295. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
  296. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
  297. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
  298. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
  299. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
  300. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
  301. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
  302. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
  303. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
  304. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
  305. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
  306. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
  307. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
  308. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
  309. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
  310. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
  311. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
  312. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
  313. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
  314. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
  315. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
  316. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
  317. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
  318. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
  319. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
  320. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
  321. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
  322. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
  323. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
  324. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ddd_domain_driven_design/coverage_matrix.md +0 -0
  325. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ddd_domain_driven_design/elicit_extend.md +0 -0
  326. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ddd_domain_driven_design/lexicon.yaml +0 -0
  327. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ddd_domain_driven_design/manifest.yaml +0 -0
  328. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ddd_domain_driven_design/recommended_kinds.yaml +0 -0
  329. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ddd_domain_driven_design/severity_rules.yaml +0 -0
  330. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/dora_sre_metrics/coverage_matrix.md +0 -0
  331. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/dora_sre_metrics/elicit_extend.md +0 -0
  332. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/dora_sre_metrics/lexicon.yaml +0 -0
  333. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/dora_sre_metrics/manifest.yaml +0 -0
  334. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/dora_sre_metrics/recommended_kinds.yaml +0 -0
  335. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/dora_sre_metrics/severity_rules.yaml +0 -0
  336. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/i18n_unicode_cldr/coverage_matrix.md +0 -0
  337. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/i18n_unicode_cldr/elicit_extend.md +0 -0
  338. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/i18n_unicode_cldr/lexicon.yaml +0 -0
  339. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/i18n_unicode_cldr/manifest.yaml +0 -0
  340. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/i18n_unicode_cldr/recommended_kinds.yaml +0 -0
  341. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/i18n_unicode_cldr/severity_rules.yaml +0 -0
  342. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ml_model_cards/coverage_matrix.md +0 -0
  343. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ml_model_cards/elicit_extend.md +0 -0
  344. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ml_model_cards/lexicon.yaml +0 -0
  345. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ml_model_cards/manifest.yaml +0 -0
  346. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ml_model_cards/recommended_kinds.yaml +0 -0
  347. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ml_model_cards/severity_rules.yaml +0 -0
  348. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
  349. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
  350. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
  351. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
  352. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
  353. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
  354. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
  355. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
  356. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
  357. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
  358. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
  359. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
  360. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
  361. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
  362. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
  363. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
  364. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
  365. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
  366. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/mobile_security_masvs/coverage_matrix.md +0 -0
  367. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/mobile_security_masvs/elicit_extend.md +0 -0
  368. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/mobile_security_masvs/lexicon.yaml +0 -0
  369. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/mobile_security_masvs/manifest.yaml +0 -0
  370. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/mobile_security_masvs/recommended_kinds.yaml +0 -0
  371. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/mobile_security_masvs/severity_rules.yaml +0 -0
  372. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
  373. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
  374. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
  375. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
  376. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
  377. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
  378. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
  379. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
  380. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
  381. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
  382. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
  383. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
  384. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
  385. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
  386. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
  387. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
  388. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
  389. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
  390. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
  391. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
  392. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
  393. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
  394. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
  395. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
  396. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
  397. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
  398. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
  399. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
  400. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
  401. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
  402. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
  403. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
  404. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
  405. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
  406. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
  407. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
  408. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/twelve_factor_app/coverage_matrix.md +0 -0
  409. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/twelve_factor_app/elicit_extend.md +0 -0
  410. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/twelve_factor_app/lexicon.yaml +0 -0
  411. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/twelve_factor_app/manifest.yaml +0 -0
  412. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/twelve_factor_app/recommended_kinds.yaml +0 -0
  413. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/twelve_factor_app/severity_rules.yaml +0 -0
  414. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
  415. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
  416. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
  417. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
  418. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
  419. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
  420. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
  421. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
  422. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
  423. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
  424. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
  425. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
  426. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
  427. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
  428. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
  429. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
  430. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
  431. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
  432. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
  433. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
  434. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
  435. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
  436. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
  437. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
  438. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
  439. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
  440. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
  441. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
  442. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
  443. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
  444. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
  445. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
  446. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
  447. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
  448. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
  449. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
  450. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
  451. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
  452. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
  453. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
  454. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
  455. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
  456. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
  457. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
  458. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
  459. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
  460. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
  461. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
  462. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
  463. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
  464. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
  465. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
  466. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
  467. {codd_dev-2.10.0 → codd_dev-2.12.0}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
  468. {codd_dev-2.10.0 → codd_dev-2.12.0}/docs/cookbook/cdp_browser/README.md +0 -0
  469. {codd_dev-2.10.0 → codd_dev-2.12.0}/docs/requirements/README.md +0 -0
  470. {codd_dev-2.10.0 → codd_dev-2.12.0}/tests/integration/standalone_repair_skeleton/README.md +0 -0
@@ -0,0 +1,207 @@
1
+ Metadata-Version: 2.4
2
+ Name: codd-dev
3
+ Version: 2.12.0
4
+ Summary: CoDD: Coherence-Driven Development — cross-artifact change impact analysis
5
+ Project-URL: Homepage, https://github.com/yohey-w/codd-dev
6
+ Project-URL: Repository, https://github.com/yohey-w/codd-dev
7
+ Project-URL: Issues, https://github.com/yohey-w/codd-dev/issues
8
+ Author-email: Yohei Watanabe <yohey-w@users.noreply.github.com>
9
+ License-Expression: MIT
10
+ License-File: LICENSE
11
+ Keywords: change-impact,claude-code,dependency-graph,plugin,software-engineering
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Topic :: Software Development :: Quality Assurance
17
+ Requires-Python: >=3.10
18
+ Requires-Dist: click>=8.0
19
+ Requires-Dist: jinja2>=3.1.0
20
+ Requires-Dist: pyyaml>=6.0
21
+ Requires-Dist: tomli>=2.0.1; python_version < '3.11'
22
+ Requires-Dist: watchdog>=4.0.0
23
+ Requires-Dist: websocket-client>=1.8.0
24
+ Provides-Extra: ai
25
+ Provides-Extra: api-parsers
26
+ Requires-Dist: graphql-core>=3.2.0; extra == 'api-parsers'
27
+ Provides-Extra: infra
28
+ Requires-Dist: python-hcl2>=7.0.0; extra == 'infra'
29
+ Provides-Extra: mcp
30
+ Provides-Extra: scan
31
+ Requires-Dist: tree-sitter-java>=0.22; extra == 'scan'
32
+ Requires-Dist: tree-sitter-python>=0.22; extra == 'scan'
33
+ Requires-Dist: tree-sitter-typescript>=0.22; extra == 'scan'
34
+ Requires-Dist: tree-sitter>=0.22; extra == 'scan'
35
+ Provides-Extra: tree-sitter
36
+ Requires-Dist: tree-sitter-python<0.26.0,>=0.25.0; extra == 'tree-sitter'
37
+ Requires-Dist: tree-sitter-typescript<0.24.0,>=0.23.0; extra == 'tree-sitter'
38
+ Requires-Dist: tree-sitter<0.26.0,>=0.25.0; extra == 'tree-sitter'
39
+ Description-Content-Type: text/markdown
40
+
41
+ <p align="center">
42
+ <strong>CoDD — Coherence-Driven Development</strong>
43
+ </p>
44
+
45
+ <p align="center">
46
+ <a href="https://pypi.org/project/codd-dev/"><img src="https://img.shields.io/pypi/v/codd-dev?style=flat-square&color=blue" alt="PyPI"></a>
47
+ <a href="https://pypi.org/project/codd-dev/"><img src="https://img.shields.io/pypi/pyversions/codd-dev?style=flat-square" alt="Python"></a>
48
+ <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green?style=flat-square" alt="License"></a>
49
+ <a href="https://github.com/yohey-w/codd-dev/stargazers"><img src="https://img.shields.io/github/stars/yohey-w/codd-dev?style=flat-square" alt="Stars"></a>
50
+ </p>
51
+
52
+ <p align="center">
53
+ <a href="README_ja.md">日本語</a> | English | <a href="README_zh.md">中文</a>
54
+ </p>
55
+
56
+ ---
57
+
58
+ ## 🚀 Get started in 60 seconds
59
+
60
+ ```bash
61
+ pip install codd-dev
62
+
63
+ # Inside your project root
64
+ codd init --suggest-lexicons --llm-enhanced # AI picks the lexicons that fit
65
+ codd elicit # AI finds gaps in your requirements
66
+ codd dag verify --auto-repair --max-attempts 10 # AI fixes coherence violations
67
+ ```
68
+
69
+ That's it. Three commands, three feedback loops, one coherent project.
70
+
71
+ > Real-world: dogfooded against a Next.js + Prisma + PostgreSQL LMS. See [Case study](#-case-study-real-world-lms).
72
+
73
+ ---
74
+
75
+ ## ✨ What it does
76
+
77
+ | Command | One-line summary |
78
+ | --- | --- |
79
+ | 🔍 **`codd elicit`** | LLM finds **specification holes** in your requirements, scoped against industry-standard lexicons (BABOK, OWASP, WCAG, PCI DSS, ISO 25010, …). |
80
+ | 🔄 **`codd diff`** | Detects **drift** between requirements and the actual implementation (brownfield-friendly). |
81
+ | 🛠️ **`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. |
82
+ | 📦 **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
+ | 🌐 **`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
+ | 🎯 **`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). |
85
+ | 📊 **`codd lexicon list/install/diff` + `codd coverage report`** | Manage plug-ins and produce JSON / Markdown / self-contained HTML coverage matrices. |
86
+ | 🛡️ CI gate | `.github/workflows/codd_coverage.yml` template + `codd coverage check` exit code make coverage regressions block merges. |
87
+
88
+ ---
89
+
90
+ ## 🎨 Visual flow
91
+
92
+ ```mermaid
93
+ flowchart LR
94
+ R["Requirements (.md)"] --> E["codd elicit"]
95
+ E -->|gap findings| H{HITL: approve / reject}
96
+ H -->|[x]| L["project_lexicon.yaml + requirements TODOs"]
97
+ H -->|[r]| I["ignored_findings.yaml"]
98
+ L --> V["codd dag verify --auto-repair"]
99
+ V -->|violation| AR["LLM patch propose → apply"]
100
+ AR --> V
101
+ V -->|SUCCESS| D["✅ deploy gate passes"]
102
+ AR -->|max attempts| P["PARTIAL_SUCCESS: unrepairable surfaced honestly"]
103
+ ```
104
+
105
+ Brownfield path:
106
+
107
+ ```mermaid
108
+ flowchart LR
109
+ Code["Existing codebase"] --> X["codd extract"]
110
+ X --> DIFF["codd diff (drift)"]
111
+ DIFF --> EL["codd elicit (coverage gaps)"]
112
+ EL --> H{HITL gate}
113
+ H --> Apply["codd elicit apply"]
114
+ Apply --> V["codd dag verify"]
115
+ ```
116
+
117
+ ---
118
+
119
+ ## 📊 Case study: real-world LMS
120
+
121
+ A Next.js + Prisma + PostgreSQL multi-tenant LMS (≈30 design docs, 12 DB tables, RLS-enforced isolation):
122
+
123
+ | Stage | Result |
124
+ | --- | --- |
125
+ | `codd init --suggest-lexicons --llm-enhanced` | LLM detected **data types** (PII / payment / video) and **function traits** (auth / payment / public REST), recommended 15 lexicons, 9 of which the human had already chosen — confirming the heuristic. |
126
+ | `codd elicit` (10 lexicons loaded, scope=`system_implementation`, phase=`mvp`) | **70 findings** across web a11y / data governance / SQL / security / Web Vitals / WebAuthn / API / process. Business-tier dimensions (KPI, UAT detail, risk register) auto-filtered out. |
127
+ | `codd dag verify --auto-repair` | Started with 16 unrepairable violations; through targeted core fixes (deployment chain auto-discovery, runtime-state auto-binding, mock harness no-op, scope/phase filter) the same project now reaches **PASS or amber-WARN** with deploy allowed. |
128
+ | VPS smoke (`/`, `/login`, `/api/health`) | All 3 endpoints **200 OK**. |
129
+
130
+ The full pipeline change is **zero lines of CoDD core changes per project** — every project-specific concern lives in `project_lexicon.yaml` or in `codd_plugins/` (Generality Gate, Layer A / B / C).
131
+
132
+ ---
133
+
134
+ ## 🌟 Why CoDD exists
135
+
136
+ > **"Write only functional requirements and constraints. Code is generated, repaired, and verified automatically."**
137
+
138
+ Most "AI-assisted dev" tools focus on the **generation** side. CoDD focuses on the **constraint** side: the LLM is most useful when it has a precise picture of what *must* be true. CoDD provides that picture as a DAG that links every artifact, plus a plug-in surface that lets industry standards (BABOK / WCAG / OWASP / PCI / ISO …) supply the constraints mechanically.
139
+
140
+ When something breaks the DAG, an LLM proposes a patch, the loop re-verifies, and either reaches SUCCESS or surfaces what is structurally unrepairable — honestly.
141
+
142
+ ### Generality Gate (three-layer architecture)
143
+
144
+ | Layer | Where stack-specific names live | Examples |
145
+ | --- | --- | --- |
146
+ | **A — Core** | **Nowhere.** Zero `react`, `django`, `Stripe`, `LMS` literals. | `codd/elicit/`, `codd/dag/`, `codd/lexicon_cli/` |
147
+ | **B — Templates** | Generic placeholders only. | `codd/templates/*.j2`, `codd/templates/lexicon_schema.yaml` |
148
+ | **C — Plug-ins** | Free to name anything. | `codd_plugins/lexicons/*/`, `codd_plugins/stack_map.yaml` |
149
+
150
+ This is what lets CoDD ship one core that works for Next.js, Django, FastAPI, Rails, Go services, mobile apps, ML model cards — and that lets contributors add a lexicon without touching the core.
151
+
152
+ ---
153
+
154
+ ## 🧭 Roadmap
155
+
156
+ - **v2.12.0 (current)** — Test-completeness gates: C7 `actors_without_journeys` amber promotion + new C8 `ci_health` static check (workflow presence, trigger coverage, verification-in-workflow). Defaults to opt-in for legacy projects; new `codd init` projects get `ci:` defaults from the template. See [post-mortem](docs/post-mortems/test_completeness_gap.md).
157
+ - **v2.11.0** — Sprint-less `codd implement` (`--design <path> --output <dir>` directly; `implementation_plan.md` parser removed). See [migration guide](docs/migrations/v2.11.0-sprintless.md).
158
+ - **v2.10.0** — Lexicon-driven completeness, 38 plug-ins, LLM-enhanced init, scope/phase filter, auto-repair across the full DAG.
159
+ - **v2.13.0 (next)** — C8 `ci_health` runtime mode (opt-in `ci.runtime_check: true`) polling the CI provider for latest-run-on-default-branch success.
160
+
161
+ ---
162
+
163
+ ## 🤝 Contributing
164
+
165
+ CoDD is shaped by the following people:
166
+
167
+ - **[@yohey-w](https://github.com/yohey-w)** — Maintainer / Architect
168
+ - **[@Seika86](https://github.com/Seika86)** — Sprint regex insight (PR #11)
169
+ - **[@v-kato](https://github.com/v-kato)** — Brownfield reproduction reports (Issues #17 / #18 / #19)
170
+ - **[@dev-komenzar](https://github.com/dev-komenzar)** — `source_dirs` bug reproduction (Issue #13)
171
+
172
+ External issues, PRs, and lexicon proposals are welcome — see [Issues](https://github.com/yohey-w/codd-dev/issues).
173
+
174
+ ---
175
+
176
+ ## 📚 Documentation
177
+
178
+ - [CHANGELOG.md](CHANGELOG.md) — every release with quality metrics
179
+ - [docs/](docs/) — architecture notes
180
+ - `codd --help` — full CLI reference
181
+
182
+ ---
183
+
184
+ ## 📦 Hook Integration
185
+
186
+ CoDD ships hook recipes for editor and Git workflows:
187
+
188
+ - Claude Code `PostToolUse` hook recipe for running CoDD checks after file edits
189
+ - Git `pre-commit` hook recipe for blocking commits when coherence checks fail
190
+
191
+ Recipes live under `codd/hooks/recipes/`.
192
+
193
+ ---
194
+
195
+ ## License
196
+
197
+ MIT — see [LICENSE](LICENSE).
198
+
199
+ ## Links
200
+
201
+ - [PyPI](https://pypi.org/project/codd-dev/)
202
+ - [GitHub Sponsors](https://github.com/sponsors/yohey-w) — support development
203
+ - [Issues](https://github.com/yohey-w/codd-dev/issues)
204
+
205
+ ---
206
+
207
+ > When code changes, CoDD traces the impact, detects violations, and produces evidence for merge decisions.
@@ -0,0 +1,167 @@
1
+ <p align="center">
2
+ <strong>CoDD — Coherence-Driven Development</strong>
3
+ </p>
4
+
5
+ <p align="center">
6
+ <a href="https://pypi.org/project/codd-dev/"><img src="https://img.shields.io/pypi/v/codd-dev?style=flat-square&color=blue" alt="PyPI"></a>
7
+ <a href="https://pypi.org/project/codd-dev/"><img src="https://img.shields.io/pypi/pyversions/codd-dev?style=flat-square" alt="Python"></a>
8
+ <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green?style=flat-square" alt="License"></a>
9
+ <a href="https://github.com/yohey-w/codd-dev/stargazers"><img src="https://img.shields.io/github/stars/yohey-w/codd-dev?style=flat-square" alt="Stars"></a>
10
+ </p>
11
+
12
+ <p align="center">
13
+ <a href="README_ja.md">日本語</a> | English | <a href="README_zh.md">中文</a>
14
+ </p>
15
+
16
+ ---
17
+
18
+ ## 🚀 Get started in 60 seconds
19
+
20
+ ```bash
21
+ pip install codd-dev
22
+
23
+ # Inside your project root
24
+ codd init --suggest-lexicons --llm-enhanced # AI picks the lexicons that fit
25
+ codd elicit # AI finds gaps in your requirements
26
+ codd dag verify --auto-repair --max-attempts 10 # AI fixes coherence violations
27
+ ```
28
+
29
+ That's it. Three commands, three feedback loops, one coherent project.
30
+
31
+ > Real-world: dogfooded against a Next.js + Prisma + PostgreSQL LMS. See [Case study](#-case-study-real-world-lms).
32
+
33
+ ---
34
+
35
+ ## ✨ What it does
36
+
37
+ | Command | One-line summary |
38
+ | --- | --- |
39
+ | 🔍 **`codd elicit`** | LLM finds **specification holes** in your requirements, scoped against industry-standard lexicons (BABOK, OWASP, WCAG, PCI DSS, ISO 25010, …). |
40
+ | 🔄 **`codd diff`** | Detects **drift** between requirements and the actual implementation (brownfield-friendly). |
41
+ | 🛠️ **`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. |
42
+ | 📦 **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
+ | 🌐 **`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
+ | 🎯 **`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). |
45
+ | 📊 **`codd lexicon list/install/diff` + `codd coverage report`** | Manage plug-ins and produce JSON / Markdown / self-contained HTML coverage matrices. |
46
+ | 🛡️ CI gate | `.github/workflows/codd_coverage.yml` template + `codd coverage check` exit code make coverage regressions block merges. |
47
+
48
+ ---
49
+
50
+ ## 🎨 Visual flow
51
+
52
+ ```mermaid
53
+ flowchart LR
54
+ R["Requirements (.md)"] --> E["codd elicit"]
55
+ E -->|gap findings| H{HITL: approve / reject}
56
+ H -->|[x]| L["project_lexicon.yaml + requirements TODOs"]
57
+ H -->|[r]| I["ignored_findings.yaml"]
58
+ L --> V["codd dag verify --auto-repair"]
59
+ V -->|violation| AR["LLM patch propose → apply"]
60
+ AR --> V
61
+ V -->|SUCCESS| D["✅ deploy gate passes"]
62
+ AR -->|max attempts| P["PARTIAL_SUCCESS: unrepairable surfaced honestly"]
63
+ ```
64
+
65
+ Brownfield path:
66
+
67
+ ```mermaid
68
+ flowchart LR
69
+ Code["Existing codebase"] --> X["codd extract"]
70
+ X --> DIFF["codd diff (drift)"]
71
+ DIFF --> EL["codd elicit (coverage gaps)"]
72
+ EL --> H{HITL gate}
73
+ H --> Apply["codd elicit apply"]
74
+ Apply --> V["codd dag verify"]
75
+ ```
76
+
77
+ ---
78
+
79
+ ## 📊 Case study: real-world LMS
80
+
81
+ A Next.js + Prisma + PostgreSQL multi-tenant LMS (≈30 design docs, 12 DB tables, RLS-enforced isolation):
82
+
83
+ | Stage | Result |
84
+ | --- | --- |
85
+ | `codd init --suggest-lexicons --llm-enhanced` | LLM detected **data types** (PII / payment / video) and **function traits** (auth / payment / public REST), recommended 15 lexicons, 9 of which the human had already chosen — confirming the heuristic. |
86
+ | `codd elicit` (10 lexicons loaded, scope=`system_implementation`, phase=`mvp`) | **70 findings** across web a11y / data governance / SQL / security / Web Vitals / WebAuthn / API / process. Business-tier dimensions (KPI, UAT detail, risk register) auto-filtered out. |
87
+ | `codd dag verify --auto-repair` | Started with 16 unrepairable violations; through targeted core fixes (deployment chain auto-discovery, runtime-state auto-binding, mock harness no-op, scope/phase filter) the same project now reaches **PASS or amber-WARN** with deploy allowed. |
88
+ | VPS smoke (`/`, `/login`, `/api/health`) | All 3 endpoints **200 OK**. |
89
+
90
+ The full pipeline change is **zero lines of CoDD core changes per project** — every project-specific concern lives in `project_lexicon.yaml` or in `codd_plugins/` (Generality Gate, Layer A / B / C).
91
+
92
+ ---
93
+
94
+ ## 🌟 Why CoDD exists
95
+
96
+ > **"Write only functional requirements and constraints. Code is generated, repaired, and verified automatically."**
97
+
98
+ Most "AI-assisted dev" tools focus on the **generation** side. CoDD focuses on the **constraint** side: the LLM is most useful when it has a precise picture of what *must* be true. CoDD provides that picture as a DAG that links every artifact, plus a plug-in surface that lets industry standards (BABOK / WCAG / OWASP / PCI / ISO …) supply the constraints mechanically.
99
+
100
+ When something breaks the DAG, an LLM proposes a patch, the loop re-verifies, and either reaches SUCCESS or surfaces what is structurally unrepairable — honestly.
101
+
102
+ ### Generality Gate (three-layer architecture)
103
+
104
+ | Layer | Where stack-specific names live | Examples |
105
+ | --- | --- | --- |
106
+ | **A — Core** | **Nowhere.** Zero `react`, `django`, `Stripe`, `LMS` literals. | `codd/elicit/`, `codd/dag/`, `codd/lexicon_cli/` |
107
+ | **B — Templates** | Generic placeholders only. | `codd/templates/*.j2`, `codd/templates/lexicon_schema.yaml` |
108
+ | **C — Plug-ins** | Free to name anything. | `codd_plugins/lexicons/*/`, `codd_plugins/stack_map.yaml` |
109
+
110
+ This is what lets CoDD ship one core that works for Next.js, Django, FastAPI, Rails, Go services, mobile apps, ML model cards — and that lets contributors add a lexicon without touching the core.
111
+
112
+ ---
113
+
114
+ ## 🧭 Roadmap
115
+
116
+ - **v2.12.0 (current)** — Test-completeness gates: C7 `actors_without_journeys` amber promotion + new C8 `ci_health` static check (workflow presence, trigger coverage, verification-in-workflow). Defaults to opt-in for legacy projects; new `codd init` projects get `ci:` defaults from the template. See [post-mortem](docs/post-mortems/test_completeness_gap.md).
117
+ - **v2.11.0** — Sprint-less `codd implement` (`--design <path> --output <dir>` directly; `implementation_plan.md` parser removed). See [migration guide](docs/migrations/v2.11.0-sprintless.md).
118
+ - **v2.10.0** — Lexicon-driven completeness, 38 plug-ins, LLM-enhanced init, scope/phase filter, auto-repair across the full DAG.
119
+ - **v2.13.0 (next)** — C8 `ci_health` runtime mode (opt-in `ci.runtime_check: true`) polling the CI provider for latest-run-on-default-branch success.
120
+
121
+ ---
122
+
123
+ ## 🤝 Contributing
124
+
125
+ CoDD is shaped by the following people:
126
+
127
+ - **[@yohey-w](https://github.com/yohey-w)** — Maintainer / Architect
128
+ - **[@Seika86](https://github.com/Seika86)** — Sprint regex insight (PR #11)
129
+ - **[@v-kato](https://github.com/v-kato)** — Brownfield reproduction reports (Issues #17 / #18 / #19)
130
+ - **[@dev-komenzar](https://github.com/dev-komenzar)** — `source_dirs` bug reproduction (Issue #13)
131
+
132
+ External issues, PRs, and lexicon proposals are welcome — see [Issues](https://github.com/yohey-w/codd-dev/issues).
133
+
134
+ ---
135
+
136
+ ## 📚 Documentation
137
+
138
+ - [CHANGELOG.md](CHANGELOG.md) — every release with quality metrics
139
+ - [docs/](docs/) — architecture notes
140
+ - `codd --help` — full CLI reference
141
+
142
+ ---
143
+
144
+ ## 📦 Hook Integration
145
+
146
+ CoDD ships hook recipes for editor and Git workflows:
147
+
148
+ - Claude Code `PostToolUse` hook recipe for running CoDD checks after file edits
149
+ - Git `pre-commit` hook recipe for blocking commits when coherence checks fail
150
+
151
+ Recipes live under `codd/hooks/recipes/`.
152
+
153
+ ---
154
+
155
+ ## License
156
+
157
+ MIT — see [LICENSE](LICENSE).
158
+
159
+ ## Links
160
+
161
+ - [PyPI](https://pypi.org/project/codd-dev/)
162
+ - [GitHub Sponsors](https://github.com/sponsors/yohey-w) — support development
163
+ - [Issues](https://github.com/yohey-w/codd-dev/issues)
164
+
165
+ ---
166
+
167
+ > When code changes, CoDD traces the impact, detects violations, and produces evidence for merge decisions.
@@ -85,8 +85,10 @@ def _collect_design_documents(project_root: Path, config: dict[str, Any]) -> lis
85
85
  def _collect_generated_fragments(project_root: Path, config: dict[str, Any]) -> list[dict[str, str]]:
86
86
  """Collect all generated code fragments from src/generated/.
87
87
 
88
- Supports both flat layout (src/generated/<task>/) and legacy sprint layout
89
- (src/generated/sprint_N/<task>/). Orphan directories are excluded with a warning.
88
+ Uses a flat layout (`src/generated/<task>/`). Orphan directories those
89
+ whose name does not match a known design-node slug — are excluded with a
90
+ warning. The legacy `sprint_N/` layout shipped before v2.11.0 is no
91
+ longer supported (cmd_444).
90
92
  """
91
93
  source_dirs = config.get("scan", {}).get("source_dirs", ["src/"])
92
94
  generated_base = None
@@ -110,11 +112,11 @@ def _collect_generated_fragments(project_root: Path, config: dict[str, Any]) ->
110
112
  orphan_dirs: set[str] = set()
111
113
  if valid_slugs:
112
114
  for child in generated_base.iterdir():
113
- if child.is_dir() and not child.name.startswith("sprint_") and child.name not in valid_slugs:
115
+ if child.is_dir() and child.name not in valid_slugs:
114
116
  orphan_dirs.add(child.name)
115
117
  warnings.warn(
116
118
  f"Orphan fragment directory 'generated/{child.name}' "
117
- f"does not match any task in the implementation plan. Skipping.",
119
+ f"does not match any known design node. Skipping.",
118
120
  stacklevel=2,
119
121
  )
120
122
 
@@ -1825,21 +1825,10 @@ def propagate_from(project_path: str, files: tuple[str, ...], source: str, edito
1825
1825
 
1826
1826
  @main.group(invoke_without_command=True)
1827
1827
  @click.option("--path", default=".", help="Project root directory")
1828
- @click.option("--task", default=None, help="Generate only one task by task ID or title match")
1828
+ @click.option("--design", default=None, help="Design document path or design node id to implement")
1829
+ @click.option("--output", "outputs", multiple=True, help="Output path. May be repeated.")
1830
+ @click.option("--depends-on", "depends_on", multiple=True, help="Dependency design document path or node id. May be repeated.")
1829
1831
  @click.option("--clean", is_flag=True, default=False, help="Remove existing generated output before re-generating")
1830
- @click.option(
1831
- "--max-tasks",
1832
- default=30,
1833
- type=click.IntRange(min=1),
1834
- show_default=True,
1835
- help="Maximum number of tasks to process per session. Abort if plan exceeds this limit.",
1836
- )
1837
- @click.option(
1838
- "--wave",
1839
- default=None,
1840
- type=click.IntRange(min=1),
1841
- help="Execute only tasks belonging to this wave number.",
1842
- )
1843
1832
  @click.option(
1844
1833
  "--ai-cmd",
1845
1834
  default=None,
@@ -1850,32 +1839,32 @@ def propagate_from(project_path: str, files: tuple[str, ...], source: str, edito
1850
1839
  def implement(
1851
1840
  ctx,
1852
1841
  path: str,
1853
- task: str | None,
1842
+ design: str | None,
1843
+ outputs: tuple[str, ...],
1844
+ depends_on: tuple[str, ...],
1854
1845
  clean: bool,
1855
- max_tasks: int,
1856
- wave: int | None,
1857
1846
  ai_cmd: str | None,
1858
1847
  use_derived_steps: str | None,
1859
1848
  ):
1860
- """Generate implementation code from the implementation plan."""
1849
+ """Generate implementation code from one design document."""
1861
1850
  if ctx.invoked_subcommand is not None:
1862
1851
  return
1863
1852
 
1864
1853
  from codd.implementer import implement_tasks
1865
1854
 
1866
1855
  project_root = Path(path).resolve()
1867
- codd_dir = _require_codd_dir(project_root)
1856
+ _require_codd_dir(project_root)
1868
1857
 
1869
1858
  if clean:
1870
- click.echo("Cleaning src/generated/ ...")
1859
+ click.echo("Cleaning requested output paths ...")
1871
1860
 
1872
1861
  try:
1873
1862
  implement_kwargs = {
1874
- "task": task,
1863
+ "design": design,
1864
+ "output_paths": list(outputs),
1865
+ "dependency_design_nodes": list(depends_on),
1875
1866
  "ai_command": ai_cmd,
1876
1867
  "clean": clean,
1877
- "max_tasks": max_tasks,
1878
- "wave": wave,
1879
1868
  }
1880
1869
  parsed_use_derived_steps = _optional_bool(use_derived_steps)
1881
1870
  if parsed_use_derived_steps is not None:
@@ -4023,13 +4012,27 @@ def _optional_bool(value: str | bool | None) -> bool | None:
4023
4012
 
4024
4013
 
4025
4014
  def _implement_task_for_cli(project_root: Path, config: dict[str, Any], task_id: str):
4026
- from codd.implementer import _extract_all_tasks, _filter_tasks, _load_implementation_plan
4015
+ from codd.implementer import ImplementSpec
4016
+
4017
+ output_paths = _implement_output_paths_for_cli(config, task_id)
4018
+ return ImplementSpec(design_node=task_id, output_paths=output_paths)
4027
4019
 
4028
- plan = _load_implementation_plan(project_root, config)
4029
- matches = _filter_tasks(_extract_all_tasks(plan), task_id)
4030
- if not matches:
4031
- raise ValueError(f"no implementation task matched {task_id!r}")
4032
- return matches[0]
4020
+
4021
+ def _implement_output_paths_for_cli(config: dict[str, Any], design_node: str) -> list[str]:
4022
+ implement = config.get("implement") if isinstance(config.get("implement"), dict) else {}
4023
+ for key in ("default_output_paths", "implement_targets"):
4024
+ mapping = implement.get(key) if isinstance(implement, dict) else None
4025
+ if not isinstance(mapping, dict) or design_node not in mapping:
4026
+ continue
4027
+ value = mapping[design_node]
4028
+ if isinstance(value, str):
4029
+ return [value]
4030
+ if isinstance(value, list):
4031
+ paths = [str(item) for item in value if str(item).strip()]
4032
+ if paths:
4033
+ return paths
4034
+ slug = re.sub(r"[^a-zA-Z0-9]+", "_", design_node).strip("_").lower() or "implement"
4035
+ return [f"src/{slug}"]
4033
4036
 
4034
4037
 
4035
4038
  def _nested_config_value(config: dict[str, Any], path: tuple[str, ...]) -> Any:
@@ -130,7 +130,9 @@ def load_dag_settings(project_root: Path, settings: dict[str, Any] | None = None
130
130
  merged.setdefault("design_doc_patterns", [])
131
131
  merged.setdefault("impl_file_patterns", [])
132
132
  merged.setdefault("test_file_patterns", [])
133
- merged.setdefault("plan_task_file", "docs/design/implementation_plan.md")
133
+ # cmd_444 v2.11.0: implementation_plan.md is no longer the entry point.
134
+ # `codd implement` now takes design_node + output_paths directly. Any
135
+ # `plan_task_file` value present in legacy codd.yaml is silently ignored.
134
136
  merged.setdefault("lexicon_file", "project_lexicon.yaml")
135
137
  return merged
136
138