codd-dev 1.40.0__tar.gz → 1.41.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 (412) hide show
  1. {codd_dev-1.40.0 → codd_dev-1.41.0}/PKG-INFO +1 -1
  2. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/__init__.py +1 -1
  3. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/cli.py +51 -1
  4. codd_dev-1.41.0/codd/init/__init__.py +2 -0
  5. codd_dev-1.41.0/codd/init/lexicon_suggest.py +117 -0
  6. codd_dev-1.41.0/codd/init/stack_detector.py +170 -0
  7. codd_dev-1.41.0/codd_plugins/lexicons/ai_governance_eu_act/coverage_matrix.md +19 -0
  8. codd_dev-1.41.0/codd_plugins/lexicons/ai_governance_eu_act/elicit_extend.md +54 -0
  9. codd_dev-1.41.0/codd_plugins/lexicons/ai_governance_eu_act/lexicon.yaml +177 -0
  10. codd_dev-1.41.0/codd_plugins/lexicons/ai_governance_eu_act/manifest.yaml +18 -0
  11. codd_dev-1.41.0/codd_plugins/lexicons/ai_governance_eu_act/recommended_kinds.yaml +11 -0
  12. codd_dev-1.41.0/codd_plugins/lexicons/ai_governance_eu_act/severity_rules.yaml +34 -0
  13. codd_dev-1.41.0/codd_plugins/lexicons/api_rest_openapi/coverage_matrix.md +25 -0
  14. codd_dev-1.41.0/codd_plugins/lexicons/api_rest_openapi/elicit_extend.md +79 -0
  15. codd_dev-1.41.0/codd_plugins/lexicons/api_rest_openapi/lexicon.yaml +261 -0
  16. codd_dev-1.41.0/codd_plugins/lexicons/api_rest_openapi/manifest.yaml +29 -0
  17. codd_dev-1.41.0/codd_plugins/lexicons/api_rest_openapi/recommended_kinds.yaml +16 -0
  18. codd_dev-1.41.0/codd_plugins/lexicons/api_rest_openapi/severity_rules.yaml +56 -0
  19. codd_dev-1.41.0/codd_plugins/lexicons/babok/elicit_extend.md +90 -0
  20. codd_dev-1.41.0/codd_plugins/lexicons/babok/manifest.yaml +7 -0
  21. codd_dev-1.41.0/codd_plugins/lexicons/babok/recommended_kinds.yaml +9 -0
  22. codd_dev-1.41.0/codd_plugins/lexicons/backend_event_cloudevents/coverage_matrix.md +16 -0
  23. codd_dev-1.41.0/codd_plugins/lexicons/backend_event_cloudevents/elicit_extend.md +66 -0
  24. codd_dev-1.41.0/codd_plugins/lexicons/backend_event_cloudevents/lexicon.yaml +145 -0
  25. codd_dev-1.41.0/codd_plugins/lexicons/backend_event_cloudevents/manifest.yaml +20 -0
  26. codd_dev-1.41.0/codd_plugins/lexicons/backend_event_cloudevents/recommended_kinds.yaml +8 -0
  27. codd_dev-1.41.0/codd_plugins/lexicons/backend_event_cloudevents/severity_rules.yaml +25 -0
  28. codd_dev-1.41.0/codd_plugins/lexicons/backend_graphql/coverage_matrix.md +20 -0
  29. codd_dev-1.41.0/codd_plugins/lexicons/backend_graphql/elicit_extend.md +78 -0
  30. codd_dev-1.41.0/codd_plugins/lexicons/backend_graphql/lexicon.yaml +245 -0
  31. codd_dev-1.41.0/codd_plugins/lexicons/backend_graphql/manifest.yaml +17 -0
  32. codd_dev-1.41.0/codd_plugins/lexicons/backend_graphql/recommended_kinds.yaml +12 -0
  33. codd_dev-1.41.0/codd_plugins/lexicons/backend_graphql/severity_rules.yaml +44 -0
  34. codd_dev-1.41.0/codd_plugins/lexicons/backend_grpc_proto/coverage_matrix.md +17 -0
  35. codd_dev-1.41.0/codd_plugins/lexicons/backend_grpc_proto/elicit_extend.md +71 -0
  36. codd_dev-1.41.0/codd_plugins/lexicons/backend_grpc_proto/lexicon.yaml +185 -0
  37. codd_dev-1.41.0/codd_plugins/lexicons/backend_grpc_proto/manifest.yaml +25 -0
  38. codd_dev-1.41.0/codd_plugins/lexicons/backend_grpc_proto/recommended_kinds.yaml +9 -0
  39. codd_dev-1.41.0/codd_plugins/lexicons/backend_grpc_proto/severity_rules.yaml +35 -0
  40. codd_dev-1.41.0/codd_plugins/lexicons/compliance_hipaa/coverage_matrix.md +19 -0
  41. codd_dev-1.41.0/codd_plugins/lexicons/compliance_hipaa/elicit_extend.md +56 -0
  42. codd_dev-1.41.0/codd_plugins/lexicons/compliance_hipaa/lexicon.yaml +209 -0
  43. codd_dev-1.41.0/codd_plugins/lexicons/compliance_hipaa/manifest.yaml +22 -0
  44. codd_dev-1.41.0/codd_plugins/lexicons/compliance_hipaa/recommended_kinds.yaml +11 -0
  45. codd_dev-1.41.0/codd_plugins/lexicons/compliance_hipaa/severity_rules.yaml +34 -0
  46. codd_dev-1.41.0/codd_plugins/lexicons/compliance_iso27001/coverage_matrix.md +25 -0
  47. codd_dev-1.41.0/codd_plugins/lexicons/compliance_iso27001/elicit_extend.md +76 -0
  48. codd_dev-1.41.0/codd_plugins/lexicons/compliance_iso27001/lexicon.yaml +226 -0
  49. codd_dev-1.41.0/codd_plugins/lexicons/compliance_iso27001/manifest.yaml +19 -0
  50. codd_dev-1.41.0/codd_plugins/lexicons/compliance_iso27001/recommended_kinds.yaml +16 -0
  51. codd_dev-1.41.0/codd_plugins/lexicons/compliance_iso27001/severity_rules.yaml +54 -0
  52. codd_dev-1.41.0/codd_plugins/lexicons/compliance_pci_dss_4/coverage_matrix.md +21 -0
  53. codd_dev-1.41.0/codd_plugins/lexicons/compliance_pci_dss_4/elicit_extend.md +59 -0
  54. codd_dev-1.41.0/codd_plugins/lexicons/compliance_pci_dss_4/lexicon.yaml +229 -0
  55. codd_dev-1.41.0/codd_plugins/lexicons/compliance_pci_dss_4/manifest.yaml +20 -0
  56. codd_dev-1.41.0/codd_plugins/lexicons/compliance_pci_dss_4/recommended_kinds.yaml +13 -0
  57. codd_dev-1.41.0/codd_plugins/lexicons/compliance_pci_dss_4/severity_rules.yaml +40 -0
  58. codd_dev-1.41.0/codd_plugins/lexicons/data_eventsourcing_es_cqrs/coverage_matrix.md +18 -0
  59. codd_dev-1.41.0/codd_plugins/lexicons/data_eventsourcing_es_cqrs/elicit_extend.md +69 -0
  60. codd_dev-1.41.0/codd_plugins/lexicons/data_eventsourcing_es_cqrs/lexicon.yaml +133 -0
  61. codd_dev-1.41.0/codd_plugins/lexicons/data_eventsourcing_es_cqrs/manifest.yaml +16 -0
  62. codd_dev-1.41.0/codd_plugins/lexicons/data_eventsourcing_es_cqrs/recommended_kinds.yaml +9 -0
  63. codd_dev-1.41.0/codd_plugins/lexicons/data_eventsourcing_es_cqrs/severity_rules.yaml +28 -0
  64. codd_dev-1.41.0/codd_plugins/lexicons/data_governance_appi_gdpr/coverage_matrix.md +21 -0
  65. codd_dev-1.41.0/codd_plugins/lexicons/data_governance_appi_gdpr/elicit_extend.md +55 -0
  66. codd_dev-1.41.0/codd_plugins/lexicons/data_governance_appi_gdpr/lexicon.yaml +229 -0
  67. codd_dev-1.41.0/codd_plugins/lexicons/data_governance_appi_gdpr/manifest.yaml +20 -0
  68. codd_dev-1.41.0/codd_plugins/lexicons/data_governance_appi_gdpr/recommended_kinds.yaml +13 -0
  69. codd_dev-1.41.0/codd_plugins/lexicons/data_governance_appi_gdpr/severity_rules.yaml +40 -0
  70. codd_dev-1.41.0/codd_plugins/lexicons/data_nosql_jsonschema/coverage_matrix.md +19 -0
  71. codd_dev-1.41.0/codd_plugins/lexicons/data_nosql_jsonschema/elicit_extend.md +75 -0
  72. codd_dev-1.41.0/codd_plugins/lexicons/data_nosql_jsonschema/lexicon.yaml +201 -0
  73. codd_dev-1.41.0/codd_plugins/lexicons/data_nosql_jsonschema/manifest.yaml +21 -0
  74. codd_dev-1.41.0/codd_plugins/lexicons/data_nosql_jsonschema/recommended_kinds.yaml +11 -0
  75. codd_dev-1.41.0/codd_plugins/lexicons/data_nosql_jsonschema/severity_rules.yaml +41 -0
  76. codd_dev-1.41.0/codd_plugins/lexicons/data_relational_iso_sql/coverage_matrix.md +20 -0
  77. codd_dev-1.41.0/codd_plugins/lexicons/data_relational_iso_sql/elicit_extend.md +73 -0
  78. codd_dev-1.41.0/codd_plugins/lexicons/data_relational_iso_sql/lexicon.yaml +185 -0
  79. codd_dev-1.41.0/codd_plugins/lexicons/data_relational_iso_sql/manifest.yaml +20 -0
  80. codd_dev-1.41.0/codd_plugins/lexicons/data_relational_iso_sql/recommended_kinds.yaml +11 -0
  81. codd_dev-1.41.0/codd_plugins/lexicons/data_relational_iso_sql/severity_rules.yaml +41 -0
  82. codd_dev-1.41.0/codd_plugins/lexicons/mobile_a11y_native/coverage_matrix.md +18 -0
  83. codd_dev-1.41.0/codd_plugins/lexicons/mobile_a11y_native/elicit_extend.md +71 -0
  84. codd_dev-1.41.0/codd_plugins/lexicons/mobile_a11y_native/lexicon.yaml +149 -0
  85. codd_dev-1.41.0/codd_plugins/lexicons/mobile_a11y_native/manifest.yaml +24 -0
  86. codd_dev-1.41.0/codd_plugins/lexicons/mobile_a11y_native/recommended_kinds.yaml +9 -0
  87. codd_dev-1.41.0/codd_plugins/lexicons/mobile_a11y_native/severity_rules.yaml +28 -0
  88. codd_dev-1.41.0/codd_plugins/lexicons/mobile_android_material3/coverage_matrix.md +21 -0
  89. codd_dev-1.41.0/codd_plugins/lexicons/mobile_android_material3/elicit_extend.md +52 -0
  90. codd_dev-1.41.0/codd_plugins/lexicons/mobile_android_material3/lexicon.yaml +145 -0
  91. codd_dev-1.41.0/codd_plugins/lexicons/mobile_android_material3/manifest.yaml +22 -0
  92. codd_dev-1.41.0/codd_plugins/lexicons/mobile_android_material3/recommended_kinds.yaml +13 -0
  93. codd_dev-1.41.0/codd_plugins/lexicons/mobile_android_material3/severity_rules.yaml +40 -0
  94. codd_dev-1.41.0/codd_plugins/lexicons/mobile_ios_hig/coverage_matrix.md +21 -0
  95. codd_dev-1.41.0/codd_plugins/lexicons/mobile_ios_hig/elicit_extend.md +52 -0
  96. codd_dev-1.41.0/codd_plugins/lexicons/mobile_ios_hig/lexicon.yaml +133 -0
  97. codd_dev-1.41.0/codd_plugins/lexicons/mobile_ios_hig/manifest.yaml +22 -0
  98. codd_dev-1.41.0/codd_plugins/lexicons/mobile_ios_hig/recommended_kinds.yaml +13 -0
  99. codd_dev-1.41.0/codd_plugins/lexicons/mobile_ios_hig/severity_rules.yaml +40 -0
  100. codd_dev-1.41.0/codd_plugins/lexicons/ops_cicd_pipeline/coverage_matrix.md +17 -0
  101. codd_dev-1.41.0/codd_plugins/lexicons/ops_cicd_pipeline/elicit_extend.md +71 -0
  102. codd_dev-1.41.0/codd_plugins/lexicons/ops_cicd_pipeline/lexicon.yaml +114 -0
  103. codd_dev-1.41.0/codd_plugins/lexicons/ops_cicd_pipeline/manifest.yaml +19 -0
  104. codd_dev-1.41.0/codd_plugins/lexicons/ops_cicd_pipeline/recommended_kinds.yaml +9 -0
  105. codd_dev-1.41.0/codd_plugins/lexicons/ops_cicd_pipeline/severity_rules.yaml +33 -0
  106. codd_dev-1.41.0/codd_plugins/lexicons/ops_iac_terraform/coverage_matrix.md +19 -0
  107. codd_dev-1.41.0/codd_plugins/lexicons/ops_iac_terraform/elicit_extend.md +79 -0
  108. codd_dev-1.41.0/codd_plugins/lexicons/ops_iac_terraform/lexicon.yaml +249 -0
  109. codd_dev-1.41.0/codd_plugins/lexicons/ops_iac_terraform/manifest.yaml +25 -0
  110. codd_dev-1.41.0/codd_plugins/lexicons/ops_iac_terraform/recommended_kinds.yaml +11 -0
  111. codd_dev-1.41.0/codd_plugins/lexicons/ops_iac_terraform/severity_rules.yaml +41 -0
  112. codd_dev-1.41.0/codd_plugins/lexicons/ops_kubernetes/coverage_matrix.md +21 -0
  113. codd_dev-1.41.0/codd_plugins/lexicons/ops_kubernetes/elicit_extend.md +80 -0
  114. codd_dev-1.41.0/codd_plugins/lexicons/ops_kubernetes/lexicon.yaml +297 -0
  115. codd_dev-1.41.0/codd_plugins/lexicons/ops_kubernetes/manifest.yaml +25 -0
  116. codd_dev-1.41.0/codd_plugins/lexicons/ops_kubernetes/recommended_kinds.yaml +13 -0
  117. codd_dev-1.41.0/codd_plugins/lexicons/ops_kubernetes/severity_rules.yaml +47 -0
  118. codd_dev-1.41.0/codd_plugins/lexicons/ops_observability_otel/coverage_matrix.md +18 -0
  119. codd_dev-1.41.0/codd_plugins/lexicons/ops_observability_otel/elicit_extend.md +74 -0
  120. codd_dev-1.41.0/codd_plugins/lexicons/ops_observability_otel/lexicon.yaml +169 -0
  121. codd_dev-1.41.0/codd_plugins/lexicons/ops_observability_otel/manifest.yaml +23 -0
  122. codd_dev-1.41.0/codd_plugins/lexicons/ops_observability_otel/recommended_kinds.yaml +9 -0
  123. codd_dev-1.41.0/codd_plugins/lexicons/ops_observability_otel/severity_rules.yaml +35 -0
  124. codd_dev-1.41.0/codd_plugins/lexicons/process_iso25010/coverage_matrix.md +18 -0
  125. codd_dev-1.41.0/codd_plugins/lexicons/process_iso25010/elicit_extend.md +69 -0
  126. codd_dev-1.41.0/codd_plugins/lexicons/process_iso25010/lexicon.yaml +186 -0
  127. codd_dev-1.41.0/codd_plugins/lexicons/process_iso25010/manifest.yaml +18 -0
  128. codd_dev-1.41.0/codd_plugins/lexicons/process_iso25010/recommended_kinds.yaml +10 -0
  129. codd_dev-1.41.0/codd_plugins/lexicons/process_iso25010/severity_rules.yaml +36 -0
  130. codd_dev-1.41.0/codd_plugins/lexicons/process_test_iso29119/coverage_matrix.md +16 -0
  131. codd_dev-1.41.0/codd_plugins/lexicons/process_test_iso29119/elicit_extend.md +68 -0
  132. codd_dev-1.41.0/codd_plugins/lexicons/process_test_iso29119/lexicon.yaml +114 -0
  133. codd_dev-1.41.0/codd_plugins/lexicons/process_test_iso29119/manifest.yaml +27 -0
  134. codd_dev-1.41.0/codd_plugins/lexicons/process_test_iso29119/recommended_kinds.yaml +8 -0
  135. codd_dev-1.41.0/codd_plugins/lexicons/process_test_iso29119/severity_rules.yaml +30 -0
  136. codd_dev-1.41.0/codd_plugins/lexicons/web_a11y_wcag22_aa/coverage_matrix.md +22 -0
  137. codd_dev-1.41.0/codd_plugins/lexicons/web_a11y_wcag22_aa/elicit_extend.md +51 -0
  138. codd_dev-1.41.0/codd_plugins/lexicons/web_a11y_wcag22_aa/lexicon.yaml +233 -0
  139. codd_dev-1.41.0/codd_plugins/lexicons/web_a11y_wcag22_aa/manifest.yaml +18 -0
  140. codd_dev-1.41.0/codd_plugins/lexicons/web_a11y_wcag22_aa/recommended_kinds.yaml +14 -0
  141. codd_dev-1.41.0/codd_plugins/lexicons/web_a11y_wcag22_aa/severity_rules.yaml +43 -0
  142. codd_dev-1.41.0/codd_plugins/lexicons/web_authn_webauthn/coverage_matrix.md +16 -0
  143. codd_dev-1.41.0/codd_plugins/lexicons/web_authn_webauthn/elicit_extend.md +73 -0
  144. codd_dev-1.41.0/codd_plugins/lexicons/web_authn_webauthn/lexicon.yaml +166 -0
  145. codd_dev-1.41.0/codd_plugins/lexicons/web_authn_webauthn/manifest.yaml +22 -0
  146. codd_dev-1.41.0/codd_plugins/lexicons/web_authn_webauthn/recommended_kinds.yaml +8 -0
  147. codd_dev-1.41.0/codd_plugins/lexicons/web_authn_webauthn/severity_rules.yaml +30 -0
  148. codd_dev-1.41.0/codd_plugins/lexicons/web_browser_compat/coverage_matrix.md +17 -0
  149. codd_dev-1.41.0/codd_plugins/lexicons/web_browser_compat/elicit_extend.md +64 -0
  150. codd_dev-1.41.0/codd_plugins/lexicons/web_browser_compat/lexicon.yaml +125 -0
  151. codd_dev-1.41.0/codd_plugins/lexicons/web_browser_compat/manifest.yaml +20 -0
  152. codd_dev-1.41.0/codd_plugins/lexicons/web_browser_compat/recommended_kinds.yaml +8 -0
  153. codd_dev-1.41.0/codd_plugins/lexicons/web_browser_compat/severity_rules.yaml +25 -0
  154. codd_dev-1.41.0/codd_plugins/lexicons/web_forms_html5/coverage_matrix.md +18 -0
  155. codd_dev-1.41.0/codd_plugins/lexicons/web_forms_html5/elicit_extend.md +65 -0
  156. codd_dev-1.41.0/codd_plugins/lexicons/web_forms_html5/lexicon.yaml +221 -0
  157. codd_dev-1.41.0/codd_plugins/lexicons/web_forms_html5/manifest.yaml +21 -0
  158. codd_dev-1.41.0/codd_plugins/lexicons/web_forms_html5/recommended_kinds.yaml +10 -0
  159. codd_dev-1.41.0/codd_plugins/lexicons/web_forms_html5/severity_rules.yaml +31 -0
  160. codd_dev-1.41.0/codd_plugins/lexicons/web_performance_core_web_vitals/coverage_matrix.md +16 -0
  161. codd_dev-1.41.0/codd_plugins/lexicons/web_performance_core_web_vitals/elicit_extend.md +68 -0
  162. codd_dev-1.41.0/codd_plugins/lexicons/web_performance_core_web_vitals/lexicon.yaml +170 -0
  163. codd_dev-1.41.0/codd_plugins/lexicons/web_performance_core_web_vitals/manifest.yaml +32 -0
  164. codd_dev-1.41.0/codd_plugins/lexicons/web_performance_core_web_vitals/recommended_kinds.yaml +8 -0
  165. codd_dev-1.41.0/codd_plugins/lexicons/web_performance_core_web_vitals/severity_rules.yaml +30 -0
  166. codd_dev-1.41.0/codd_plugins/lexicons/web_pwa_manifest/coverage_matrix.md +17 -0
  167. codd_dev-1.41.0/codd_plugins/lexicons/web_pwa_manifest/elicit_extend.md +63 -0
  168. codd_dev-1.41.0/codd_plugins/lexicons/web_pwa_manifest/lexicon.yaml +165 -0
  169. codd_dev-1.41.0/codd_plugins/lexicons/web_pwa_manifest/manifest.yaml +19 -0
  170. codd_dev-1.41.0/codd_plugins/lexicons/web_pwa_manifest/recommended_kinds.yaml +9 -0
  171. codd_dev-1.41.0/codd_plugins/lexicons/web_pwa_manifest/severity_rules.yaml +28 -0
  172. codd_dev-1.41.0/codd_plugins/lexicons/web_responsive/coverage_matrix.md +17 -0
  173. codd_dev-1.41.0/codd_plugins/lexicons/web_responsive/elicit_extend.md +44 -0
  174. codd_dev-1.41.0/codd_plugins/lexicons/web_responsive/lexicon.yaml +113 -0
  175. codd_dev-1.41.0/codd_plugins/lexicons/web_responsive/manifest.yaml +18 -0
  176. codd_dev-1.41.0/codd_plugins/lexicons/web_responsive/recommended_kinds.yaml +9 -0
  177. codd_dev-1.41.0/codd_plugins/lexicons/web_responsive/severity_rules.yaml +28 -0
  178. codd_dev-1.41.0/codd_plugins/lexicons/web_security_owasp/coverage_matrix.md +21 -0
  179. codd_dev-1.41.0/codd_plugins/lexicons/web_security_owasp/elicit_extend.md +61 -0
  180. codd_dev-1.41.0/codd_plugins/lexicons/web_security_owasp/lexicon.yaml +141 -0
  181. codd_dev-1.41.0/codd_plugins/lexicons/web_security_owasp/manifest.yaml +22 -0
  182. codd_dev-1.41.0/codd_plugins/lexicons/web_security_owasp/recommended_kinds.yaml +16 -0
  183. codd_dev-1.41.0/codd_plugins/lexicons/web_security_owasp/severity_rules.yaml +53 -0
  184. codd_dev-1.41.0/codd_plugins/lexicons/web_seo_schemaorg/coverage_matrix.md +17 -0
  185. codd_dev-1.41.0/codd_plugins/lexicons/web_seo_schemaorg/elicit_extend.md +62 -0
  186. codd_dev-1.41.0/codd_plugins/lexicons/web_seo_schemaorg/lexicon.yaml +193 -0
  187. codd_dev-1.41.0/codd_plugins/lexicons/web_seo_schemaorg/manifest.yaml +19 -0
  188. codd_dev-1.41.0/codd_plugins/lexicons/web_seo_schemaorg/recommended_kinds.yaml +9 -0
  189. codd_dev-1.41.0/codd_plugins/lexicons/web_seo_schemaorg/severity_rules.yaml +28 -0
  190. codd_dev-1.41.0/codd_plugins/stack_map.yaml +78 -0
  191. {codd_dev-1.40.0 → codd_dev-1.41.0}/pyproject.toml +5 -3
  192. {codd_dev-1.40.0 → codd_dev-1.41.0}/.gitignore +0 -0
  193. {codd_dev-1.40.0 → codd_dev-1.41.0}/LICENSE +0 -0
  194. {codd_dev-1.40.0 → codd_dev-1.41.0}/README.md +0 -0
  195. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/__main__.py +0 -0
  196. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/_git_helper.py +0 -0
  197. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/ask_user_question_adapter.py +0 -0
  198. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/assembler.py +0 -0
  199. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/bridge.py +0 -0
  200. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/brownfield/__init__.py +0 -0
  201. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/brownfield/pipeline.py +0 -0
  202. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/clustering.py +0 -0
  203. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/coherence_adapters.py +0 -0
  204. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/coherence_engine.py +0 -0
  205. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/config.py +0 -0
  206. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/contracts.py +0 -0
  207. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/coverage_auditor.py +0 -0
  208. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/coverage_metrics.py +0 -0
  209. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/dag/__init__.py +0 -0
  210. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/dag/builder.py +0 -0
  211. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/dag/checks/__init__.py +0 -0
  212. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/dag/checks/depends_on_consistency.py +0 -0
  213. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/dag/checks/deployment_completeness.py +0 -0
  214. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/dag/checks/edge_validity.py +0 -0
  215. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/dag/checks/environment_coverage.py +0 -0
  216. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/dag/checks/implementation_coverage.py +0 -0
  217. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/dag/checks/node_completeness.py +0 -0
  218. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/dag/checks/task_completion.py +0 -0
  219. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/dag/checks/transitive_closure.py +0 -0
  220. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/dag/checks/user_journey_coherence.py +0 -0
  221. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/dag/coverage_axes.py +0 -0
  222. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/dag/defaults/cli.yaml +0 -0
  223. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/dag/defaults/cpp_embedded.yaml +0 -0
  224. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/dag/defaults/csharp.yaml +0 -0
  225. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/dag/defaults/elixir.yaml +0 -0
  226. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/dag/defaults/generic.yaml +0 -0
  227. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/dag/defaults/iot.yaml +0 -0
  228. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/dag/defaults/java.yaml +0 -0
  229. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/dag/defaults/kotlin.yaml +0 -0
  230. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/dag/defaults/mobile.yaml +0 -0
  231. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/dag/defaults/ruby.yaml +0 -0
  232. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/dag/defaults/rust.yaml +0 -0
  233. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/dag/defaults/scala.yaml +0 -0
  234. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/dag/defaults/swift.yaml +0 -0
  235. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/dag/defaults/test_frameworks.yaml +0 -0
  236. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/dag/defaults/web.yaml +0 -0
  237. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/dag/extractor.py +0 -0
  238. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/dag/runner.py +0 -0
  239. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/defaults.yaml +0 -0
  240. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/deploy_targets/__init__.py +0 -0
  241. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/deploy_targets/app_service.py +0 -0
  242. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/deploy_targets/base.py +0 -0
  243. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/deploy_targets/docker_compose.py +0 -0
  244. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/deployer.py +0 -0
  245. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/deployment/__init__.py +0 -0
  246. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/deployment/checks/__init__.py +0 -0
  247. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/deployment/defaults/deploy_targets.yaml +0 -0
  248. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/deployment/defaults/runtime_capability_inference.yaml +0 -0
  249. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/deployment/defaults/schema_providers.yaml +0 -0
  250. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/deployment/defaults/verification_templates.yaml +0 -0
  251. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/deployment/extractor.py +0 -0
  252. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/deployment/providers/__init__.py +0 -0
  253. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/deployment/providers/ai_command.py +0 -0
  254. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/deployment/providers/llm_consideration.py +0 -0
  255. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/deployment/providers/schema/__init__.py +0 -0
  256. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/deployment/providers/schema/prisma.py +0 -0
  257. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/deployment/providers/target/__init__.py +0 -0
  258. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/deployment/providers/target/docker_compose.py +0 -0
  259. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/deployment/providers/verification/__init__.py +0 -0
  260. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/deployment/providers/verification/assertion_handlers.py +0 -0
  261. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/deployment/providers/verification/cdp_browser.py +0 -0
  262. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/deployment/providers/verification/cdp_engines.py +0 -0
  263. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/deployment/providers/verification/cdp_launchers.py +0 -0
  264. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/deployment/providers/verification/cdp_wire.py +0 -0
  265. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/deployment/providers/verification/curl.py +0 -0
  266. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/deployment/providers/verification/form_strategies.py +0 -0
  267. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/deployment/providers/verification/means_catalog.py +0 -0
  268. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/deployment/providers/verification/playwright.py +0 -0
  269. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/design_md.py +0 -0
  270. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/diff/__init__.py +0 -0
  271. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/diff/apply.py +0 -0
  272. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/diff/engine.py +0 -0
  273. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/diff/persistence.py +0 -0
  274. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/diff/templates/diff_prompt.md +0 -0
  275. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/drift.py +0 -0
  276. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/e2e_extractor.py +0 -0
  277. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/e2e_generator.py +0 -0
  278. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/e2e_runner.py +0 -0
  279. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/elicit/__init__.py +0 -0
  280. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/elicit/apply.py +0 -0
  281. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/elicit/engine.py +0 -0
  282. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/elicit/finding.py +0 -0
  283. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/elicit/formatters/__init__.py +0 -0
  284. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/elicit/formatters/base.py +0 -0
  285. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/elicit/formatters/interactive.py +0 -0
  286. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/elicit/formatters/json_fmt.py +0 -0
  287. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/elicit/formatters/md.py +0 -0
  288. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/elicit/lexicon_loader.py +0 -0
  289. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/elicit/persistence.py +0 -0
  290. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/elicit/templates/elicit_prompt_L0.md +0 -0
  291. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/env_refs.py +0 -0
  292. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/extract_ai.py +0 -0
  293. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/extractor.py +0 -0
  294. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/fixer.py +0 -0
  295. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/fixup_drift.py +0 -0
  296. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/fixup_drift_strategies/__init__.py +0 -0
  297. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/fixup_drift_strategies/design_token_drift.py +0 -0
  298. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/fixup_drift_strategies/lexicon_violation.py +0 -0
  299. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/fixup_drift_strategies/url_drift.py +0 -0
  300. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/generator.py +0 -0
  301. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/graph.py +0 -0
  302. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/hitl_session.py +0 -0
  303. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/hooks/__init__.py +0 -0
  304. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/hooks/pre-commit +0 -0
  305. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/hooks/recipes/claude_settings_example.json +0 -0
  306. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/hooks/recipes/codex_hook.sh +0 -0
  307. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/hooks/recipes/git_post_commit.sh +0 -0
  308. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/hooks/recipes/git_pre_commit.sh +0 -0
  309. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/implementer/__init__.py +0 -0
  310. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/implementer/chunked_runner.py +0 -0
  311. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/implementer/typecheck_loop.py +0 -0
  312. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/implementer.py +0 -0
  313. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/inheritance.py +0 -0
  314. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/knowledge_fetcher.py +0 -0
  315. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/lexicon.py +0 -0
  316. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/llm/__init__.py +0 -0
  317. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/llm/approval.py +0 -0
  318. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/llm/best_practice_augmenter.py +0 -0
  319. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/llm/criteria_expander.py +0 -0
  320. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/llm/design_doc_extractor.py +0 -0
  321. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/llm/impl_step_deriver.py +0 -0
  322. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/llm/means_catalog_loader.py +0 -0
  323. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/llm/parser.py +0 -0
  324. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/llm/plan_deriver.py +0 -0
  325. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/llm/prompt_builder.py +0 -0
  326. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/llm/strategy_validator.py +0 -0
  327. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/llm/templates/best_practice_augment_meta.md +0 -0
  328. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/llm/templates/criteria_expand_meta.md +0 -0
  329. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/llm/templates/design_doc_extract_meta.md +0 -0
  330. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/llm/templates/impl_step_derive_meta.md +0 -0
  331. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/llm/templates/implementation_step_catalog.yaml +0 -0
  332. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/llm/templates/meta_instruction.md +0 -0
  333. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/llm/templates/plan_derive_meta.md +0 -0
  334. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/llm/templates/verification_means_catalog.yaml +0 -0
  335. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/mcp_server.py +0 -0
  336. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/measure.py +0 -0
  337. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/parsing.py +0 -0
  338. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/planner.py +0 -0
  339. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/policy.py +0 -0
  340. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/preflight/__init__.py +0 -0
  341. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/preflight/defaults/cli.yaml +0 -0
  342. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/preflight/defaults/iot.yaml +0 -0
  343. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/preflight/defaults/mobile.yaml +0 -0
  344. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/preflight/defaults/web.yaml +0 -0
  345. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/propagate.py +0 -0
  346. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/propagator.py +0 -0
  347. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/registry.py +0 -0
  348. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/repair/__init__.py +0 -0
  349. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/repair/approval_repair.py +0 -0
  350. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/repair/engine.py +0 -0
  351. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/repair/git_patcher.py +0 -0
  352. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/repair/history.py +0 -0
  353. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/repair/llm_repair_engine.py +0 -0
  354. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/repair/loop.py +0 -0
  355. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/repair/primary_picker.py +0 -0
  356. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/repair/proof_breaks.py +0 -0
  357. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/repair/repair_result.py +0 -0
  358. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/repair/repairability_classifier.py +0 -0
  359. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/repair/schema.py +0 -0
  360. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/repair/templates/analyze_meta.md +0 -0
  361. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/repair/templates/propose_meta.md +0 -0
  362. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/repair/templates/repair_strategy_meta.md +0 -0
  363. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/repair/templates/repairability_meta.md +0 -0
  364. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/repair/verify_runner.py +0 -0
  365. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/repair_slice.py +0 -0
  366. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/require.py +0 -0
  367. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/require_plugins.py +0 -0
  368. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/require_propagate.py +0 -0
  369. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/required_artifacts/defaults/cli.yaml +0 -0
  370. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/required_artifacts/defaults/iot.yaml +0 -0
  371. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/required_artifacts/defaults/mobile.yaml +0 -0
  372. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/required_artifacts/defaults/web.yaml +0 -0
  373. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/required_artifacts_deriver.py +0 -0
  374. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/requirement_completeness/defaults/cli.yaml +0 -0
  375. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/requirement_completeness/defaults/iot.yaml +0 -0
  376. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/requirement_completeness/defaults/mobile.yaml +0 -0
  377. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/requirement_completeness/defaults/web.yaml +0 -0
  378. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/requirement_completeness_auditor.py +0 -0
  379. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/restore.py +0 -0
  380. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/routes_extractor.py +0 -0
  381. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/scanner.py +0 -0
  382. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/schema_refs.py +0 -0
  383. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/screen_flow_validator.py +0 -0
  384. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/screen_transition_extractor.py +0 -0
  385. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/screen_transitions/defaults.yaml +0 -0
  386. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/synth.py +0 -0
  387. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/templates/codd.yaml.tmpl +0 -0
  388. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/templates/conventions.yaml.tmpl +0 -0
  389. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/templates/data_dependencies.yaml.tmpl +0 -0
  390. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/templates/doc_links.yaml.tmpl +0 -0
  391. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/templates/extract_ai_prompt_baseline.md +0 -0
  392. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/templates/extracted/api-contract.md.j2 +0 -0
  393. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/templates/extracted/architecture-overview.md.j2 +0 -0
  394. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/templates/extracted/module-detail.md.j2 +0 -0
  395. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/templates/extracted/schema-design.md.j2 +0 -0
  396. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/templates/extracted/system-context.md.j2 +0 -0
  397. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/templates/gitignore.tmpl +0 -0
  398. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/templates/lexicon_questions.md +0 -0
  399. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/templates/lexicon_schema.yaml +0 -0
  400. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/templates/overrides.yaml.tmpl +0 -0
  401. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/traceability.py +0 -0
  402. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/validator.py +0 -0
  403. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/watch/__init__.py +0 -0
  404. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/watch/events.py +0 -0
  405. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/watch/propagation_log.py +0 -0
  406. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/watch/propagation_pipeline.py +0 -0
  407. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/watch/test_runner.py +0 -0
  408. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/watch/watcher.py +0 -0
  409. {codd_dev-1.40.0 → codd_dev-1.41.0}/codd/wiring.py +0 -0
  410. {codd_dev-1.40.0 → codd_dev-1.41.0}/docs/cookbook/cdp_browser/README.md +0 -0
  411. {codd_dev-1.40.0 → codd_dev-1.41.0}/docs/requirements/README.md +0 -0
  412. {codd_dev-1.40.0 → codd_dev-1.41.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.40.0
3
+ Version: 1.41.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
@@ -1,3 +1,3 @@
1
1
  """CoDD — Coherence-Driven Development."""
2
2
 
3
- __version__ = "1.30.0"
3
+ __version__ = "1.41.0"
@@ -458,7 +458,19 @@ def _format_preflight_ntfy(result: Any) -> str:
458
458
  default="codd",
459
459
  help="Name of the CoDD config directory (default: codd). Use .codd when codd/ is your source directory.",
460
460
  )
