codd-dev 1.41.0__tar.gz → 2.0.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 (420) hide show
  1. {codd_dev-1.41.0 → codd_dev-2.0.0}/PKG-INFO +73 -28
  2. {codd_dev-1.41.0 → codd_dev-2.0.0}/README.md +72 -27
  3. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/__init__.py +1 -1
  4. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/cli.py +174 -1
  5. codd_dev-2.0.0/codd/lexicon_cli/__init__.py +17 -0
  6. codd_dev-2.0.0/codd/lexicon_cli/formatters/__init__.py +12 -0
  7. codd_dev-2.0.0/codd/lexicon_cli/formatters/html.py +51 -0
  8. codd_dev-2.0.0/codd/lexicon_cli/formatters/json_fmt.py +24 -0
  9. codd_dev-2.0.0/codd/lexicon_cli/formatters/md.py +64 -0
  10. codd_dev-2.0.0/codd/lexicon_cli/inspector.py +266 -0
  11. codd_dev-2.0.0/codd/lexicon_cli/manager.py +207 -0
  12. codd_dev-2.0.0/codd/lexicon_cli/reporter.py +88 -0
  13. {codd_dev-1.41.0 → codd_dev-2.0.0}/pyproject.toml +5 -5
  14. {codd_dev-1.41.0 → codd_dev-2.0.0}/.gitignore +0 -0
  15. {codd_dev-1.41.0 → codd_dev-2.0.0}/LICENSE +0 -0
  16. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/__main__.py +0 -0
  17. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/_git_helper.py +0 -0
  18. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/ask_user_question_adapter.py +0 -0
  19. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/assembler.py +0 -0
  20. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/bridge.py +0 -0
  21. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/brownfield/__init__.py +0 -0
  22. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/brownfield/pipeline.py +0 -0
  23. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/clustering.py +0 -0
  24. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/coherence_adapters.py +0 -0
  25. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/coherence_engine.py +0 -0
  26. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/config.py +0 -0
  27. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/contracts.py +0 -0
  28. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/coverage_auditor.py +0 -0
  29. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/coverage_metrics.py +0 -0
  30. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/dag/__init__.py +0 -0
  31. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/dag/builder.py +0 -0
  32. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/dag/checks/__init__.py +0 -0
  33. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/dag/checks/depends_on_consistency.py +0 -0
  34. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/dag/checks/deployment_completeness.py +0 -0
  35. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/dag/checks/edge_validity.py +0 -0
  36. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/dag/checks/environment_coverage.py +0 -0
  37. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/dag/checks/implementation_coverage.py +0 -0
  38. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/dag/checks/node_completeness.py +0 -0
  39. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/dag/checks/task_completion.py +0 -0
  40. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/dag/checks/transitive_closure.py +0 -0
  41. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/dag/checks/user_journey_coherence.py +0 -0
  42. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/dag/coverage_axes.py +0 -0
  43. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/dag/defaults/cli.yaml +0 -0
  44. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/dag/defaults/cpp_embedded.yaml +0 -0
  45. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/dag/defaults/csharp.yaml +0 -0
  46. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/dag/defaults/elixir.yaml +0 -0
  47. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/dag/defaults/generic.yaml +0 -0
  48. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/dag/defaults/iot.yaml +0 -0
  49. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/dag/defaults/java.yaml +0 -0
  50. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/dag/defaults/kotlin.yaml +0 -0
  51. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/dag/defaults/mobile.yaml +0 -0
  52. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/dag/defaults/ruby.yaml +0 -0
  53. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/dag/defaults/rust.yaml +0 -0
  54. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/dag/defaults/scala.yaml +0 -0
  55. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/dag/defaults/swift.yaml +0 -0
  56. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/dag/defaults/test_frameworks.yaml +0 -0
  57. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/dag/defaults/web.yaml +0 -0
  58. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/dag/extractor.py +0 -0
  59. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/dag/runner.py +0 -0
  60. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/defaults.yaml +0 -0
  61. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/deploy_targets/__init__.py +0 -0
  62. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/deploy_targets/app_service.py +0 -0
  63. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/deploy_targets/base.py +0 -0
  64. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/deploy_targets/docker_compose.py +0 -0
  65. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/deployer.py +0 -0
  66. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/deployment/__init__.py +0 -0
  67. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/deployment/checks/__init__.py +0 -0
  68. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/deployment/defaults/deploy_targets.yaml +0 -0
  69. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
  70. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/deployment/defaults/schema_providers.yaml +0 -0
  71. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/deployment/defaults/verification_templates.yaml +0 -0
  72. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/deployment/extractor.py +0 -0
  73. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/deployment/providers/__init__.py +0 -0
  74. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/deployment/providers/ai_command.py +0 -0
  75. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/deployment/providers/llm_consideration.py +0 -0
  76. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/deployment/providers/schema/__init__.py +0 -0
  77. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/deployment/providers/schema/prisma.py +0 -0
  78. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/deployment/providers/target/__init__.py +0 -0
  79. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/deployment/providers/target/docker_compose.py +0 -0
  80. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/deployment/providers/verification/__init__.py +0 -0
  81. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
  82. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/deployment/providers/verification/cdp_browser.py +0 -0
  83. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/deployment/providers/verification/cdp_engines.py +0 -0
  84. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
  85. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/deployment/providers/verification/cdp_wire.py +0 -0
  86. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/deployment/providers/verification/curl.py +0 -0
  87. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/deployment/providers/verification/form_strategies.py +0 -0
  88. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/deployment/providers/verification/means_catalog.py +0 -0
  89. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/deployment/providers/verification/playwright.py +0 -0
  90. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/design_md.py +0 -0
  91. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/diff/__init__.py +0 -0
  92. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/diff/apply.py +0 -0
  93. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/diff/engine.py +0 -0
  94. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/diff/persistence.py +0 -0
  95. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/diff/templates/diff_prompt.md +0 -0
  96. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/drift.py +0 -0
  97. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/e2e_extractor.py +0 -0
  98. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/e2e_generator.py +0 -0
  99. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/e2e_runner.py +0 -0
  100. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/elicit/__init__.py +0 -0
  101. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/elicit/apply.py +0 -0
  102. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/elicit/engine.py +0 -0
  103. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/elicit/finding.py +0 -0
  104. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/elicit/formatters/__init__.py +0 -0
  105. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/elicit/formatters/base.py +0 -0
  106. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/elicit/formatters/interactive.py +0 -0
  107. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/elicit/formatters/json_fmt.py +0 -0
  108. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/elicit/formatters/md.py +0 -0
  109. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/elicit/lexicon_loader.py +0 -0
  110. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/elicit/persistence.py +0 -0
  111. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
  112. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/env_refs.py +0 -0
  113. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/extract_ai.py +0 -0
  114. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/extractor.py +0 -0
  115. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/fixer.py +0 -0
  116. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/fixup_drift.py +0 -0
  117. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/fixup_drift_strategies/__init__.py +0 -0
  118. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
  119. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
  120. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/fixup_drift_strategies/url_drift.py +0 -0
  121. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/generator.py +0 -0
  122. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/graph.py +0 -0
  123. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/hitl_session.py +0 -0
  124. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/hooks/__init__.py +0 -0
  125. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/hooks/pre-commit +0 -0
  126. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/hooks/recipes/claude_settings_example.json +0 -0
  127. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/hooks/recipes/codex_hook.sh +0 -0
  128. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/hooks/recipes/git_post_commit.sh +0 -0
  129. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/hooks/recipes/git_pre_commit.sh +0 -0
  130. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/implementer/__init__.py +0 -0
  131. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/implementer/chunked_runner.py +0 -0
  132. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/implementer/typecheck_loop.py +0 -0
  133. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/implementer.py +0 -0
  134. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/inheritance.py +0 -0
  135. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/init/__init__.py +0 -0
  136. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/init/lexicon_suggest.py +0 -0
  137. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/init/stack_detector.py +0 -0
  138. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/knowledge_fetcher.py +0 -0
  139. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/lexicon.py +0 -0
  140. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/llm/__init__.py +0 -0
  141. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/llm/approval.py +0 -0
  142. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/llm/best_practice_augmenter.py +0 -0
  143. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/llm/criteria_expander.py +0 -0
  144. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/llm/design_doc_extractor.py +0 -0
  145. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/llm/impl_step_deriver.py +0 -0
  146. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/llm/means_catalog_loader.py +0 -0
  147. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/llm/parser.py +0 -0
  148. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/llm/plan_deriver.py +0 -0
  149. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/llm/prompt_builder.py +0 -0
  150. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/llm/strategy_validator.py +0 -0
  151. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/llm/templates/best_practice_augment_meta.md +0 -0
  152. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/llm/templates/criteria_expand_meta.md +0 -0
  153. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/llm/templates/design_doc_extract_meta.md +0 -0
  154. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/llm/templates/impl_step_derive_meta.md +0 -0
  155. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
  156. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/llm/templates/meta_instruction.md +0 -0
  157. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/llm/templates/plan_derive_meta.md +0 -0
  158. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/llm/templates/verification_means_catalog.yaml +0 -0
  159. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/mcp_server.py +0 -0
  160. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/measure.py +0 -0
  161. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/parsing.py +0 -0
  162. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/planner.py +0 -0
  163. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/policy.py +0 -0
  164. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/preflight/__init__.py +0 -0
  165. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/preflight/defaults/cli.yaml +0 -0
  166. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/preflight/defaults/iot.yaml +0 -0
  167. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/preflight/defaults/mobile.yaml +0 -0
  168. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/preflight/defaults/web.yaml +0 -0
  169. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/propagate.py +0 -0
  170. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/propagator.py +0 -0
  171. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/registry.py +0 -0
  172. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/repair/__init__.py +0 -0
  173. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/repair/approval_repair.py +0 -0
  174. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/repair/engine.py +0 -0
  175. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/repair/git_patcher.py +0 -0
  176. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/repair/history.py +0 -0
  177. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/repair/llm_repair_engine.py +0 -0
  178. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/repair/loop.py +0 -0
  179. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/repair/primary_picker.py +0 -0
  180. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/repair/proof_breaks.py +0 -0
  181. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/repair/repair_result.py +0 -0
  182. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/repair/repairability_classifier.py +0 -0
  183. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/repair/schema.py +0 -0
  184. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/repair/templates/analyze_meta.md +0 -0
  185. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/repair/templates/propose_meta.md +0 -0
  186. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/repair/templates/repair_strategy_meta.md +0 -0
  187. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/repair/templates/repairability_meta.md +0 -0
  188. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/repair/verify_runner.py +0 -0
  189. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/repair_slice.py +0 -0
  190. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/require.py +0 -0
  191. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/require_plugins.py +0 -0
  192. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/require_propagate.py +0 -0
  193. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/required_artifacts/defaults/cli.yaml +0 -0
  194. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/required_artifacts/defaults/iot.yaml +0 -0
  195. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/required_artifacts/defaults/mobile.yaml +0 -0
  196. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/required_artifacts/defaults/web.yaml +0 -0
  197. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/required_artifacts_deriver.py +0 -0
  198. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/requirement_completeness/defaults/cli.yaml +0 -0
  199. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/requirement_completeness/defaults/iot.yaml +0 -0
  200. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
  201. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/requirement_completeness/defaults/web.yaml +0 -0
  202. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/requirement_completeness_auditor.py +0 -0
  203. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/restore.py +0 -0
  204. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/routes_extractor.py +0 -0
  205. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/scanner.py +0 -0
  206. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/schema_refs.py +0 -0
  207. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/screen_flow_validator.py +0 -0
  208. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/screen_transition_extractor.py +0 -0
  209. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/screen_transitions/defaults.yaml +0 -0
  210. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/synth.py +0 -0
  211. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/templates/codd.yaml.tmpl +0 -0
  212. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/templates/conventions.yaml.tmpl +0 -0
  213. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/templates/data_dependencies.yaml.tmpl +0 -0
  214. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/templates/doc_links.yaml.tmpl +0 -0
  215. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/templates/extract_ai_prompt_baseline.md +0 -0
  216. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/templates/extracted/api-contract.md.j2 +0 -0
  217. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
  218. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/templates/extracted/module-detail.md.j2 +0 -0
  219. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/templates/extracted/schema-design.md.j2 +0 -0
  220. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/templates/extracted/system-context.md.j2 +0 -0
  221. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/templates/gitignore.tmpl +0 -0
  222. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/templates/lexicon_questions.md +0 -0
  223. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/templates/lexicon_schema.yaml +0 -0
  224. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/templates/overrides.yaml.tmpl +0 -0
  225. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/traceability.py +0 -0
  226. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/validator.py +0 -0
  227. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/watch/__init__.py +0 -0
  228. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/watch/events.py +0 -0
  229. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/watch/propagation_log.py +0 -0
  230. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/watch/propagation_pipeline.py +0 -0
  231. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/watch/test_runner.py +0 -0
  232. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/watch/watcher.py +0 -0
  233. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd/wiring.py +0 -0
  234. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +0 -0
  235. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +0 -0
  236. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +0 -0
  237. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +0 -0
  238. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +0 -0
  239. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +0 -0
  240. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +0 -0
  241. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +0 -0
  242. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +0 -0
  243. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +0 -0
  244. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +0 -0
  245. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +0 -0
  246. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/babok/elicit_extend.md +0 -0
  247. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/babok/manifest.yaml +0 -0
  248. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/babok/recommended_kinds.yaml +0 -0
  249. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +0 -0
  250. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +0 -0
  251. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +0 -0
  252. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +0 -0
  253. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +0 -0
  254. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +0 -0
  255. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +0 -0
  256. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/backend_graphql/elicit_extend.md +0 -0
  257. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/backend_graphql/lexicon.yaml +0 -0
  258. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/backend_graphql/manifest.yaml +0 -0
  259. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +0 -0
  260. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +0 -0
  261. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +0 -0
  262. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +0 -0
  263. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +0 -0
  264. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +0 -0
  265. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +0 -0
  266. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +0 -0
  267. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +0 -0
  268. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +0 -0
  269. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +0 -0
  270. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +0 -0
  271. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +0 -0
  272. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +0 -0
  273. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +0 -0
  274. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +0 -0
  275. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +0 -0
  276. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +0 -0
  277. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +0 -0
  278. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +0 -0
  279. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +0 -0
  280. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +0 -0
  281. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +0 -0
  282. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +0 -0
  283. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +0 -0
  284. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +0 -0
  285. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +0 -0
  286. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +0 -0
  287. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +0 -0
  288. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +0 -0
  289. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +0 -0
  290. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +0 -0
  291. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +0 -0
  292. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +0 -0
  293. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +0 -0
  294. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +0 -0
  295. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +0 -0
  296. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +0 -0
  297. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +0 -0
  298. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +0 -0
  299. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +0 -0
  300. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +0 -0
  301. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +0 -0
  302. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +0 -0
  303. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +0 -0
  304. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +0 -0
  305. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +0 -0
  306. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +0 -0
  307. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +0 -0
  308. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +0 -0
  309. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +0 -0
  310. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +0 -0
  311. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +0 -0
  312. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +0 -0
  313. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +0 -0
  314. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +0 -0
  315. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +0 -0
  316. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +0 -0
  317. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +0 -0
  318. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +0 -0
  319. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +0 -0
  320. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +0 -0
  321. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +0 -0
  322. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +0 -0
  323. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +0 -0
  324. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +0 -0
  325. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +0 -0
  326. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +0 -0
  327. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +0 -0
  328. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +0 -0
  329. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +0 -0
  330. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +0 -0
  331. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +0 -0
  332. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +0 -0
  333. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +0 -0
  334. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +0 -0
  335. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +0 -0
  336. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +0 -0
  337. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +0 -0
  338. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +0 -0
  339. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +0 -0
  340. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +0 -0
  341. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +0 -0
  342. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +0 -0
  343. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +0 -0
  344. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +0 -0
  345. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +0 -0
  346. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +0 -0
  347. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +0 -0
  348. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +0 -0
  349. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +0 -0
  350. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +0 -0
  351. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +0 -0
  352. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/process_iso25010/elicit_extend.md +0 -0
  353. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/process_iso25010/lexicon.yaml +0 -0
  354. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/process_iso25010/manifest.yaml +0 -0
  355. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +0 -0
  356. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +0 -0
  357. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +0 -0
  358. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +0 -0
  359. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +0 -0
  360. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +0 -0
  361. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +0 -0
  362. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +0 -0
  363. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +0 -0
  364. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +0 -0
  365. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +0 -0
  366. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +0 -0
  367. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +0 -0
  368. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +0 -0
  369. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +0 -0
  370. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +0 -0
  371. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +0 -0
  372. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +0 -0
  373. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +0 -0
  374. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +0 -0
  375. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +0 -0
  376. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +0 -0
  377. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +0 -0
  378. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_browser_compat/manifest.yaml +0 -0
  379. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +0 -0
  380. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +0 -0
  381. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +0 -0
  382. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +0 -0
  383. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +0 -0
  384. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_forms_html5/manifest.yaml +0 -0
  385. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +0 -0
  386. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +0 -0
  387. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +0 -0
  388. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +0 -0
  389. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +0 -0
  390. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +0 -0
  391. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +0 -0
  392. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +0 -0
  393. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +0 -0
  394. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +0 -0
  395. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +0 -0
  396. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +0 -0
  397. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +0 -0
  398. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +0 -0
  399. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_responsive/coverage_matrix.md +0 -0
  400. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_responsive/elicit_extend.md +0 -0
  401. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_responsive/lexicon.yaml +0 -0
  402. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_responsive/manifest.yaml +0 -0
  403. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +0 -0
  404. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_responsive/severity_rules.yaml +0 -0
  405. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +0 -0
  406. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +0 -0
  407. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +0 -0
  408. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_security_owasp/manifest.yaml +0 -0
  409. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +0 -0
  410. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +0 -0
  411. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +0 -0
  412. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +0 -0
  413. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +0 -0
  414. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +0 -0
  415. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +0 -0
  416. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +0 -0
  417. {codd_dev-1.41.0 → codd_dev-2.0.0}/codd_plugins/stack_map.yaml +0 -0
  418. {codd_dev-1.41.0 → codd_dev-2.0.0}/docs/cookbook/cdp_browser/README.md +0 -0
  419. {codd_dev-1.41.0 → codd_dev-2.0.0}/docs/requirements/README.md +0 -0
  420. {codd_dev-1.41.0 → codd_dev-2.0.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: 1.41.0
3
+ Version: 2.0.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
@@ -61,17 +61,18 @@ Description-Content-Type: text/markdown
61
61
 
62
62
  CoDD treats **requirements -> design -> implementation -> tests** as one DAG, mechanically verifies the coherence of every node, and lets an LLM repair inconsistencies automatically when they appear. Humans write only **what to build** and **where the boundaries are**.
63
63
 
64
- ## Where We Are (v1.34.0)
64
+ ## Where We Are (v2.0.0 — Lexicon-Driven Completeness)
65
65
 
66
- The North Star is far, but **within bounded conditions, CoDD has reached practical use**:
66
+ v2.0.0 is a **positioning shift, not just a version bump**. v1.x delivered the *extract → diagnose → repair* pipeline; v2.0 adds the **constraint side** as a first-class plug-in surface.
67
67
 
68
68
  - ✅ Dogfooded on a real project (Next.js + Prisma + TypeScript Web app)
69
- - ✅ `codd verify --auto-repair` completes with `PARTIAL_SUCCESS` on a real LMS project (attempts=4 / applied_patches=4 / unrepairable=2)
69
+ - ✅ `codd verify --auto-repair` reaches `PARTIAL_SUCCESS` on a real LMS project (attempts=4 / applied_patches=4)
70
70
  - ✅ DAG completeness with 9 coherence checks operational
71
- - ⚠️ Single viewport / single persona assumed (Coverage Axis Layer C9 introduced in v1.32.0; axis variety is continuing work)
72
- - ⚠️ Specification completeness Level 1 (finding holes in requirements) is planned for v1.35.0 `codd elicit`
73
- - ⚠️ Other domains (Mobile / Desktop / CLI / Embedded / ML) are not yet validated
74
- - ⚠️ Reducing unrepairable items is continuing improvement
71
+ - **31 lexicon plug-ins** across 7 domains (Methodology / Web / Mobile / Backend-API / Data / Ops / Compliance / Process)
72
+ - **`codd elicit` / `codd diff` / `codd brownfield`** coverage and drift discovery for greenfield + brownfield projects
73
+ - **`codd init --suggest-lexicons`** auto-detect stack from manifest files, suggest lexicons to install
74
+ - **`codd lexicon list/install/diff` + `codd coverage report`** — plug-in management CLI + matrix reports (JSON / Markdown / HTML)
75
+ - ✅ Generality Gate three-layer architecture (Layer A core / Layer B templates / Layer C plug-ins) — zero specific framework / domain literals in core code
75
76
 
76
77
  ```bash
77
78
  pip install codd-dev
@@ -85,14 +86,14 @@ pip install codd-dev
85
86
 
86
87
  ```bash
87
88
  pip install codd-dev
88
- codd --version # 1.34.0 or later
89
+ codd --version # 2.0.0 or later
89
90
  ```
90
91
 
91
92
  ### 2. Add codd.yaml to your project
92
93
 
93
94
  ```yaml
94
95
  # codd.yaml
95
- codd_required_version: ">=1.34.0"
96
+ codd_required_version: ">=2.0.0"
96
97
 
97
98
  dag:
98
99
  design_docs:
@@ -194,7 +195,36 @@ This structurally prevents incidents such as smartphone-only navigation disappea
194
195
 
195
196
  ---
196
197
 
197
- ## v1.34.0 Key Features
198
+ ## What's New in v2.0
199
+
200
+ ### Lexicon-driven completeness — the missing constraint side
201
+
202
+ The North Star says "write only requirements + constraints." v1.x mostly handled the requirements side. v2.0 makes the **constraint side** mechanical and reusable.
203
+
204
+ A *lexicon* is a plug-in describing the coverage axes of an industry standard:
205
+
206
+ ```
207
+ codd_plugins/lexicons/
208
+ ├── babok/ # BABOK v3 elicitation lexicon
209
+ ├── web_a11y_wcag22_aa/ # WCAG 2.2 A/AA
210
+ ├── api_rest_openapi/ # REST + OpenAPI 3.1
211
+ ├── web_security_owasp/ # OWASP Top 10 + ASVS
212
+ ├── compliance_iso27001/ # ISO/IEC 27001:2022
213
+ ├── data_governance_appi_gdpr/ # GDPR + APPI
214
+ ├── ops_kubernetes/ # Kubernetes contracts
215
+ └── ... 24 more
216
+ ```
217
+
218
+ Each lexicon ships a manifest, axes, severity rules, coverage matrix, and prompt extension — `codd elicit` and `codd coverage report` consume them dynamically.
219
+
220
+ ```bash
221
+ codd init --suggest-lexicons # detect stack → suggest lexicons
222
+ codd lexicon install web_responsive web_a11y_wcag22_aa
223
+ codd lexicon diff web_responsive # text-grep coverage hint
224
+ codd coverage report --format html # matrix across all installed lexicons
225
+ ```
226
+
227
+ ### v2.0.0 Key Features
198
228
 
199
229
  | Feature | Role |
200
230
  |---------|------|
@@ -252,26 +282,28 @@ C9 `environment_coverage` verified all axis x variant coverage for viewport (sma
252
282
 
253
283
  ## Architecture - 4-Release Evolution and Next Plans
254
284
 
255
- ### Achieved (v1.31.0 - v1.34.0)
285
+ ### Achieved (v1.31.0 - v2.0.0)
256
286
 
257
287
  | Release | Milestone |
258
288
  |---------|-----------|
259
- | v1.31.0 | Inner 100% (internal coherence) - eliminated manual type fixes with the typecheck repair loop |
260
- | v1.32.0 | Outer 100% (target environment coverage Layer C9) - absorbed viewport/RBAC/locale and related axes through a unified abstraction |
261
- | v1.33.0 | Caveat-resolution path proven - real CDP run-journey + LLM auto-repair attempt passed |
262
- | **v1.34.0** | **Full pipeline proven** - auto-repair reached PARTIAL_SUCCESS through dogfooding on a single Next.js Web project |
263
-
264
- ### Next (v1.35.0 - v2.0.0, Roadmap)
265
-
266
- | Release | Plan |
267
- |---------|------|
268
- | **v1.35.0** | **`codd elicit`** - Discovery Engine that lets an LLM extract axis candidates and spec holes from requirements |
269
- | v1.36.0 | BABOK lexicon (`@codd/lexicon/babok`) bundle + multi-formatter (md / json / PR comment) |
270
- | v1.37.0 | **`codd diff`** - brownfield drift detection between requirements and implementation |
271
- | v1.38.0 | extract -> diff -> elicit pipeline, complete brownfield flow |
272
- | v1.39.0 | Reduce unrepairable items (RepairLoop strategy generalization) |
273
- | v1.40.0 | Multi-domain dogfooding (Mobile / CLI / embedded, etc.) |
274
- | (v2.0.0) | elicit + verify bidirectional loop, closest approach to the "fully automated" North Star |
289
+ | v1.31.0 | Inner 100% (internal coherence) eliminated manual type fixes with the typecheck repair loop |
290
+ | v1.32.0 | Outer 100% (target environment coverage Layer C9) absorbed viewport / RBAC / locale axes through a unified abstraction |
291
+ | v1.33.0 | Caveat-resolution path proven real CDP run-journey + LLM auto-repair attempt passed |
292
+ | v1.34.0 | Full pipeline proven auto-repair reached PARTIAL_SUCCESS through dogfooding on a single Next.js Web project |
293
+ | v1.35.0 | `codd elicit` — Discovery Engine with lexicon-aware coverage-mode |
294
+ | v1.36.0 | RepairLoop strategy v2 — generic fallback chain replaces stack-specific hardcoding |
295
+ | v1.37.0 | `codd diff` — brownfield drift detection (implementation_only / requirement_only / drift) |
296
+ | v1.38.0 | `codd brownfield` pipeline — extract → diff → elicit orchestration |
297
+ | v1.39.0 / v1.40.0 | Lexicon plug-ins 30 across 7 domains (Web / Mobile / Backend-API / Data / Ops / Compliance / Process) |
298
+ | v1.41.0 | `codd init --suggest-lexicons` manifest-file scan suggested lexicons appended |
299
+ | v1.42.0 | `codd lexicon list/install/diff` + `codd coverage report` — plug-in management CLI + matrix reports |
300
+ | **v2.0.0** | **Lexicon-Driven Completeness milestone** 31 lexicons (~280 axes), constraint side now mechanical |
301
+
302
+ ### Next (v2.x roadmap, in flux)
303
+
304
+ - Multi-domain dogfooding beyond Web (Mobile / CLI / embedded)
305
+ - elicit + verify bidirectional loop — proposed-finding apply → re-verify cycle
306
+ - AI-default coverage classification (`covered` / `implicit` / `gap`) replacing text-grep hints
275
307
 
276
308
  See [CHANGELOG.md](CHANGELOG.md).
277
309
 
@@ -339,6 +371,19 @@ Recipes live under `codd/hooks/recipes/`.
339
371
 
340
372
  ---
341
373
 
374
+ ## Contributors
375
+
376
+ CoDD is shaped by the following people:
377
+
378
+ - **[@yohey-w](https://github.com/yohey-w)** — Maintainer / Architect
379
+ - **[@Seika86](https://github.com/Seika86)** — Sprint regex insight (PR #11)
380
+ - **[@v-kato](https://github.com/v-kato)** — Brownfield reproduction reports (Issues #17 / #18 / #19)
381
+ - **[@dev-komenzar](https://github.com/dev-komenzar)** — `source_dirs` bug reproduction (Issue #13)
382
+
383
+ External signals (issues / PRs / lexicon suggestions) are welcome — see [Issues](https://github.com/yohey-w/codd-dev/issues).
384
+
385
+ ---
386
+
342
387
  ## License
343
388
 
344
389
  MIT License - see [LICENSE](LICENSE).
@@ -21,17 +21,18 @@
21
21
 
22
22
  CoDD treats **requirements -> design -> implementation -> tests** as one DAG, mechanically verifies the coherence of every node, and lets an LLM repair inconsistencies automatically when they appear. Humans write only **what to build** and **where the boundaries are**.
23
23
 
24
- ## Where We Are (v1.34.0)
24
+ ## Where We Are (v2.0.0 — Lexicon-Driven Completeness)
25
25
 
26
- The North Star is far, but **within bounded conditions, CoDD has reached practical use**:
26
+ v2.0.0 is a **positioning shift, not just a version bump**. v1.x delivered the *extract → diagnose → repair* pipeline; v2.0 adds the **constraint side** as a first-class plug-in surface.
27
27
 
28
28
  - ✅ Dogfooded on a real project (Next.js + Prisma + TypeScript Web app)
29
- - ✅ `codd verify --auto-repair` completes with `PARTIAL_SUCCESS` on a real LMS project (attempts=4 / applied_patches=4 / unrepairable=2)
29
+ - ✅ `codd verify --auto-repair` reaches `PARTIAL_SUCCESS` on a real LMS project (attempts=4 / applied_patches=4)
30
30
  - ✅ DAG completeness with 9 coherence checks operational
31
- - ⚠️ Single viewport / single persona assumed (Coverage Axis Layer C9 introduced in v1.32.0; axis variety is continuing work)
32
- - ⚠️ Specification completeness Level 1 (finding holes in requirements) is planned for v1.35.0 `codd elicit`
33
- - ⚠️ Other domains (Mobile / Desktop / CLI / Embedded / ML) are not yet validated
34
- - ⚠️ Reducing unrepairable items is continuing improvement
31
+ - **31 lexicon plug-ins** across 7 domains (Methodology / Web / Mobile / Backend-API / Data / Ops / Compliance / Process)
32
+ - **`codd elicit` / `codd diff` / `codd brownfield`** coverage and drift discovery for greenfield + brownfield projects
33
+ - **`codd init --suggest-lexicons`** auto-detect stack from manifest files, suggest lexicons to install
34
+ - **`codd lexicon list/install/diff` + `codd coverage report`** — plug-in management CLI + matrix reports (JSON / Markdown / HTML)
35
+ - ✅ Generality Gate three-layer architecture (Layer A core / Layer B templates / Layer C plug-ins) — zero specific framework / domain literals in core code
35
36
 
36
37
  ```bash
37
38
  pip install codd-dev
@@ -45,14 +46,14 @@ pip install codd-dev
45
46
 
46
47
  ```bash
47
48
  pip install codd-dev
48
- codd --version # 1.34.0 or later
49
+ codd --version # 2.0.0 or later
49
50
  ```
50
51
 
51
52
  ### 2. Add codd.yaml to your project
52
53
 
53
54
  ```yaml
54
55
  # codd.yaml
55
- codd_required_version: ">=1.34.0"
56
+ codd_required_version: ">=2.0.0"
56
57
 
57
58
  dag:
58
59
  design_docs:
@@ -154,7 +155,36 @@ This structurally prevents incidents such as smartphone-only navigation disappea
154
155
 
155
156
  ---
156
157
 
157
- ## v1.34.0 Key Features
158
+ ## What's New in v2.0
159
+
160
+ ### Lexicon-driven completeness — the missing constraint side
161
+
162
+ The North Star says "write only requirements + constraints." v1.x mostly handled the requirements side. v2.0 makes the **constraint side** mechanical and reusable.
163
+
164
+ A *lexicon* is a plug-in describing the coverage axes of an industry standard:
165
+
166
+ ```
167
+ codd_plugins/lexicons/
168
+ ├── babok/ # BABOK v3 elicitation lexicon
169
+ ├── web_a11y_wcag22_aa/ # WCAG 2.2 A/AA
170
+ ├── api_rest_openapi/ # REST + OpenAPI 3.1
171
+ ├── web_security_owasp/ # OWASP Top 10 + ASVS
172
+ ├── compliance_iso27001/ # ISO/IEC 27001:2022
173
+ ├── data_governance_appi_gdpr/ # GDPR + APPI
174
+ ├── ops_kubernetes/ # Kubernetes contracts
175
+ └── ... 24 more
176
+ ```
177
+
178
+ Each lexicon ships a manifest, axes, severity rules, coverage matrix, and prompt extension — `codd elicit` and `codd coverage report` consume them dynamically.
179
+
180
+ ```bash
181
+ codd init --suggest-lexicons # detect stack → suggest lexicons
182
+ codd lexicon install web_responsive web_a11y_wcag22_aa
183
+ codd lexicon diff web_responsive # text-grep coverage hint
184
+ codd coverage report --format html # matrix across all installed lexicons
185
+ ```
186
+
187
+ ### v2.0.0 Key Features
158
188
 
159
189
  | Feature | Role |
160
190
  |---------|------|
@@ -212,26 +242,28 @@ C9 `environment_coverage` verified all axis x variant coverage for viewport (sma
212
242
 
213
243
  ## Architecture - 4-Release Evolution and Next Plans
214
244
 
215
- ### Achieved (v1.31.0 - v1.34.0)
245
+ ### Achieved (v1.31.0 - v2.0.0)
216
246
 
217
247
  | Release | Milestone |
218
248
  |---------|-----------|
219
- | v1.31.0 | Inner 100% (internal coherence) - eliminated manual type fixes with the typecheck repair loop |
220
- | v1.32.0 | Outer 100% (target environment coverage Layer C9) - absorbed viewport/RBAC/locale and related axes through a unified abstraction |
221
- | v1.33.0 | Caveat-resolution path proven - real CDP run-journey + LLM auto-repair attempt passed |
222
- | **v1.34.0** | **Full pipeline proven** - auto-repair reached PARTIAL_SUCCESS through dogfooding on a single Next.js Web project |
223
-
224
- ### Next (v1.35.0 - v2.0.0, Roadmap)
225
-
226
- | Release | Plan |
227
- |---------|------|
228
- | **v1.35.0** | **`codd elicit`** - Discovery Engine that lets an LLM extract axis candidates and spec holes from requirements |
229
- | v1.36.0 | BABOK lexicon (`@codd/lexicon/babok`) bundle + multi-formatter (md / json / PR comment) |
230
- | v1.37.0 | **`codd diff`** - brownfield drift detection between requirements and implementation |
231
- | v1.38.0 | extract -> diff -> elicit pipeline, complete brownfield flow |
232
- | v1.39.0 | Reduce unrepairable items (RepairLoop strategy generalization) |
233
- | v1.40.0 | Multi-domain dogfooding (Mobile / CLI / embedded, etc.) |
234
- | (v2.0.0) | elicit + verify bidirectional loop, closest approach to the "fully automated" North Star |
249
+ | v1.31.0 | Inner 100% (internal coherence) eliminated manual type fixes with the typecheck repair loop |
250
+ | v1.32.0 | Outer 100% (target environment coverage Layer C9) absorbed viewport / RBAC / locale axes through a unified abstraction |
251
+ | v1.33.0 | Caveat-resolution path proven real CDP run-journey + LLM auto-repair attempt passed |
252
+ | v1.34.0 | Full pipeline proven auto-repair reached PARTIAL_SUCCESS through dogfooding on a single Next.js Web project |
253
+ | v1.35.0 | `codd elicit` — Discovery Engine with lexicon-aware coverage-mode |
254
+ | v1.36.0 | RepairLoop strategy v2 — generic fallback chain replaces stack-specific hardcoding |
255
+ | v1.37.0 | `codd diff` — brownfield drift detection (implementation_only / requirement_only / drift) |
256
+ | v1.38.0 | `codd brownfield` pipeline — extract → diff → elicit orchestration |
257
+ | v1.39.0 / v1.40.0 | Lexicon plug-ins 30 across 7 domains (Web / Mobile / Backend-API / Data / Ops / Compliance / Process) |
258
+ | v1.41.0 | `codd init --suggest-lexicons` manifest-file scan suggested lexicons appended |
259
+ | v1.42.0 | `codd lexicon list/install/diff` + `codd coverage report` — plug-in management CLI + matrix reports |
260
+ | **v2.0.0** | **Lexicon-Driven Completeness milestone** 31 lexicons (~280 axes), constraint side now mechanical |
261
+
262
+ ### Next (v2.x roadmap, in flux)
263
+
264
+ - Multi-domain dogfooding beyond Web (Mobile / CLI / embedded)
265
+ - elicit + verify bidirectional loop — proposed-finding apply → re-verify cycle
266
+ - AI-default coverage classification (`covered` / `implicit` / `gap`) replacing text-grep hints
235
267
 
236
268
  See [CHANGELOG.md](CHANGELOG.md).
237
269
 
@@ -299,6 +331,19 @@ Recipes live under `codd/hooks/recipes/`.
299
331
 
300
332
  ---
301
333
 
334
+ ## Contributors
335
+
336
+ CoDD is shaped by the following people:
337
+
338
+ - **[@yohey-w](https://github.com/yohey-w)** — Maintainer / Architect
339
+ - **[@Seika86](https://github.com/Seika86)** — Sprint regex insight (PR #11)
340
+ - **[@v-kato](https://github.com/v-kato)** — Brownfield reproduction reports (Issues #17 / #18 / #19)
341
+ - **[@dev-komenzar](https://github.com/dev-komenzar)** — `source_dirs` bug reproduction (Issue #13)
342
+
343
+ External signals (issues / PRs / lexicon suggestions) are welcome — see [Issues](https://github.com/yohey-w/codd-dev/issues).
344
+
345
+ ---
346
+
302
347
  ## License
303
348
 
304
349
  MIT License - see [LICENSE](LICENSE).
@@ -1,3 +1,3 @@
1
1
  """CoDD — Coherence-Driven Development."""
2
2
 
3
- __version__ = "1.41.0"
3
+ __version__ = "1.42.0"
@@ -559,6 +559,115 @@ def _offer_lexicon_suggestions(project_root: Path) -> None:
559
559
  click.echo(f"{rel_path} updated ({len(suggestions)} suggested lexicons)")
560
560
 
561
561
 
562
+ @main.group("lexicon")
563
+ def lexicon_cmd() -> None:
564
+ """Manage bundled lexicon plug-ins."""
565
+
566
+
567
+ @lexicon_cmd.command("list")
568
+ @click.option("--installed", "installed_only", is_flag=True, help="Show installed lexicons only.")
569
+ @click.option("--available", "available_only", is_flag=True, help="Show available, uninstalled lexicons only.")
570
+ @click.option("--all", "show_all", is_flag=True, help="Show installed and available lexicons.")
571
+ @click.option("--path", "project_path", default=".", help="Project root directory")
572
+ def lexicon_list_cmd(installed_only: bool, available_only: bool, show_all: bool, project_path: str) -> None:
573
+ """List installed and bundled lexicons."""
574
+ from codd.lexicon_cli.manager import LexiconManager
575
+
576
+ if sum(bool(value) for value in (installed_only, available_only, show_all)) > 1:
577
+ click.echo("Error: choose only one of --installed, --available, or --all.")
578
+ raise SystemExit(1)
579
+
580
+ manager = LexiconManager(Path(project_path).resolve())
581
+ installed = manager.installed()
582
+ available = manager.uninstalled()
583
+ if installed_only:
584
+ _echo_lexicon_records("Installed", installed)
585
+ return
586
+ if available_only:
587
+ _echo_lexicon_records("Available", available)
588
+ return
589
+
590
+ _echo_lexicon_records("Installed", installed)
591
+ if show_all or not installed_only:
592
+ click.echo("")
593
+ _echo_lexicon_records("Available", available)
594
+
595
+
596
+ @lexicon_cmd.command("install")
597
+ @click.argument("lexicon_ids", nargs=-1, required=True)
598
+ @click.option("--path", "project_path", default=".", help="Project root directory")
599
+ def lexicon_install_cmd(lexicon_ids: tuple[str, ...], project_path: str) -> None:
600
+ """Install bundled lexicons into project_lexicon.yaml."""
601
+ from codd.lexicon_cli.manager import LexiconManager
602
+
603
+ manager = LexiconManager(Path(project_path).resolve())
604
+ try:
605
+ result = manager.install(lexicon_ids)
606
+ except (OSError, ValueError, yaml.YAMLError) as exc:
607
+ click.echo(f"Error: {exc}")
608
+ raise SystemExit(1)
609
+
610
+ for lexicon_id in result.installed:
611
+ click.echo(f"Installed: {lexicon_id}")
612
+ for lexicon_id in result.skipped:
613
+ click.echo(f"Skipped: {lexicon_id} already installed")
614
+ rel_path = _display_path(result.project_lexicon_path, manager.project_root)
615
+ click.echo(f"Updated: {rel_path}")
616
+ for record in result.records:
617
+ if record.recommended_kinds:
618
+ preview = ", ".join(record.recommended_kinds[:5])
619
+ suffix = "" if len(record.recommended_kinds) <= 5 else ", ..."
620
+ click.echo(f"{record.id} recommended kinds: {preview}{suffix}")
621
+ severity_rules = record.path / "severity_rules.yaml"
622
+ if severity_rules.is_file():
623
+ click.echo(f"{record.id} severity rules: {_display_path(severity_rules, manager.project_root)}")
624
+
625
+
626
+ @lexicon_cmd.command("diff")
627
+ @click.argument("lexicon_id")
628
+ @click.option("--path", "project_path", default=".", help="Project root directory")
629
+ @click.option(
630
+ "--format",
631
+ "format_name",
632
+ type=click.Choice(["json", "md"]),
633
+ default="md",
634
+ show_default=True,
635
+ help="Output format.",
636
+ )
637
+ @click.option("--with-ai", is_flag=True, default=False, help="Use AI-backed elicit coverage mode.")
638
+ @click.option("--ai-cmd", default=None, help="Override AI CLI command for --with-ai.")
639
+ def lexicon_diff_cmd(
640
+ lexicon_id: str,
641
+ project_path: str,
642
+ format_name: str,
643
+ with_ai: bool,
644
+ ai_cmd: str | None,
645
+ ) -> None:
646
+ """Inspect one lexicon against project requirements and design text."""
647
+ from codd.lexicon_cli.formatters.json_fmt import to_json
648
+ from codd.lexicon_cli.formatters.md import format_diff_md
649
+ from codd.lexicon_cli.inspector import LexiconInspector
650
+
651
+ try:
652
+ result = LexiconInspector(Path(project_path).resolve()).inspect(
653
+ lexicon_id,
654
+ with_ai=with_ai,
655
+ ai_command=ai_cmd,
656
+ )
657
+ except (OSError, ValueError, json.JSONDecodeError, yaml.YAMLError) as exc:
658
+ click.echo(f"Error: {exc}")
659
+ raise SystemExit(1)
660
+
661
+ click.echo(to_json(result) if format_name == "json" else format_diff_md(result), nl=False)
662
+
663
+
664
+ def _echo_lexicon_records(label: str, records: list[Any]) -> None:
665
+ click.echo(f"{label} ({len(records)}):")
666
+ for record in records:
667
+ description = f" {record.description}" if record.description else ""
668
+ click.echo(f" {record.id:<32} ({record.observation_dimensions} axes){description}")
669
+
670
+
562
671
  @main.command()
563
672
  @click.option("--path", default=".", help="Project root directory")
564
673
  def scan(path: str):
@@ -2721,7 +2830,7 @@ def validate(lexicon: bool, design_tokens: bool, screen_flow: bool, edges: bool,
2721
2830
  raise SystemExit(run_validate(project_root, codd_dir))
2722
2831
 
2723
2832
 
2724
- @main.command()
2833
+ @main.group(invoke_without_command=True)
2725
2834
  @click.option("--path", default=".", show_default=True, help="Project root directory")
2726
2835
  @click.option(
2727
2836
  "--e2e-threshold",
@@ -2745,7 +2854,9 @@ def validate(lexicon: bool, design_tokens: bool, screen_flow: bool, edges: bool,
2745
2854
  help="Screen-flow coverage threshold percentage.",
2746
2855
  )
2747
2856
  @click.option("--json", "as_json", is_flag=True, help="Output machine-readable JSON.")
2857
+ @click.pass_context
2748
2858
  def coverage(
2859
+ ctx: click.Context,
2749
2860
  path: str,
2750
2861
  e2e_threshold: float,
2751
2862
  lexicon_threshold: float,
@@ -2753,6 +2864,9 @@ def coverage(
2753
2864
  as_json: bool,
2754
2865
  ):
2755
2866
  """Coverage metrics merge gate: E2E, design tokens, and lexicon."""
2867
+ if ctx.invoked_subcommand is not None:
2868
+ return
2869
+
2756
2870
  from codd.coverage_metrics import run_coverage
2757
2871
 
2758
2872
  project_root = Path(path).resolve()
@@ -2800,6 +2914,65 @@ def coverage(
2800
2914
  raise SystemExit(0 if report.all_passed else 1)
2801
2915
 
2802
2916
 
2917
+ @coverage.command("report")
2918
+ @click.option(
2919
+ "--lexicons",
2920
+ default="all",
2921
+ show_default=True,
2922
+ help="Lexicons to include: all or a comma-separated id list.",
2923
+ )
2924
+ @click.option("--path", "project_path", default=".", show_default=True, help="Project root directory")
2925
+ @click.option(
2926
+ "--format",
2927
+ "format_name",
2928
+ type=click.Choice(["json", "md", "html"]),
2929
+ default="md",
2930
+ show_default=True,
2931
+ help="Report output format.",
2932
+ )
2933
+ @click.option("--output", type=click.Path(dir_okay=False, path_type=Path), default=None, help="Write report to file.")
2934
+ @click.option("--with-ai", is_flag=True, default=False, help="Use AI-backed elicit coverage mode.")
2935
+ @click.option("--ai-cmd", default=None, help="Override AI CLI command for --with-ai.")
2936
+ def coverage_report_cmd(
2937
+ lexicons: str,
2938
+ project_path: str,
2939
+ format_name: str,
2940
+ output: Path | None,
2941
+ with_ai: bool,
2942
+ ai_cmd: str | None,
2943
+ ) -> None:
2944
+ """Generate a lexicon coverage matrix report."""
2945
+ from codd.lexicon_cli.formatters.html import format_coverage_report_html
2946
+ from codd.lexicon_cli.formatters.json_fmt import to_json
2947
+ from codd.lexicon_cli.formatters.md import format_coverage_report_md
2948
+ from codd.lexicon_cli.reporter import CoverageReporter
2949
+
2950
+ project_root = Path(project_path).resolve()
2951
+ try:
2952
+ report = CoverageReporter(project_root).build(lexicons, with_ai=with_ai, ai_command=ai_cmd)
2953
+ except (OSError, ValueError, json.JSONDecodeError, yaml.YAMLError) as exc:
2954
+ click.echo(f"Error: {exc}")
2955
+ raise SystemExit(1)
2956
+
2957
+ if format_name == "json":
2958
+ rendered = to_json(report)
2959
+ elif format_name == "html":
2960
+ rendered = format_coverage_report_html(report)
2961
+ else:
2962
+ rendered = format_coverage_report_md(report)
2963
+
2964
+ if output is None:
2965
+ click.echo(rendered, nl=False)
2966
+ return
2967
+
2968
+ output_path = output.expanduser()
2969
+ if not output_path.is_absolute():
2970
+ output_path = project_root / output_path
2971
+ output_path.parent.mkdir(parents=True, exist_ok=True)
2972
+ output_path.write_text(rendered, encoding="utf-8")
2973
+ click.echo(f"Report: {_display_path(output_path, project_root)}")
2974
+
2975
+
2803
2976
  @main.command("deploy")
2804
2977
  @click.option("--target", default=None, help="Deploy target name from deploy.yaml")
2805
2978
  @click.option(
@@ -0,0 +1,17 @@
1
+ """CLI helpers for bundled lexicon plug-ins."""
2
+
3
+ from codd.lexicon_cli.inspector import AxisInspection, LexiconDiffResult, TextHit
4
+ from codd.lexicon_cli.manager import InstallResult, LexiconManager, LexiconRecord
5
+ from codd.lexicon_cli.reporter import CoverageMatrixReport, CoverageReporter, CoverageRow
6
+
7
+ __all__ = [
8
+ "AxisInspection",
9
+ "CoverageMatrixReport",
10
+ "CoverageReporter",
11
+ "CoverageRow",
12
+ "InstallResult",
13
+ "LexiconDiffResult",
14
+ "LexiconManager",
15
+ "LexiconRecord",
16
+ "TextHit",
17
+ ]
@@ -0,0 +1,12 @@
1
+ """Formatters for lexicon CLI output."""
2
+
3
+ from codd.lexicon_cli.formatters.html import format_coverage_report_html
4
+ from codd.lexicon_cli.formatters.json_fmt import to_json
5
+ from codd.lexicon_cli.formatters.md import format_coverage_report_md, format_diff_md
6
+
7
+ __all__ = [
8
+ "format_coverage_report_html",
9
+ "format_coverage_report_md",
10
+ "format_diff_md",
11
+ "to_json",
12
+ ]
@@ -0,0 +1,51 @@
1
+ """Self-contained HTML formatter for coverage matrix reports."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from html import escape
6
+
7
+ from codd.lexicon_cli.reporter import CoverageMatrixReport
8
+
9
+
10
+ def format_coverage_report_html(report: CoverageMatrixReport) -> str:
11
+ rows = "\n".join(
12
+ "<tr>"
13
+ f"<td>{escape(row.lexicon_name)}</td>"
14
+ f"<td>{escape(row.axis_type)}</td>"
15
+ f"<td><span class=\"status {escape(row.status)}\">{escape(row.status)}</span></td>"
16
+ f"<td>{row.hit_count}</td>"
17
+ "</tr>"
18
+ for row in report.rows
19
+ )
20
+ return f"""<!doctype html>
21
+ <html lang="en">
22
+ <head>
23
+ <meta charset="utf-8">
24
+ <title>CoDD Coverage Matrix Report</title>
25
+ <style>
26
+ body {{ font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; margin: 2rem; color: #1f2933; }}
27
+ h1 {{ font-size: 1.7rem; margin-bottom: 0.25rem; }}
28
+ .meta {{ color: #52616b; margin: 0.2rem 0; }}
29
+ table {{ border-collapse: collapse; width: 100%; margin-top: 1.25rem; }}
30
+ th, td {{ border: 1px solid #d8dee4; padding: 0.45rem 0.6rem; text-align: left; }}
31
+ th {{ background: #f4f7f9; }}
32
+ .status {{ border-radius: 4px; padding: 0.1rem 0.35rem; background: #eef2f7; }}
33
+ .covered_text_match, .covered, .implicit {{ background: #e7f6ed; color: #125c2f; }}
34
+ .unknown, .gap {{ background: #fff4d6; color: #724c00; }}
35
+ </style>
36
+ </head>
37
+ <body>
38
+ <h1>Coverage Matrix Report</h1>
39
+ <p class="meta">Project: {escape(report.project_root)}</p>
40
+ <p class="meta">Mode: {escape(report.mode)}</p>
41
+ <p class="meta">Generated: {escape(report.generated_at)}</p>
42
+ <p class="meta">Totals: {report.totals["axes"]} axes, {report.totals["covered"]} covered signals ({report.totals["covered_pct"]:.2f}%), {report.totals["unknown"]} unknown.</p>
43
+ <table>
44
+ <thead><tr><th>Lexicon</th><th>Axis</th><th>Status</th><th>Hits</th></tr></thead>
45
+ <tbody>
46
+ {rows}
47
+ </tbody>
48
+ </table>
49
+ </body>
50
+ </html>
51
+ """
@@ -0,0 +1,24 @@
1
+ """JSON formatter for lexicon CLI data."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from dataclasses import asdict, is_dataclass
6
+ import json
7
+ from pathlib import Path
8
+ from typing import Any
9
+
10
+
11
+ def to_json(value: Any) -> str:
12
+ return json.dumps(_plain(value), indent=2, ensure_ascii=False) + "\n"
13
+
14
+
15
+ def _plain(value: Any) -> Any:
16
+ if is_dataclass(value):
17
+ return _plain(asdict(value))
18
+ if isinstance(value, Path):
19
+ return value.as_posix()
20
+ if isinstance(value, dict):
21
+ return {str(key): _plain(item) for key, item in value.items()}
22
+ if isinstance(value, (list, tuple)):
23
+ return [_plain(item) for item in value]
24
+ return value