cfa-kernel 0.1.9__tar.gz → 1.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 (243) hide show
  1. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/.gitignore +1 -4
  2. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/PKG-INFO +39 -18
  3. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/README.md +38 -17
  4. cfa_kernel-1.0.0/ROADMAP.md +377 -0
  5. cfa_kernel-1.0.0/SECURITY.md +131 -0
  6. cfa_kernel-1.0.0/demos/cfa_demo_complete.dbc +0 -0
  7. cfa_kernel-1.0.0/demos/cfa_demo_complete.py +823 -0
  8. cfa_kernel-1.0.0/demos/cfa_llm_demo_complete.dbc +0 -0
  9. cfa_kernel-1.0.0/demos/cfa_llm_demo_complete.py +727 -0
  10. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/pyproject.toml +1 -1
  11. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/__init__.py +1 -1
  12. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/audit/context.py +206 -205
  13. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/audit/hashing.py +42 -41
  14. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/core/__init__.py +1 -0
  15. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/core/codegen.py +66 -65
  16. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/core/conditions.py +131 -130
  17. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/core/kernel.py +1 -1
  18. cfa_kernel-1.0.0/src/cfa/core/phases/__init__.py +1 -0
  19. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/core/planner.py +291 -290
  20. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/execution/partial.py +340 -339
  21. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/execution/state_projection.py +217 -216
  22. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/governance/__init__.py +77 -76
  23. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/normalizer/base.py +442 -441
  24. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/observability/metrics.py +92 -91
  25. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/observability/notify.py +80 -79
  26. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/observability/otel.py +82 -81
  27. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/observability/promotion.py +2 -2
  28. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/policy/__init__.py +1 -0
  29. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/reporting/engine.py +1 -1
  30. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/resolution/__init__.py +63 -62
  31. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/sandbox/executor.py +93 -92
  32. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/sandbox/mock.py +90 -89
  33. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/sandbox/panic.py +53 -52
  34. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/validation/runtime.py +286 -285
  35. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/validation/signature.py +147 -146
  36. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/validation/static.py +253 -252
  37. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/docs/api.md +1 -1
  38. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/docs/faq.md +2 -2
  39. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/docs/guide.md +299 -299
  40. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/docs/integrations/langgraph.md +145 -145
  41. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/docs/integrations/openai-agents.md +143 -143
  42. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/docs/intro.md +1 -1
  43. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/docs/policy-bundles.md +94 -94
  44. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/docs/whitepaper.md +3 -3
  45. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/docusaurus.config.ts +1 -1
  46. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/api.md +1 -1
  47. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/intro.md +1 -1
  48. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/whitepaper.md +1 -1
  49. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/sidebars.ts +1 -1
  50. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/src/pages/index.tsx +2 -2
  51. cfa_kernel-0.1.9/CFA_LLM_Demo.ipynb +0 -711
  52. cfa_kernel-0.1.9/CFA_LLM_Demo_fixed (1).dbc +0 -0
  53. cfa_kernel-0.1.9/CFA_LLM_Demo_fixed.dbc +0 -0
  54. cfa_kernel-0.1.9/CFA_LLM_Demo_fixed.py +0 -673
  55. cfa_kernel-0.1.9/SECURITY.md +0 -39
  56. cfa_kernel-0.1.9/cfa_demo_complete.ipynb +0 -971
  57. cfa_kernel-0.1.9/integrations/airflow-governance-gate/README.md +0 -134
  58. cfa_kernel-0.1.9/integrations/airflow-governance-gate/dags/cfa_governance_gate_demo.py +0 -79
  59. cfa_kernel-0.1.9/integrations/airflow-governance-gate/requirements.txt +0 -7
  60. cfa_kernel-0.1.9/integrations/airflow-governance-gate/src/governance_gate.py +0 -101
  61. cfa_kernel-0.1.9/src/cfa/core/phases/__init__.py +0 -0
  62. cfa_kernel-0.1.9/tests/test_airflow_governance_gate.py +0 -76
  63. cfa_kernel-0.1.9/website/docs/integrations/airflow.md +0 -164
  64. cfa_kernel-0.1.9/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/integrations/airflow.md +0 -42
  65. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/.gitattributes +0 -0
  66. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  67. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  68. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  69. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/.github/workflows/ci.yml +0 -0
  70. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/.github/workflows/deploy-docs.yml +0 -0
  71. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/.github/workflows/deploy-pypi.yml +0 -0
  72. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/.github/workflows/governance.yml +0 -0
  73. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/.uv-cache/.gitignore +0 -0
  74. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/.uv-cache/.lock +0 -0
  75. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/.uv-cache/CACHEDIR.TAG +0 -0
  76. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/.uv-cache/sdists-v9/.gitignore +0 -0
  77. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/CODE_OF_CONDUCT.md +0 -0
  78. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/CONTRIBUTING.md +0 -0
  79. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/LICENSE +0 -0
  80. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/MANUAL_TESTING_GUIDE.md +0 -0
  81. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/examples/cfa_demo.py +0 -0
  82. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/examples/fiscal_governance.yaml +0 -0
  83. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/examples/full_pipeline.py +0 -0
  84. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/examples/llm_systematizer.py +0 -0
  85. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/examples/runtime_gate.py +0 -0
  86. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/examples/standalone_governance.py +0 -0
  87. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/examples/standalone_lifecycle.py +0 -0
  88. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/examples/standalone_resolution.py +0 -0
  89. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/mcp.json +0 -0
  90. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/policies/compliance-strict-v1.yaml +0 -0
  91. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/policies/finops-strict-v1.yaml +0 -0
  92. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/policies/prod-v1.yaml +0 -0
  93. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/_lazy.py +0 -0
  94. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/adapters/__init__.py +0 -0
  95. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/adapters/autogen.py +0 -0
  96. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/adapters/crewai.py +0 -0
  97. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/adapters/dspy.py +0 -0
  98. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/adapters/langgraph.py +0 -0
  99. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/adapters/openai_agents.py +0 -0
  100. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/audit/__init__.py +0 -0
  101. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/audit/trail.py +0 -0
  102. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/backends/__init__.py +0 -0
  103. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/backends/dbt.py +0 -0
  104. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/backends/pyspark.py +0 -0
  105. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/backends/sql.py +0 -0
  106. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/behavior/__init__.py +0 -0
  107. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/behavior/llm.py +0 -0
  108. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/behavior/spec.py +0 -0
  109. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/behavior/systematizer.py +0 -0
  110. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/cli/__init__.py +0 -0
  111. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/cli/__main__.py +0 -0
  112. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/cli/_helpers.py +0 -0
  113. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/cli/core/__init__.py +0 -0
  114. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/cli/core/evaluate.py +0 -0
  115. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/cli/core/validate.py +0 -0
  116. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/cli/formatters.py +0 -0
  117. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/cli/governance/__init__.py +0 -0
  118. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/cli/governance/audit.py +0 -0
  119. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/cli/governance/catalog.py +0 -0
  120. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/cli/governance/policy.py +0 -0
  121. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/cli/governance/rules.py +0 -0
  122. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/cli/governance/signature.py +0 -0
  123. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/cli/infrastructure/__init__.py +0 -0
  124. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/cli/infrastructure/backend_list.py +0 -0
  125. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/cli/infrastructure/storage.py +0 -0
  126. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/cli/project/__init__.py +0 -0
  127. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/cli/project/init.py +0 -0
  128. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/cli/project/lifecycle.py +0 -0
  129. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/cli/project/status.py +0 -0
  130. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/cli/project/taxonomy.py +0 -0
  131. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/cli/reporting/__init__.py +0 -0
  132. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/cli/reporting/report.py +0 -0
  133. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/cli/reporting/serve.py +0 -0
  134. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/config.py +0 -0
  135. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/core/phases/runner.py +0 -0
  136. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/execution/__init__.py +0 -0
  137. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/lifecycle/__init__.py +0 -0
  138. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/mcp/__init__.py +0 -0
  139. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/mcp/__main__.py +0 -0
  140. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/normalizer/__init__.py +0 -0
  141. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/normalizer/llm.py +0 -0
  142. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/observability/__init__.py +0 -0
  143. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/observability/indices.py +0 -0
  144. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/policy/bundle.py +0 -0
  145. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/policy/catalog.py +0 -0
  146. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/policy/engine.py +0 -0
  147. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/reporting/__init__.py +0 -0
  148. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/reporting/charts.py +0 -0
  149. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/runtime/__init__.py +0 -0
  150. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/runtime/gate.py +0 -0
  151. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/sandbox/__init__.py +0 -0
  152. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/storage/__init__.py +0 -0
  153. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/testing/__init__.py +0 -0
  154. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/testing/asserts.py +0 -0
  155. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/testing/evaluate.py +0 -0
  156. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/testing/fixtures.py +0 -0
  157. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/testing/markers.py +0 -0
  158. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/types.py +0 -0
  159. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/src/cfa/validation/__init__.py +0 -0
  160. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/conftest.py +0 -0
  161. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_adapters.py +0 -0
  162. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_audit_persistent.py +0 -0
  163. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_behavior.py +0 -0
  164. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_behavior_llm.py +0 -0
  165. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_catalog.py +0 -0
  166. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_cli_validation.py +0 -0
  167. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_codegen.py +0 -0
  168. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_config.py +0 -0
  169. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_context.py +0 -0
  170. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_context_persistent.py +0 -0
  171. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_dbt_backend.py +0 -0
  172. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_hashing.py +0 -0
  173. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_indices.py +0 -0
  174. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_integration.py +0 -0
  175. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_intensive.py +0 -0
  176. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_kernel.py +0 -0
  177. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_mcp.py +0 -0
  178. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_metrics.py +0 -0
  179. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_normalizer.py +0 -0
  180. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_normalizer_llm.py +0 -0
  181. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_notify.py +0 -0
  182. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_otel.py +0 -0
  183. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_partial_execution.py +0 -0
  184. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_planner.py +0 -0
  185. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_policy.py +0 -0
  186. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_policy_bundle.py +0 -0
  187. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_promotion.py +0 -0
  188. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_reporting.py +0 -0
  189. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_runtime.py +0 -0
  190. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_runtime_validation.py +0 -0
  191. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_sandbox.py +0 -0
  192. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_serialization.py +0 -0
  193. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_signature.py +0 -0
  194. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_sql_backend.py +0 -0
  195. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_state_projection.py +0 -0
  196. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_static_validation.py +0 -0
  197. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_storage.py +0 -0
  198. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_testing.py +0 -0
  199. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_types.py +0 -0
  200. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/tests/test_user_journeys.py +0 -0
  201. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/.gitignore +0 -0
  202. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/README.md +0 -0
  203. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/blog/2019-05-28-first-blog-post.mdx +0 -0
  204. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/blog/2019-05-29-long-blog-post.mdx +0 -0
  205. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/blog/2021-08-01-mdx-blog-post.mdx +0 -0
  206. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg +0 -0
  207. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/blog/2021-08-26-welcome/index.mdx +0 -0
  208. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/blog/authors.yml +0 -0
  209. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/blog/tags.yml +0 -0
  210. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/docs/architecture-notes.md +0 -0
  211. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/docs/backends.md +0 -0
  212. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/docs/behavior-spec.md +0 -0
  213. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/docs/cli.md +0 -0
  214. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/docs/getting-started.md +0 -0
  215. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/docs/mcp-server.md +0 -0
  216. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/docs/reporting.md +0 -0
  217. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/i18n/pt-BR/code.json +0 -0
  218. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/architecture-notes.md +0 -0
  219. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/backends.md +0 -0
  220. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/behavior-spec.md +0 -0
  221. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/cli.md +0 -0
  222. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/faq.md +0 -0
  223. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/getting-started.md +0 -0
  224. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/guide.md +0 -0
  225. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/integrations/langgraph.md +0 -0
  226. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/integrations/openai-agents.md +0 -0
  227. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/mcp-server.md +0 -0
  228. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/policy-bundles.md +0 -0
  229. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/reporting.md +0 -0
  230. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/package-lock.json +0 -0
  231. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/package.json +0 -0
  232. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/src/components/HomepageFeatures/index.tsx +0 -0
  233. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/src/components/HomepageFeatures/styles.module.css +0 -0
  234. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/src/css/custom.css +0 -0
  235. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/src/pages/index.module.css +0 -0
  236. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/src/pages/markdown-page.mdx +0 -0
  237. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/static/.nojekyll +0 -0
  238. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/static/img/favicon.ico +0 -0
  239. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/static/img/logo.svg +0 -0
  240. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/static/img/undraw_docusaurus_mountain.svg +0 -0
  241. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/static/img/undraw_docusaurus_react.svg +0 -0
  242. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/static/img/undraw_docusaurus_tree.svg +0 -0
  243. {cfa_kernel-0.1.9 → cfa_kernel-1.0.0}/website/tsconfig.json +0 -0
