cfa-kernel 0.1.0__tar.gz → 0.1.2__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 (232) hide show
  1. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/CFA_IMPLEMENTATION_PLAN.md +8 -8
  2. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/PKG-INFO +1 -1
  3. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/README.md +2 -1
  4. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/pyproject.toml +1 -1
  5. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/__init__.py +1 -1
  6. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/cli/formatters.py +1 -1
  7. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/cli/governance/audit.py +4 -4
  8. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/cli/project/status.py +14 -2
  9. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/observability/promotion.py +15 -3
  10. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/testing/fixtures.py +10 -5
  11. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_user_journeys.py +1 -1
  12. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/docs/getting-started.md +6 -6
  13. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/docs/intro.md +1 -1
  14. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/docs/mcp-server.md +1 -1
  15. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/docusaurus.config.ts +1 -1
  16. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/getting-started.md +6 -6
  17. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/intro.md +1 -1
  18. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/mcp-server.md +1 -1
  19. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/src/pages/index.tsx +1 -1
  20. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/.gitattributes +0 -0
  21. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  22. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  23. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  24. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/.github/workflows/ci.yml +0 -0
  25. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/.github/workflows/deploy-docs.yml +0 -0
  26. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/.github/workflows/deploy-pypi.yml +0 -0
  27. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/.github/workflows/governance.yml +0 -0
  28. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/.gitignore +0 -0
  29. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/.uv-cache/.gitignore +0 -0
  30. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/.uv-cache/.lock +0 -0
  31. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/.uv-cache/CACHEDIR.TAG +0 -0
  32. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/.uv-cache/sdists-v9/.gitignore +0 -0
  33. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/CFA_MARKET_RESEARCH_2026.md +0 -0
  34. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/CODE_OF_CONDUCT.md +0 -0
  35. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/CONTRIBUTING.md +0 -0
  36. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/LICENSE +0 -0
  37. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/MANUAL_TESTING_GUIDE.md +0 -0
  38. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/SECURITY.md +0 -0
  39. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/examples/fiscal_governance.yaml +0 -0
  40. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/examples/full_pipeline.py +0 -0
  41. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/examples/llm_systematizer.py +0 -0
  42. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/examples/runtime_gate.py +0 -0
  43. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/examples/standalone_governance.py +0 -0
  44. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/examples/standalone_lifecycle.py +0 -0
  45. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/examples/standalone_resolution.py +0 -0
  46. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/integrations/airflow-governance-gate/README.md +0 -0
  47. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/integrations/airflow-governance-gate/dags/cfa_governance_gate_demo.py +0 -0
  48. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/integrations/airflow-governance-gate/requirements.txt +0 -0
  49. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/integrations/airflow-governance-gate/src/governance_gate.py +0 -0
  50. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/mcp.json +0 -0
  51. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/policies/compliance-strict-v1.yaml +0 -0
  52. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/policies/finops-strict-v1.yaml +0 -0
  53. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/policies/prod-v1.yaml +0 -0
  54. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/_lazy.py +0 -0
  55. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/adapters/__init__.py +0 -0
  56. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/adapters/autogen.py +0 -0
  57. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/adapters/crewai.py +0 -0
  58. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/adapters/dspy.py +0 -0
  59. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/adapters/langgraph.py +0 -0
  60. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/adapters/openai_agents.py +0 -0
  61. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/audit/__init__.py +0 -0
  62. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/audit/context.py +0 -0
  63. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/audit/hashing.py +0 -0
  64. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/audit/trail.py +0 -0
  65. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/backends/__init__.py +0 -0
  66. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/backends/dbt.py +0 -0
  67. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/backends/pyspark.py +0 -0
  68. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/backends/sql.py +0 -0
  69. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/behavior/__init__.py +0 -0
  70. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/behavior/llm.py +0 -0
  71. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/behavior/spec.py +0 -0
  72. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/behavior/systematizer.py +0 -0
  73. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/cli/__init__.py +0 -0
  74. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/cli/__main__.py +0 -0
  75. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/cli/_helpers.py +0 -0
  76. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/cli/core/__init__.py +0 -0
  77. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/cli/core/evaluate.py +0 -0
  78. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/cli/core/validate.py +0 -0
  79. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/cli/governance/__init__.py +0 -0
  80. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/cli/governance/catalog.py +0 -0
  81. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/cli/governance/policy.py +0 -0
  82. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/cli/governance/rules.py +0 -0
  83. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/cli/governance/signature.py +0 -0
  84. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/cli/infrastructure/__init__.py +0 -0
  85. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/cli/infrastructure/backend_list.py +0 -0
  86. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/cli/infrastructure/storage.py +0 -0
  87. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/cli/project/__init__.py +0 -0
  88. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/cli/project/init.py +0 -0
  89. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/cli/project/lifecycle.py +0 -0
  90. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/cli/project/taxonomy.py +0 -0
  91. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/cli/reporting/__init__.py +0 -0
  92. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/cli/reporting/report.py +0 -0
  93. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/cli/reporting/serve.py +0 -0
  94. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/config.py +0 -0
  95. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/core/__init__.py +0 -0
  96. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/core/codegen.py +0 -0
  97. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/core/conditions.py +0 -0
  98. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/core/kernel.py +0 -0
  99. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/core/phases/__init__.py +0 -0
  100. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/core/phases/runner.py +0 -0
  101. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/core/planner.py +0 -0
  102. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/execution/__init__.py +0 -0
  103. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/execution/partial.py +0 -0
  104. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/execution/state_projection.py +0 -0
  105. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/governance/__init__.py +0 -0
  106. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/lifecycle/__init__.py +0 -0
  107. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/mcp/__init__.py +0 -0
  108. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/mcp/__main__.py +0 -0
  109. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/normalizer/__init__.py +0 -0
  110. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/normalizer/base.py +0 -0
  111. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/normalizer/llm.py +0 -0
  112. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/observability/__init__.py +0 -0
  113. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/observability/indices.py +0 -0
  114. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/observability/metrics.py +0 -0
  115. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/observability/notify.py +0 -0
  116. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/observability/otel.py +0 -0
  117. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/policy/__init__.py +0 -0
  118. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/policy/bundle.py +0 -0
  119. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/policy/catalog.py +0 -0
  120. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/policy/engine.py +0 -0
  121. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/reporting/__init__.py +0 -0
  122. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/reporting/charts.py +0 -0
  123. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/reporting/engine.py +0 -0
  124. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/resolution/__init__.py +0 -0
  125. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/runtime/__init__.py +0 -0
  126. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/runtime/gate.py +0 -0
  127. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/sandbox/__init__.py +0 -0
  128. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/sandbox/executor.py +0 -0
  129. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/sandbox/mock.py +0 -0
  130. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/sandbox/panic.py +0 -0
  131. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/storage/__init__.py +0 -0
  132. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/testing/__init__.py +0 -0
  133. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/testing/asserts.py +0 -0
  134. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/testing/evaluate.py +0 -0
  135. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/testing/markers.py +0 -0
  136. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/types.py +0 -0
  137. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/validation/__init__.py +0 -0
  138. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/validation/runtime.py +0 -0
  139. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/validation/signature.py +0 -0
  140. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/src/cfa/validation/static.py +0 -0
  141. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/conftest.py +0 -0
  142. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_adapters.py +0 -0
  143. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_airflow_governance_gate.py +0 -0
  144. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_audit_persistent.py +0 -0
  145. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_behavior.py +0 -0
  146. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_behavior_llm.py +0 -0
  147. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_catalog.py +0 -0
  148. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_cli_validation.py +0 -0
  149. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_codegen.py +0 -0
  150. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_config.py +0 -0
  151. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_context.py +0 -0
  152. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_context_persistent.py +0 -0
  153. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_dbt_backend.py +0 -0
  154. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_hashing.py +0 -0
  155. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_indices.py +0 -0
  156. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_integration.py +0 -0
  157. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_intensive.py +0 -0
  158. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_kernel.py +0 -0
  159. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_mcp.py +0 -0
  160. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_metrics.py +0 -0
  161. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_normalizer.py +0 -0
  162. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_normalizer_llm.py +0 -0
  163. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_notify.py +0 -0
  164. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_otel.py +0 -0
  165. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_partial_execution.py +0 -0
  166. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_planner.py +0 -0
  167. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_policy.py +0 -0
  168. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_policy_bundle.py +0 -0
  169. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_promotion.py +0 -0
  170. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_reporting.py +0 -0
  171. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_runtime.py +0 -0
  172. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_runtime_validation.py +0 -0
  173. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_sandbox.py +0 -0
  174. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_serialization.py +0 -0
  175. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_signature.py +0 -0
  176. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_sql_backend.py +0 -0
  177. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_state_projection.py +0 -0
  178. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_static_validation.py +0 -0
  179. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_storage.py +0 -0
  180. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_testing.py +0 -0
  181. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/tests/test_types.py +0 -0
  182. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/.gitignore +0 -0
  183. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/README.md +0 -0
  184. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/blog/2019-05-28-first-blog-post.mdx +0 -0
  185. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/blog/2019-05-29-long-blog-post.mdx +0 -0
  186. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/blog/2021-08-01-mdx-blog-post.mdx +0 -0
  187. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg +0 -0
  188. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/blog/2021-08-26-welcome/index.mdx +0 -0
  189. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/blog/authors.yml +0 -0
  190. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/blog/tags.yml +0 -0
  191. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/docs/api.md +0 -0
  192. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/docs/architecture-notes.md +0 -0
  193. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/docs/backends.md +0 -0
  194. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/docs/behavior-spec.md +0 -0
  195. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/docs/cli.md +0 -0
  196. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/docs/faq.md +0 -0
  197. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/docs/guide.md +0 -0
  198. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/docs/integrations/airflow.md +0 -0
  199. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/docs/integrations/langgraph.md +0 -0
  200. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/docs/integrations/openai-agents.md +0 -0
  201. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/docs/policy-bundles.md +0 -0
  202. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/docs/reporting.md +0 -0
  203. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/docs/whitepaper.md +0 -0
  204. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/i18n/pt-BR/code.json +0 -0
  205. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/api.md +0 -0
  206. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/architecture-notes.md +0 -0
  207. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/backends.md +0 -0
  208. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/behavior-spec.md +0 -0
  209. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/cli.md +0 -0
  210. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/faq.md +0 -0
  211. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/guide.md +0 -0
  212. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/integrations/airflow.md +0 -0
  213. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/integrations/langgraph.md +0 -0
  214. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/integrations/openai-agents.md +0 -0
  215. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/policy-bundles.md +0 -0
  216. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/reporting.md +0 -0
  217. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/whitepaper.md +0 -0
  218. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/package-lock.json +0 -0
  219. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/package.json +0 -0
  220. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/sidebars.ts +0 -0
  221. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/src/components/HomepageFeatures/index.tsx +0 -0
  222. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/src/components/HomepageFeatures/styles.module.css +0 -0
  223. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/src/css/custom.css +0 -0
  224. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/src/pages/index.module.css +0 -0
  225. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/src/pages/markdown-page.mdx +0 -0
  226. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/static/.nojekyll +0 -0
  227. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/static/img/favicon.ico +0 -0
  228. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/static/img/logo.svg +0 -0
  229. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/static/img/undraw_docusaurus_mountain.svg +0 -0
  230. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/static/img/undraw_docusaurus_react.svg +0 -0
  231. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/static/img/undraw_docusaurus_tree.svg +0 -0
  232. {cfa_kernel-0.1.0 → cfa_kernel-0.1.2}/website/tsconfig.json +0 -0
