serverless-data-mesh 1.0.0__tar.gz → 1.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 (277) hide show
  1. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/.gitignore +5 -0
  2. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/CHANGELOG.md +39 -0
  3. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/PKG-INFO +1 -1
  4. serverless_data_mesh-1.2.0/README.md +853 -0
  5. serverless_data_mesh-1.2.0/VERSION +1 -0
  6. serverless_data_mesh-1.2.0/benchmarks/run_aws_benchmark.py +70 -0
  7. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/benchmarks/run_cost_estimate.py +2 -2
  8. serverless_data_mesh-1.2.0/benchmarks/run_local_benchmark.py +47 -0
  9. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/architecture.md +11 -0
  10. serverless_data_mesh-1.2.0/docs/demo-walkthrough.html +283 -0
  11. serverless_data_mesh-1.2.0/docs/due-diligence-architecture-claims.md +138 -0
  12. serverless_data_mesh-1.2.0/docs/first-mesh-on-aws.md +101 -0
  13. serverless_data_mesh-1.2.0/docs/how-to-start.md +128 -0
  14. serverless_data_mesh-1.2.0/docs/images/durable-lambda-compute-model.png +0 -0
  15. serverless_data_mesh-1.2.0/docs/images/medallion-one-yaml-mesh.png +0 -0
  16. serverless_data_mesh-1.2.0/docs/images/pipeline-creation-flow.png +0 -0
  17. serverless_data_mesh-1.2.0/docs/images/pipeline-generated-artifacts.png +0 -0
  18. serverless_data_mesh-1.2.0/docs/images/portfolio-stack-veridata-sparkrules.png +0 -0
  19. serverless_data_mesh-1.2.0/docs/images/sparkrules-pipeline-position.png +0 -0
  20. serverless_data_mesh-1.2.0/docs/images/tutorial/step-01-install-demo.gif +0 -0
  21. serverless_data_mesh-1.2.0/docs/images/tutorial/step-01-install-demo.png +0 -0
  22. serverless_data_mesh-1.2.0/docs/images/tutorial/step-02-new-mesh.gif +0 -0
  23. serverless_data_mesh-1.2.0/docs/images/tutorial/step-02-new-mesh.png +0 -0
  24. serverless_data_mesh-1.2.0/docs/images/tutorial/step-03-apply.gif +0 -0
  25. serverless_data_mesh-1.2.0/docs/images/tutorial/step-03-apply.png +0 -0
  26. serverless_data_mesh-1.2.0/docs/images/tutorial/step-04-ui.gif +0 -0
  27. serverless_data_mesh-1.2.0/docs/images/tutorial/step-04-ui.png +0 -0
  28. serverless_data_mesh-1.2.0/docs/images/tutorial/step-05-deploy.gif +0 -0
  29. serverless_data_mesh-1.2.0/docs/images/tutorial/step-05-deploy.png +0 -0
  30. serverless_data_mesh-1.2.0/docs/images/tutorial/step-06-observe.gif +0 -0
  31. serverless_data_mesh-1.2.0/docs/images/tutorial/step-06-observe.png +0 -0
  32. serverless_data_mesh-1.2.0/docs/images/tutorial/tutorial-overview.gif +0 -0
  33. serverless_data_mesh-1.2.0/docs/images/vaquar-pattern-proprietary-pvdm.png +0 -0
  34. serverless_data_mesh-1.2.0/docs/images/veridata-vrp-chunk-proof.png +0 -0
  35. serverless_data_mesh-1.2.0/docs/observability-production.md +62 -0
  36. serverless_data_mesh-1.2.0/docs/portable-multi-cloud.md +24 -0
  37. serverless_data_mesh-1.2.0/docs/roadmap-pvdm-a-agentic.md +97 -0
  38. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/vaquar-pattern.md +33 -1
  39. serverless_data_mesh-1.2.0/docs/visual-tutorial.md +64 -0
  40. serverless_data_mesh-1.2.0/examples/__init__.py +1 -0
  41. serverless_data_mesh-1.2.0/examples/domain_writer/__init__.py +1 -0
  42. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/domain_writer/handler.py +5 -4
  43. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/domain_writer/spark_io.py +2 -2
  44. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/domain_writer/workload.py +3 -2
  45. serverless_data_mesh-1.2.0/examples/durable-compute/README.md +81 -0
  46. serverless_data_mesh-1.2.0/examples/durable-compute/terraform.tfvars.example +11 -0
  47. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/retail-mesh/spark/orders_readers.example.py +2 -1
  48. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/tutorials/walkthrough.py +1 -1
  49. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/README.md +3 -0
  50. serverless_data_mesh-1.2.0/infrastructure/terraform/environments/dev/main.tf +163 -0
  51. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/medallion/main.tf +23 -16
  52. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/medallion/outputs.tf +2 -2
  53. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/medallion/terraform.tfvars.example +1 -1
  54. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/medallion/variables.tf +8 -1
  55. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/multi-account/producer/main.tf +6 -0
  56. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/multi-account/producer/terraform.tfvars.example +1 -1
  57. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/prod/main.tf +2 -0
  58. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/prod/terraform.tfvars.example +1 -1
  59. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/prod/variables.tf +6 -0
  60. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/iam/main.tf +43 -0
  61. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/iam/variables.tf +6 -0
  62. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/lambda/main.tf +9 -3
  63. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/lambda/variables.tf +3 -2
  64. serverless_data_mesh-1.2.0/infrastructure/terraform/modules/lambda-fleet/main.tf +97 -0
  65. serverless_data_mesh-1.2.0/infrastructure/terraform/modules/lambda-fleet/outputs.tf +25 -0
  66. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/monitoring/dashboard.tf +116 -6
  67. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/monitoring/main.tf +1 -1
  68. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/monitoring/outputs.tf +1 -0
  69. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/monitoring/variables.tf +6 -0
  70. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/stepfunctions/variables.tf +1 -1
  71. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/storage/main.tf +5 -14
  72. serverless_data_mesh-1.2.0/infrastructure/terraform/scripts/package_lambda.ps1 +112 -0
  73. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/scripts/package_lambda.sh +18 -2
  74. serverless_data_mesh-1.2.0/integrations/backstage/README.md +31 -0
  75. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/pyproject.toml +11 -0
  76. serverless_data_mesh-1.2.0/schemas/sdm-v1-dataproductpipeline.json +64 -0
  77. serverless_data_mesh-1.2.0/schemas/sdm-v1-medallionmesh.json +75 -0
  78. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/__init__.py +40 -3
  79. serverless_data_mesh-1.2.0/src/serverless_data_mesh/attestation/__init__.py +19 -0
  80. serverless_data_mesh-1.2.0/src/serverless_data_mesh/attestation/pvdma.py +215 -0
  81. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/catalog/glue_connector.py +1 -1
  82. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/catalog/glue_rest.py +3 -1
  83. serverless_data_mesh-1.2.0/src/serverless_data_mesh/catalog_export/__init__.py +5 -0
  84. serverless_data_mesh-1.2.0/src/serverless_data_mesh/catalog_export/backstage.py +132 -0
  85. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/cli.py +169 -0
  86. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/compile/contract.py +4 -12
  87. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/compile/emit.py +26 -6
  88. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/compile/loader.py +1 -4
  89. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/compile/medallion.py +1 -1
  90. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/compile/medallion_emit.py +111 -11
  91. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/compile/medallion_validate.py +3 -9
  92. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/compile/runtime.py +4 -7
  93. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/compile/wizard.py +4 -3
  94. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/config.py +3 -3
  95. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/dashboard/cloudwatch.py +3 -5
  96. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/dashboard/trust.py +6 -4
  97. serverless_data_mesh-1.2.0/src/serverless_data_mesh/deploy/__init__.py +5 -0
  98. serverless_data_mesh-1.2.0/src/serverless_data_mesh/deploy/runner.py +139 -0
  99. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/governance/consumer_sla.py +9 -6
  100. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/lineage/openlineage.py +2 -2
  101. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/local/runtime.py +115 -8
  102. serverless_data_mesh-1.2.0/src/serverless_data_mesh/metrics/__init__.py +5 -0
  103. serverless_data_mesh-1.2.0/src/serverless_data_mesh/metrics/mesh_trust.py +72 -0
  104. serverless_data_mesh-1.2.0/src/serverless_data_mesh/observability/__init__.py +5 -0
  105. serverless_data_mesh-1.2.0/src/serverless_data_mesh/observability/structured.py +15 -0
  106. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/orchestration/canary.py +2 -1
  107. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/orchestration/coordinator.py +98 -8
  108. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/orchestration/reprocess.py +4 -7
  109. serverless_data_mesh-1.2.0/src/serverless_data_mesh/portable/__init__.py +17 -0
  110. serverless_data_mesh-1.2.0/src/serverless_data_mesh/portable/cloud.py +104 -0
  111. serverless_data_mesh-1.2.0/src/serverless_data_mesh/py.typed +1 -0
  112. serverless_data_mesh-1.2.0/src/serverless_data_mesh/readers/__init__.py +21 -0
  113. serverless_data_mesh-1.2.0/src/serverless_data_mesh/readers/s3_bronze.py +161 -0
  114. serverless_data_mesh-1.2.0/src/serverless_data_mesh/readers/upstream_parquet.py +125 -0
  115. serverless_data_mesh-1.2.0/src/serverless_data_mesh/rules/__init__.py +14 -0
  116. serverless_data_mesh-1.2.0/src/serverless_data_mesh/rules/gate.py +60 -0
  117. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/rules/sparkrules_connector.py +7 -3
  118. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/types/workload.py +4 -3
  119. serverless_data_mesh-1.2.0/src/serverless_data_mesh/ui/__init__.py +5 -0
  120. serverless_data_mesh-1.2.0/src/serverless_data_mesh/ui/data.py +316 -0
  121. serverless_data_mesh-1.2.0/src/serverless_data_mesh/ui/server.py +163 -0
  122. serverless_data_mesh-1.2.0/src/serverless_data_mesh/ui/static/app.css +200 -0
  123. serverless_data_mesh-1.2.0/src/serverless_data_mesh/ui/static/app.js +196 -0
  124. serverless_data_mesh-1.2.0/src/serverless_data_mesh/ui/static/index.html +143 -0
  125. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/verification/__init__.py +11 -3
  126. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/verification/fallback.py +5 -3
  127. serverless_data_mesh-1.2.0/src/serverless_data_mesh/verification/kms_sign.py +123 -0
  128. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/verification/vrp.py +6 -5
  129. serverless_data_mesh-1.2.0/tests/__init__.py +1 -0
  130. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/conftest.py +6 -0
  131. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/eval/test_consumer_safety.py +3 -2
  132. serverless_data_mesh-1.2.0/tests/unit/__init__.py +1 -0
  133. serverless_data_mesh-1.2.0/tests/unit/test_attestation_kms.py +100 -0
  134. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_catalog.py +0 -1
  135. serverless_data_mesh-1.2.0/tests/unit/test_catalog_export.py +31 -0
  136. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_compile.py +4 -3
  137. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_consumer_sla.py +9 -6
  138. serverless_data_mesh-1.2.0/tests/unit/test_coverage_new_modules.py +327 -0
  139. serverless_data_mesh-1.2.0/tests/unit/test_deploy.py +24 -0
  140. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_medallion.py +7 -9
  141. serverless_data_mesh-1.2.0/tests/unit/test_metrics.py +37 -0
  142. serverless_data_mesh-1.2.0/tests/unit/test_observability.py +45 -0
  143. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_openlineage.py +9 -6
  144. serverless_data_mesh-1.2.0/tests/unit/test_reference_readers.py +37 -0
  145. serverless_data_mesh-1.2.0/tests/unit/test_schemas.py +35 -0
  146. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_sparkrules_connector.py +0 -1
  147. serverless_data_mesh-1.2.0/tests/unit/test_ui_server.py +97 -0
  148. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_verification.py +4 -1
  149. serverless_data_mesh-1.2.0/tests/unit/test_version.py +22 -0
  150. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_wizard.py +8 -7
  151. serverless_data_mesh-1.0.0/README.md +0 -481
  152. serverless_data_mesh-1.0.0/VERSION +0 -1
  153. serverless_data_mesh-1.0.0/examples/__init__.py +0 -0
  154. serverless_data_mesh-1.0.0/examples/domain_writer/__init__.py +0 -0
  155. serverless_data_mesh-1.0.0/infrastructure/terraform/environments/dev/main.tf +0 -160
  156. serverless_data_mesh-1.0.0/infrastructure/terraform/scripts/package_lambda.ps1 +0 -31
  157. serverless_data_mesh-1.0.0/src/serverless_data_mesh/metrics/__init__.py +0 -5
  158. serverless_data_mesh-1.0.0/src/serverless_data_mesh/metrics/mesh_trust.py +0 -56
  159. serverless_data_mesh-1.0.0/src/serverless_data_mesh/py.typed +0 -0
  160. serverless_data_mesh-1.0.0/src/serverless_data_mesh/rules/__init__.py +0 -8
  161. serverless_data_mesh-1.0.0/tests/__init__.py +0 -0
  162. serverless_data_mesh-1.0.0/tests/unit/__init__.py +0 -0
  163. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/LICENSE +0 -0
  164. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/PYPI.md +0 -0
  165. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/benchmarks/README.md +0 -0
  166. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/benchmarks/results/2026-06-baseline.json +0 -0
  167. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/benchmarks/run_benchmark.sh +0 -0
  168. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/benchmarks/workloads/100k_rows.py +0 -0
  169. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/benchmarks/workloads/10m_rows.py +0 -0
  170. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/benchmarks/workloads/1m_rows.py +0 -0
  171. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/blog-the-vaquar-pattern.md +0 -0
  172. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/data-mesh-end-to-end.md +0 -0
  173. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/data-mesh-patterns.md +0 -0
  174. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/deployment.md +0 -0
  175. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/domain-contracts.md +0 -0
  176. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/getting-started.md +0 -0
  177. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/glue-connector.md +0 -0
  178. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/images/lambda-execution-flow.png +0 -0
  179. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/images/serverless-data-mesh-hero.png +0 -0
  180. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/images/three-account-data-mesh.png +0 -0
  181. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/images/vaquar-pattern-blog-hero.png +0 -0
  182. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/images/vaquar-pattern-e2e-journey.png +0 -0
  183. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/images/vaquar-pattern-invariant.png +0 -0
  184. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/images/why-sdm-four-phase-connectivity.png +0 -0
  185. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/images/why-sdm-hero-connectivity.png +0 -0
  186. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/images/why-sdm-trust-gap.png +0 -0
  187. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/mesh-trust-dashboard.md +0 -0
  188. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/metadata-driven-pipeline.md +0 -0
  189. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/pypi.md +0 -0
  190. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/sparkrules-connector.md +0 -0
  191. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/terraform-guide.md +0 -0
  192. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/why-serverless-data-mesh.md +0 -0
  193. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/contracts/payments.mesh.pipeline.yaml +0 -0
  194. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/domain_writer/README.md +0 -0
  195. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/domain_writer/io.py +0 -0
  196. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/domain_writer/rules_io.py +0 -0
  197. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/medallion-e2e/README.md +0 -0
  198. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/medallion-e2e/northstar.mesh.yaml +0 -0
  199. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/multi-domain-orders-payments/README.md +0 -0
  200. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/multi-domain-orders-payments/coordinator_config.yaml +0 -0
  201. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/multi-domain-orders-payments/test_atomicity.py +0 -0
  202. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/retail-mesh/README.md +0 -0
  203. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/retail-mesh/compile_all.py +0 -0
  204. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/retail-mesh/contracts/customers.mesh.pipeline.yaml +0 -0
  205. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/retail-mesh/contracts/inventory.mesh.pipeline.yaml +0 -0
  206. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/retail-mesh/contracts/orders.mesh.pipeline.yaml +0 -0
  207. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/retail-mesh/contracts/payments.mesh.pipeline.yaml +0 -0
  208. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/retail-mesh/contracts/shipping.mesh.pipeline.yaml +0 -0
  209. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/retail-mesh/mesh-registry.yaml +0 -0
  210. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/retail-mesh/mesh-transactions/daily-close.yaml +0 -0
  211. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/tutorials/README.md +0 -0
  212. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/tutorials/verification_gate_demo.py +0 -0
  213. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/grafana/mesh-trust-dashboard.json +0 -0
  214. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/sam/README.md +0 -0
  215. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/sam/template.yaml +0 -0
  216. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/dev/terraform.tfvars.example +0 -0
  217. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/medallion/providers.tf +0 -0
  218. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/medallion/versions.tf +0 -0
  219. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/multi-account/README.md +0 -0
  220. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/multi-account/publisher/main.tf +0 -0
  221. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/multi-account/publisher/terraform.tfvars.example +0 -0
  222. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/multi-account/steward/main.tf +0 -0
  223. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/multi-account/steward/terraform.tfvars.example +0 -0
  224. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/prod/outputs.tf +0 -0
  225. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/prod/providers.tf +0 -0
  226. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/prod/versions.tf +0 -0
  227. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/eventbridge/main.tf +0 -0
  228. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/eventbridge/outputs.tf +0 -0
  229. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/eventbridge/variables.tf +0 -0
  230. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/eventbridge/versions.tf +0 -0
  231. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/governance/main.tf +0 -0
  232. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/governance/versions.tf +0 -0
  233. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/iam/outputs.tf +0 -0
  234. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/iam/versions.tf +0 -0
  235. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/lambda/outputs.tf +0 -0
  236. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/lambda/versions.tf +0 -0
  237. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/medallion-mesh/main.tf +0 -0
  238. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/medallion-mesh/outputs.tf +0 -0
  239. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/messaging/main.tf +0 -0
  240. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/messaging/outputs.tf +0 -0
  241. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/messaging/variables.tf +0 -0
  242. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/messaging/versions.tf +0 -0
  243. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/monitoring/versions.tf +0 -0
  244. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/stepfunctions/main.tf +0 -0
  245. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/stepfunctions/outputs.tf +0 -0
  246. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/stepfunctions/state_machine.asl.json.tpl +0 -0
  247. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/stepfunctions/versions.tf +0 -0
  248. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/storage/outputs.tf +0 -0
  249. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/storage/variables.tf +0 -0
  250. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/storage/versions.tf +0 -0
  251. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/catalog/__init__.py +0 -0
  252. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/compile/__init__.py +0 -0
  253. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/compile/from_init.py +0 -0
  254. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/compile/validate.py +0 -0
  255. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/dashboard/__init__.py +0 -0
  256. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/exceptions.py +0 -0
  257. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/governance/__init__.py +0 -0
  258. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/lineage/__init__.py +0 -0
  259. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/local/__init__.py +0 -0
  260. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/orchestration/__init__.py +0 -0
  261. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/orchestration/durable_steps.py +0 -0
  262. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/orchestration/state.py +0 -0
  263. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/scaffold/__init__.py +0 -0
  264. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/scaffold/init_domain.py +0 -0
  265. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/templates/medallion-starter.mesh.yaml +0 -0
  266. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/templates/single-pipeline.mesh.yaml +0 -0
  267. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/types/__init__.py +0 -0
  268. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/verification/backend.py +0 -0
  269. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_auto_repair_demo.py +0 -0
  270. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_canary.py +0 -0
  271. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_cli_scaffold.py +0 -0
  272. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_config.py +0 -0
  273. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_example_workload.py +1 -1
  274. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_fallback_verifier.py +0 -0
  275. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_local_runtime.py +0 -0
  276. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_reprocess.py +0 -0
  277. {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_types.py +0 -0
@@ -64,3 +64,8 @@ agent-transcripts/
64
64
  examples/retail-mesh/generated/
65
65
  examples/medallion-e2e/generated/
66
66
  domains/
67
+ infrastructure/terraform/fixtures/generated-mesh/
68
+
69
+ # Keep VS Code YAML schema mapping
70
+ !.vscode/
71
+ !.vscode/settings.json
@@ -4,6 +4,45 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [1.2.0] - 2026-07-21
8
+
9
+ ### Added
10
+
11
+ - **PVDM-A Decision Attestation** + CLI `attest` + coordinator/local wiring
12
+ - **Optional KMS VRP envelopes** (`VRP_KMS_KEY_ID`)
13
+ - **Pre-physical rules gate** (`SDM_RULES_GATE` / SparkRules)
14
+ - **Mesh control center UI** with dashboards, `/walkthrough` GIF demo, one-click demos
15
+ - **README GIF walkthrough** + durable-compute example + Docker image (`ghcr.io`)
16
+ - **100% coverage gate** for attestation / kms_sign / rules.gate / ui.data (`scripts/coverage_gate.py`)
17
+
18
+ ### Fixed
19
+
20
+ - **Lambda VERSION path**: `__init__.py` tries `serverless_data_mesh/VERSION`, repo root, and metadata; wheel bundles `VERSION` in package
21
+ - **IAM**: `cloudwatch:PutMetricData` for `ServerlessDataMesh*` namespace on domain writer role
22
+ - **Terraform storage**: lifecycle `for_each` uses static bucket keys (not computed `.id` map keys)
23
+ - **Metrics**: `SDM_METRICS_ENABLED` / `SDM_DISABLE_METRICS` opt-out; PutMetricData failures are non-fatal
24
+ - **Lambda packaging**: `SDM_PIPELINE_SRC` overlays compiled `handler.py` at zip root; `handler.lambda_handler` in manifest and Terraform
25
+ - **Observability:** structured `pvdm_outcome` JSON logs; LocalPVDMRuntime S3 proofs when `VRP_PROOF_BUCKET` set
26
+ - **Monitoring:** ops dashboard widgets (invocations, errors, duration, DLQ); DLQ alarm; JSON log metric filters
27
+ - **Scripts:** `aws_observability_smoke.sh`, `aws_dlq_smoke_test.sh`; [observability-production.md](docs/observability-production.md)
28
+
29
+ ## [1.1.0] - 2026-06-14
30
+
31
+ Enterprise completeness: reference readers, per-layer Lambda fleet, deploy CLI, Backstage, schemas, UI, benchmarks, multi-cloud stubs.
32
+
33
+ ### Added
34
+
35
+ - **Reference readers**: S3 bronze landing + upstream Parquet (`serverless_data_mesh.readers`)
36
+ - **Per-layer Lambda fleet** Terraform module (`lambda-fleet`) + `layer_lambda.manifest.json` from compile
37
+ - **`serverless-data-mesh deploy`** — apply + terraform + optional Step Functions start
38
+ - **`serverless-data-mesh catalog export`** — Backstage `catalog-info.yaml` entities
39
+ - **`serverless-data-mesh ui`** — local mesh control panel (HTTP)
40
+ - **JSON Schema** for `sdm/v1` contracts + VS Code YAML autocomplete
41
+ - **Portable cloud** adapters (AWS production, GCP/Azure stubs)
42
+ - **Docs**: `docs/first-mesh-on-aws.md` (5-minute guide)
43
+ - **CI**: medallion Terraform validate, local benchmark, smoke-aws + benchmark workflows
44
+ - **Benchmarks**: `run_local_benchmark.py`, `run_aws_benchmark.py`
45
+
7
46
  ## [1.0.0] - 2026-06-14
8
47
 
9
48
  Production release: metadata-driven medallion mesh, zero-friction CLI, and Terraform deploy path.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: serverless-data-mesh
3
- Version: 1.0.0
3
+ Version: 1.2.0
4
4
  Summary: Federated data mesh framework for proof-gated, exactly-once Iceberg data product publication on AWS Lambda.
5
5
  Project-URL: Homepage, https://github.com/vaquarkhan/aws-serverless-datamesh-framework
6
6
  Project-URL: Documentation, https://github.com/vaquarkhan/aws-serverless-datamesh-framework#readme