contractforge-core 0.1.0__tar.gz → 0.2.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 (340) hide show
  1. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/.gitignore +11 -0
  2. contractforge_core-0.2.0/CHANGELOG.md +34 -0
  3. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/PKG-INFO +102 -51
  4. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/README.md +96 -45
  5. contractforge_core-0.2.0/docs/README.md +159 -0
  6. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/adapters/aws.md +62 -147
  7. contractforge_core-0.2.0/docs/adapters/fabric.md +250 -0
  8. contractforge_core-0.2.0/docs/adapters/gcp.md +297 -0
  9. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/adapters/snowflake.md +76 -65
  10. contractforge_core-0.2.0/docs/adapters/test-contracts-across-adapters.md +528 -0
  11. contractforge_core-0.2.0/docs/adapters.md +186 -0
  12. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/adrs/ADR-007-aws-glue-iceberg-adapter.md +6 -6
  13. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/anti-patterns.md +2 -2
  14. contractforge_core-0.2.0/docs/cli.md +88 -0
  15. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/contracts.md +1 -1
  16. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/databricks.md +22 -14
  17. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/development-agents.md +6 -3
  18. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/platform-parity-tests.md +51 -45
  19. contractforge_core-0.2.0/docs/presentations/contractforge-apresentacao-slides.html +1055 -0
  20. contractforge_core-0.2.0/docs/presentations/contractforge-apresentacao.md +452 -0
  21. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/project-yaml.md +56 -30
  22. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/quickstart.md +6 -4
  23. contractforge_core-0.2.0/docs/reports/aws-hashdiff-production-benchmark.json +136 -0
  24. contractforge_core-0.2.0/docs/reports/aws-historical-semantics-decision.json +26 -0
  25. contractforge_core-0.2.0/docs/reports/aws-kafka-provider-matrix.json +115 -0
  26. contractforge_core-0.2.0/docs/reports/aws-lake-formation-consumer-matrix.json +119 -0
  27. contractforge_core-0.2.0/docs/reports/aws-snowflake-production-maturity-plan.json +127 -0
  28. contractforge_core-0.2.0/docs/reports/aws-stable-surface-evidence.json +214 -0
  29. contractforge_core-0.2.0/docs/reports/cross-adapter-production-run-scope-check.json +53 -0
  30. contractforge_core-0.2.0/docs/reports/databricks-kafka-provider-smoke.json +113 -0
  31. contractforge_core-0.2.0/docs/reports/databricks-stable-surface-evidence.json +111 -0
  32. contractforge_core-0.2.0/docs/reports/fabric-adls-iceberg-table-shortcut-source-smoke.json +125 -0
  33. contractforge_core-0.2.0/docs/reports/fabric-adls-shortcut-source-smoke.json +118 -0
  34. contractforge_core-0.2.0/docs/reports/fabric-auth-http-csv-variants-source-smoke.json +116 -0
  35. contractforge_core-0.2.0/docs/reports/fabric-auth-http-json-source-smoke.json +82 -0
  36. contractforge_core-0.2.0/docs/reports/fabric-auth-http-json-variants-source-smoke.json +102 -0
  37. contractforge_core-0.2.0/docs/reports/fabric-auth-http-text-api-key-source-smoke.json +101 -0
  38. contractforge_core-0.2.0/docs/reports/fabric-auth-http-text-basic-source-smoke.json +92 -0
  39. contractforge_core-0.2.0/docs/reports/fabric-auth-http-text-bearer-source-smoke.json +90 -0
  40. contractforge_core-0.2.0/docs/reports/fabric-auth-rest-oauth-source-smoke.json +92 -0
  41. contractforge_core-0.2.0/docs/reports/fabric-auth-rest-source-smoke.json +82 -0
  42. contractforge_core-0.2.0/docs/reports/fabric-auth-rest-variants-source-smoke.json +104 -0
  43. contractforge_core-0.2.0/docs/reports/fabric-azure-blob-source-smoke.json +93 -0
  44. contractforge_core-0.2.0/docs/reports/fabric-confluent-kafka-available-now-source-smoke.json +102 -0
  45. contractforge_core-0.2.0/docs/reports/fabric-confluent-kafka-bounded-source-smoke.json +102 -0
  46. contractforge_core-0.2.0/docs/reports/fabric-deployment-pipeline-lifecycle-smoke.json +24 -0
  47. contractforge_core-0.2.0/docs/reports/fabric-deployment-pipeline-read-probe.json +20 -0
  48. contractforge_core-0.2.0/docs/reports/fabric-deployment-pipeline-stage-promotion-smoke.json +65 -0
  49. contractforge_core-0.2.0/docs/reports/fabric-eventhubs-kafka-available-now-source-smoke.json +105 -0
  50. contractforge_core-0.2.0/docs/reports/fabric-external-azure-blob-shortcut-source-smoke.json +118 -0
  51. contractforge_core-0.2.0/docs/reports/fabric-external-s3-shortcut-source-smoke.json +121 -0
  52. contractforge_core-0.2.0/docs/reports/fabric-gcs-iceberg-table-shortcut-source-smoke.json +123 -0
  53. contractforge_core-0.2.0/docs/reports/fabric-gcs-shortcut-source-smoke.json +118 -0
  54. contractforge_core-0.2.0/docs/reports/fabric-http-csv-source-smoke.json +83 -0
  55. contractforge_core-0.2.0/docs/reports/fabric-http-json-source-smoke.json +72 -0
  56. contractforge_core-0.2.0/docs/reports/fabric-http-text-source-smoke.json +83 -0
  57. contractforge_core-0.2.0/docs/reports/fabric-iceberg-table-shortcut-source-smoke.json +126 -0
  58. contractforge_core-0.2.0/docs/reports/fabric-lakehouse-file-formats-source-smoke.json +129 -0
  59. contractforge_core-0.2.0/docs/reports/fabric-lakehouse-text-source-smoke.json +87 -0
  60. contractforge_core-0.2.0/docs/reports/fabric-onelake-data-access-role-smoke.json +38 -0
  61. contractforge_core-0.2.0/docs/reports/fabric-onelake-row-column-policy-smoke.json +48 -0
  62. contractforge_core-0.2.0/docs/reports/fabric-onelake-shortcut-source-smoke.json +96 -0
  63. contractforge_core-0.2.0/docs/reports/fabric-platform-parity.json +62 -0
  64. contractforge_core-0.2.0/docs/reports/fabric-postgres-jdbc-source-smoke.json +102 -0
  65. contractforge_core-0.2.0/docs/reports/fabric-private-azure-blob-source-smoke.json +102 -0
  66. contractforge_core-0.2.0/docs/reports/fabric-project-deploy-smoke.json +59 -0
  67. contractforge_core-0.2.0/docs/reports/fabric-s3-compatible-shortcut-source-smoke.json +121 -0
  68. contractforge_core-0.2.0/docs/reports/fabric-source-expansion-stable-scope-decision.json +100 -0
  69. contractforge_core-0.2.0/docs/reports/fabric-sqlserver-jdbc-source-smoke.json +96 -0
  70. contractforge_core-0.2.0/docs/reports/fabric-stable-surface-evidence.json +242 -0
  71. contractforge_core-0.2.0/docs/reports/fabric-usgs-rest-e2e-smoke.json +139 -0
  72. contractforge_core-0.2.0/docs/reports/gcp-auth-rest-http-secret-manager-variants-blocker.json +44 -0
  73. contractforge_core-0.2.0/docs/reports/gcp-auth-rest-http-secret-manager-variants-smoke.json +4958 -0
  74. contractforge_core-0.2.0/docs/reports/gcp-authenticated-rest-secret-manager-smoke.json +1234 -0
  75. contractforge_core-0.2.0/docs/reports/gcp-azure-sqlserver-jdbc-gold-smoke.json +2724 -0
  76. contractforge_core-0.2.0/docs/reports/gcp-azure-sqlserver-jdbc-medallion-e2e-smoke.json +54 -0
  77. contractforge_core-0.2.0/docs/reports/gcp-azure-sqlserver-jdbc-silver-smoke.json +2651 -0
  78. contractforge_core-0.2.0/docs/reports/gcp-azure-sqlserver-jdbc-source-promotion-launch.json +180 -0
  79. contractforge_core-0.2.0/docs/reports/gcp-azure-sqlserver-jdbc-source-promotion-plan.json +160 -0
  80. contractforge_core-0.2.0/docs/reports/gcp-biglake-iceberg-smoke.json +122 -0
  81. contractforge_core-0.2.0/docs/reports/gcp-bigquery-advanced-write-preflight-smoke.json +95 -0
  82. contractforge_core-0.2.0/docs/reports/gcp-bigquery-advanced-write-production-benchmark.json +243 -0
  83. contractforge_core-0.2.0/docs/reports/gcp-bigquery-advanced-write-smoke.json +153 -0
  84. contractforge_core-0.2.0/docs/reports/gcp-bigquery-annotations-smoke.json +104 -0
  85. contractforge_core-0.2.0/docs/reports/gcp-bigquery-bronze-to-gold-smoke.json +436 -0
  86. contractforge_core-0.2.0/docs/reports/gcp-bigquery-csv-smoke.json +948 -0
  87. contractforge_core-0.2.0/docs/reports/gcp-bigquery-data-masking-blocker.json +41 -0
  88. contractforge_core-0.2.0/docs/reports/gcp-bigquery-data-masking-smoke.json +101 -0
  89. contractforge_core-0.2.0/docs/reports/gcp-bigquery-error-evidence-smoke.json +65 -0
  90. contractforge_core-0.2.0/docs/reports/gcp-bigquery-file-formats-smoke.json +580 -0
  91. contractforge_core-0.2.0/docs/reports/gcp-bigquery-hashdiff-production-benchmark.json +163 -0
  92. contractforge_core-0.2.0/docs/reports/gcp-bigquery-historical-edge-smoke.json +114 -0
  93. contractforge_core-0.2.0/docs/reports/gcp-bigquery-policy-tags-smoke.json +133 -0
  94. contractforge_core-0.2.0/docs/reports/gcp-bigquery-row-access-policy-smoke.json +63 -0
  95. contractforge_core-0.2.0/docs/reports/gcp-bigquery-schema-policy-gcs-source-smoke.json +128 -0
  96. contractforge_core-0.2.0/docs/reports/gcp-bigquery-schema-policy-permissive-smoke.json +105 -0
  97. contractforge_core-0.2.0/docs/reports/gcp-bigquery-schema-policy-smoke.json +94 -0
  98. contractforge_core-0.2.0/docs/reports/gcp-bigquery-schema-policy-sql-source-smoke.json +103 -0
  99. contractforge_core-0.2.0/docs/reports/gcp-bigquery-schema-policy-strict-smoke.json +68 -0
  100. contractforge_core-0.2.0/docs/reports/gcp-bigquery-schema-policy-type-change-smoke.json +75 -0
  101. contractforge_core-0.2.0/docs/reports/gcp-bigquery-snapshot-variant-smoke.json +100 -0
  102. contractforge_core-0.2.0/docs/reports/gcp-bigquery-upsert-smoke.json +137 -0
  103. contractforge_core-0.2.0/docs/reports/gcp-confluent-kafka-dataflow-source-promotion-smoke.json +170 -0
  104. contractforge_core-0.2.0/docs/reports/gcp-dataplex-data-quality-execution-smoke.json +705 -0
  105. contractforge_core-0.2.0/docs/reports/gcp-dataplex-lineage-aspect-runtime-decision.json +39 -0
  106. contractforge_core-0.2.0/docs/reports/gcp-dataplex-lineage-aspects-smoke.json +112 -0
  107. contractforge_core-0.2.0/docs/reports/gcp-dataplex-lineage-dq-scope-decision.json +74 -0
  108. contractforge_core-0.2.0/docs/reports/gcp-deployment-orchestration-scope-decision.json +64 -0
  109. contractforge_core-0.2.0/docs/reports/gcp-governance-ledger-evidence-smoke.json +103 -0
  110. contractforge_core-0.2.0/docs/reports/gcp-governance-ledger-reconciliation-plan.json +42 -0
  111. contractforge_core-0.2.0/docs/reports/gcp-governance-ledger-reconciliation-smoke.json +83 -0
  112. contractforge_core-0.2.0/docs/reports/gcp-governance-stable-scope-decision.json +67 -0
  113. contractforge_core-0.2.0/docs/reports/gcp-hashdiff-cross-adapter-production-parity.json +69 -0
  114. contractforge_core-0.2.0/docs/reports/gcp-http-file-binary-bigquery-smoke.json +3698 -0
  115. contractforge_core-0.2.0/docs/reports/gcp-http-file-materialization-local-smoke.json +52 -0
  116. contractforge_core-0.2.0/docs/reports/gcp-http-sources-bigquery-smoke.json +4519 -0
  117. contractforge_core-0.2.0/docs/reports/gcp-http-text-bigquery-smoke-blocker.json +37 -0
  118. contractforge_core-0.2.0/docs/reports/gcp-http-text-materialization-local-smoke.json +40 -0
  119. contractforge_core-0.2.0/docs/reports/gcp-raw-iceberg-registration-smoke.json +96 -0
  120. contractforge_core-0.2.0/docs/reports/gcp-schema-policy-type-mutation-decision.json +48 -0
  121. contractforge_core-0.2.0/docs/reports/gcp-stable-surface-evidence.json +671 -0
  122. contractforge_core-0.2.0/docs/reports/gcp-streaming-scope-decision.json +46 -0
  123. contractforge_core-0.2.0/docs/reports/gcp-usgs-rest-e2e-smoke.json +12060 -0
  124. contractforge_core-0.2.0/docs/reports/gcp-workflows-certified-runner-smoke.json +250 -0
  125. contractforge_core-0.2.0/docs/reports/gcp-workflows-cleanup-command-smoke.json +62 -0
  126. contractforge_core-0.2.0/docs/reports/gcp-workflows-command-readback-smoke.json +68 -0
  127. contractforge_core-0.2.0/docs/reports/gcp-workflows-execution-runid-smoke.json +80 -0
  128. contractforge_core-0.2.0/docs/reports/gcp-workflows-quality-semantics-smoke.json +86 -0
  129. contractforge_core-0.2.0/docs/reports/gcp-workflows-runner-evidence-smoke.json +81 -0
  130. contractforge_core-0.2.0/docs/reports/gcp-workflows-runner-smoke.json +116 -0
  131. contractforge_core-0.2.0/docs/reports/gcp-workflows-schema-evidence-smoke.json +65 -0
  132. contractforge_core-0.2.0/docs/reports/gcp-workflows-target-evidence-cleanup-smoke.json +75 -0
  133. contractforge_core-0.2.0/docs/reports/gcp-workflows-write-failure-evidence-smoke.json +75 -0
  134. contractforge_core-0.2.0/docs/reports/gcp-write-mode-scope-decision.json +52 -0
  135. contractforge_core-0.2.0/docs/reports/geojson-test-presentation.md +169 -0
  136. contractforge_core-0.2.0/docs/reports/snowflake-access-policy-smoke.json +57 -0
  137. contractforge_core-0.2.0/docs/reports/snowflake-continuous-ingestion-decision.json +44 -0
  138. contractforge_core-0.2.0/docs/reports/snowflake-hashdiff-production-benchmark.json +155 -0
  139. contractforge_core-0.2.0/docs/reports/snowflake-historical-semantics-decision.json +26 -0
  140. contractforge_core-0.2.0/docs/reports/snowflake-stable-surface-evidence.json +181 -0
  141. contractforge_core-0.2.0/docs/reports/snowflake-task-graph-live-smoke.json +79 -0
  142. contractforge_core-0.2.0/docs/roadmap.md +75 -0
  143. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/security.md +7 -1
  144. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/specs/adapter-authoring.md +31 -14
  145. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/specs/adapter-technical-review-checklist.md +5 -3
  146. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/specs/api-stability.md +32 -17
  147. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/specs/aws-adapter-hardening-checklist.md +1 -1
  148. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/specs/aws-adapter.md +16 -16
  149. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/specs/aws-capability-parity.md +8 -8
  150. contractforge_core-0.2.0/docs/specs/aws-ga-criteria.md +229 -0
  151. contractforge_core-0.2.0/docs/specs/aws-ga-waivers.md +57 -0
  152. contractforge_core-0.2.0/docs/specs/aws-snowflake-production-maturity-plan.md +164 -0
  153. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/specs/aws-stabilization-matrix.md +16 -16
  154. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/specs/contract-sections.md +2 -2
  155. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/specs/control-table-parity.md +2 -2
  156. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/specs/databricks-adapter.md +14 -14
  157. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/specs/databricks-contractforge-parity.md +6 -6
  158. contractforge_core-0.2.0/docs/specs/databricks-ga-criteria.md +401 -0
  159. contractforge_core-0.2.0/docs/specs/databricks-ga-waivers.md +118 -0
  160. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/specs/environment-contract.md +21 -0
  161. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/specs/execution-plan.md +1 -1
  162. contractforge_core-0.2.0/docs/specs/gcp-capability-parity.md +288 -0
  163. contractforge_core-0.2.0/docs/specs/hash-diff-production-benchmark-runbook.md +131 -0
  164. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/specs/parameter-defaults.md +1 -1
  165. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/specs/platform-capabilities.md +5 -5
  166. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/specs/platform-contract-parity.md +6 -6
  167. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/specs/portability-boundaries.md +2 -2
  168. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/specs/publication-packaging.md +34 -3
  169. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/specs/semantic-contract.md +19 -19
  170. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/specs/snowflake-adapter-implementation-plan.md +17 -17
  171. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/specs/snowflake-adapter-parity-execution-plan.md +7 -7
  172. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/specs/snowflake-capability-parity.md +12 -12
  173. contractforge_core-0.2.0/docs/specs/snowflake-ga-criteria.md +226 -0
  174. contractforge_core-0.2.0/docs/specs/snowflake-ga-waivers.md +57 -0
  175. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/specs/snowflake-stabilization-matrix.md +18 -18
  176. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/specs/write-engines.md +15 -15
  177. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/usage-guide.md +6 -6
  178. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/pyproject.toml +7 -7
  179. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/cli.py +2 -2
  180. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/cli_contracts.py +4 -3
  181. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/cli_init.py +6 -4
  182. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/config.py +43 -1
  183. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/contracts/normalize.py +3 -3
  184. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/contracts/root.py +5 -4
  185. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/contracts/schema.py +12 -6
  186. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/execution/write_modes.py +2 -2
  187. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/portability.py +5 -3
  188. contractforge_core-0.1.0/CHANGELOG.md +0 -14
  189. contractforge_core-0.1.0/docs/README.md +0 -88
  190. contractforge_core-0.1.0/docs/adapters/test-contracts-across-adapters.md +0 -103
  191. contractforge_core-0.1.0/docs/adapters.md +0 -153
  192. contractforge_core-0.1.0/docs/reports/geojson-supabase-test-presentation.md +0 -993
  193. contractforge_core-0.1.0/docs/roadmap.md +0 -73
  194. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/LICENSE +0 -0
  195. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/adrs/ADR-001-core-adapter-architecture.md +0 -0
  196. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/adrs/ADR-002-databricks-reference-adapter.md +0 -0
  197. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/adrs/ADR-003-portable-vs-platform-specific-semantics.md +0 -0
  198. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/adrs/ADR-004-source-portability-and-connector-scope.md +0 -0
  199. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/adrs/ADR-005-adapter-parameter-policy.md +0 -0
  200. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/adrs/ADR-006-environment-contract.md +0 -0
  201. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/adrs/ADR-008-core-connector-centralization-and-independence.md +0 -0
  202. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/architecture.md +0 -0
  203. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/assets/diagrams/contractforge-flow.svg +0 -0
  204. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/assets/logo/contractforge-logo.png +0 -0
  205. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/assets/logo/contractforge-mark.png +0 -0
  206. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/connection-yaml.md +0 -0
  207. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/connectors.md +0 -0
  208. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/naming.md +0 -0
  209. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/operations.md +0 -0
  210. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/project-template.md +0 -0
  211. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/reports/adapter-technical-review-summary.md +0 -0
  212. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/reports/aws-adapter-review.md +0 -0
  213. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/reports/databricks-adapter-review.md +0 -0
  214. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/reports/snowflake-adapter-review.md +0 -0
  215. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/specs/adapter-parameter-policy.md +0 -0
  216. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/specs/evidence-mapping-matrix.md +0 -0
  217. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/specs/evidence-model.md +0 -0
  218. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/specs/extensions-aws.md +0 -0
  219. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/specs/extensions-databricks.md +0 -0
  220. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/docs/specs/source-portability.md +0 -0
  221. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/__init__.py +0 -0
  222. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/adapters/__init__.py +0 -0
  223. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/adapters/base/__init__.py +0 -0
  224. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/adapters/base/generic.py +0 -0
  225. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/adapters/base/protocol.py +0 -0
  226. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/capabilities/__init__.py +0 -0
  227. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/capabilities/models.py +0 -0
  228. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/capabilities/native.py +0 -0
  229. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/cli_connectors.py +0 -0
  230. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/cli_io.py +0 -0
  231. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/__init__.py +0 -0
  232. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/api/__init__.py +0 -0
  233. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/api/rest/__init__.py +0 -0
  234. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/api/rest/auth.py +0 -0
  235. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/api/rest/pagination.py +0 -0
  236. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/api/rest/reader.py +0 -0
  237. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/api/rest/retry.py +0 -0
  238. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/api/rest/safety.py +0 -0
  239. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/api/rest/source.py +0 -0
  240. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/api/rest/transport.py +0 -0
  241. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/catalog/__init__.py +0 -0
  242. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/catalog/catalog/__init__.py +0 -0
  243. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/catalog/catalog/source.py +0 -0
  244. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/catalog/catalog/table_refs.py +0 -0
  245. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/databases/__init__.py +0 -0
  246. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/databases/jdbc/__init__.py +0 -0
  247. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/databases/jdbc/rds_iam.py +0 -0
  248. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/databases/jdbc/source.py +0 -0
  249. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/files/__init__.py +0 -0
  250. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/files/files/__init__.py +0 -0
  251. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/files/files/source.py +0 -0
  252. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/http_files/__init__.py +0 -0
  253. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/http_files/http_file/__init__.py +0 -0
  254. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/http_files/http_file/reader.py +0 -0
  255. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/http_files/http_file/retry.py +0 -0
  256. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/http_files/http_file/safety.py +0 -0
  257. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/http_files/http_file/source.py +0 -0
  258. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/metadata.py +0 -0
  259. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/native_passthrough/__init__.py +0 -0
  260. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/native_passthrough/native_passthrough/__init__.py +0 -0
  261. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/native_passthrough/native_passthrough/source.py +0 -0
  262. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/registry.py +0 -0
  263. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/sharing/__init__.py +0 -0
  264. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/sharing/delta_share/__init__.py +0 -0
  265. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/sharing/delta_share/source.py +0 -0
  266. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/streams/__init__.py +0 -0
  267. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/streams/eventhubs/__init__.py +0 -0
  268. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/streams/eventhubs/source.py +0 -0
  269. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/streams/kafka/__init__.py +0 -0
  270. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/streams/kafka/source.py +0 -0
  271. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/connectors/streams/source.py +0 -0
  272. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/contracts/__init__.py +0 -0
  273. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/contracts/access.py +0 -0
  274. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/contracts/annotations.py +0 -0
  275. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/contracts/base.py +0 -0
  276. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/contracts/bundle.py +0 -0
  277. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/contracts/environment.py +0 -0
  278. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/contracts/execution.py +0 -0
  279. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/contracts/governance.py +0 -0
  280. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/contracts/governance_common.py +0 -0
  281. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/contracts/naming.py +0 -0
  282. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/contracts/operations.py +0 -0
  283. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/contracts/plan_validation.py +0 -0
  284. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/contracts/quality.py +0 -0
  285. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/contracts/shape_validation.py +0 -0
  286. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/contracts/source.py +0 -0
  287. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/contracts/source_connector.py +0 -0
  288. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/contracts/source_generic.py +0 -0
  289. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/contracts/source_portability.py +0 -0
  290. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/contracts/source_validation.py +0 -0
  291. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/contracts/targeting.py +0 -0
  292. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/contracts/transform.py +0 -0
  293. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/diagnostics/__init__.py +0 -0
  294. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/diagnostics/models.py +0 -0
  295. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/errors.py +0 -0
  296. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/evidence/__init__.py +0 -0
  297. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/evidence/control_tables.py +0 -0
  298. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/evidence/models.py +0 -0
  299. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/evidence/records.py +0 -0
  300. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/execution/__init__.py +0 -0
  301. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/execution/results.py +0 -0
  302. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/execution/strategy.py +0 -0
  303. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/execution/windows.py +0 -0
  304. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/metrics/__init__.py +0 -0
  305. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/metrics/write.py +0 -0
  306. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/naming.py +0 -0
  307. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/normalization/__init__.py +0 -0
  308. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/normalization/common.py +0 -0
  309. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/normalization/intents.py +0 -0
  310. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/normalization/quality.py +0 -0
  311. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/parity/__init__.py +0 -0
  312. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/parity/models.py +0 -0
  313. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/partitioning/__init__.py +0 -0
  314. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/partitioning/predicates.py +0 -0
  315. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/planner/__init__.py +0 -0
  316. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/planner/governance_checks.py +0 -0
  317. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/planner/matcher.py +0 -0
  318. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/planner/plan_builder.py +0 -0
  319. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/planner/result.py +0 -0
  320. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/planner/semantic_checks.py +0 -0
  321. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/planner/write_checks.py +0 -0
  322. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/preparation/__init__.py +0 -0
  323. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/preparation/staging.py +0 -0
  324. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/project.py +0 -0
  325. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/quality/__init__.py +0 -0
  326. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/quality/results.py +0 -0
  327. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/quality/rules.py +0 -0
  328. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/reporting/__init__.py +0 -0
  329. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/reporting/models.py +0 -0
  330. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/results.py +0 -0
  331. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/runtime/__init__.py +0 -0
  332. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/runtime/models.py +0 -0
  333. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/schema/__init__.py +0 -0
  334. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/schema/diff.py +0 -0
  335. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/schema/policy.py +0 -0
  336. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/security/__init__.py +0 -0
  337. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/security/redaction.py +0 -0
  338. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/semantic/__init__.py +0 -0
  339. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/semantic/models.py +0 -0
  340. {contractforge_core-0.1.0 → contractforge_core-0.2.0}/src/contractforge_core/watermark.py +0 -0