461
- def init(project_name: str, language: str, dest: str, requirements: str | None, config_dir: str):
461
+ @click.option(
462
+ "--suggest-lexicons/--no-suggest-lexicons",
463
+ default=True,
464
+ help="Detect project manifests and offer lexicon plug-in suggestions.",
465
+ )
466
+ def init(
467
+ project_name: str,
468
+ language: str,
469
+ dest: str,
470
+ requirements: str | None,
471
+ config_dir: str,
472
+ suggest_lexicons: bool,
473
+ ):
462
474
  """Initialize CoDD in a project directory."""
463
475
  dest_path = Path(dest).resolve()
464
476
  codd_dir = dest_path / config_dir
@@ -508,6 +520,44 @@ def init(project_name: str, language: str, dest: str, requirements: str | None,
508
520
  click.echo(f" codd init --requirements your-spec.md --dest .")
509
521
  click.echo(f" or: codd generate --wave 2 (auto-generates everything)")
510
522
 
523
+ if suggest_lexicons:
524
+ _offer_lexicon_suggestions(dest_path)
525
+
526
+
527
+ def _offer_lexicon_suggestions(project_root: Path) -> None:
528
+ from codd.init.lexicon_suggest import (
529
+ append_suggested_lexicons,
530
+ describe_lexicons,
531
+ load_stack_map,
532
+ suggest_lexicons,
533
+ )
534
+ from codd.init.stack_detector import StackDetector
535
+
536
+ detection = StackDetector().detect(project_root)
537
+ if not detection.stack_hints:
538
+ return
539
+
540
+ suggestions = suggest_lexicons(detection.stack_hints, load_stack_map())
541
+ if not suggestions:
542
+ return
543
+
544
+ descriptions = describe_lexicons(suggestions)
545
+ click.echo("")
546
+ click.echo(f"Detected signals: {', '.join(detection.detected_signals)}")
547
+ click.echo(f"Detected hints: {', '.join(detection.stack_hints)}")
548
+ click.echo("Suggested lexicons:")
549
+ for lexicon_id in suggestions:
550
+ description = descriptions.get(lexicon_id, "")
551
+ suffix = f" ({description})" if description else ""
552
+ click.echo(f" - {lexicon_id}{suffix}")
553
+
554
+ if not click.confirm(f"Add to {LEXICON_FILENAME}?", default=True):
555
+ click.echo("Suggested lexicons not added.")
556
+ return
557
+ path = append_suggested_lexicons(project_root, suggestions)
558
+ rel_path = path.relative_to(project_root).as_posix()
559
+ click.echo(f"{rel_path} updated ({len(suggestions)} suggested lexicons)")
560
+
511
561
 
512
562
  @main.command()
513
563
  @click.option("--path", default=".", help="Project root directory")
@@ -0,0 +1,2 @@
1
+ """Initialization helpers for CoDD project setup."""
2
+
@@ -0,0 +1,117 @@
1
+ """Suggest lexicon plug-ins from generic stack detection results."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from collections.abc import Iterable, Sequence
6
+ from dataclasses import dataclass
7
+ from pathlib import Path
8
+ from typing import Any
9
+ import re
10
+
11
+ import yaml
12
+
13
+ from codd.lexicon import LEXICON_FILENAME
14
+
15
+
16
+ @dataclass(frozen=True)
17
+ class StackMapEntry:
18
+ hint_pattern: str
19
+ suggested_lexicons: tuple[str, ...]
20
+
21
+
22
+ def default_stack_map_path() -> Path:
23
+ return Path(__file__).resolve().parents[2] / "codd_plugins" / "stack_map.yaml"
24
+
25
+
26
+ def default_lexicon_root() -> Path:
27
+ return Path(__file__).resolve().parents[2] / "codd_plugins" / "lexicons"
28
+
29
+
30
+ def load_stack_map(path: Path | None = None) -> list[StackMapEntry]:
31
+ source = path or default_stack_map_path()
32
+ payload = yaml.safe_load(source.read_text(encoding="utf-8")) or {}
33
+ rows = payload.get("stack_map", [])
34
+ if not isinstance(rows, list):
35
+ raise ValueError("stack_map.yaml must contain a stack_map list")
36
+ entries: list[StackMapEntry] = []
37
+ for row in rows:
38
+ if not isinstance(row, dict):
39
+ raise ValueError("stack_map entries must be mappings")
40
+ pattern = str(row.get("hint_pattern", "")).strip()
41
+ lexicons = tuple(str(item).strip() for item in row.get("suggested_lexicons", []) if str(item).strip())
42
+ if not pattern or not lexicons:
43
+ raise ValueError("stack_map entries require hint_pattern and suggested_lexicons")
44
+ re.compile(pattern)
45
+ entries.append(StackMapEntry(pattern, lexicons))
46
+ return entries
47
+
48
+
49
+ def suggest_lexicons(stack_hints: Sequence[str], entries: Sequence[StackMapEntry]) -> list[str]:
50
+ suggested: list[str] = []
51
+ seen: set[str] = set()
52
+ for hint in stack_hints:
53
+ for entry in entries:
54
+ if not re.search(entry.hint_pattern, hint, flags=re.IGNORECASE):
55
+ continue
56
+ for lexicon in entry.suggested_lexicons:
57
+ if lexicon in seen:
58
+ continue
59
+ seen.add(lexicon)
60
+ suggested.append(lexicon)
61
+ return suggested
62
+
63
+
64
+ def describe_lexicons(lexicon_ids: Iterable[str], lexicon_root: Path | None = None) -> dict[str, str]:
65
+ root = lexicon_root or default_lexicon_root()
66
+ descriptions: dict[str, str] = {}
67
+ for lexicon_id in lexicon_ids:
68
+ manifest = root / lexicon_id / "manifest.yaml"
69
+ if not manifest.is_file():
70
+ descriptions[lexicon_id] = ""
71
+ continue
72
+ payload = yaml.safe_load(manifest.read_text(encoding="utf-8")) or {}
73
+ descriptions[lexicon_id] = str(payload.get("description", ""))
74
+ return descriptions
75
+
76
+
77
+ def append_suggested_lexicons(project_root: Path, lexicon_ids: Sequence[str]) -> Path:
78
+ path = Path(project_root) / LEXICON_FILENAME
79
+ data = _load_project_lexicon(path)
80
+ current = data.get("suggested_lexicons", [])
81
+ if not isinstance(current, list):
82
+ raise ValueError("project_lexicon.yaml suggested_lexicons must be a list")
83
+ known = {_lexicon_id(item) for item in current}
84
+ merged = list(current)
85
+ for lexicon_id in lexicon_ids:
86
+ if lexicon_id in known:
87
+ continue
88
+ merged.append(lexicon_id)
89
+ known.add(lexicon_id)
90
+ data["suggested_lexicons"] = merged
91
+ path.write_text(yaml.safe_dump(data, sort_keys=False, allow_unicode=True), encoding="utf-8")
92
+ return path
93
+
94
+
95
+ def _load_project_lexicon(path: Path) -> dict[str, Any]:
96
+ if path.is_file():
97
+ payload = yaml.safe_load(path.read_text(encoding="utf-8")) or {}
98
+ if not isinstance(payload, dict):
99
+ raise ValueError("project_lexicon.yaml must contain a YAML mapping")
100
+ return payload
101
+ return {
102
+ "version": "1.0",
103
+ "node_vocabulary": [],
104
+ "naming_conventions": [],
105
+ "design_principles": [
106
+ "Review suggested lexicons before treating project conventions as approved.",
107
+ ],
108
+ }
109
+
110
+
111
+ def _lexicon_id(item: Any) -> str:
112
+ if isinstance(item, str):
113
+ return item
114
+ if isinstance(item, dict):
115
+ return str(item.get("id", item.get("name", item.get("lexicon_name", ""))))
116
+ return str(item)
117
+
@@ -0,0 +1,170 @@
1
+ """Generic stack signal detection from common project manifests."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from collections.abc import Callable, Iterable, Mapping
6
+ from dataclasses import dataclass
7
+ import json
8
+ import re
9
+ from pathlib import Path
10
+ from typing import Any
11
+
12
+ try: # pragma: no cover - Python 3.10 fallback.
13
+ import tomllib
14
+ except ModuleNotFoundError: # pragma: no cover
15
+ import tomli as tomllib # type: ignore[no-redef]
16
+
17
+
18
+ @dataclass(frozen=True)
19
+ class StackDetection:
20
+ detected_signals: list[str]
21
+ stack_hints: list[str]
22
+
23
+
24
+ class StackDetector:
25
+ """Detect package-manager signals without encoding product knowledge."""
26
+
27
+ def detect(self, project_root: Path) -> StackDetection:
28
+ root = Path(project_root)
29
+ signals: list[str] = []
30
+ hints: list[str] = []
31
+ for name, extractor in _MANIFEST_EXTRACTORS.items():
32
+ path = root / name
33
+ if not path.is_file():
34
+ continue
35
+ signals.append(name)
36
+ hints.extend(extractor(path))
37
+ return StackDetection(detected_signals=signals, stack_hints=_unique(hints))
38
+
39
+
40
+ def _package_json(path: Path) -> Iterable[str]:
41
+ data = _load_json_mapping(path)
42
+ for key in ("dependencies", "devDependencies", "peerDependencies", "optionalDependencies"):
43
+ yield from _mapping_keys(data.get(key))
44
+
45
+
46
+ def _composer_json(path: Path) -> Iterable[str]:
47
+ data = _load_json_mapping(path)
48
+ for key in ("require", "require-dev"):
49
+ yield from _mapping_keys(data.get(key))
50
+
51
+
52
+ def _requirements_txt(path: Path) -> Iterable[str]:
53
+ for raw_line in path.read_text(encoding="utf-8").splitlines():
54
+ line = raw_line.split("#", 1)[0].strip()
55
+ if not line or line.startswith(("-", "git+", "http://", "https://")):
56
+ egg = re.search(r"(?:^|[&#])egg=([A-Za-z0-9_.-]+)", raw_line)
57
+ if egg:
58
+ yield egg.group(1)
59
+ continue
60
+ match = re.match(r"([A-Za-z0-9_.-]+)", line)
61
+ if match:
62
+ yield match.group(1)
63
+
64
+
65
+ def _pyproject_toml(path: Path) -> Iterable[str]:
66
+ data = _load_toml_mapping(path)
67
+ project = data.get("project", {})
68
+ if isinstance(project, Mapping):
69
+ for item in _as_list(project.get("dependencies")):
70
+ yield from _requirement_name(item)
71
+ for group in _mapping_values(project.get("optional-dependencies")):
72
+ for item in _as_list(group):
73
+ yield from _requirement_name(item)
74
+ tool = data.get("tool", {})
75
+ if isinstance(tool, Mapping):
76
+ poetry = tool.get("poetry", {})
77
+ if isinstance(poetry, Mapping):
78
+ yield from _mapping_keys(poetry.get("dependencies"), exclude={"python"})
79
+ yield from _mapping_keys(poetry.get("dev-dependencies"), exclude={"python"})
80
+ for group in _mapping_values(data.get("dependency-groups")):
81
+ for item in _as_list(group):
82
+ yield from _requirement_name(item)
83
+
84
+
85
+ def _go_mod(path: Path) -> Iterable[str]:
86
+ for line in path.read_text(encoding="utf-8").splitlines():
87
+ stripped = line.strip()
88
+ if not stripped or stripped.startswith(("//", "module ", ")")):
89
+ continue
90
+ if stripped.startswith("require "):
91
+ stripped = stripped.removeprefix("require ").strip()
92
+ name = stripped.split()[0] if stripped.split() else ""
93
+ if "/" in name:
94
+ yield name
95
+
96
+
97
+ def _cargo_toml(path: Path) -> Iterable[str]:
98
+ data = _load_toml_mapping(path)
99
+ for key in ("dependencies", "dev-dependencies", "build-dependencies"):
100
+ yield from _mapping_keys(data.get(key))
101
+ workspace = data.get("workspace", {})
102
+ if isinstance(workspace, Mapping):
103
+ yield from _mapping_keys(workspace.get("dependencies"))
104
+
105
+
106
+ def _gemfile(path: Path) -> Iterable[str]:
107
+ for match in re.finditer(r"\bgem\s+['\"]([^'\"]+)['\"]", path.read_text(encoding="utf-8")):
108
+ yield match.group(1)
109
+
110
+
111
+ def _pom_xml(path: Path) -> Iterable[str]:
112
+ for match in re.finditer(r"<artifactId>\s*([^<\s]+)\s*</artifactId>", path.read_text(encoding="utf-8")):
113
+ yield match.group(1)
114
+
115
+
116
+ def _load_json_mapping(path: Path) -> Mapping[str, Any]:
117
+ data = json.loads(path.read_text(encoding="utf-8"))
118
+ return data if isinstance(data, Mapping) else {}
119
+
120
+
121
+ def _load_toml_mapping(path: Path) -> Mapping[str, Any]:
122
+ data = tomllib.loads(path.read_text(encoding="utf-8"))
123
+ return data if isinstance(data, Mapping) else {}
124
+
125
+
126
+ def _mapping_keys(value: Any, *, exclude: set[str] | None = None) -> Iterable[str]:
127
+ if not isinstance(value, Mapping):
128
+ return []
129
+ skipped = exclude or set()
130
+ return [str(key) for key in value if str(key) not in skipped]
131
+
132
+
133
+ def _mapping_values(value: Any) -> Iterable[Any]:
134
+ return value.values() if isinstance(value, Mapping) else []
135
+
136
+
137
+ def _as_list(value: Any) -> list[Any]:
138
+ return value if isinstance(value, list) else []
139
+
140
+
141
+ def _requirement_name(value: Any) -> Iterable[str]:
142
+ if not isinstance(value, str):
143
+ return []
144
+ match = re.match(r"\s*([A-Za-z0-9_.-]+)", value)
145
+ return [match.group(1)] if match else []
146
+
147
+
148
+ def _unique(values: Iterable[str]) -> list[str]:
149
+ seen: set[str] = set()
150
+ result: list[str] = []
151
+ for value in values:
152
+ hint = value.strip().lower()
153
+ if not hint or hint in seen:
154
+ continue
155
+ seen.add(hint)
156
+ result.append(hint)
157
+ return result
158
+
159
+
160
+ _MANIFEST_EXTRACTORS: dict[str, Callable[[Path], Iterable[str]]] = {
161
+ "package.json": _package_json,
162
+ "requirements.txt": _requirements_txt,
163
+ "pyproject.toml": _pyproject_toml,
164
+ "go.mod": _go_mod,
165
+ "Cargo.toml": _cargo_toml,
166
+ "Gemfile": _gemfile,
167
+ "pom.xml": _pom_xml,
168
+ "composer.json": _composer_json,
169
+ }
170
+
@@ -0,0 +1,19 @@
1
+ # EU AI Act Governance Coverage Matrix
2
+
3
+ Source: Regulation (EU) 2024/1689 on artificial intelligence.
4
+
5
+ | Axis | Covered when | Implicit when | Gap when |
6
+ | --- | --- | --- | --- |
7
+ | `Classification rules for high-risk AI systems` | The AI system's risk class, Annex III relevance, and significant-risk reasoning are stated. | The material explicitly states no AI system is being placed on the market, put into service, or deployed. | AI features exist but risk class or high-risk reasoning is absent. |
8
+ | `Prohibited AI practices` | The design excludes or mitigates Article 5 practices such as manipulation, vulnerability exploitation, social scoring, or banned biometric uses. | The material describes non-AI automation with no AI inference or targeting. | AI behavior could intersect Article 5 but no prohibition check is stated. |
9
+ | `Requirements for high-risk AI systems` | Risk management, data governance, technical documentation, logging, transparency to deployers, accuracy, robustness, and cybersecurity are specified. | The system is explicitly not high-risk and the classification rationale is documented. | A high-risk or likely high-risk system lacks Section 2 requirement coverage. |
10
+ | `Human oversight` | Natural-person oversight, intervention, interpretation, and misuse handling are specified. | The system has no autonomous recommendation, prediction, or decision support. | AI outputs affect people but oversight is not described. |
11
+ | `Transparency obligations for providers and deployers of certain AI systems` | AI interaction notices, synthetic-content labeling, emotion-recognition disclosure, and deployer communications are specified where applicable. | No user-facing AI, synthetic content, or listed transparency scenario exists. | Users or affected persons may encounter AI or synthetic content without disclosure rules. |
12
+ | `General-purpose AI models` | GPAI scope, documentation, downstream information, copyright policy, and systemic-risk obligations are specified. | The system uses no GPAI model and does not distribute a model. | A foundation, general-purpose, or reusable model is used or provided without GPAI duties. |
13
+ | `Conformity assessment` | Required assessment route, internal control or notified-body path, CE/declaration artifacts, and significant-change triggers are specified. | The system is not subject to high-risk conformity assessment and that conclusion is documented. | High-risk placement, service, or major change lacks conformity assessment. |
14
+ | `Post-market monitoring by providers and post-market monitoring plan` | Monitoring plan, lifecycle metrics, incident capture, serious-incident reporting, and corrective action are specified. | The system is not placed on market or operated as an AI system after release. | AI system operation continues after release without monitoring or incident handling. |
15
+ | `Fundamental rights impact assessment for high-risk AI systems` | FRIA scope, affected groups, risks, mitigations, and deployer responsibilities are specified. | No high-risk deployer context applies and the reason is documented. | High-risk deployment by an in-scope deployer lacks fundamental-rights impact review. |
16
+ | `Governance at Union and national level` | AI literacy, accountable roles, competent-authority contact, market-surveillance response, and governance escalation are specified. | A non-AI internal tool has no external governance interface. | AI obligations exist but owner, literacy, or authority interface is missing. |
17
+
18
+ Reviewers should classify each axis as `covered`, `implicit`, or `gap`.
19
+ Findings are emitted only for `gap`.
@@ -0,0 +1,54 @@
1
+ ---
2
+ extends: codd/elicit/templates/elicit_prompt_L0.md
3
+ lexicon_name: ai_governance_eu_act
4
+ observation_dimensions: 10
5
+ ---
6
+
7
+ # EU AI Act Governance Observation Dimensions
8
+
9
+ Apply the base elicitation prompt, then inspect requirements and design notes
10
+ through these EU AI Act dimensions:
11
+
12
+ 1. `Classification rules for high-risk AI systems`
13
+ 2. `Prohibited AI practices`
14
+ 3. `Requirements for high-risk AI systems`
15
+ 4. `Human oversight`
16
+ 5. `Transparency obligations for providers and deployers of certain AI systems`
17
+ 6. `General-purpose AI models`
18
+ 7. `Conformity assessment`
19
+ 8. `Post-market monitoring by providers and post-market monitoring plan`
20
+ 9. `Fundamental rights impact assessment for high-risk AI systems`
21
+ 10. `Governance at Union and national level`
22
+
23
+ For each dimension, classify coverage as:
24
+
25
+ - `covered`: requirements explicitly state the EU AI Act obligation, risk class,
26
+ workflow, evidence artifact, or documented non-applicability.
27
+ - `implicit`: the described feature is not an AI system, not high-risk, not GPAI,
28
+ or not in the relevant provider/deployer context, and the non-applicability is
29
+ clear from the material.
30
+ - `gap`: AI functionality exists and the dimension can affect legality,
31
+ fundamental rights, safety, transparency, or lifecycle controls.
32
+
33
+ Emit findings only for dimensions classified as `gap`. Include the dimension in
34
+ `details.dimension`, the AI feature or omission signal in `details.evidence`,
35
+ and a reviewer-facing question in `question`.
36
+
37
+ ## Coverage-check examples
38
+
39
+ - `covered`: A hiring-screening AI design states Annex III high-risk
40
+ classification, Article 5 exclusion checks, risk management, training-data
41
+ governance, human reviewer workflow, FRIA, conformity assessment, and
42
+ post-market monitoring; classify the high-risk dimensions as `covered`.
43
+ - `implicit`: A deterministic invoice-number formatter uses no model,
44
+ inference, profiling, or generated content; classify the AI Act dimensions as
45
+ `implicit`.
46
+ - `gap`: A chatbot generates user-facing legal guidance with a general-purpose
47
+ model but lacks AI disclosure, model documentation, risk classification, and
48
+ monitoring; classify `Transparency obligations for providers and deployers of
49
+ certain AI systems`, `General-purpose AI models`, `Classification rules for
50
+ high-risk AI systems`, and `Post-market monitoring by providers and
51
+ post-market monitoring plan` as `gap`.
52
+
53
+ Use recommended kinds as guidance. Do not invent dimensions outside the ten
54
+ listed above.
@@ -0,0 +1,177 @@
1
+ coverage_axes:
2
+ - axis_type: "Classification rules for high-risk AI systems"
3
+ rationale: "EU AI Act Article 6 defines classification rules for high-risk AI systems and Annex III categories."
4
+ criticality_default: critical
5
+ variants:
6
+ - id: "high-risk AI system"
7
+ label: "High-risk AI system classification"
8
+ attributes: {source: "Article 6", source_literal: "high-risk AI system"}
9
+ criticality: critical
10
+ - id: "Annex III"
11
+ label: "Annex III high-risk area"
12
+ attributes: {source: "Article 6(2)", source_literal: "Annex III"}
13
+ criticality: critical
14
+ - id: "significant risk"
15
+ label: "Significant-risk assessment"
16
+ attributes: {source: "Article 6(3)", source_literal: "significant risk"}
17
+ criticality: high
18
+ - axis_type: "Prohibited AI practices"
19
+ rationale: "EU AI Act Chapter II Article 5 lists prohibited AI practices."
20
+ criticality_default: critical
21
+ variants:
22
+ - id: "subliminal techniques"
23
+ label: "Subliminal, manipulative, or deceptive techniques"
24
+ attributes: {source: "Article 5(1)(a)", source_literal: "subliminal techniques"}
25
+ criticality: critical
26
+ - id: "exploits any of the vulnerabilities"
27
+ label: "Exploitation of vulnerabilities"
28
+ attributes: {source: "Article 5(1)(b)", source_literal: "vulnerabilities"}
29
+ criticality: critical
30
+ - id: "social score"
31
+ label: "Social scoring"
32
+ attributes: {source: "Article 5(1)(c)", source_literal: "social score"}
33
+ criticality: critical
34
+ - id: "real-time remote biometric identification"
35
+ label: "Real-time remote biometric identification"
36
+ attributes: {source: "Article 5(1)(h)", source_literal: "real-time remote biometric identification"}
37
+ criticality: critical
38
+ - axis_type: "Requirements for high-risk AI systems"
39
+ rationale: "EU AI Act Section 2 Articles 8 to 15 sets requirements for high-risk AI systems."
40
+ criticality_default: high
41
+ variants:
42
+ - id: "risk management system"
43
+ label: "Risk management system"
44
+ attributes: {source: "Article 9", source_literal: "risk management system"}
45
+ criticality: high
46
+ - id: "data and data governance"
47
+ label: "Data and data governance"
48
+ attributes: {source: "Article 10", source_literal: "data governance"}
49
+ criticality: high
50
+ - id: "technical documentation"
51
+ label: "Technical documentation"
52
+ attributes: {source: "Article 11", source_literal: "technical documentation"}
53
+ criticality: high
54
+ - id: "record-keeping"
55
+ label: "Automatic logging and record-keeping"
56
+ attributes: {source: "Article 12", source_literal: "record-keeping"}
57
+ criticality: medium
58
+ - id: "accuracy, robustness and cybersecurity"
59
+ label: "Accuracy, robustness, and cybersecurity"
60
+ attributes: {source: "Article 15", source_literal: "accuracy, robustness and cybersecurity"}
61
+ criticality: high
62
+ - axis_type: "Human oversight"
63
+ rationale: "EU AI Act Article 14 requires high-risk AI systems to be designed for effective oversight by natural persons."
64
+ criticality_default: high
65
+ variants:
66
+ - id: "human oversight"
67
+ label: "Human oversight"
68
+ attributes: {source: "Article 14", source_literal: "human oversight"}
69
+ criticality: high
70
+ - id: "human-machine interface tools"
71
+ label: "Human-machine interface support"
72
+ attributes: {source: "Article 14(1)", source_literal: "human-machine interface tools"}
73
+ criticality: medium
74
+ - id: "reasonably foreseeable misuse"
75
+ label: "Misuse risk oversight"
76
+ attributes: {source: "Article 14(2)", source_literal: "reasonably foreseeable misuse"}
77
+ criticality: high
78
+ - axis_type: "Transparency obligations for providers and deployers of certain AI systems"
79
+ rationale: "EU AI Act Article 50 defines transparency obligations for specified provider and deployer scenarios."
80
+ criticality_default: high
81
+ variants:
82
+ - id: "transparency obligations"
83
+ label: "Article 50 transparency obligations"
84
+ attributes: {source: "Article 50", source_literal: "transparency obligations"}
85
+ criticality: high
86
+ - id: "synthetic audio, image, video or text content"
87
+ label: "Synthetic content disclosure"
88
+ attributes: {source: "Article 50", source_literal: "synthetic audio, image, video or text content"}
89
+ criticality: high
90
+ - id: "emotion recognition system"
91
+ label: "Emotion recognition transparency"
92
+ attributes: {source: "Article 50", source_literal: "emotion recognition system"}
93
+ criticality: medium
94
+ - axis_type: "General-purpose AI models"
95
+ rationale: "EU AI Act Chapter V and Articles 53 to 55 define obligations for providers of general-purpose AI models."
96
+ criticality_default: high
97
+ variants:
98
+ - id: "general-purpose AI model"
99
+ label: "GPAI model scope"
100
+ attributes: {source: "Chapter V", source_literal: "general-purpose AI model"}
101
+ criticality: high
102
+ - id: "technical documentation"
103
+ label: "GPAI technical documentation"
104
+ attributes: {source: "Article 53(1)(a)", source_literal: "technical documentation"}
105
+ criticality: high
106
+ - id: "systemic risk"
107
+ label: "Systemic-risk GPAI model"
108
+ attributes: {source: "Article 55", source_literal: "systemic risk"}
109
+ criticality: critical
110
+ - axis_type: "Conformity assessment"
111
+ rationale: "EU AI Act Article 43 requires conformity assessment before placing certain high-risk AI systems on the market or putting them into service."
112
+ criticality_default: high
113
+ variants:
114
+ - id: "conformity assessment"
115
+ label: "Conformity assessment procedure"
116
+ attributes: {source: "Article 43", source_literal: "conformity assessment"}
117
+ criticality: high
118
+ - id: "internal control"
119
+ label: "Internal control route"
120
+ attributes: {source: "Article 43 / Annex VI", source_literal: "internal control"}
121
+ criticality: medium
122
+ - id: "EU declaration of conformity"
123
+ label: "EU declaration of conformity"
124
+ attributes: {source: "Article 47", source_literal: "EU declaration of conformity"}
125
+ criticality: medium
126
+ - axis_type: "Post-market monitoring by providers and post-market monitoring plan"
127
+ rationale: "EU AI Act Article 72 requires providers to establish and document post-market monitoring for high-risk AI systems."
128
+ criticality_default: high
129
+ variants:
130
+ - id: "post-market monitoring"
131
+ label: "Post-market monitoring"
132
+ attributes: {source: "Article 72", source_literal: "post-market monitoring"}
133
+ criticality: high
134
+ - id: "post-market monitoring plan"
135
+ label: "Post-market monitoring plan"
136
+ attributes: {source: "Article 72", source_literal: "post-market monitoring plan"}
137
+ criticality: high
138
+ - id: "serious incident"
139
+ label: "Serious incident handling"
140
+ attributes: {source: "Article 73", source_literal: "serious incident"}
141
+ criticality: critical
142
+ - axis_type: "Fundamental rights impact assessment for high-risk AI systems"
143
+ rationale: "EU AI Act Article 27 requires specified deployers to carry out a fundamental rights impact assessment before using high-risk AI systems."
144
+ criticality_default: high
145
+ variants:
146
+ - id: "fundamental rights impact assessment"
147
+ label: "FRIA requirement"
148
+ attributes: {source: "Article 27", acronym: "FRIA"}
149
+ criticality: high
150
+ - id: "deployers of high-risk AI systems"
151
+ label: "Deployer FRIA scope"
152
+ attributes: {source: "Article 27", source_literal: "deployers of high-risk AI systems"}
153
+ criticality: high
154
+ - id: "risks to fundamental rights"
155
+ label: "Fundamental-rights risk identification"
156
+ attributes: {source: "Article 27", source_literal: "risks to fundamental rights"}
157
+ criticality: high
158
+ - axis_type: "Governance at Union and national level"
159
+ rationale: "EU AI Act Chapter VII establishes governance bodies, national competent authorities, market surveillance, and AI literacy expectations."
160
+ criticality_default: medium
161
+ variants:
162
+ - id: "AI Office"
163
+ label: "AI Office governance"
164
+ attributes: {source: "Chapter VII", source_literal: "AI Office"}
165
+ criticality: medium
166
+ - id: "European Artificial Intelligence Board"
167
+ label: "European AI Board governance"
168
+ attributes: {source: "Chapter VII", source_literal: "European Artificial Intelligence Board"}
169
+ criticality: medium
170
+ - id: "national competent authorities"
171
+ label: "National competent authority interface"
172
+ attributes: {source: "Chapter VII", source_literal: "national competent authorities"}
173
+ criticality: medium
174
+ - id: "AI literacy"
175
+ label: "AI literacy measures"
176
+ attributes: {source: "Article 4", source_literal: "AI literacy"}
177
+ criticality: medium
@@ -0,0 +1,18 @@
1
+ name: ai_governance_eu_act
2
+ lexicon_name: ai_governance_eu_act
3
+ version: "1.0.0"
4
+ source_url: "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R1689"
5
+ source_version: "Regulation (EU) 2024/1689, Official Journal 2024-07-12"
6
+ description: "EU AI Act governance coverage axes for AI systems, high-risk systems, GPAI, and deployer obligations."
7
+ observation_dimensions: 10
8
+ extends: "codd/elicit/templates/elicit_prompt_L0.md"
9
+ prompt_extension: "elicit_extend.md"
10
+ recommended_kinds: "recommended_kinds.yaml"
11
+ lexicon: "lexicon.yaml"
12
+ severity_rules: "severity_rules.yaml"
13
+ coverage_matrix: "coverage_matrix.md"
14
+ references:
15
+ - title: "Regulation (EU) 2024/1689 on artificial intelligence"
16
+ url: "https://eur-lex.europa.eu/eli/reg/2024/1689/oj"
17
+ - title: "EUR-Lex CELEX 32024R1689"
18
+ url: "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R1689"
@@ -0,0 +1,11 @@
1
+ recommended_kinds:
2
+ - ai_risk_classification_gap
3
+ - prohibited_ai_practice_gap
4
+ - high_risk_requirement_gap
5
+ - human_oversight_gap
6
+ - ai_transparency_gap
7
+ - gpai_obligation_gap
8
+ - conformity_assessment_gap
9
+ - post_market_monitoring_gap
10
+ - fundamental_rights_impact_gap
11
+ - ai_governance_authority_gap