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.
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/.gitignore +5 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/CHANGELOG.md +39 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/PKG-INFO +1 -1
- serverless_data_mesh-1.2.0/README.md +853 -0
- serverless_data_mesh-1.2.0/VERSION +1 -0
- serverless_data_mesh-1.2.0/benchmarks/run_aws_benchmark.py +70 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/benchmarks/run_cost_estimate.py +2 -2
- serverless_data_mesh-1.2.0/benchmarks/run_local_benchmark.py +47 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/architecture.md +11 -0
- serverless_data_mesh-1.2.0/docs/demo-walkthrough.html +283 -0
- serverless_data_mesh-1.2.0/docs/due-diligence-architecture-claims.md +138 -0
- serverless_data_mesh-1.2.0/docs/first-mesh-on-aws.md +101 -0
- serverless_data_mesh-1.2.0/docs/how-to-start.md +128 -0
- serverless_data_mesh-1.2.0/docs/images/durable-lambda-compute-model.png +0 -0
- serverless_data_mesh-1.2.0/docs/images/medallion-one-yaml-mesh.png +0 -0
- serverless_data_mesh-1.2.0/docs/images/pipeline-creation-flow.png +0 -0
- serverless_data_mesh-1.2.0/docs/images/pipeline-generated-artifacts.png +0 -0
- serverless_data_mesh-1.2.0/docs/images/portfolio-stack-veridata-sparkrules.png +0 -0
- serverless_data_mesh-1.2.0/docs/images/sparkrules-pipeline-position.png +0 -0
- serverless_data_mesh-1.2.0/docs/images/tutorial/step-01-install-demo.gif +0 -0
- serverless_data_mesh-1.2.0/docs/images/tutorial/step-01-install-demo.png +0 -0
- serverless_data_mesh-1.2.0/docs/images/tutorial/step-02-new-mesh.gif +0 -0
- serverless_data_mesh-1.2.0/docs/images/tutorial/step-02-new-mesh.png +0 -0
- serverless_data_mesh-1.2.0/docs/images/tutorial/step-03-apply.gif +0 -0
- serverless_data_mesh-1.2.0/docs/images/tutorial/step-03-apply.png +0 -0
- serverless_data_mesh-1.2.0/docs/images/tutorial/step-04-ui.gif +0 -0
- serverless_data_mesh-1.2.0/docs/images/tutorial/step-04-ui.png +0 -0
- serverless_data_mesh-1.2.0/docs/images/tutorial/step-05-deploy.gif +0 -0
- serverless_data_mesh-1.2.0/docs/images/tutorial/step-05-deploy.png +0 -0
- serverless_data_mesh-1.2.0/docs/images/tutorial/step-06-observe.gif +0 -0
- serverless_data_mesh-1.2.0/docs/images/tutorial/step-06-observe.png +0 -0
- serverless_data_mesh-1.2.0/docs/images/tutorial/tutorial-overview.gif +0 -0
- serverless_data_mesh-1.2.0/docs/images/vaquar-pattern-proprietary-pvdm.png +0 -0
- serverless_data_mesh-1.2.0/docs/images/veridata-vrp-chunk-proof.png +0 -0
- serverless_data_mesh-1.2.0/docs/observability-production.md +62 -0
- serverless_data_mesh-1.2.0/docs/portable-multi-cloud.md +24 -0
- serverless_data_mesh-1.2.0/docs/roadmap-pvdm-a-agentic.md +97 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/vaquar-pattern.md +33 -1
- serverless_data_mesh-1.2.0/docs/visual-tutorial.md +64 -0
- serverless_data_mesh-1.2.0/examples/__init__.py +1 -0
- serverless_data_mesh-1.2.0/examples/domain_writer/__init__.py +1 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/domain_writer/handler.py +5 -4
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/domain_writer/spark_io.py +2 -2
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/domain_writer/workload.py +3 -2
- serverless_data_mesh-1.2.0/examples/durable-compute/README.md +81 -0
- serverless_data_mesh-1.2.0/examples/durable-compute/terraform.tfvars.example +11 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/retail-mesh/spark/orders_readers.example.py +2 -1
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/tutorials/walkthrough.py +1 -1
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/README.md +3 -0
- serverless_data_mesh-1.2.0/infrastructure/terraform/environments/dev/main.tf +163 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/medallion/main.tf +23 -16
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/medallion/outputs.tf +2 -2
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/medallion/terraform.tfvars.example +1 -1
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/medallion/variables.tf +8 -1
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/multi-account/producer/main.tf +6 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/multi-account/producer/terraform.tfvars.example +1 -1
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/prod/main.tf +2 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/prod/terraform.tfvars.example +1 -1
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/prod/variables.tf +6 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/iam/main.tf +43 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/iam/variables.tf +6 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/lambda/main.tf +9 -3
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/lambda/variables.tf +3 -2
- serverless_data_mesh-1.2.0/infrastructure/terraform/modules/lambda-fleet/main.tf +97 -0
- serverless_data_mesh-1.2.0/infrastructure/terraform/modules/lambda-fleet/outputs.tf +25 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/monitoring/dashboard.tf +116 -6
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/monitoring/main.tf +1 -1
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/monitoring/outputs.tf +1 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/monitoring/variables.tf +6 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/stepfunctions/variables.tf +1 -1
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/storage/main.tf +5 -14
- serverless_data_mesh-1.2.0/infrastructure/terraform/scripts/package_lambda.ps1 +112 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/scripts/package_lambda.sh +18 -2
- serverless_data_mesh-1.2.0/integrations/backstage/README.md +31 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/pyproject.toml +11 -0
- serverless_data_mesh-1.2.0/schemas/sdm-v1-dataproductpipeline.json +64 -0
- serverless_data_mesh-1.2.0/schemas/sdm-v1-medallionmesh.json +75 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/__init__.py +40 -3
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/attestation/__init__.py +19 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/attestation/pvdma.py +215 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/catalog/glue_connector.py +1 -1
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/catalog/glue_rest.py +3 -1
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/catalog_export/__init__.py +5 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/catalog_export/backstage.py +132 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/cli.py +169 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/compile/contract.py +4 -12
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/compile/emit.py +26 -6
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/compile/loader.py +1 -4
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/compile/medallion.py +1 -1
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/compile/medallion_emit.py +111 -11
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/compile/medallion_validate.py +3 -9
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/compile/runtime.py +4 -7
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/compile/wizard.py +4 -3
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/config.py +3 -3
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/dashboard/cloudwatch.py +3 -5
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/dashboard/trust.py +6 -4
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/deploy/__init__.py +5 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/deploy/runner.py +139 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/governance/consumer_sla.py +9 -6
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/lineage/openlineage.py +2 -2
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/local/runtime.py +115 -8
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/metrics/__init__.py +5 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/metrics/mesh_trust.py +72 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/observability/__init__.py +5 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/observability/structured.py +15 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/orchestration/canary.py +2 -1
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/orchestration/coordinator.py +98 -8
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/orchestration/reprocess.py +4 -7
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/portable/__init__.py +17 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/portable/cloud.py +104 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/py.typed +1 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/readers/__init__.py +21 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/readers/s3_bronze.py +161 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/readers/upstream_parquet.py +125 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/rules/__init__.py +14 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/rules/gate.py +60 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/rules/sparkrules_connector.py +7 -3
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/types/workload.py +4 -3
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/ui/__init__.py +5 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/ui/data.py +316 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/ui/server.py +163 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/ui/static/app.css +200 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/ui/static/app.js +196 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/ui/static/index.html +143 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/verification/__init__.py +11 -3
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/verification/fallback.py +5 -3
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/verification/kms_sign.py +123 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/verification/vrp.py +6 -5
- serverless_data_mesh-1.2.0/tests/__init__.py +1 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/conftest.py +6 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/eval/test_consumer_safety.py +3 -2
- serverless_data_mesh-1.2.0/tests/unit/__init__.py +1 -0
- serverless_data_mesh-1.2.0/tests/unit/test_attestation_kms.py +100 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_catalog.py +0 -1
- serverless_data_mesh-1.2.0/tests/unit/test_catalog_export.py +31 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_compile.py +4 -3
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_consumer_sla.py +9 -6
- serverless_data_mesh-1.2.0/tests/unit/test_coverage_new_modules.py +327 -0
- serverless_data_mesh-1.2.0/tests/unit/test_deploy.py +24 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_medallion.py +7 -9
- serverless_data_mesh-1.2.0/tests/unit/test_metrics.py +37 -0
- serverless_data_mesh-1.2.0/tests/unit/test_observability.py +45 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_openlineage.py +9 -6
- serverless_data_mesh-1.2.0/tests/unit/test_reference_readers.py +37 -0
- serverless_data_mesh-1.2.0/tests/unit/test_schemas.py +35 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_sparkrules_connector.py +0 -1
- serverless_data_mesh-1.2.0/tests/unit/test_ui_server.py +97 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_verification.py +4 -1
- serverless_data_mesh-1.2.0/tests/unit/test_version.py +22 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_wizard.py +8 -7
- serverless_data_mesh-1.0.0/README.md +0 -481
- serverless_data_mesh-1.0.0/VERSION +0 -1
- serverless_data_mesh-1.0.0/examples/__init__.py +0 -0
- serverless_data_mesh-1.0.0/examples/domain_writer/__init__.py +0 -0
- serverless_data_mesh-1.0.0/infrastructure/terraform/environments/dev/main.tf +0 -160
- serverless_data_mesh-1.0.0/infrastructure/terraform/scripts/package_lambda.ps1 +0 -31
- serverless_data_mesh-1.0.0/src/serverless_data_mesh/metrics/__init__.py +0 -5
- serverless_data_mesh-1.0.0/src/serverless_data_mesh/metrics/mesh_trust.py +0 -56
- serverless_data_mesh-1.0.0/src/serverless_data_mesh/py.typed +0 -0
- serverless_data_mesh-1.0.0/src/serverless_data_mesh/rules/__init__.py +0 -8
- serverless_data_mesh-1.0.0/tests/__init__.py +0 -0
- serverless_data_mesh-1.0.0/tests/unit/__init__.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/LICENSE +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/PYPI.md +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/benchmarks/README.md +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/benchmarks/results/2026-06-baseline.json +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/benchmarks/run_benchmark.sh +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/benchmarks/workloads/100k_rows.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/benchmarks/workloads/10m_rows.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/benchmarks/workloads/1m_rows.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/blog-the-vaquar-pattern.md +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/data-mesh-end-to-end.md +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/data-mesh-patterns.md +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/deployment.md +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/domain-contracts.md +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/getting-started.md +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/glue-connector.md +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/images/lambda-execution-flow.png +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/images/serverless-data-mesh-hero.png +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/images/three-account-data-mesh.png +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/images/vaquar-pattern-blog-hero.png +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/images/vaquar-pattern-e2e-journey.png +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/images/vaquar-pattern-invariant.png +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/images/why-sdm-four-phase-connectivity.png +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/images/why-sdm-hero-connectivity.png +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/images/why-sdm-trust-gap.png +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/mesh-trust-dashboard.md +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/metadata-driven-pipeline.md +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/pypi.md +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/sparkrules-connector.md +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/terraform-guide.md +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/docs/why-serverless-data-mesh.md +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/contracts/payments.mesh.pipeline.yaml +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/domain_writer/README.md +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/domain_writer/io.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/domain_writer/rules_io.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/medallion-e2e/README.md +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/medallion-e2e/northstar.mesh.yaml +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/multi-domain-orders-payments/README.md +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/multi-domain-orders-payments/coordinator_config.yaml +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/multi-domain-orders-payments/test_atomicity.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/retail-mesh/README.md +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/retail-mesh/compile_all.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/retail-mesh/contracts/customers.mesh.pipeline.yaml +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/retail-mesh/contracts/inventory.mesh.pipeline.yaml +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/retail-mesh/contracts/orders.mesh.pipeline.yaml +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/retail-mesh/contracts/payments.mesh.pipeline.yaml +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/retail-mesh/contracts/shipping.mesh.pipeline.yaml +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/retail-mesh/mesh-registry.yaml +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/retail-mesh/mesh-transactions/daily-close.yaml +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/tutorials/README.md +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/examples/tutorials/verification_gate_demo.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/grafana/mesh-trust-dashboard.json +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/sam/README.md +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/sam/template.yaml +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/dev/terraform.tfvars.example +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/medallion/providers.tf +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/medallion/versions.tf +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/multi-account/README.md +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/multi-account/publisher/main.tf +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/multi-account/publisher/terraform.tfvars.example +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/multi-account/steward/main.tf +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/multi-account/steward/terraform.tfvars.example +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/prod/outputs.tf +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/prod/providers.tf +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/prod/versions.tf +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/eventbridge/main.tf +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/eventbridge/outputs.tf +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/eventbridge/variables.tf +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/eventbridge/versions.tf +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/governance/main.tf +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/governance/versions.tf +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/iam/outputs.tf +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/iam/versions.tf +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/lambda/outputs.tf +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/lambda/versions.tf +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/medallion-mesh/main.tf +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/medallion-mesh/outputs.tf +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/messaging/main.tf +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/messaging/outputs.tf +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/messaging/variables.tf +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/messaging/versions.tf +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/monitoring/versions.tf +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/stepfunctions/main.tf +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/stepfunctions/outputs.tf +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/stepfunctions/state_machine.asl.json.tpl +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/stepfunctions/versions.tf +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/storage/outputs.tf +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/storage/variables.tf +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/storage/versions.tf +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/catalog/__init__.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/compile/__init__.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/compile/from_init.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/compile/validate.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/dashboard/__init__.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/exceptions.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/governance/__init__.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/lineage/__init__.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/local/__init__.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/orchestration/__init__.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/orchestration/durable_steps.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/orchestration/state.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/scaffold/__init__.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/scaffold/init_domain.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/templates/medallion-starter.mesh.yaml +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/templates/single-pipeline.mesh.yaml +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/types/__init__.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/verification/backend.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_auto_repair_demo.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_canary.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_cli_scaffold.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_config.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_example_workload.py +1 -1
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_fallback_verifier.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_local_runtime.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_reprocess.py +0 -0
- {serverless_data_mesh-1.0.0 → serverless_data_mesh-1.2.0}/tests/unit/test_types.py +0 -0
|
@@ -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.
|
|
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
|