@@ -8,6 +8,7 @@ __pycache__/
8
8
  .tmp/
9
9
  dist/
10
10
  build/
11
+ test-runs/
11
12
  *.egg
12
13
  .coverage
13
14
  .coverage.*
@@ -16,3 +17,13 @@ htmlcov/
16
17
  .env
17
18
  .env.*
18
19
  !.env.example
20
+ api-key-*.txt
21
+
22
+ # Local agent/tooling state; never publish these.
23
+ .claude/
24
+ .codex/
25
+ .agents/
26
+ .vscode/
27
+ AGENTS.md
28
+ RTK.md
29
+ tools/rtk.ps1
@@ -0,0 +1,34 @@
1
+ # Changelog
2
+
3
+ All notable changes to `contractforge-core` are documented in this file.
4
+
5
+ The format follows Keep a Changelog, and this package follows semantic
6
+ versioning as described in `docs/specs/api-stability.md`.
7
+
8
+ ## [0.2.0] - 2026-06-19
9
+
10
+ ### Added
11
+
12
+ - Promoted the public package set for the current ContractForge maturity
13
+ baseline across core, Databricks, AWS, Snowflake, Fabric, GCP and AI.
14
+ - Added project and connection semantics used by the cross-platform test
15
+ projects, including reusable source defaults and environment-specific
16
+ bindings.
17
+ - Added stable writer aliases for contract authoring: `append`, `overwrite`,
18
+ `upsert`, `hash_diff_upsert`, `historical` and
19
+ `snapshot_reconcile_soft_delete`.
20
+
21
+ ### Changed
22
+
23
+ - Updated packaging and release metadata for the independent PyPI
24
+ distributions.
25
+ - Kept adapter-specific behavior outside the core package while aligning the
26
+ core validation boundary with the current adapter surfaces.
27
+
28
+ ## [0.1.0] - 2026-06-08
29
+
30
+ ### Added
31
+
32
+ - Initial public preview release of the platform-neutral ContractForge core.
33
+ - Semantic contract models, project parsing, capability matching, planning,
34
+ source connector catalog, evidence models and the `contractforge` CLI.
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: contractforge-core
3
- Version: 0.1.0
3
+ Version: 0.2.0
4
4
  Summary: Platform-neutral semantic core for contract-first data ingestion.