@@ -461,7 +461,7 @@ MCP Server CFA — Tools expostas:
461
461
  - `pyproject.toml` — `[project.scripts] cfa-mcp = "cfa.mcp:main"`
462
462
  - `mcp.json` — configuração exemplo para Claude Desktop, Cursor, etc.
463
463
 
464
- **Dependências:** `mcp` package (extras_require: `pip install cfa[mcp]`)
464
+ **Dependências:** `mcp` package (extras_require: `pip install cfa-kernel[mcp]`)
465
465
 
466
466
  ---
467
467
 
@@ -548,7 +548,7 @@ enable_otel(OTELConfig(
548
548
 
549
549
  **Arquivos:**
550
550
  - `src/cfa/otel.py` — `enable_otel()`, `OTELConfig`, instrumentação do pipeline
551
- - Dependência: `opentelemetry-api` + `opentelemetry-sdk` (extras_require: `pip install cfa[otel]`)
551
+ - Dependência: `opentelemetry-api` + `opentelemetry-sdk` (extras_require: `pip install cfa-kernel[otel]`)
552
552
 
553
553
  ---
554
554
 
@@ -697,12 +697,12 @@ cfa_lifecycle_index{pipeline="fiscal_monthly", index="idi"} 0.88
697
697
  #### Sprint 13: PyPI Release + Community Setup (Dias 81-90)
698
698
 
699
699
  **Release v0.1.0:**
700
- - `pip install cfa` (core)
701
- - `pip install cfa[cli]` (CLI)
702
- - `pip install cfa[mcp]` (MCP server)
703
- - `pip install cfa[otel]` (OpenTelemetry)
704
- - `pip install cfa[langgraph]` (LangGraph adapter)
705
- - `pip install cfa[all]` (tudo)
700
+ - `pip install cfa-kernel` (core)
701
+ - `pip install cfa-kernel[cli]` (CLI)
702
+ - `pip install cfa-kernel[mcp]` (MCP server)
703
+ - `pip install cfa-kernel[otel]` (OpenTelemetry)
704
+ - `pip install cfa-kernel[langgraph]` (LangGraph adapter)
705
+ - `pip install cfa-kernel[all]` (tudo)
706
706
 
707
707
  **Community:**
708
708
  - `cfa` package no PyPI
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cfa-kernel
3
- Version: 0.1.0
3
+ Version: 0.1.2
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
@@ -3,6 +3,7 @@
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
  [![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)
5
5
  [![Tests](https://img.shields.io/badge/tests-536%20passed-brightgreen)](https://github.com/marquesantero/cfa/actions/workflows/ci.yml)
6
+ [![PyPI](https://img.shields.io/pypi/v/cfa-kernel)](https://pypi.org/project/cfa-kernel/)
6
7
  [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-blue.svg)](https://www.python.org/)
7
8
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)
8
9
  [![Docs](https://img.shields.io/badge/docs-docusaurus-blue.svg)](https://marquesantero.github.io/cfa/)
@@ -14,7 +15,7 @@ Instead of asking _"which agent or skill should act?"_, CFA asks _"which state t
14
15
  ## Quick Start
15
16
 
16
17
  ```bash
17
- pip install cfa
18
+ pip install cfa-kernel
18
19
  # or: pip install git+https://github.com/marquesantero/cfa.git
19
20
  cfa init
20
21
  cfa evaluate "Join NFe with Clientes and persist to Silver" --catalog .cfa/catalog.json
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "cfa-kernel"
7
- version = "0.1.0"
7
+ version = "0.1.2"
8
8
  description = "CFA — Governed execution for AI agents and data systems"
9
9
  requires-python = ">=3.11"
10
10
  license = { text = "MIT" }
@@ -6,7 +6,7 @@ Governed execution for AI agents and data systems.
6
6
 
7
7
  from cfa._lazy import LazyLoader
8
8
 
9
- __version__ = "0.1.0"
9
+ __version__ = "0.1.2"
10
10
 
11
11
  __getattr__ = LazyLoader({
12
12
  "KernelOrchestrator": ("cfa.core.kernel", "KernelOrchestrator"),
@@ -17,7 +17,7 @@ _ANSI_RE = re.compile(r"\x1b\[[0-9;]*m")
17
17
  # Force UTF-8 on Windows if possible
18
18
  if sys.platform == "win32":
19
19
  try:
20
- sys.stdout.reconfigure(encoding="utf-8") # type: ignore[attr-defined]
20
+ sys.stdout.reconfigure(encoding="utf-8", errors="replace") # type: ignore[attr-defined]
21
21
  except Exception:
22
22
  pass
23
23
 
@@ -50,16 +50,16 @@ def cmd_audit_verify(args) -> int:
50
50
  events = trail.get_events_for_intent(args.id)
51
51
  chain_ok = trail.verify_chain()
52
52
  if chain_ok:
53
- print(f"\u2713 Chain INTACT for intent {args.id} ({len(events)} events)")
53
+ print(f"[OK] Chain INTACT for intent {args.id} ({len(events)} events)")
54
54
  return 0
55
55
  else:
56
- print(f"\u2717 Chain BROKEN for intent {args.id}", file=sys.stderr)
56
+ print(f"[FAIL] Chain BROKEN for intent {args.id}", file=sys.stderr)
57
57
  return 1
58
58
  else:
59
59
  all_ok = trail.verify_chain()
60
60
  if all_ok:
61
- print(f"\u2713 Chain INTACT ({trail.event_count} events total)")
61
+ print(f"[OK] Chain INTACT ({trail.event_count} events total)")
62
62
  return 0
63
63
  else:
64
- print("\u2717 Chain BROKEN", file=sys.stderr)
64
+ print("[FAIL] Chain BROKEN", file=sys.stderr)
65
65
  return 1
@@ -5,12 +5,24 @@ from __future__ import annotations
5
5
  from datetime import UTC
6
6
 
7
7
 
8
+ def _load_config(config_path: str | None):
9
+ from cfa.config import CfaConfig
10
+ if config_path:
11
+ try:
12
+ return CfaConfig.from_yaml(config_path)
13
+ except ImportError:
14
+ try:
15
+ return CfaConfig.from_json(config_path)
16
+ except Exception:
17
+ return None
18
+ return CfaConfig.discover()
19
+
20
+
8
21
  def cmd_status(args) -> int:
9
22
  from cfa.cli.formatters import format_json
10
- from cfa.config import CfaConfig
11
23
  from cfa.storage import SqliteStorage, _sqlite_storage_stats
12
24
 
13
- config = CfaConfig.discover() if args.config is None else CfaConfig.from_yaml(args.config)
25
+ config = _load_config(args.config)
14
26
 
15
27
  output = {
16
28
  "config_found": config is not None,
@@ -26,13 +26,25 @@ Every promoted skill carries generation_metadata for traceability.
26
26
  from __future__ import annotations
27
27
 
28
28
  from dataclasses import dataclass, field
29
- from datetime import datetime
29
+ from datetime import datetime, timezone
30
30
  from enum import StrEnum
31
- from typing import Any
32
31
 
33
32
  from cfa.observability.indices import ExecutionRecord, IndexCalculator, IndexScores
34
33
  from cfa.types import _utcnow
35
34
 
35
+
36
+ def _parse_storage_timestamp(ts: str) -> datetime | None:
37
+ """Parse a storage timestamp string to timezone-aware datetime."""
38
+ if not ts:
39
+ return None
40
+ try:
41
+ dt = datetime.fromisoformat(ts)
42
+ if dt.tzinfo is None:
43
+ dt = dt.replace(tzinfo=timezone.utc)
44
+ return dt
45
+ except (ValueError, TypeError):
46
+ return None
47
+
36
48
  # ── Lifecycle States ────────────────────────────────────────────────────────
37
49
 
38
50
 
@@ -140,7 +152,7 @@ class PromotionEngine:
140
152
  for rec_dict in self._storage.execution_load_all():
141
153
  self._records.append(ExecutionRecord(
142
154
  signature_hash=rec_dict["signature_hash"],
143
- timestamp=datetime.fromisoformat(rec_dict["timestamp"]) if rec_dict.get("timestamp") else _utcnow(),
155
+ timestamp=_parse_storage_timestamp(rec_dict.get("timestamp", "")) or _utcnow(),
144
156
  success=rec_dict.get("success", True),
145
157
  replanned=rec_dict.get("replanned", False),
146
158
  cost_dbu=rec_dict.get("cost_dbu", 0.0),
@@ -15,12 +15,17 @@ from __future__ import annotations
15
15
 
16
16
  from typing import Any
17
17
 
18
- import pytest
18
+ try:
19
+ import pytest
20
+ except ImportError:
21
+ pytest = None # type: ignore[assignment]
19
22
 
20
23
  from cfa.core.kernel import KernelConfig, KernelOrchestrator
21
24
 
22
25
  from ..sandbox.mock import MockSandboxBackend
23
26
 
27
+ _fixture = pytest.fixture if pytest else (lambda f: f)
28
+
24
29
  DEFAULT_CATALOG = {
25
30
  "datasets": {
26
31
  "nfe": {
@@ -44,13 +49,13 @@ DEFAULT_CATALOG = {
44
49
  }
45
50
 
46
51
 
47
- @pytest.fixture
52
+ @_fixture
48
53
  def cfa_catalog() -> dict[str, Any]:
49
54
  """Default data catalog for governance tests."""
50
55
  return DEFAULT_CATALOG
51
56
 
52
57
 
53
- @pytest.fixture
58
+ @_fixture
54
59
  def cfa_kernel(cfa_catalog: dict[str, Any]) -> KernelOrchestrator:
55
60
  """Pre-configured KernelOrchestrator for testing.
56
61
 
@@ -64,7 +69,7 @@ def cfa_kernel(cfa_catalog: dict[str, Any]) -> KernelOrchestrator:
64
69
  )
65
70
 
66
71
 
67
- @pytest.fixture
72
+ @_fixture
68
73
  def cfa_strict_kernel(cfa_catalog: dict[str, Any]) -> KernelOrchestrator:
69
74
  """KernelOrchestrator with warnings treated as blocking."""
70
75
  return KernelOrchestrator(
@@ -74,7 +79,7 @@ def cfa_strict_kernel(cfa_catalog: dict[str, Any]) -> KernelOrchestrator:
74
79
  )
75
80
 
76
81
 
77
- @pytest.fixture
82
+ @_fixture
78
83
  def cfa_noexec_kernel(cfa_catalog: dict[str, Any]) -> KernelOrchestrator:
79
84
  """KernelOrchestrator with execution disabled (policy-only gate)."""
80
85
  return KernelOrchestrator(
@@ -34,7 +34,7 @@ class TestJourney1_FirstTimeUser:
34
34
  def test_01_install_and_version(self):
35
35
  """User: pip install cfa && python -c 'import cfa; print(cfa.__version__)'"""
36
36
  import cfa
37
- assert cfa.__version__ == "0.1.0"
37
+ assert cfa.__version__.startswith("0.1.")
38
38
 
39
39
  def test_02_first_evaluate(self):
40
40
  """User: cfa evaluate 'my first governance check'"""
@@ -14,7 +14,7 @@ Install CFA and run your first governance check in under 5 minutes.
14
14
  ## Installation
15
15
 
16
16
  ```bash
17
- pip install cfa
17
+ pip install cfa-kernel
18
18
  # or directly from GitHub:
19
19
  # pip install git+https://github.com/marquesantero/cfa.git
20
20
  ```
@@ -22,11 +22,11 @@ pip install cfa
22
22
  Optional features:
23
23
 
24
24
  ```bash
25
- pip install cfa[yaml] # YAML policy bundles
26
- pip install cfa[llm] # LLM-powered intent normalization (OpenAI)
27
- pip install cfa[otel] # OpenTelemetry tracing
28
- pip install cfa[mcp] # MCP server protocol
29
- pip install cfa[all] # Everything
25
+ pip install cfa-kernel[yaml] # YAML policy bundles
26
+ pip install cfa-kernel[llm] # LLM-powered intent normalization (OpenAI)
27
+ pip install cfa-kernel[otel] # OpenTelemetry tracing
28
+ pip install cfa-kernel[mcp] # MCP server protocol
29
+ pip install cfa-kernel[all] # Everything
30
30
  ```
31
31
 
32
32
  ## Initialize a project
@@ -21,7 +21,7 @@ CFA is a governance layer that validates state transitions before they execute.
21
21
  ## Quick Install
22
22
 
23
23
  ```bash
24
- pip install cfa
24
+ pip install cfa-kernel
25
25
  # or: pip install git+https://github.com/marquesantero/cfa.git
26
26
  cfa init
27
27
  cfa evaluate "Join NFe with Clientes and persist to Silver" --catalog .cfa/catalog.json
@@ -9,7 +9,7 @@ CFA exposes its governance tools via the **Model Context Protocol** (MCP), allow
9
9
  ## Quick Start
10
10
 
11
11
  ```bash
12
- pip install cfa[mcp]
12
+ pip install cfa-kernel[mcp]
13
13
  cfa-mcp
14
14
  ```
15
15
 
@@ -97,7 +97,7 @@ const config: Config = {
97
97
  items: [
98
98
  { label: 'Blog', to: '/blog' },
99
99
  { label: 'GitHub', href: 'https://github.com/marquesantero/cfa' },
100
- { label: 'PyPI', href: 'https://pypi.org/project/cfa/' },
100
+ { label: 'PyPI', href: 'https://pypi.org/project/cfa-kernel/' },
101
101
  ],
102
102
  },
103
103
  ],
@@ -14,7 +14,7 @@ Instale o CFA e execute sua primeira verificação de governança em menos de 5
14
14
  ## Instalação
15
15
 
16
16
  ```bash
17
- pip install cfa
17
+ pip install cfa-kernel
18
18
  # ou diretamente do GitHub:
19
19
  # pip install git+https://github.com/marquesantero/cfa.git
20
20
  ```
@@ -22,11 +22,11 @@ pip install cfa
22
22
  Funcionalidades opcionais:
23
23
 
24
24
  ```bash
25
- pip install cfa[yaml] # Policy bundles YAML
26
- pip install cfa[llm] # Normalização de intenção com LLM (OpenAI)
27
- pip install cfa[otel] # Tracing OpenTelemetry
28
- pip install cfa[mcp] # Protocolo servidor MCP
29
- pip install cfa[all] # Tudo
25
+ pip install cfa-kernel[yaml] # Policy bundles YAML
26
+ pip install cfa-kernel[llm] # Normalização de intenção com LLM (OpenAI)
27
+ pip install cfa-kernel[otel] # Tracing OpenTelemetry
28
+ pip install cfa-kernel[mcp] # Protocolo servidor MCP
29
+ pip install cfa-kernel[all] # Tudo
30
30
  ```
31
31
 
32
32
  ## Inicializar um projeto
@@ -21,7 +21,7 @@ CFA é uma camada de governança que valida transições de estado antes da exec
21
21
  ## Instalação Rápida
22
22
 
23
23
  ```bash
24
- pip install cfa
24
+ pip install cfa-kernel
25
25
  cfa init
26
26
  cfa evaluate "Juntar NFe com Clientes e persistir na Silver" --catalog .cfa/catalog.json
27
27
  ```
@@ -9,7 +9,7 @@ CFA expõe suas ferramentas de governança via **Model Context Protocol** (MCP),
9
9
  ## Início Rápido
10
10
 
11
11
  ```bash
12
- pip install cfa[mcp]
12
+ pip install cfa-kernel[mcp]
13
13
  cfa-mcp
14
14
  ```
15
15
 
@@ -92,7 +92,7 @@ export default function Home(): JSX.Element {
92
92
  background: 'rgba(0,0,0,0.3)', padding: '0.75rem 1.5rem',
93
93
  borderRadius: 8, fontSize: '0.95rem', color: '#3dffa0',
94
94
  }}>
95
- pip install cfa && cfa evaluate "Join NFe with Clientes persist Silver"
95
+ pip install cfa-kernel && cfa evaluate "Join NFe with Clientes persist Silver"
96
96
  </code>
97
97
  <p style={{ color: '#8892a4', marginTop: '1rem', fontSize: '0.85rem' }}>
98
98
  343 tests &middot; MIT License &middot; Python 3.11+
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes