Skip to main content

AWS Stable-Surface Criteria

Purpose​

This document defines the verifiable conditions for treating contractforge-aws as stable for its supported aws_glue_iceberg surface.

The gate is intentionally scoped. It does not claim that every ContractForge semantic supported by the Databricks reference adapter is production-certified on AWS. It says that the AWS Glue/Iceberg surface documented here has passed planning, rendering, deployment, runtime, evidence, audit, lifecycle and parity checks without contract-specific workarounds.

The detailed evidence matrix lives in aws-stabilization-matrix.md. This file is the release checklist that converts those results into a stability decision.

Scope​

The stable AWS surface is:

  • AWS Glue Spark runtime;
  • Apache Iceberg tables on Amazon S3;
  • AWS Glue Data Catalog metadata;
  • ContractForge evidence as Iceberg/Athena-readable control tables;
  • Lake Formation grants and review/apply helpers where equivalence is proven or explicitly review-required.

Stable source families:

  • S3/object-storage files and portable file formats;
  • incremental_files using Glue bookmarks where eligible;
  • JDBC/Postgres through Glue JDBC paths;
  • bounded rest_api and http_file paths with SSRF and redirect guards;
  • the validated AWS MSK and Azure Event Hubs Kafka available-now streaming paths.

Stable write modes:

  • append;
  • overwrite;
  • upsert;
  • hash_diff_upsert as SUPPORTED_WITH_WARNINGS; the reference benchmark is validated, while workload-specific SLA claims require attached evidence.

Excluded or workload-specific boundaries:

  • historical;
  • snapshot_reconcile_soft_delete;
  • arbitrary Lake Formation row-filter and column-mask expressions beyond the reviewed consumer matrix;
  • non-MSK Kafka/Event Hubs compatibility provider claims beyond the validated paths.

Inherited Preconditions​

These repository invariants must pass before AWS stability can be evaluated.

PreconditionVerification
Core has no platform importstests/test_core_platform_independence.py
Adapters do not import each othertests/test_adapter_independence.py
Public packaging shape is stabletests/test_publication_packaging.py
Declared package versions match metadatatests/test_package_version.py
AWS architecture remains adapter-ownedtests/test_aws_architecture.py
AWS capability docs stay in synctests/test_aws_capability_parity_docs.py
CI builds the AWS adapter wheel.github/workflows/ci.yml package/full scopes

If any precondition fails, AWS stability evaluation is paused.

Stability Criteria​

1. Local And Render Gates​

What must hold. Unit, rendering, architecture, packaging and generated-code compile gates pass for AWS.

How to verify. Run:

uv run pytest tests/test_aws_*.py tests/test_adapter_source_support.py tests/test_adapter_extension_docs.py tests/test_publication_packaging.py tests/test_package_version.py
uv run contractforge-aws deploy-project examples/real-world/supabase-jdbc-medallion/project.yaml --dry-run --summary-only

Status. met.

2. Runtime Success Projects​

What must hold. The real validation projects run through ContractForge commands only, with no Glue Studio edits and no handwritten runtime code.

Required projects:

  • aws_supabase_jdbc_medallion;
  • aws_usgs_rest_medallion;
  • aws_s3_file_medallion;
  • aws_incremental_files;
  • aws_eventhubs_kafka_available_now;
  • aws_msk_kafka_available_now.

Each project must create/write target Iceberg tables, populate ctrl_ingestion_runs, record quality/state/metadata/lineage where applicable, and preserve the expected row counts.

How to verify. Use the project-level AWS CLI flow:

contractforge-aws deploy-project <project.yaml> --run --wait --record-cost-evidence --audit-evidence

Status. met.

3. Failure Evidence​

What must hold. Controlled failures produce failed run evidence and redacted error evidence while preserving the original runtime failure.

Required cases:

  • invalid or missing credentials;
  • blocked REST/HTTP targets;
  • quality abort;
  • invalid merge key;
  • missing source path;
  • target permission failure where available.

How to verify. Run the AWS failure-path project with --accept-expected-failures and audit ctrl_ingestion_runs, ctrl_ingestion_errors and ctrl_ingestion_quality.

Status. met.

4. Evidence Audit​

What must hold. Athena audit queries over canonical control tables pass for all real validation projects.

Required tables:

  • ctrl_ingestion_runs;
  • ctrl_ingestion_errors;
  • ctrl_ingestion_quality;
  • ctrl_ingestion_quarantine;
  • ctrl_ingestion_schema_changes;
  • ctrl_ingestion_metadata;
  • ctrl_ingestion_lineage;
  • ctrl_ingestion_access;
  • ctrl_ingestion_operations;
  • ctrl_ingestion_cost;
  • ctrl_ingestion_state;
  • ctrl_ingestion_locks.

How to verify.

contractforge-aws audit-evidence --database <evidence_database> --athena-output-location <s3-uri>

Status. met.

5. Platform Parity​

What must hold. Shared ContractForge contract intent produces the same logical results on Databricks, AWS and Snowflake for the supported shared surface. AWS-specific differences are limited to source binding, environment, Iceberg warehouse settings and accepted review boundaries.

How to verify.

uv run python -m tools.platform_parity.report
uv run pytest tests/test_platform_parity_contracts.py

Real E2E evidence from the same contracts on all three platforms should be attached to release notes or the release evidence manifest at ../reports/aws-stable-surface-evidence.json.

Status. met for the supported surface.

6. Security And Runtime Boundaries​

What must hold.

  • The core imports no AWS SDKs.
  • The base AWS package does not eagerly import boto3.
  • Rendered artifacts do not contain plaintext secrets.
  • Runtime secret resolution uses Secrets Manager or platform-owned mechanisms.
  • REST/HTTP paths reject unsafe schemes, private hosts and redirects.
  • The stable Glue library runner validates rendered runtime code before in-process execution.

How to verify. Run AWS architecture/security tests and keep AST validation tests around runtime/library_runner.py mandatory.

Status. met.

Open Production-Certification Boundaries​

The stable supported surface is ready and stable_final is true for the documented AWS Glue/Iceberg claim. Broader claims remain explicit exclusions or workload-specific warnings:

BoundaryCurrent decisionRequired closure
hash_diff_upsert workload-specific performanceSUPPORTED_WITH_WARNINGSReference benchmark passed; attach workload-specific evidence before claiming a production SLA for a new hash-diff contract.
Non-MSK Kafka/Event Hubs compatibility providersEXCLUDED_FROM_STABLE_FINALProvider-specific offset/checkpoint matrix beyond the validated AWS MSK and Azure Event Hubs Kafka paths.
Lake Formation row filters and masksEXCLUDED_FROM_STABLE_FINALConsumer-engine matrix passed for Athena and Glue Spark; arbitrary contract expressions still require review before workload-specific claims.
historical and snapshot_reconcile_soft_deleteEXCLUDED_FROM_STABLE_FINALDocumented stable-scope exclusion until runtime implementation and E2E equivalence evidence are attached.

These are not hidden defects. They are explicit limits on what the stable AWS surface claims.

Machine-Readable Gate​

Use:

contractforge-aws stabilization-report

Expected stable-surface result:

  • classification = STABLE_SUPPORTED_SURFACE;
  • supported_surface_ready = true;
  • stable_final = true for the documented stable-final claim.
  • evidence_manifest = docs/reports/aws-stable-surface-evidence.json.

Use --strict-final in workflows that must enforce the documented stable-final claim.