5
- Project-URL: Homepage, https://github.com/marquesantero/contractforge-core
6
- Project-URL: Documentation, https://marquesantero.github.io/contractforge-core/
7
- Project-URL: Repository, https://github.com/marquesantero/contractforge-core
8
- Project-URL: Issues, https://github.com/marquesantero/contractforge-core/issues
9
- Project-URL: Changelog, https://github.com/marquesantero/contractforge-core/blob/main/CHANGELOG.md
5
+ Project-URL: Homepage, https://github.com/marquesantero/contractforge
6
+ Project-URL: Documentation, https://marquesantero.github.io/contractforge/
7
+ Project-URL: Repository, https://github.com/marquesantero/contractforge
8
+ Project-URL: Issues, https://github.com/marquesantero/contractforge/issues
9
+ Project-URL: Changelog, https://github.com/marquesantero/contractforge/blob/main/CHANGELOG.md
10
10
  Author: ContractForge contributors
11
11
  License: MIT
12
12
  License-File: LICENSE
@@ -38,19 +38,18 @@ Description-Content-Type: text/markdown
38
38
  **Define ingestion intent once. Run it natively anywhere.**
39
39
 
40
40
  <p align="center">
41
- <a href="https://github.com/marquesantero/contractforge-core/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/marquesantero/contractforge-core/actions/workflows/ci.yml/badge.svg"></a>
42
- <a href="https://github.com/marquesantero/contractforge-core"><img alt="Product" src="https://img.shields.io/badge/product-ContractForge-0B5FFF"></a>
43
- <a href="https://marquesantero.github.io/contractforge-core/"><img alt="Documentation" src="https://img.shields.io/badge/docs-online-2EA44F"></a>
44
- <a href="https://github.com/marquesantero/contractforge-core/tree/main/src/contractforge_core"><img alt="Core" src="https://img.shields.io/badge/core-contractforge--core-1F6FEB"></a>
45
- <a href="https://github.com/marquesantero/contractforge-core/tree/main/adapters/databricks"><img alt="Databricks adapter" src="https://img.shields.io/badge/adapter-databricks-FF7A00"></a>
46
- <a href="https://github.com/marquesantero/contractforge-core/tree/main/adapters/aws"><img alt="AWS adapter" src="https://img.shields.io/badge/adapter-aws-232F3E"></a>
47
- <a href="https://github.com/marquesantero/contractforge-core/tree/main/ai"><img alt="ContractForge AI" src="https://img.shields.io/badge/ai-contractforge--ai-7B3FE4"></a>
41
+ <a href="https://github.com/marquesantero/contractforge/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/marquesantero/contractforge/actions/workflows/ci.yml/badge.svg"></a>
42
+ <a href="https://github.com/marquesantero/contractforge/actions/workflows/release.yml"><img alt="Release" src="https://github.com/marquesantero/contractforge/actions/workflows/release.yml/badge.svg"></a>
43
+ <a href="https://github.com/marquesantero/contractforge"><img alt="Product" src="https://img.shields.io/badge/product-ContractForge-0B5FFF"></a>
44
+ <a href="https://marquesantero.github.io/contractforge/"><img alt="Documentation" src="https://img.shields.io/badge/docs-online-2EA44F"></a>
45
+ <a href="https://github.com/marquesantero/contractforge/tree/main/src/contractforge_core"><img alt="Core" src="https://img.shields.io/badge/core-contractforge--core-1F6FEB"></a>
46
+ <a href="https://github.com/marquesantero/contractforge/tree/main/ai"><img alt="ContractForge AI" src="https://img.shields.io/badge/ai-contractforge--ai-7B3FE4"></a>
48
47
  <img alt="Python" src="https://img.shields.io/badge/python-%3E%3D3.10-blue">
49
- <a href="LICENSE"><img alt="License" src="https://img.shields.io/github/license/marquesantero/contractforge-core"></a>
48
+ <a href="LICENSE"><img alt="License" src="https://img.shields.io/github/license/marquesantero/contractforge"></a>
50
49
  </p>
51
50
 
52
51
  <p align="center">
53
- <a href="https://marquesantero.github.io/contractforge-core/">Documentation</a>
52
+ <a href="https://marquesantero.github.io/contractforge/">Documentation</a>
54
53
  ·
55
54
  <a href="docs/quickstart.md">Quick Start</a>
56
55
  ·
@@ -61,14 +60,19 @@ Description-Content-Type: text/markdown
61
60
  <a href="docs/roadmap.md">Roadmap</a>
62
61
  </p>
63
62
 
63
+ **Covered platforms:** Databricks, AWS Glue/Iceberg, Snowflake, Microsoft Fabric
64
+ Lakehouse and Google Cloud BigQuery. The adapters are separate packages, but
65
+ they execute the same contract vocabulary through native platform behavior.
66
+
64
67
  ContractForge is a multi-runtime, contract-first ingestion platform. It turns
65
68
  governed ingestion intent into native platform execution and evidence while
66
- keeping the contract vocabulary stable across Databricks, AWS and future
67
- adapters.
69
+ keeping the contract vocabulary stable across Databricks, AWS, Snowflake,
70
+ Fabric and GCP.
68
71
 
69
- The product remains **ContractForge**. `contractforge-core`,
70
- `contractforge-databricks`, `contractforge-aws` and `contractforge-ai` are
71
- functional package boundaries, not separate products.
72
+ `contractforge-core`, `contractforge-databricks`, `contractforge-aws`,
73
+ `contractforge-fabric`, `contractforge-snowflake`, `contractforge-gcp` and
74
+ `contractforge-ai` are functional package boundaries that keep platform
75
+ dependencies isolated while preserving the same contract language.
72
76
 
73
77
  It is built for data consultants, platform teams and engineering groups that
74
78
  need repeatable governed ingestion across different client runtimes without
@@ -84,15 +88,11 @@ rewriting the framework for every platform.
84
88
  | --- | --- |
85
89
  | Contract-first ingestion | Source, target, write mode, schema policy, transforms, quality, access, operations and evidence live in reviewed YAML contracts. |
86
90
  | Honest portability | The planner returns `SUPPORTED`, `SUPPORTED_WITH_WARNINGS`, `REVIEW_REQUIRED` or `UNSUPPORTED`; it does not silently downgrade semantics. |
87
- | Native adapters | Databricks and AWS translate the same intent into native runtime behavior instead of forcing a lowest-common-denominator engine. |
91
+ | Native adapters | Databricks, AWS, Snowflake, Fabric and GCP translate the same intent into native runtime behavior instead of forcing a lowest-common-denominator engine. |
88
92
  | Evidence as product surface | Runs, errors, quality, quarantine, schema changes, lineage, governance actions and cost signals are tracked consistently. |
89
93
  | Reusable connections | Shared `connection.yaml` files centralize connector defaults; ingestion contracts override only dataset-specific fields. |
90
94
  | AI-assisted project design | ContractForge AI turns prompts and schemas into reviewable projects, then validates them through Core and adapter planners. |
91
95
 
92
- ContractForge is not a scheduler, a dbt replacement, a closed ingestion runtime
93
- or a universal Spark wrapper. It is the semantic contract and adapter layer for
94
- repeatable governed ingestion.
95
-
96
96
  ## How It Works
97
97
 