@@ -71,7 +71,4 @@ cfa_test_results_*/
71
71
  test_battery.py
72
72
  uv.lock
73
73
 
74
- CFA_LLM_Demo.dbc
75
- CFA_LLM_Demo.html
76
- CFA_LLM_Demo.py
77
- CFA_LLM_Demo.ipynb.py
74
+ CFA_LLM_Demo_fixed*
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cfa-kernel
3
- Version: 0.1.9
3
+ Version: 1.0.0
4
4
  Summary: CFA — Governed execution for AI agents and data systems
5
5
  Project-URL: Homepage, https://marquesantero.github.io/cfa/
6
6
  Project-URL: Repository, https://github.com/marquesantero/cfa
@@ -38,12 +38,12 @@ Provides-Extra: yaml
38
38
  Requires-Dist: pyyaml>=6.0; extra == 'yaml'
39
39
  Description-Content-Type: text/markdown
40
40
 
41
- # CFA v0.1.9
41
+ # CFA v1.0.0
42
42
 
43
43
  [![CI](https://github.com/marquesantero/cfa/actions/workflows/ci.yml/badge.svg)](https://github.com/marquesantero/cfa/actions/workflows/ci.yml)
44
44
  [![codecov](https://codecov.io/github/marquesantero/cfa/graph/badge.svg?token=P5NFQBZGYT)](https://codecov.io/github/marquesantero/cfa)
45
45
  [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
46
- [![Tests](https://img.shields.io/badge/tests-536%20passed-brightgreen)](https://github.com/marquesantero/cfa/actions/workflows/ci.yml)
46
+ [![Tests](https://img.shields.io/badge/tests-534%20passed-brightgreen)](https://github.com/marquesantero/cfa/actions/workflows/ci.yml)
47
47
  [![PyPI](https://img.shields.io/pypi/v/cfa-kernel)](https://pypi.org/project/cfa-kernel/)
48
48
  [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-blue.svg)](https://www.python.org/)
49
49
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)
@@ -53,6 +53,8 @@ Description-Content-Type: text/markdown
53
53
 
54
54
  Instead of asking _"which agent or skill should act?"_, CFA asks _"which state transition is being requested, under which constraints, and can it be executed safely?"_ and produces a cryptographically verifiable decision.
55
55
 
56
+ > **Status:** alpha (`0.1.x`). APIs may shift between minor versions. Not yet recommended for unsupervised production use.
57
+
56
58
  ## Quick Start
57
59
 
58
60
  ```bash
@@ -105,20 +107,20 @@ CLI / MCP / Adapter / API
105
107
  Decision JSON / Audit Trail / OTel / Prometheus
106
108
  ```
107
109
 
108
- ## Key Differentiators
109
-
110
- | Feature | CFA | Others |
111
- |---------|-----|--------|
112
- | SHA-256 audit trail (tamper-evident) | | |
113
- | State projection between executions | | |
114
- | Lifecycle indices (IFo/IFs/IFg/IDI) | | |
115
- | REPLAN with auto-interventions | | |
116
- | Backend-agnostic (PySpark, SQL, dbt) | | |
117
- | Artifact hashing (catalog + policy + signature) | | |
118
- | MCP protocol for AI agents | | |
119
- | SQLite storage with retention management | | ❌ |
120
- | Config file with auto-discovery | | |
121
- | Zero runtime dependencies (core) | | |
110
+ ## Capabilities
111
+
112
+ | Capability | What it gives you |
113
+ |------------|-------------------|
114
+ | SHA-256 audit trail | Tamper-evident chain of decisions, verifiable offline (`cfa audit verify`) |
115
+ | State projection | Each execution carries the typed state of the prior one — no implicit globals |
116
+ | Lifecycle indices (IFo/IFs/IFg/IDI) | Quantifies how often an intent recurs, stabilizes, and qualifies for promotion to a reusable skill |
117
+ | REPLAN cycle | Failed policy checks emit a structured remediation, not a hard stop |
118
+ | Backend-agnostic codegen | Same signature compiles to PySpark, ANSI SQL, or dbt pluggable via `BackendRegistry` |
119
+ | Artifact hashing | Catalog, policy bundle, and signature are content-hashed and bound to every decision |
120
+ | MCP protocol | Any MCP-compatible agent can call CFA as a governance tool |
121
+ | SQLite + JSONL storage | First-class persistence with stats, retention cleanup, and vacuum |
122
+ | Config auto-discovery | `cfa.yaml` walked up the tree; all CLI commands respect it |
123
+ | Zero core dependencies | Optional extras for `yaml`, `otel`, `mcp`, `llm` — none required for the kernel |
122
124
 
123
125
  ## CLI
124
126
 
@@ -290,10 +292,14 @@ Expose CFA governance to any AI agent via Model Context Protocol:
290
292
  src/cfa/
291
293
  ├── core/ Kernel, Planner, CodeGen, Conditions, Phases
292
294
  ├── policy/ PolicyEngine, PolicyBundle, Catalog validation
295
+ ├── governance/ Standalone governance API (no LLM, no execution required)
293
296
  ├── validation/ Static, Runtime, Signature validation
297
+ ├── resolution/ Intent → StateSignature resolver (LLM or rule-based backend)
298
+ ├── normalizer/ Rule-based normalizer, LLM normalizer
299
+ ├── behavior/ BehaviorSpec + Systematizer (human intent → policy rules)
294
300
  ├── audit/ AuditTrail, Context, Hashing
295
301
  ├── observability/ Metrics, OTel, Notify, Indices, Promotion
296
- ├── normalizer/ Rule-based normalizer, LLM normalizer
302
+ ├── lifecycle/ IFo/IFs/IFg/IDI indices + Promotion/Demotion engine
297
303
  ├── execution/ Partial execution, State projection
298
304
  ├── adapters/ LangGraph, OpenAI, CrewAI, AutoGen, DSPy
299
305
  ├── backends/ PySpark, SQL, dbt (pluggable)
@@ -322,6 +328,21 @@ All documentation at **[marquesantero.github.io/cfa](https://marquesantero.githu
322
328
  - [Architecture Notes](https://marquesantero.github.io/cfa/docs/architecture-notes)
323
329
  - [FAQ](https://marquesantero.github.io/cfa/docs/faq)
324
330
 
331
+ ## Demos
332
+
333
+ Two complete notebooks, tested on Databricks with CFA v1.0.0, 0 errors:
334
+
335
+ | File | Format | Description |
336
+ |------|--------|-------------|
337
+ | `demos/cfa_demo_complete` | `.dbc` / `.py` | Rule-based governance — APPROVE, REPLAN, BLOCK, codegen, audit, storage |
338
+ | `demos/cfa_llm_demo_complete` | `.dbc` / `.py` | LLM-powered — semantic normalizer, systematizer, strict mode, compare |
339
+
340
+ Import the `.dbc` into Databricks or run the `.py` files anywhere.
341
+
342
+ ## Contributing
343
+
344
+ See [CONTRIBUTING.md](./CONTRIBUTING.md) for development setup, test conventions, and the PR checklist. By participating, you agree to the [Code of Conduct](./CODE_OF_CONDUCT.md). Security issues: see [SECURITY.md](./SECURITY.md).
345
+
325
346
  ## License
326
347
 
327
348
  [MIT](./LICENSE) · [Antero Marques](https://github.com/marquesantero)
@@ -1,9 +1,9 @@
1
- # CFA v0.1.9
1
+ # CFA v1.0.0
2
2
 
3
3
  [![CI](https://github.com/marquesantero/cfa/actions/workflows/ci.yml/badge.svg)](https://github.com/marquesantero/cfa/actions/workflows/ci.yml)
4
4
  [![codecov](https://codecov.io/github/marquesantero/cfa/graph/badge.svg?token=P5NFQBZGYT)](https://codecov.io/github/marquesantero/cfa)
5
5
  [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
6
- [![Tests](https://img.shields.io/badge/tests-536%20passed-brightgreen)](https://github.com/marquesantero/cfa/actions/workflows/ci.yml)
6
+ [![Tests](https://img.shields.io/badge/tests-534%20passed-brightgreen)](https://github.com/marquesantero/cfa/actions/workflows/ci.yml)
7
7
  [![PyPI](https://img.shields.io/pypi/v/cfa-kernel)](https://pypi.org/project/cfa-kernel/)
8
8
  [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-blue.svg)](https://www.python.org/)
9
9
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)
@@ -13,6 +13,8 @@
13
13
 
14
14
  Instead of asking _"which agent or skill should act?"_, CFA asks _"which state transition is being requested, under which constraints, and can it be executed safely?"_ and produces a cryptographically verifiable decision.
15
15
 
16
+ > **Status:** alpha (`0.1.x`). APIs may shift between minor versions. Not yet recommended for unsupervised production use.
17
+
16
18
  ## Quick Start
17
19
 
18
20
  ```bash
@@ -65,20 +67,20 @@ CLI / MCP / Adapter / API
65
67
  Decision JSON / Audit Trail / OTel / Prometheus
66
68
  ```
67
69
 
68
- ## Key Differentiators
69
-
70
- | Feature | CFA | Others |
71
- |---------|-----|--------|
72
- | SHA-256 audit trail (tamper-evident) | | |
73
- | State projection between executions | | |
74
- | Lifecycle indices (IFo/IFs/IFg/IDI) | | |
75
- | REPLAN with auto-interventions | | |
76
- | Backend-agnostic (PySpark, SQL, dbt) | | |
77
- | Artifact hashing (catalog + policy + signature) | | |
78
- | MCP protocol for AI agents | | |
79
- | SQLite storage with retention management | | ❌ |
80
- | Config file with auto-discovery | | |
81
- | Zero runtime dependencies (core) | | |
70
+ ## Capabilities
71
+
72
+ | Capability | What it gives you |
73
+ |------------|-------------------|
74
+ | SHA-256 audit trail | Tamper-evident chain of decisions, verifiable offline (`cfa audit verify`) |
75
+ | State projection | Each execution carries the typed state of the prior one — no implicit globals |
76
+ | Lifecycle indices (IFo/IFs/IFg/IDI) | Quantifies how often an intent recurs, stabilizes, and qualifies for promotion to a reusable skill |
77
+ | REPLAN cycle | Failed policy checks emit a structured remediation, not a hard stop |
78
+ | Backend-agnostic codegen | Same signature compiles to PySpark, ANSI SQL, or dbt pluggable via `BackendRegistry` |
79
+ | Artifact hashing | Catalog, policy bundle, and signature are content-hashed and bound to every decision |
80
+ | MCP protocol | Any MCP-compatible agent can call CFA as a governance tool |
81
+ | SQLite + JSONL storage | First-class persistence with stats, retention cleanup, and vacuum |
82
+ | Config auto-discovery | `cfa.yaml` walked up the tree; all CLI commands respect it |
83
+ | Zero core dependencies | Optional extras for `yaml`, `otel`, `mcp`, `llm` — none required for the kernel |
82
84
 
83
85
  ## CLI
84
86
 
@@ -250,10 +252,14 @@ Expose CFA governance to any AI agent via Model Context Protocol:
250
252
  src/cfa/
251
253
  ├── core/ Kernel, Planner, CodeGen, Conditions, Phases
252
254
  ├── policy/ PolicyEngine, PolicyBundle, Catalog validation
255
+ ├── governance/ Standalone governance API (no LLM, no execution required)
253
256
  ├── validation/ Static, Runtime, Signature validation
257
+ ├── resolution/ Intent → StateSignature resolver (LLM or rule-based backend)
258
+ ├── normalizer/ Rule-based normalizer, LLM normalizer
259
+ ├── behavior/ BehaviorSpec + Systematizer (human intent → policy rules)
254
260
  ├── audit/ AuditTrail, Context, Hashing
255
261
  ├── observability/ Metrics, OTel, Notify, Indices, Promotion
256
- ├── normalizer/ Rule-based normalizer, LLM normalizer
262
+ ├── lifecycle/ IFo/IFs/IFg/IDI indices + Promotion/Demotion engine
257
263
  ├── execution/ Partial execution, State projection
258
264
  ├── adapters/ LangGraph, OpenAI, CrewAI, AutoGen, DSPy
259
265
  ├── backends/ PySpark, SQL, dbt (pluggable)
@@ -282,6 +288,21 @@ All documentation at **[marquesantero.github.io/cfa](https://marquesantero.githu
282
288
  - [Architecture Notes](https://marquesantero.github.io/cfa/docs/architecture-notes)
283
289
  - [FAQ](https://marquesantero.github.io/cfa/docs/faq)
284
290
 
291
+ ## Demos
292
+
293
+ Two complete notebooks, tested on Databricks with CFA v1.0.0, 0 errors:
294
+
295
+ | File | Format | Description |
296
+ |------|--------|-------------|
297
+ | `demos/cfa_demo_complete` | `.dbc` / `.py` | Rule-based governance — APPROVE, REPLAN, BLOCK, codegen, audit, storage |
298
+ | `demos/cfa_llm_demo_complete` | `.dbc` / `.py` | LLM-powered — semantic normalizer, systematizer, strict mode, compare |
299
+
300
+ Import the `.dbc` into Databricks or run the `.py` files anywhere.
301
+
302
+ ## Contributing
303
+
304
+ See [CONTRIBUTING.md](./CONTRIBUTING.md) for development setup, test conventions, and the PR checklist. By participating, you agree to the [Code of Conduct](./CODE_OF_CONDUCT.md). Security issues: see [SECURITY.md](./SECURITY.md).
305
+
285
306
  ## License
286
307
 
287
308
  [MIT](./LICENSE) · [Antero Marques](https://github.com/marquesantero)
@@ -0,0 +1,377 @@
1
+ # CFA Strategic Roadmap
2
+
3
+ ## 0. Pre-flight Checks
4
+
5
+ - [x] 0.1 Run `uv run ruff check src/` — zero warnings
6
+ - [x] 0.2 Run `uv run pytest tests -q` — 534/534 passed
7
+ - [x] 0.3 Verify `README.md`, `website/docs/`, `website/i18n/` consistent with v1.0
8
+ - [x] 0.4 Verify `pyproject.toml` version, classifiers, deps correct
9
+ - [x] 0.5 Verify `.github/workflows/ci.yml` passes on push
10
+ - [x] 0.6 Verify `.github/workflows/deploy-pypi.yml` ready
11
+ - [x] 0.7 Verify `.github/workflows/deploy-docs.yml` deploys to gh-pages
12
+ - [x] 0.8 Write `SECURITY.md` — threat model (MCP injection, audit chain replay attacks, YAML parser fuzzing)
13
+ - [x] 0.9 Define release contingency plan
14
+
15
+ **Contingency plan**: Hotfix → branch `hotfix-1.0.x` → cherry-pick → bump patch → release.
16
+ Critical bug → GitHub Issue + Discord announcement + `git revert` as fallback.
17
+ Nuclear option: `pip install cfa-kernel!=<broken_version>` guidance + yank via PyPI.
18
+
19
+ - [x] 0.10 Run `pip-audit` and `safety check` — zero critical vulnerabilities in CFA core (41 in dev deps, none direct)
20
+
21
+ ---
22
+
23
+ ## 1. API Freeze — v1.0 Stable Contracts (Week 1-2)
24
+
25
+ ### 1.1 Define the public API surface
26
+
27
+ - [x] 1.1.1 Audit `src/cfa/__init__.py` — decide what is top-level vs submodule
28
+ - [x] 1.1.2 Freeze `StateSignature` constructor (required fields, defaults, types)
29
+ - [x] 1.1.3 Freeze `PolicyEngine` constructor + `evaluate()` signature
30
+ - [x] 1.1.4 Freeze `PolicyResult` fields (action, faults, reasoning, etc.)
31
+ - [x] 1.1.5 Freeze `RuntimeGate` constructor + `validate()`, `guard()`, `scope()`
32
+ - [x] 1.1.6 Freeze `GateConfig`, `GateResult` fields
33
+ - [x] 1.1.7 Freeze `KernelConfig` fields
34
+ - [x] 1.1.8 Freeze `KernelOrchestrator` constructor + `process()`
35
+ - [x] 1.1.9 Freeze `KernelResult` fields
36
+ - [x] 1.1.10 Freeze `AuditTrail` constructor + `record()`, `verify_chain()`, `events`
37
+ - [x] 1.1.11 Freeze `OpenAILMProvider` + `LLMNormalizerBackend` (LLM surface)
38
+
39
+ **Done**: Added `PolicyResult` to `cfa.policy` lazy loader. Added `KernelResult` to `cfa.core` lazy loader. MCP public API is `serve()`.
40
+
41
+ ### 1.2 Deprecate / hide internal-only modules
42
+
43
+ - [ ] 1.2.1 Audit `core/phases/runner.py` — internal, should not be public
44
+ - [ ] 1.2.2 Audit `core/planner.py`, `core/codegen.py` — internal helpers
45
+ - [ ] 1.2.3 Audit `execution/*.py` — sandbox internals
46
+ - [ ] 1.2.4 Mark all internal modules with `_` prefix or `__all__` restriction
47
+ - [ ] 1.2.5 Document public vs internal in `api.md`
48
+
49
+ ### 1.3 v1.0 release
50
+
51
+ - [ ] 1.3.1 Bump version to `1.0.0` everywhere
52
+ - [ ] 1.3.2 Update `README.md` — remove alpha warnings, emphasize stability
53
+ - [ ] 1.3.3 Update `website/docs/intro.md` — "production ready" language
54
+ - [ ] 1.3.4 Write changelog (v0.1.0 → v1.0.0 highlights)
55
+ - [ ] 1.3.5 Tag `v1.0.0` + publish to PyPI
56
+ - [ ] 1.3.6 Write announcement blog post (Medium/Dev.to + website blog)
57
+
58
+ ---
59
+
60
+ ## 2. MCP Server — Production-Ready (Week 1-2, parallel)
61
+
62
+ ### 2.1 Hardening
63
+
64
+ - [ ] 2.1.1 Add authentication (API key / token) to MCP server
65
+ - [ ] 2.1.2 Add rate limiting per tool
66
+ - [ ] 2.1.3 Add request/response logging to audit trail
67
+ - [ ] 2.1.4 Add health check endpoint
68
+ - [ ] 2.1.5 Add tool: `cfa_verify_chain` — verify audit hash chain
69
+ - [ ] 2.1.6 Add tool: `cfa_lifecycle_status` — expose IFo/IFs/IFg/IDI
70
+ - [ ] 2.1.7 Add tool: `cfa_compliance_check` — check against bundle
71
+ - [ ] 2.1.8 Define SLOs: tool call latency p99 < 500ms, uptime > 99%
72
+ - [ ] 2.1.9 Load test: 100 req/s sustained for 10 minutes
73
+ - [ ] 2.1.10 Fuzz test MCP tool inputs (property-based testing with Hypothesis)
74
+ - [ ] 2.1.11 Test with Claude Desktop, Cursor, Windsurf
75
+
76
+ ### 2.2 Distribution
77
+
78
+ - [ ] 2.2.1 Package MCP server as standalone entry point (`cfa-mcp` or `uvx cfa`)
79
+ - [ ] 2.2.2 Write install guide for Claude Desktop config JSON
80
+ - [ ] 2.2.3 Submit to Smithery marketplace
81
+ - [ ] 2.2.4 Submit to Glama marketplace
82
+ - [ ] 2.2.5 Submit to mcp.run marketplace
83
+ - [ ] 2.2.6 Write blog post: "CFA MCP: Governance as Native Tool for AI Agents"
84
+
85
+ ### 2.3 Documentation
86
+
87
+ - [ ] 2.3.1 Update `website/docs/mcp-server.md` with auth + all tools
88
+ - [ ] 2.3.2 Add MCP quickstart video (2 min)
89
+ - [ ] 2.3.3 Add "CFA + Claude" end-to-end example
90
+
91
+ ---
92
+
93
+ ## 3. Developer Experience — `cfa init --template` (Week 3)
94
+
95
+ ### 3.1 Template system
96
+
97
+ - [ ] 3.1.1 Design template directory structure (`cfa/templates/`)
98
+ - [ ] 3.1.2 Implement `cfa init --template <name>` CLI command
99
+ - [ ] 3.1.3 Template: `fastapi-cfa` — FastAPI + RuntimeGate guard
100
+ - [ ] 3.1.4 Template: `langgraph-cfa` — LangGraph agent + cfa_guard
101
+ - [ ] 3.1.5 Template: `dbt-cfa` — dbt models + CFA validation step
102
+ - [ ] 3.1.6 Template: `mcp-cfa` — MCP server skeleton with CFA tools
103
+ - [ ] 3.1.7 Template: `streaming-placeholder` — Structured Streaming stub with explicit README: "Experimental — streaming governance coming in v1.3"
104
+
105
+ ### 3.2 Onboarding flow
106
+
107
+ - [ ] 3.2.1 `cfa init` without args = interactive wizard (pick template)
108
+ - [ ] 3.2.2 Each template generates: `cfa.yaml`, catalog stub, policy stub, README
109
+ - [ ] 3.2.3 Generated project passes `cfa validate` out of the box
110
+ - [ ] 3.2.4 Generated project has one working test
111
+
112
+ ### 3.3 Documentation
113
+
114
+ - [ ] 3.3.1 Update `website/docs/getting-started.md` with templates
115
+ - [ ] 3.3.2 Write "5 Minute Quickstart" with template
116
+ - [ ] 3.3.3 Write "From Zero to Governed Pipeline" tutorial
117
+
118
+ ---
119
+
120
+ ## 4. Documentation as Product (Week 3-4)
121
+
122
+ ### 4.1 Quickstart
123
+
124
+ - [ ] 4.1.1 Write 5-minute quickstart (< 500 words, copy-paste runnable)
125
+ - [ ] 4.1.2 Embed on website landing page above the fold
126
+ - [ ] 4.1.3 Test quickstart on clean Ubuntu, macOS, Windows (PowerShell)
127
+
128
+ ### 4.2 Tutorials
129
+
130
+ - [ ] 4.2.1 "Governed PySpark Pipeline" end-to-end tutorial
131
+ - [ ] 4.2.2 "LLM Agent with CFA Guardrails" tutorial
132
+ - [ ] 4.2.3 "Multi-Agent Governance" tutorial (3+ agents)
133
+ - [ ] 4.2.4 "Compliance Passport" tutorial (EU AI Act → CFA rules)
134
+
135
+ ### 4.3 Visuals
136
+
137
+ - [ ] 4.3.1 Architecture diagram (SVG, light + dark mode)
138
+ - [ ] 4.3.2 5-phase pipeline flowchart
139
+ - [ ] 4.3.3 Decision tree: APPROVE vs REPLAN vs BLOCK
140
+ - [ ] 4.3.4 Hero animation / logo
141
+
142
+ ### 4.4 Voice & Tone
143
+
144
+ - [ ] 4.4.1 Define writing guidelines (professional, not academic; confident, not salesy)
145
+ - [ ] 4.4.2 Audit all docs for consistency
146
+ - [ ] 4.4.3 Sync EN and PT-BR docs for all critical pages
147
+
148
+ ### 4.5 PT-BR Critical Sync (MANDATORY — Brazilian market is primary target)
149
+
150
+ - [ ] 4.5.1 Rewrite `guide.md` PT-BR (39 → full translation matching EN)
151
+ - [ ] 4.5.2 Complete `architecture-notes.md` PT-BR (7 missing sections)
152
+ - [ ] 4.5.3 Complete `policy-bundles.md` PT-BR (3 missing conditions + programmatic section)
153
+ - [ ] 4.5.4 Complete `behavior-spec.md` PT-BR (add Python code examples)
154
+ - [ ] 4.5.5 Complete `reporting.md` PT-BR (add `generate_report()` API examples)
155
+ - [ ] 4.5.6 Verify LGPD terminology consistency across all PT-BR docs
156
+
157
+ ---
158
+
159
+ ## 5. Compliance Pack — EU AI Act + LGPD (Week 4)
160
+
161
+ ### 5.1 EU AI Act mapping
162
+
163
+ - [ ] 5.1.1 Read EU AI Act articles relevant to data/AI governance
164
+ - [ ] 5.1.2 Map Article 9 (risk management) → CFA policy rules
165
+ - [ ] 5.1.3 Map Article 10 (data governance) → CFA catalog constraints
166
+ - [ ] 5.1.4 Map Article 12 (record-keeping) → CFA audit trail
167
+ - [ ] 5.1.5 Map Article 13 (transparency) → CFA reporting
168
+ - [ ] 5.1.6 Map Article 15 (accuracy, robustness) → CFA validation
169
+ - [ ] 5.1.7 Map Article 17 (quality management) → CFA lifecycle (IFo/IFs/IFg/IDI)
170
+ - [ ] 5.1.8 Create `policies/eu-ai-act-v1.yaml` policy bundle
171
+
172
+ ### 5.2 LGPD mapping
173
+
174
+ - [ ] 5.2.1 Map Art. 6 (consent/legitimate interest) → CFA domain constraints
175
+ - [ ] 5.2.2 Map Art. 11-13 (anonymization, pseudonymization) → CFA PII rules
176
+ - [ ] 5.2.3 Map Art. 16 (security) → CFA audit + hash chain
177
+ - [ ] 5.2.4 Map Art. 18 (portability) → CFA data contracts
178
+ - [ ] 5.2.5 Map Art. 37-38 (DPO, impact assessment) → CFA reports
179
+ - [ ] 5.2.6 Create `policies/lgpd-v1.yaml` policy bundle
180
+
181
+ ### 5.3 Compliance reporting
182
+
183
+ - [ ] 5.3.1 Generate compliance report: `cfa report compliance --bundle eu-ai-act-v1`
184
+ - [ ] 5.3.2 Export audit trail as signed PDF (for DPO/auditor)
185
+ - [ ] 5.3.3 Document: "How CFA Demonstrates EU AI Act Compliance" (white paper)
186
+
187
+ ---
188
+
189
+ ## 6. Observability — OTel + Prometheus + Grafana (Week 5)
190
+
191
+ ### 6.1 OpenTelemetry integration
192
+
193
+ - [ ] 6.1.1 Export spans for: normalize, evaluate, generate, execute, validate phases
194
+ - [ ] 6.1.2 Export span attributes: intent, domain, target_layer, decision, duration_ms
195
+ - [ ] 6.1.3 Export metrics: evaluations_total, blocks_total, replans_total, latency_p99
196
+ - [ ] 6.1.4 Export traces: end-to-end trace_id from intent → decision
197
+
198
+ ### 6.2 Dashboards
199
+
200
+ - [ ] 6.2.1 Grafana dashboard JSON: governance overview (decisions pie, latency heatmap)
201
+ - [ ] 6.2.2 Grafana dashboard JSON: lifecycle indices over time (IFo/IFs/IFg/IDI)
202
+ - [ ] 6.2.3 Grafana dashboard JSON: compliance posture (rules fired, remediations)
203
+ - [ ] 6.2.4 Add to docs: "Monitoring CFA with Grafana"
204
+
205
+ ### 6.3 Benchmarks
206
+
207
+ - [ ] 6.3.1 Measure `PolicyEngine.evaluate()` latency (p50, p95, p99)
208
+ - [ ] 6.3.2 Measure `KernelOrchestrator.process()` end-to-end latency
209
+ - [ ] 6.3.3 Measure throughput (evaluations/second) on commodity hardware
210
+ - [ ] 6.3.4 Measure SQLite storage performance (writes/second, query latency)
211
+ - [ ] 6.3.5 Publish benchmark page on website
212
+
213
+ ---
214
+
215
+ ## 7. Integration with Catalogs (Week 6-7)
216
+
217
+ ### 7.1 DataHub connector
218
+
219
+ - [ ] 7.1.1 Implement `CatalogLoader` abstract base class
220
+ - [ ] 7.1.2 Implement `DataHubCatalogLoader` (read-only via DataHub REST API)
221
+ - [ ] 7.1.3 Map DataHub dataset entities → CFA catalog dict
222
+ - [ ] 7.1.4 Support: `cfa evaluate --catalog datahub://instance:8080`
223
+ - [ ] 7.1.5 Document DataHub integration
224
+
225
+ ### 7.2 OpenMetadata connector
226
+
227
+ - [ ] 7.2.1 Implement `OpenMetadataCatalogLoader` (read-only via REST API)
228
+ - [ ] 7.2.2 Map OpenMetadata entities → CFA catalog dict
229
+ - [ ] 7.2.3 Support: `cfa evaluate --catalog openmetadata://instance:8585`
230
+ - [ ] 7.2.4 Document OpenMetadata integration
231
+
232
+ ---
233
+
234
+ ## 8. Lifecycle Dashboards — CDO-Ready Reports (Week 6-7)
235
+
236
+ ### 8.1 Live dashboard
237
+
238
+ - [ ] 8.1.1 Upgrade `cfa serve` to serve lifecycle HTML dashboard
239
+ - [ ] 8.1.2 Dashboard: pipeline health cards (IFo, IFs, IFg, IDI per skill)
240
+ - [ ] 8.1.3 Dashboard: trend charts (30-day window, Chart.js)
241
+ - [ ] 8.1.4 Dashboard: promotion recommendations (CANDIDATE → ACTIVE → WATCHLIST)
242
+ - [ ] 8.1.5 Dashboard: cost DBU tracker per pipeline
243
+
244
+ ### 8.2 Export
245
+
246
+ - [ ] 8.2.1 `cfa report lifecycle --format pdf` — signed PDF for auditors
247
+ - [ ] 8.2.2 `cfa report lifecycle --format csv` — raw data for analysts
248
+ - [ ] 8.2.3 PDF includes: SHA-256 hash, timestamp, auditor signature block
249
+
250
+ ### 8.3 Alerts
251
+
252
+ - [ ] 8.3.1 IFg drop below 1.0 → send notification
253
+ - [ ] 8.3.2 IDI > 0.25 drift → send notification
254
+ - [ ] 8.3.3 Integrate with Slack/Teams webhooks
255
+
256
+ ---
257
+
258
+ ## 9. Public Launch — v1.0 (Week 8-10)
259
+
260
+ ### 9.1 Launch assets
261
+
262
+ - [ ] 9.1.1 Landing page refresh (hero, value prop, quickstart above fold)
263
+ - [ ] 9.1.2 Launch blog post: "CFA v1.0: Governance Kernel for the Agent Era"
264
+ - [ ] 9.1.3 Demo video (5 min): full pipeline + LLM + MCP + compliance report
265
+ - [ ] 9.1.4 Social cards (Open Graph, Twitter) for sharing
266
+
267
+ ### 9.2 Distribution
268
+
269
+ - [ ] 9.2.1 PyPI: `cfa-kernel` v1.0.0 published
270
+ - [ ] 9.2.2 Smithery/Glama/MCP.run: CFA MCP server listed
271
+ - [ ] 9.2.3 GitHub: README badges all green, 534 tests
272
+ - [ ] 9.2.4 Website: docs clean, no broken links, version 1.0.0 everywhere
273
+
274
+ ### 9.3 Outreach
275
+
276
+ - [ ] 9.3.1 Dev.to / Medium post: "Why Every AI Agent Needs a Governance Kernel"
277
+ - [ ] 9.3.2 Hacker News Show HN: CFA
278
+ - [ ] 9.3.3 r/MachineLearning, r/dataengineering, r/Python cross-posts
279
+ - [ ] 9.3.4 LinkedIn article + video (personal brand: Antero Marques)
280
+ - [ ] 9.3.5 Reach out to 20 early adopters (personal DMs, data/AI communities)
281
+
282
+ ### 9.4 Community
283
+
284
+ - [ ] 9.4.1 Create Discord server
285
+ - [ ] 9.4.2 Create "CFA Ambassadors" program (3-5 initial members)
286
+ - [ ] 9.4.3 GitHub Discussions enabled + seeded with FAQ
287
+ - [ ] 9.4.4 CONTRIBUTING.md + good-first-issue labels
288
+
289
+ ---
290
+
291
+ ## 10. Metrics & Iteration (Week 11-12)
292
+
293
+ ### 10.1 Success metrics (6-month targets — conservative / stretch)
294
+
295
+ - [ ] 10.1.1 GitHub: 300 stars conservative / 1,000 stretch
296
+ - [ ] 10.1.2 PyPI: 30 downloads/day conservative / 100 stretch
297
+ - [ ] 10.1.3 MCP: listed in 3+ marketplaces
298
+ - [ ] 10.1.4 Community: 50 Discord members conservative / 100 stretch
299
+ - [ ] 10.1.5 Case studies: 1 public conservative / 3 stretch
300
+ - [ ] 10.1.6 Blog: 12 posts published
301
+
302
+ ### 10.2 Feedback loop
303
+
304
+ - [ ] 10.2.1 Survey 20 early adopters (what worked, what's missing, what's confusing)
305
+ - [ ] 10.2.2 Analyze GitHub issues: top 3 pain points
306
+ - [ ] 10.2.3 Analyze MCP usage: which tools are used most
307
+ - [ ] 10.2.4 Prioritize Horizon 2 items based on feedback
308
+
309
+ ---
310
+
311
+ ## 11. Sustainability Plan
312
+
313
+ ### 11.1 Funding
314
+
315
+ - [ ] 11.1.1 Identify 3 potential enterprise sponsors (month 3)
316
+ - [ ] 11.1.2 Apply for 1 open-source grant (CNCF, Linux Foundation AI, NLnet)
317
+ - [ ] 11.1.3 Explore GitHub Sponsors setup
318
+
319
+ ### 11.2 Bus factor mitigation
320
+
321
+ - [ ] 11.2.1 Document architecture for external contributors (`ARCHITECTURE.md`)
322
+ - [ ] 11.2.2 Record 3 codebase walkthrough videos (kernel, policy engine, MCP)
323
+ - [ ] 11.2.3 Tag 10+ "good first issue" tickets
324
+
325
+ ### 11.3 Maintainer health
326
+
327
+ - [ ] 11.3.1 Define maintainer vacation policy (who covers PR review?)
328
+ - [ ] 11.3.2 Set up CODEOWNERS file
329
+ - [ ] 11.3.3 Plan burnout checkpoints (monthly retro: how am I doing?)
330
+
331
+ ---
332
+
333
+ ## Appendix A — i18n Sync Status
334
+
335
+ | Page | EN | PT-BR | Delta |
336
+ |------|----|-------|-------|
337
+ | intro.md | ✅ | ✅ | ~sync |
338
+ | api.md | ✅ | ✅ | ~sync |
339
+ | faq.md | ✅ | ⚠️ | minor |
340
+ | guide.md | ✅ | ❌ | 39 vs 299 lines — needs complete rewrite |
341
+ | architecture-notes.md | ✅ | ❌ | 7 vs 13 sections missing |
342
+ | behavior-spec.md | ✅ | ❌ | missing Python examples |
343
+ | policy-bundles.md | ✅ | ❌ | missing 3 conditions + programmatic section |
344
+ | reporting.md | ✅ | ❌ | missing generate_report() API |
345
+ | mcp-server.md | ✅ | ⚠️ | simplified structure |
346
+ | integrations/langgraph.md | ✅ | ⚠️ | needs verification |
347
+ | integrations/openai-agents.md | ✅ | ⚠️ | needs verification |
348
+ | whitepaper.md | ✅ | ✅ | ~sync |
349
+
350
+ ---
351
+
352
+ ## Appendix B — Horizon 2 & 3 (Future)
353
+
354
+ ### B.1 Great Expectations integration (Horizon 2)
355
+ - `backend="great_expectations"` → generates `expectation_suite` from `StateSignature`
356
+ - CFA as "governance upstream", GE as "quality downstream"
357
+
358
+ ### B.2 Backends enterprise (Horizon 3)
359
+ - Snowflake (via Snowpark Python)
360
+ - BigQuery (via `google-cloud-bigquery`)
361
+ - Databricks SQL (via `databricks-sql-connector`)
362
+ - Each as pluggable `CodeGenBackend`
363
+
364
+ ### B.3 Streaming governance (Horizon 3)
365
+ - Spark Structured Streaming micro-batch governance
366
+ - Kafka Connect governance hooks
367
+ - Stateful exactly-once audit for streaming
368
+
369
+ ### B.4 CFA Cloud SaaS (Horizon 3)
370
+ - Managed kernel with web console
371
+ - Team policies, shared catalogs
372
+ - Pay-per-API-key or per-seat pricing
373
+
374
+ ### B.5 Certified Agent marketplace (Horizon 3)
375
+ - "CFA-Certified Agent" badge
376
+ - Registry of agents that run on CFA
377
+ - Network effects: more agents → more CFA adoption