Pular para o conteúdo principal

Adaptadores

Os adaptadores são a forma como o ContractForge se torna nativo em cada plataforma sem colocar o código da plataforma no núcleo.

As principais respostas: o que significa o contrato?
O adaptador responde: esta plataforma pode preservar esse significado e como deve funcionar?

Divisão de responsabilidades​

CamadaPossuiNão possui
CoreVocabulário contratual, normalização semântica, correspondência de capacidades, planos abstratos e conceitos de evidência.Spark, Databricks SDK, boto3, Azure SDK, Fabric SDK, clientes Snowflake ou execução em runtime.
AdaptadorCapacidades da plataforma, renderização nativa, execução opcional, integração com SDKs, resolução de credenciais e valores de evidência específicos da plataforma.Alterar o significado do contrato ou rebaixar silenciosamente a semântica.

Status de planejamento​

StatusComportamento do adaptador
SUPPORTEDRenderize ou execute normalmente.
SUPPORTED_WITH_WARNINGSRenderize ou execute com avisos explícitos no resultado do planejamento e revise o artefato.
REVIEW_REQUIREDProduza diagnósticos e artefatos de revisão opcionais, mas não finja que o mapeamento é totalmente equivalente.
UNSUPPORTEDRetorne bloqueadores e não gere artefatos executáveis ​​para comportamento inseguro.

Adaptadores atuais​

AdaptadorSuperfície de implementação nativa
DatabricksDelta, Unity Catalog, Auto Loader, Lakeflow, Databricks SQL, Asset Bundles, Jobs e evidências apoiadas por Delta.
AWSGlue Spark, Iceberg, Catálogo Glue, Lake Formation, publicação de artefato S3, definições de trabalho Glue, Terraform/CloudFormation e evidências apoiadas por Iceberg.
FabricNotebooks Lakehouse, OneLake, tabelas Lakehouse, shortcuts, deployment pipelines, APIs de governança Fabric e evidências Delta.
SnowflakeSQL, warehouses, tasks, streams, políticas de mascaramento, políticas de acesso a linhas e tabelas de auditoria.
GCPBigQuery, jobs de carga GCS, orquestração Workflows, qualidade/linhagem/aspectos Dataplex, Secret Manager e evidências BigQuery.

Databricks é a implementação de referência. AWS, Snowflake, Fabric e GCP agora possuem superfícies suportadas estáveis para seus escopos documentados, com validação real entre adaptadores e limites explícitos de revisão. Adaptadores futuros devem provar paridade por meio de declarações de capacidade, testes e documentação.

Para orientação lado a lado, veja Testar contratos entre adaptadores. A página mostra os mesmos contratos medalhão GeoJSON reutilizados em Databricks, AWS, Snowflake, Fabric e GCP, com diferenças nativas mantidas na fronteira da plataforma.

O que os adaptadores devem preservar​

Os adaptadores devem primeiro preservar a semântica do ContractForge e depois escolher a implementação nativa.

Exemplos:

  • upsert exige semântica de merge/upsert.
  • scd2 requer semântica de histórico, datação eficaz e comportamento da linha atual.
  • filtros de linha e máscaras de coluna exigem primitivas de governança nativas ou um mapeamento explícito que requer revisão.
  • a quarentena deve manter o sucesso/falha da execução separados do status de qualidade.
  • as evidências devem registrar execuções, erros, qualidade, quarentena, alterações de esquema, linhagem, metadados de origem, ações de governança e sinais de custo, quando disponíveis.

Empacotamento​

Cada adaptador é publicado de forma independente:

contractforge-core
contractforge-databricks
contractforge-aws
contractforge-fabric
contractforge-gcp
contractforge-snowflake

A direção da dependência é única:

adapter -> contractforge-core
contractforge-core -> no adapter dependency

Isso permite que as equipes instalem apenas os adaptadores necessários e que cada adaptador se mova no ritmo do tempo de execução da plataforma.

Entrega de pacote em runtime​

Todos os adaptadores são distribuições Python, mas a entrega no runtime pertence ao adaptador:

AdaptadorInstalação do pacoteEntrega em runtime
DatabricksPacote PyPI ou wheel enviado ao workspace.Instalar pelo PyPI em jobs, clusters ou notebooks é o caminho normal; wheels anexadas são o fallback offline ou com versão fixada.
AWSPacote PyPI para ferramentas locais ou de CI.Jobs Glue devem usar wheels no S3 para contractforge-core e contractforge-aws; PyPI público só é apropriado quando o job tem acesso externo controlado a pacotes.
SnowflakePacote PyPI para ferramentas locais ou de CI.Artefatos SQL rodam nativamente; procedures Snowpark hospedadas usam imports ZIP preparados a partir das bibliotecas core e adapter.
FabricPacote PyPI ou wheel anexada.Notebooks Fabric precisam do core e do adaptador Fabric disponíveis no runtime do notebook; wheel anexada é o fallback offline ou com versão fixada.
GCPPacote PyPI para ferramentas locais, CI ou runners.BigQuery e Workflows executam artefatos nativos; pacotes Python são necessários onde os comandos do adaptador renderizam, fazem deploy ou executam smokes desses artefatos.

Versionamento de deploy dos contratos​

O versionamento de deploy dos contratos é um contrato compartilhado de plano de controle. O core é dono do schema de ctrl_deployment_versions e das regras de hash determinístico; cada adaptador é dono de onde essa tabela fica e de como ela é criada, atualizada e consultada em cada plataforma.

Cada comando de deploy cria um deployment_id único. Cada etapa de contrato ou artefato nativo implantado cria uma linha no ledger com:

  • deployment_step_id: identificador determinístico da etapa dentro do deploy;
  • deployment_hash: hash estável da linha de deploy, excluindo metadados mutáveis de resultado;
  • contract_hash: hash estável do payload do contrato usado naquela etapa;
  • environment_hash: hash estável do payload de ambiente resolvido;
  • manifest_hash: hash estável do manifesto de deploy do adaptador.
AdaptadorArmazenamento do ledger de versões
DatabricksTabela Delta no catálogo/schema de evidência configurado.
AWSTabela Iceberg registrada no Glue Catalog.
SnowflakeTabela SQL no banco/schema de evidência configurado.
FabricTabela Delta Lakehouse no schema de evidência configurado.
GCPTabela BigQuery no dataset de evidência configurado.

O ledger não muda a semântica de ingestão. Ele registra exatamente quais payloads de contrato e ambiente, quais artefatos de plataforma e quais versões de pacote runtime foram implantados, permitindo comparar deploys repetidos sem depender de nomes de arquivo ou timestamps da plataforma.

Formato de implantação AWS​

AWS não analisa contratos YAML dentro do Glue. O adaptador interpreta contratos antes da implementação:

contract bundle
-> render artifacts
-> publish to environment.artifacts.uri
-> materialize Glue job definition
-> create or update Glue job

Usar:

contractforge-aws deploy contracts/orders.ingestion.yaml --environment environments/prod.aws.yaml

O ambiente possui localização do artefato S3, função Glue, dependências e armazém Iceberg. O contrato de ingestão permanece semântico.