98
98
  ```text
@@ -120,7 +120,7 @@ target:
120
120
  schema: bronze
121
121
  table: orders
122
122
 
123
- mode: scd0_append
123
+ mode: append
124
124
  schema_policy: additive_only
125
125
  quality_rules:
126
126
  not_null: [order_id]
@@ -143,32 +143,26 @@ cannot preserve the same semantics safely.
143
143
  | --- | --- | --- |
144
144
  | Core semantic model | Active | Contract models, semantic normalization, capability matching, abstract planning and evidence models are implemented. |
145
145
  | Databricks adapter | Reference implementation | Delta, Unity Catalog, Auto Loader, Lakeflow planning, Asset Bundles, control tables, quality, governance, lineage, cost and dashboards are implemented inside the adapter boundary. |
146
- | AWS adapter | Alpha with real E2E validation | Glue Spark/Iceberg planning, source support, quality/evidence, Lake Formation review/apply helpers, annotations, operations, S3 artifact publication, one-command Glue deployment and Glue job helper APIs are implemented. |
146
+ | AWS adapter | Stable supported surface | Glue Spark/Iceberg planning, source support, quality/evidence, Lake Formation review/apply helpers, annotations, operations, S3 artifact publication, one-command Glue deployment, orchestration, cost reconciliation and Glue job helper APIs are validated for the documented `aws_glue_iceberg` surface. |
147
147
  | ContractForge AI | Active | Deterministic review, project generation, diagnostics, provider routing and optional model-backed enrichment over the same core contract semantics. |
148
- | Snowflake adapter | Alpha with real Snowflake validation | SQL warehouse runtime, hosted Snowpark procedure library runner, table/staged-file/SQL sources, write modes, quality, schema policy, governance, evidence, lineage and cost reconciliation are implemented and live-smoked. |
149
- | Fabric adapter | Planned | Future adapters must depend on the core and declare platform capabilities explicitly. |
148
+ | Snowflake adapter | Stable supported surface | SQL warehouse runtime, hosted Snowpark procedure library runner, table/SQL/bounded REST/staged-file sources, write modes, quality, schema policy, governance, evidence, lineage and cost reconciliation are validated for the documented `snowflake_sql_warehouse` surface. |
149
+ | Fabric adapter | Stable supported surface | Notebook-first Lakehouse execution, broad source expansion, core write modes, evidence, governance review/apply helpers and deployment promotion are validated for the documented `fabric_lakehouse` surface. |
150
+ | GCP adapter | Stable supported surface | BigQuery table/view/SQL sources, GCS load jobs, registered BigLake Iceberg reads, append/overwrite/explicit-column upsert, SQL quality, evidence, row policies, direct masking, policy tags and descriptions are validated for the documented `gcp_bigquery` surface. |
150
151
 
151
152
  See [roadmap](docs/roadmap.md) for adapter maturity and release criteria.
152
153
 
153
- ## Compared With Alternatives
154
-
155
- | Alternative | Difference |
156
- | --- | --- |
157
- | dbt | dbt models data after it lands. ContractForge defines how governed data arrives, is written, validated and evidenced. |
158
- | Airbyte/Fivetran | They provide managed ingestion runtimes. ContractForge provides the contract and lets adapters execute natively in your platform. |
159
- | Data contract tools | Validation is one slice. ContractForge covers source, write semantics, schema policy, quality, governance, evidence and native execution artifacts. |
160
- | Platform-specific frameworks | ContractForge keeps platform implementations in adapters so the same semantics can be evaluated for other runtimes. |
161
-
162
154
  ## Install
163
155
 
164
156
  From GitHub:
165
157
 
166
158
  ```bash
167
- pip install "git+https://github.com/marquesantero/contractforge-core.git"
168
- pip install "git+https://github.com/marquesantero/contractforge-core.git#subdirectory=adapters/databricks"
169
- pip install "git+https://github.com/marquesantero/contractforge-core.git#subdirectory=adapters/aws"
170
- pip install "git+https://github.com/marquesantero/contractforge-core.git#subdirectory=adapters/snowflake"
171
- pip install "git+https://github.com/marquesantero/contractforge-core.git#subdirectory=ai"
159
+ pip install "git+https://github.com/marquesantero/contractforge.git"
160
+ pip install "git+https://github.com/marquesantero/contractforge.git#subdirectory=adapters/databricks"
161
+ pip install "git+https://github.com/marquesantero/contractforge.git#subdirectory=adapters/aws"
162
+ pip install "git+https://github.com/marquesantero/contractforge.git#subdirectory=adapters/fabric"
163
+ pip install "git+https://github.com/marquesantero/contractforge.git#subdirectory=adapters/snowflake"
164
+ pip install "git+https://github.com/marquesantero/contractforge.git#subdirectory=adapters/gcp"
165
+ pip install "git+https://github.com/marquesantero/contractforge.git#subdirectory=ai"
172
166
  ```
173
167
 
174
168
  Local development:
@@ -185,15 +179,51 @@ uv build --wheel
185
179
  cd adapters/databricks && uv build --wheel
186
180
  cd ../aws && uv build --wheel
187
181
  cd ../snowflake && uv build --wheel
182
+ cd ../fabric && uv build --wheel
183
+ cd ../gcp && uv build --wheel
188
184
  cd ../../ai && uv build --wheel
189
185
  ```
190
186
 
191
187
  Release package names:
192
188
 
193
189
  ```bash
194
- pip install contractforge-core contractforge-databricks contractforge-aws contractforge-snowflake contractforge-ai
190
+ pip install contractforge-core contractforge-databricks contractforge-aws contractforge-snowflake contractforge-fabric contractforge-gcp contractforge-ai
195
191
  ```
196
192
 
193
+ ## Packages And Releases
194
+
195
+ ContractForge is published as independent PyPI packages from one repository.
196
+ The package boundary is intentional: the core stays platform-neutral, while
197
+ adapters carry native runtime dependencies and behavior.
198
+
199
+ | Package | Current version | PyPI | Source |
200
+ | --- | --- | --- | --- |
201
+ | `contractforge-core` | `0.2.0` | [PyPI](https://pypi.org/project/contractforge-core/) | [core](src/contractforge_core) |
202
+ | `contractforge-databricks` | `0.2.0` | [PyPI](https://pypi.org/project/contractforge-databricks/) | [adapter](adapters/databricks) |
203
+ | `contractforge-aws` | `0.2.0` | [PyPI](https://pypi.org/project/contractforge-aws/) | [adapter](adapters/aws) |
204
+ | `contractforge-snowflake` | `0.2.0` | [PyPI](https://pypi.org/project/contractforge-snowflake/) | [adapter](adapters/snowflake) |
205
+ | `contractforge-fabric` | `0.2.0` | [PyPI](https://pypi.org/project/contractforge-fabric/) | [adapter](adapters/fabric) |
206
+ | `contractforge-gcp` | `0.2.0` | [PyPI](https://pypi.org/project/contractforge-gcp/) | [adapter](adapters/gcp) |
207
+ | `contractforge-ai` | `0.3.0` | [PyPI](https://pypi.org/project/contractforge-ai/) | [AI companion](ai) |
208
+
209
+ Releases are built by [`.github/workflows/release.yml`](.github/workflows/release.yml).
210
+ The workflow can be started manually with `workflow_dispatch` for one package,
211
+ or by pushing package-specific tags:
212
+
213
+ ```text
214
+ v<version>-core
215
+ v<version>-databricks
216
+ v<version>-aws
217
+ v<version>-snowflake
218
+ v<version>-fabric
219
+ v<version>-gcp
220
+ v<version>-ai
221
+ ```
222
+
223
+ PyPI does not allow overwriting an existing version. Before publishing from this
224
+ repository, bump the target package version and publish a new tag or manual
225
+ release workflow run.
226
+
197
227
  ## Project Shape
198
228
 
199
229
  A complete ContractForge project keeps runtime concerns separate from contract
@@ -252,9 +282,10 @@ values override global connection defaults.
252
282
  | Adapter | Package | Status | Native responsibilities |
253
283
  | --- | --- | --- | --- |
254
284
  | Databricks | `contractforge-databricks` | Reference implementation | Delta, Unity Catalog, Auto Loader, Lakeflow planning, Jobs, Asset Bundles, control tables, governance, lineage, cost and dashboards. |
255
- | AWS | `contractforge-aws` | Alpha with real E2E validation | Glue Spark, Iceberg, Glue Catalog, Lake Formation review/apply helpers, S3 artifacts, Glue jobs, Athena/Iceberg evidence and cost records. |
256
- | Fabric | `contractforge-fabric` | Planned | OneLake, Lakehouse tables, Data Pipelines, Dataflow Gen2 and Purview/Fabric metadata. |
257
- | Snowflake | `contractforge-snowflake` | Alpha with real Snowflake validation | SQL warehouse runtime, hosted Snowpark procedure library runner with staged ZIP imports, table/staged-file/SQL sources, append/overwrite/upsert/hash-diff writes, quality, schema policy, governance, evidence/control tables, lineage, cost reconciliation and project deployment. Task graph live smoke still needs task grants. See [Snowflake adapter guide](docs/adapters/snowflake.md). |
285
+ | AWS | `contractforge-aws` | Stable supported surface | Glue Spark, Iceberg, Glue Catalog, Lake Formation review/apply helpers, S3 artifacts, Glue jobs, Athena/Iceberg evidence and cost records for the documented `aws_glue_iceberg` surface. |
286
+ | Fabric | `contractforge-fabric` | Stable supported surface | Notebook-first Lakehouse execution, Lakehouse Delta writes, source expansion, shortcut reads, Kafka catch-up, core write modes, control evidence, workspace roles, sensitivity labels and OneLake data access role apply helpers for the documented `fabric_lakehouse` surface. |
287
+ | Snowflake | `contractforge-snowflake` | Stable supported surface | SQL warehouse runtime, hosted Snowpark procedure library runner with staged ZIP imports, table/SQL/bounded REST/staged-file sources, append/overwrite/upsert/hash-diff writes, quality, schema policy, governance, evidence/control tables, lineage, cost reconciliation and project deployment for the documented `snowflake_sql_warehouse` surface. Task graph live execution still needs task grants. See [Snowflake adapter guide](docs/adapters/snowflake.md). |
288
+ | GCP | `contractforge-gcp` | Stable supported surface | BigQuery table/view/SQL sources, GCS load jobs, BigLake Iceberg table reads, core writes, SQL quality, evidence tables, row access policies, masking, policy tags and descriptions for the documented `gcp_bigquery` surface. |
258
289
 
259
290
  Use the same project model for adapter deployment:
260
291
 
@@ -271,7 +302,7 @@ planning and produce clear HTML approval reports.
271
302
 
272
303
  ```bash
273
304
  contractforge-ai guided-project \
274
- --intent "Create a Supabase medallion project for AWS and Databricks daily at 6 Sao Paulo time." \
305
+ --intent "Create a Supabase medallion project for Databricks, AWS, Snowflake, Fabric and GCP daily at 6 Sao Paulo time." \
275
306
  --schema schemas/products.json \
276
307
  --target contractforge-yaml \
277
308
  --allow-review-required \
@@ -280,6 +311,9 @@ contractforge-ai guided-project \
280
311
  contractforge-ai validate-project-structure generated/supabase \
281
312
  --adapter databricks \
282
313
  --adapter aws \
314
+ --adapter snowflake \
315
+ --adapter fabric \
316
+ --adapter gcp \
283
317
  --format html > generated/supabase/project_validation.html
284
318
  ```
285
319
 
@@ -298,7 +332,7 @@ contract = validate_contract(
298
332
  {
299
333
  "source": {"type": "incremental_files", "path": "s3://landing/orders", "format": "json"},
300
334
  "target": {"catalog": "main", "schema": "bronze", "table": "orders"},
301
- "mode": "scd0_append",
335
+ "mode": "append",
302
336
  "schema_policy": "additive_only",
303
337
  "quality_rules": {"not_null": ["order_id"]},
304
338
  }
@@ -324,9 +358,12 @@ print(result.status)
324
358
  | Semantic core | `contractforge-core` | Contract models, validation, semantic normalization, capability matching, abstract plans, portability diagnostics and neutral evidence models. |
325
359
  | Databricks adapter | `contractforge-databricks` | Databricks capabilities, rendering, runtime execution, governance, evidence filling and deployment helpers. |
326
360
  | AWS adapter | `contractforge-aws` | AWS capabilities, Glue/Iceberg planning, runtime helpers, S3 publication, deployment helpers and evidence filling. |
361
+ | Fabric adapter | `contractforge-fabric` | Fabric Lakehouse capabilities, Notebook rendering/execution, source expansion, governance apply helpers and deployment promotion. |
362
+ | Snowflake adapter | `contractforge-snowflake` | Snowflake SQL warehouse capabilities, hosted procedure runtime, task graph execution, governance, lineage, cost and evidence filling. |
363
+ | GCP adapter | `contractforge-gcp` | BigQuery capabilities, GCS load-job rendering, smoke execution, evidence DDL, governance smokes and BigLake Iceberg table support. |
327
364
  | AI companion | `contractforge-ai` | Deterministic review, project generation, diagnostics, provider routing, report generation and optional model-backed enrichment. |
328
365
 
329
- Publication stays split: each package builds its own wheel and future adapters
366
+ Publication stays split: each package builds its own wheel and all adapters
330
367
  depend explicitly on `contractforge-core`.
331
368
 
332
369
  The core wheel owns only `contractforge_core`; adapter wheels such as `contractforge-databricks` own their adapter package and depend explicitly on the core.
@@ -337,7 +374,7 @@ See [publication packaging](docs/specs/publication-packaging.md).
337
374
 
338
375
  | Topic | Link |
339
376
  | --- | --- |
340
- | Online site | [marquesantero.github.io/contractforge-core](https://marquesantero.github.io/contractforge-core/) |
377
+ | Online site | [marquesantero.github.io/contractforge](https://marquesantero.github.io/contractforge/) |
341
378
  | Documentation index | [docs/README.md](docs/README.md) |
342
379
  | Quick start | [docs/quickstart.md](docs/quickstart.md) |
343
380
  | Architecture | [docs/architecture.md](docs/architecture.md) |
@@ -347,16 +384,30 @@ See [publication packaging](docs/specs/publication-packaging.md).
347
384
  | Adapters | [docs/adapters.md](docs/adapters.md) |
348
385
  | Databricks adapter | [docs/databricks.md](docs/databricks.md) |
349
386
  | AWS adapter | [docs/adapters/aws.md](docs/adapters/aws.md) |
387
+ | Snowflake adapter | [docs/adapters/snowflake.md](docs/adapters/snowflake.md) |
350
388
  | Test contracts across adapters | [docs/adapters/test-contracts-across-adapters.md](docs/adapters/test-contracts-across-adapters.md) |
351
389
  | Connectors | [docs/connectors.md](docs/connectors.md) |
352
390
  | Operations and evidence | [docs/operations.md](docs/operations.md) |
353
391
  | ContractForge AI | [ai/README.md](ai/README.md) |
354
392
  | Security | [docs/security.md](docs/security.md) |
355
393
  | Adapter authoring | [docs/specs/adapter-authoring.md](docs/specs/adapter-authoring.md) |
394
+ | Contributing | [CONTRIBUTING.md](CONTRIBUTING.md) |
395
+ | Support | [SUPPORT.md](SUPPORT.md) |
396
+ | Security policy | [SECURITY.md](SECURITY.md) |
356
397
 
357
398
  Architecture contracts live under [docs/specs](docs/specs/), and decisions live
358
399
  under [docs/adrs](docs/adrs/).
359
400
 
401
+ ## Contributing
402
+
403
+ Contributions are welcome when they preserve the core/adapter boundary and keep
404
+ contract behavior explicit. Start with [CONTRIBUTING.md](CONTRIBUTING.md), use
405
+ the issue templates for bugs, features or adapter gaps, and follow
406
+ [SECURITY.md](SECURITY.md) for private vulnerability reports. Changes flow
407
+ through pull requests to the protected `main` branch with required CI and
408
+ maintainer or CODEOWNER review when the change affects public behavior, release
409
+ flow, security, package boundaries or adapter maturity.
410
+
360
411
  ## Non-Goals
361
412
 
362
413
  ContractForge is not:
@@ -7,19 +7,18 @@
7
7
  **Define ingestion intent once. Run it natively anywhere.**
8
8
 
9
9
  <p align="center">
10
- <a href="https://github.com/marquesantero/contractforge-core/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/marquesantero/contractforge-core/actions/workflows/ci.yml/badge.svg"></a>
11
- <a href="https://github.com/marquesantero/contractforge-core"><img alt="Product" src="https://img.shields.io/badge/product-ContractForge-0B5FFF"></a>
12
- <a href="https://marquesantero.github.io/contractforge-core/"><img alt="Documentation" src="https://img.shields.io/badge/docs-online-2EA44F"></a>
13
- <a href="https://github.com/marquesantero/contractforge-core/tree/main/src/contractforge_core"><img alt="Core" src="https://img.shields.io/badge/core-contractforge--core-1F6FEB"></a>
14
- <a href="https://github.com/marquesantero/contractforge-core/tree/main/adapters/databricks"><img alt="Databricks adapter" src="https://img.shields.io/badge/adapter-databricks-FF7A00"></a>
15
- <a href="https://github.com/marquesantero/contractforge-core/tree/main/adapters/aws"><img alt="AWS adapter" src="https://img.shields.io/badge/adapter-aws-232F3E"></a>
16
- <a href="https://github.com/marquesantero/contractforge-core/tree/main/ai"><img alt="ContractForge AI" src="https://img.shields.io/badge/ai-contractforge--ai-7B3FE4"></a>
10
+ <a href="https://github.com/marquesantero/contractforge/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/marquesantero/contractforge/actions/workflows/ci.yml/badge.svg"></a>
11
+ <a href="https://github.com/marquesantero/contractforge/actions/workflows/release.yml"><img alt="Release" src="https://github.com/marquesantero/contractforge/actions/workflows/release.yml/badge.svg"></a>
12
+ <a href="https://github.com/marquesantero/contractforge"><img alt="Product" src="https://img.shields.io/badge/product-ContractForge-0B5FFF"></a>
13
+ <a href="https://marquesantero.github.io/contractforge/"><img alt="Documentation" src="https://img.shields.io/badge/docs-online-2EA44F"></a>
14
+ <a href="https://github.com/marquesantero/contractforge/tree/main/src/contractforge_core"><img alt="Core" src="https://img.shields.io/badge/core-contractforge--core-1F6FEB"></a>
15
+ <a href="https://github.com/marquesantero/contractforge/tree/main/ai"><img alt="ContractForge AI" src="https://img.shields.io/badge/ai-contractforge--ai-7B3FE4"></a>
17
16
  <img alt="Python" src="https://img.shields.io/badge/python-%3E%3D3.10-blue">
18
- <a href="LICENSE"><img alt="License" src="https://img.shields.io/github/license/marquesantero/contractforge-core"></a>
17
+ <a href="LICENSE"><img alt="License" src="https://img.shields.io/github/license/marquesantero/contractforge"></a>
19
18
  </p>
20
19
 
21
20
  <p align="center">
22
- <a href="https://marquesantero.github.io/contractforge-core/">Documentation</a>
21
+ <a href="https://marquesantero.github.io/contractforge/">Documentation</a>
23
22
  ·
24
23
  <a href="docs/quickstart.md">Quick Start</a>
25
24
  ·
@@ -30,14 +29,19 @@
30
29
  <a href="docs/roadmap.md">Roadmap</a>
31
30
  </p>
32
31
 
32
+ **Covered platforms:** Databricks, AWS Glue/Iceberg, Snowflake, Microsoft Fabric
33
+ Lakehouse and Google Cloud BigQuery. The adapters are separate packages, but
34
+ they execute the same contract vocabulary through native platform behavior.
35
+
33
36
  ContractForge is a multi-runtime, contract-first ingestion platform. It turns
34
37
  governed ingestion intent into native platform execution and evidence while
35
- keeping the contract vocabulary stable across Databricks, AWS and future
36
- adapters.
38
+ keeping the contract vocabulary stable across Databricks, AWS, Snowflake,
39
+ Fabric and GCP.
37
40
 
38
- The product remains **ContractForge**. `contractforge-core`,
39
- `contractforge-databricks`, `contractforge-aws` and `contractforge-ai` are
40
- functional package boundaries, not separate products.
41
+ `contractforge-core`, `contractforge-databricks`, `contractforge-aws`,
42
+ `contractforge-fabric`, `contractforge-snowflake`, `contractforge-gcp` and
43
+ `contractforge-ai` are functional package boundaries that keep platform
44
+ dependencies isolated while preserving the same contract language.
41
45
 
42
46
  It is built for data consultants, platform teams and engineering groups that
43
47
  need repeatable governed ingestion across different client runtimes without
@@ -53,15 +57,11 @@ rewriting the framework for every platform.
53
57
  | --- | --- |
54
58
  | Contract-first ingestion | Source, target, write mode, schema policy, transforms, quality, access, operations and evidence live in reviewed YAML contracts. |
55
59
  | Honest portability | The planner returns `SUPPORTED`, `SUPPORTED_WITH_WARNINGS`, `REVIEW_REQUIRED` or `UNSUPPORTED`; it does not silently downgrade semantics. |
56
- | Native adapters | Databricks and AWS translate the same intent into native runtime behavior instead of forcing a lowest-common-denominator engine. |
60
+ | Native adapters | Databricks, AWS, Snowflake, Fabric and GCP translate the same intent into native runtime behavior instead of forcing a lowest-common-denominator engine. |
57
61
  | Evidence as product surface | Runs, errors, quality, quarantine, schema changes, lineage, governance actions and cost signals are tracked consistently. |
58
62
  | Reusable connections | Shared `connection.yaml` files centralize connector defaults; ingestion contracts override only dataset-specific fields. |
59
63
  | AI-assisted project design | ContractForge AI turns prompts and schemas into reviewable projects, then validates them through Core and adapter planners. |
60
64
 
61
- ContractForge is not a scheduler, a dbt replacement, a closed ingestion runtime
62
- or a universal Spark wrapper. It is the semantic contract and adapter layer for
63
- repeatable governed ingestion.
64
-
65
65
  ## How It Works
66
66
 
67
67
  ```text
@@ -89,7 +89,7 @@ target:
89
89
  schema: bronze
90
90
  table: orders
91
91
 
92
- mode: scd0_append
92
+ mode: append
93
93
  schema_policy: additive_only
94
94
  quality_rules:
95
95
  not_null: [order_id]
@@ -112,32 +112,26 @@ cannot preserve the same semantics safely.
112
112
  | --- | --- | --- |
113
113
  | Core semantic model | Active | Contract models, semantic normalization, capability matching, abstract planning and evidence models are implemented. |
114
114
  | Databricks adapter | Reference implementation | Delta, Unity Catalog, Auto Loader, Lakeflow planning, Asset Bundles, control tables, quality, governance, lineage, cost and dashboards are implemented inside the adapter boundary. |
115
- | AWS adapter | Alpha with real E2E validation | Glue Spark/Iceberg planning, source support, quality/evidence, Lake Formation review/apply helpers, annotations, operations, S3 artifact publication, one-command Glue deployment and Glue job helper APIs are implemented. |
115
+ | AWS adapter | Stable supported surface | Glue Spark/Iceberg planning, source support, quality/evidence, Lake Formation review/apply helpers, annotations, operations, S3 artifact publication, one-command Glue deployment, orchestration, cost reconciliation and Glue job helper APIs are validated for the documented `aws_glue_iceberg` surface. |
116
116
  | ContractForge AI | Active | Deterministic review, project generation, diagnostics, provider routing and optional model-backed enrichment over the same core contract semantics. |
117
- | Snowflake adapter | Alpha with real Snowflake validation | SQL warehouse runtime, hosted Snowpark procedure library runner, table/staged-file/SQL sources, write modes, quality, schema policy, governance, evidence, lineage and cost reconciliation are implemented and live-smoked. |
118
- | Fabric adapter | Planned | Future adapters must depend on the core and declare platform capabilities explicitly. |
117
+ | Snowflake adapter | Stable supported surface | SQL warehouse runtime, hosted Snowpark procedure library runner, table/SQL/bounded REST/staged-file sources, write modes, quality, schema policy, governance, evidence, lineage and cost reconciliation are validated for the documented `snowflake_sql_warehouse` surface. |
118
+ | Fabric adapter | Stable supported surface | Notebook-first Lakehouse execution, broad source expansion, core write modes, evidence, governance review/apply helpers and deployment promotion are validated for the documented `fabric_lakehouse` surface. |
119
+ | GCP adapter | Stable supported surface | BigQuery table/view/SQL sources, GCS load jobs, registered BigLake Iceberg reads, append/overwrite/explicit-column upsert, SQL quality, evidence, row policies, direct masking, policy tags and descriptions are validated for the documented `gcp_bigquery` surface. |
119
120
 
120
121
  See [roadmap](docs/roadmap.md) for adapter maturity and release criteria.
121
122
 
122
- ## Compared With Alternatives
123
-
124
- | Alternative | Difference |
125
- | --- | --- |
126
- | dbt | dbt models data after it lands. ContractForge defines how governed data arrives, is written, validated and evidenced. |
127
- | Airbyte/Fivetran | They provide managed ingestion runtimes. ContractForge provides the contract and lets adapters execute natively in your platform. |
128
- | Data contract tools | Validation is one slice. ContractForge covers source, write semantics, schema policy, quality, governance, evidence and native execution artifacts. |
129
- | Platform-specific frameworks | ContractForge keeps platform implementations in adapters so the same semantics can be evaluated for other runtimes. |
130
-
131
123
  ## Install
132
124
 
133
125
  From GitHub:
134
126
 
135
127
  ```bash
136
- pip install "git+https://github.com/marquesantero/contractforge-core.git"
137
- pip install "git+https://github.com/marquesantero/contractforge-core.git#subdirectory=adapters/databricks"
138
- pip install "git+https://github.com/marquesantero/contractforge-core.git#subdirectory=adapters/aws"
139
- pip install "git+https://github.com/marquesantero/contractforge-core.git#subdirectory=adapters/snowflake"
140
- pip install "git+https://github.com/marquesantero/contractforge-core.git#subdirectory=ai"
128
+ pip install "git+https://github.com/marquesantero/contractforge.git"
129
+ pip install "git+https://github.com/marquesantero/contractforge.git#subdirectory=adapters/databricks"
130
+ pip install "git+https://github.com/marquesantero/contractforge.git#subdirectory=adapters/aws"
131
+ pip install "git+https://github.com/marquesantero/contractforge.git#subdirectory=adapters/fabric"
132
+ pip install "git+https://github.com/marquesantero/contractforge.git#subdirectory=adapters/snowflake"
133
+ pip install "git+https://github.com/marquesantero/contractforge.git#subdirectory=adapters/gcp"
134
+ pip install "git+https://github.com/marquesantero/contractforge.git#subdirectory=ai"
141
135
  ```
142
136
 
143
137
  Local development:
@@ -154,15 +148,51 @@ uv build --wheel
154
148
  cd adapters/databricks && uv build --wheel
155
149
  cd ../aws && uv build --wheel
156
150
  cd ../snowflake && uv build --wheel
151
+ cd ../fabric && uv build --wheel
152
+ cd ../gcp && uv build --wheel
157
153
  cd ../../ai && uv build --wheel
158
154
  ```
159
155
 
160
156
  Release package names:
161
157
 
162
158
  ```bash
163
- pip install contractforge-core contractforge-databricks contractforge-aws contractforge-snowflake contractforge-ai
159
+ pip install contractforge-core contractforge-databricks contractforge-aws contractforge-snowflake contractforge-fabric contractforge-gcp contractforge-ai
164
160
  ```
165
161
 
162
+ ## Packages And Releases
163
+
164
+ ContractForge is published as independent PyPI packages from one repository.
165
+ The package boundary is intentional: the core stays platform-neutral, while
166
+ adapters carry native runtime dependencies and behavior.
167
+
168
+ | Package | Current version | PyPI | Source |
169
+ | --- | --- | --- | --- |
170
+ | `contractforge-core` | `0.2.0` | [PyPI](https://pypi.org/project/contractforge-core/) | [core](src/contractforge_core) |
171
+ | `contractforge-databricks` | `0.2.0` | [PyPI](https://pypi.org/project/contractforge-databricks/) | [adapter](adapters/databricks) |
172
+ | `contractforge-aws` | `0.2.0` | [PyPI](https://pypi.org/project/contractforge-aws/) | [adapter](adapters/aws) |
173
+ | `contractforge-snowflake` | `0.2.0` | [PyPI](https://pypi.org/project/contractforge-snowflake/) | [adapter](adapters/snowflake) |
174
+ | `contractforge-fabric` | `0.2.0` | [PyPI](https://pypi.org/project/contractforge-fabric/) | [adapter](adapters/fabric) |
175
+ | `contractforge-gcp` | `0.2.0` | [PyPI](https://pypi.org/project/contractforge-gcp/) | [adapter](adapters/gcp) |
176
+ | `contractforge-ai` | `0.3.0` | [PyPI](https://pypi.org/project/contractforge-ai/) | [AI companion](ai) |
177
+
178
+ Releases are built by [`.github/workflows/release.yml`](.github/workflows/release.yml).
179
+ The workflow can be started manually with `workflow_dispatch` for one package,
180
+ or by pushing package-specific tags:
181
+
182
+ ```text
183
+ v<version>-core
184
+ v<version>-databricks
185
+ v<version>-aws
186
+ v<version>-snowflake
187
+ v<version>-fabric
188
+ v<version>-gcp
189
+ v<version>-ai
190
+ ```
191
+
192
+ PyPI does not allow overwriting an existing version. Before publishing from this
193
+ repository, bump the target package version and publish a new tag or manual
194
+ release workflow run.
195
+
166
196
  ## Project Shape
167
197
 
168
198
  A complete ContractForge project keeps runtime concerns separate from contract
@@ -221,9 +251,10 @@ values override global connection defaults.
221
251
  | Adapter | Package | Status | Native responsibilities |
222
252
  | --- | --- | --- | --- |
223
253
  | Databricks | `contractforge-databricks` | Reference implementation | Delta, Unity Catalog, Auto Loader, Lakeflow planning, Jobs, Asset Bundles, control tables, governance, lineage, cost and dashboards. |
224
- | AWS | `contractforge-aws` | Alpha with real E2E validation | Glue Spark, Iceberg, Glue Catalog, Lake Formation review/apply helpers, S3 artifacts, Glue jobs, Athena/Iceberg evidence and cost records. |
225
- | Fabric | `contractforge-fabric` | Planned | OneLake, Lakehouse tables, Data Pipelines, Dataflow Gen2 and Purview/Fabric metadata. |
226
- | Snowflake | `contractforge-snowflake` | Alpha with real Snowflake validation | SQL warehouse runtime, hosted Snowpark procedure library runner with staged ZIP imports, table/staged-file/SQL sources, append/overwrite/upsert/hash-diff writes, quality, schema policy, governance, evidence/control tables, lineage, cost reconciliation and project deployment. Task graph live smoke still needs task grants. See [Snowflake adapter guide](docs/adapters/snowflake.md). |
254
+ | AWS | `contractforge-aws` | Stable supported surface | Glue Spark, Iceberg, Glue Catalog, Lake Formation review/apply helpers, S3 artifacts, Glue jobs, Athena/Iceberg evidence and cost records for the documented `aws_glue_iceberg` surface. |
255
+ | Fabric | `contractforge-fabric` | Stable supported surface | Notebook-first Lakehouse execution, Lakehouse Delta writes, source expansion, shortcut reads, Kafka catch-up, core write modes, control evidence, workspace roles, sensitivity labels and OneLake data access role apply helpers for the documented `fabric_lakehouse` surface. |
256
+ | Snowflake | `contractforge-snowflake` | Stable supported surface | SQL warehouse runtime, hosted Snowpark procedure library runner with staged ZIP imports, table/SQL/bounded REST/staged-file sources, append/overwrite/upsert/hash-diff writes, quality, schema policy, governance, evidence/control tables, lineage, cost reconciliation and project deployment for the documented `snowflake_sql_warehouse` surface. Task graph live execution still needs task grants. See [Snowflake adapter guide](docs/adapters/snowflake.md). |
257
+ | GCP | `contractforge-gcp` | Stable supported surface | BigQuery table/view/SQL sources, GCS load jobs, BigLake Iceberg table reads, core writes, SQL quality, evidence tables, row access policies, masking, policy tags and descriptions for the documented `gcp_bigquery` surface. |
227
258
 
228
259
  Use the same project model for adapter deployment:
229
260
 
@@ -240,7 +271,7 @@ planning and produce clear HTML approval reports.
240
271
 
241
272
  ```bash
242
273
  contractforge-ai guided-project \
243
- --intent "Create a Supabase medallion project for AWS and Databricks daily at 6 Sao Paulo time." \
274
+ --intent "Create a Supabase medallion project for Databricks, AWS, Snowflake, Fabric and GCP daily at 6 Sao Paulo time." \
244
275
  --schema schemas/products.json \
245
276
  --target contractforge-yaml \
246
277
  --allow-review-required \
@@ -249,6 +280,9 @@ contractforge-ai guided-project \
249
280
  contractforge-ai validate-project-structure generated/supabase \
250
281
  --adapter databricks \
251
282
  --adapter aws \
283
+ --adapter snowflake \
284
+ --adapter fabric \
285
+ --adapter gcp \
252
286
  --format html > generated/supabase/project_validation.html
253
287
  ```
254
288
 
@@ -267,7 +301,7 @@ contract = validate_contract(
267
301
  {
268
302
  "source": {"type": "incremental_files", "path": "s3://landing/orders", "format": "json"},
269
303
  "target": {"catalog": "main", "schema": "bronze", "table": "orders"},
270
- "mode": "scd0_append",
304
+ "mode": "append",
271
305
  "schema_policy": "additive_only",
272
306
  "quality_rules": {"not_null": ["order_id"]},
273
307
  }
@@ -293,9 +327,12 @@ print(result.status)
293
327
  | Semantic core | `contractforge-core` | Contract models, validation, semantic normalization, capability matching, abstract plans, portability diagnostics and neutral evidence models. |
294
328
  | Databricks adapter | `contractforge-databricks` | Databricks capabilities, rendering, runtime execution, governance, evidence filling and deployment helpers. |
295
329
  | AWS adapter | `contractforge-aws` | AWS capabilities, Glue/Iceberg planning, runtime helpers, S3 publication, deployment helpers and evidence filling. |
330
+ | Fabric adapter | `contractforge-fabric` | Fabric Lakehouse capabilities, Notebook rendering/execution, source expansion, governance apply helpers and deployment promotion. |
331
+ | Snowflake adapter | `contractforge-snowflake` | Snowflake SQL warehouse capabilities, hosted procedure runtime, task graph execution, governance, lineage, cost and evidence filling. |
332
+ | GCP adapter | `contractforge-gcp` | BigQuery capabilities, GCS load-job rendering, smoke execution, evidence DDL, governance smokes and BigLake Iceberg table support. |
296
333
  | AI companion | `contractforge-ai` | Deterministic review, project generation, diagnostics, provider routing, report generation and optional model-backed enrichment. |
297
334
 
298
- Publication stays split: each package builds its own wheel and future adapters
335
+ Publication stays split: each package builds its own wheel and all adapters
299
336
  depend explicitly on `contractforge-core`.
300
337
 
301
338
  The core wheel owns only `contractforge_core`; adapter wheels such as `contractforge-databricks` own their adapter package and depend explicitly on the core.
@@ -306,7 +343,7 @@ See [publication packaging](docs/specs/publication-packaging.md).
306
343
 
307
344
  | Topic | Link |
308
345
  | --- | --- |
309
- | Online site | [marquesantero.github.io/contractforge-core](https://marquesantero.github.io/contractforge-core/) |
346
+ | Online site | [marquesantero.github.io/contractforge](https://marquesantero.github.io/contractforge/) |
310
347
  | Documentation index | [docs/README.md](docs/README.md) |
311
348
  | Quick start | [docs/quickstart.md](docs/quickstart.md) |
312
349
  | Architecture | [docs/architecture.md](docs/architecture.md) |
@@ -316,16 +353,30 @@ See [publication packaging](docs/specs/publication-packaging.md).
316
353
  | Adapters | [docs/adapters.md](docs/adapters.md) |
317
354
  | Databricks adapter | [docs/databricks.md](docs/databricks.md) |
318
355
  | AWS adapter | [docs/adapters/aws.md](docs/adapters/aws.md) |
356
+ | Snowflake adapter | [docs/adapters/snowflake.md](docs/adapters/snowflake.md) |
319
357
  | Test contracts across adapters | [docs/adapters/test-contracts-across-adapters.md](docs/adapters/test-contracts-across-adapters.md) |
320
358
  | Connectors | [docs/connectors.md](docs/connectors.md) |
321
359
  | Operations and evidence | [docs/operations.md](docs/operations.md) |
322
360
  | ContractForge AI | [ai/README.md](ai/README.md) |
323
361
  | Security | [docs/security.md](docs/security.md) |
324
362
  | Adapter authoring | [docs/specs/adapter-authoring.md](docs/specs/adapter-authoring.md) |
363
+ | Contributing | [CONTRIBUTING.md](CONTRIBUTING.md) |
364
+ | Support | [SUPPORT.md](SUPPORT.md) |
365
+ | Security policy | [SECURITY.md](SECURITY.md) |
325
366
 
326
367
  Architecture contracts live under [docs/specs](docs/specs/), and decisions live
327
368
  under [docs/adrs](docs/adrs/).
328
369
 
370
+ ## Contributing
371
+
372
+ Contributions are welcome when they preserve the core/adapter boundary and keep
373
+ contract behavior explicit. Start with [CONTRIBUTING.md](CONTRIBUTING.md), use
374
+ the issue templates for bugs, features or adapter gaps, and follow
375
+ [SECURITY.md](SECURITY.md) for private vulnerability reports. Changes flow
376
+ through pull requests to the protected `main` branch with required CI and
377
+ maintainer or CODEOWNER review when the change affects public behavior, release
378
+ flow, security, package boundaries or adapter maturity.
379
+
329
380
  ## Non-Goals
330
381
 
331
382
  ContractForge is not: