Pular para o conteúdo principal

Arquitetura e limites do pacote.

ContractForge é organizado em torno de um limite rígido: o núcleo descreve a intenção de ingestão e os adaptadores traduzem essa intenção em comportamento nativo da plataforma.

Layered flow

O núcleo pode planejar sem clientes Spark, Databricks, boto3, Azure SDK, Fabric SDK ou Snowflake. As bibliotecas de plataforma residem apenas em pacotes de adaptadores.

Responsabilidades principais

DomainO núcleo possui
ContratosModelos de ingestão, anotações, operações, acesso e ambiente.
SemanticsObjetos de contrato semântico imutáveis ​​e validação portátil.
CapabilitiesDeclarações de capacidade, correspondência e status de planejamento.
PlanejamentoPlanos de execução abstratos, bloqueadores, avisos e marcadores de revisão.
EvidênciaConceitos de evidência neutra e campos obrigatórios para paridade operacional.
DiagnosticsMensagens de portabilidade, erros de validação e expectativas de autoria do adaptador.

O núcleo nunca deve conter ramificações como if platform == "databricks". Use declarações de capacidade e comportamento do adaptador.

Responsabilidades do adaptador

DomainAdaptador possui
CapabilitiesO que a plataforma pode preservar, o que requer revisão e o que não tem suporte.
RenderingSQL nativo, Python, YAML, definições de pipeline, arquivos de pacote ou relatórios de revisão.
ExecuçãoExecução opcional em tempo de execução na plataforma de destino.
Preenchimento de evidênciasValores específicos da plataforma passados ​​para a evidência principal API.
Aplicação de governançaConcessões nativas, filtros de linha, máscaras, tags, comentários e primitivas de política.
Dependências de tempo de execuçãoSDKs, Spark, clientes da plataforma, drivers e resolução de credenciais.

Databricks é o adaptador de referência. Possui Delta, Unity Catalog, Auto Loader, Lakeflow, Databricks SQL, Asset Bundles, auxiliares de tempo de execução e extensões específicas do Databricks.

Repository layout

src/
contractforge_core/
contracts/
semantic/
capabilities/
planner/
evidence/
connectors/
adapters/base/
adapters/
databricks/
src/
contractforge_databricks/
docs/
specs/
adrs/
site/
docs/
src/

Publication stays split:

DistributionContainsDepends on
contractforge-corecontractforge_coreNenhum adaptador de plataforma.
contractforge-databrickscontractforge_databrickscontractforge-core.
Futuras rodas adaptadorasUm pacote de adaptador cadacontractforge-core.

Public APIs

O núcleo estável API é usado por autores de ferramentas, CI e adaptadores:

AreaExemplos de pontos de entrada
Validação de contratovalidate_contract, load_contract_bundle, compose_contract_sections
Semantic normalizationsemantic_contract_from_mapping
Planejamentoplan_contract, PlanningResult, PlanningStatus
CapabilitiesPlatformCapabilities, NativeCapability
Protocolo adaptadorPlatformAdapter, RenderedArtifacts

O adaptador Databricks expõe a execução e renderização específicas do Databricks:

AreaExemplos de pontos de entrada
Planejamento/renderizaçãoplan_databricks_contract, render_databricks_contract
Execução em tempo de execuçãoingest_databricks_bundle, ingest_databricks_contract
EnvironmentDatabricksEnvironment, DatabricksIngestOptions

Regras de projeto

  • Mantenha os SDKs da plataforma fora do contractforge_core.
  • Prefer immutable semantic objects in planner-facing code.
  • Make unsupported semantics explicit.
  • Nunca faça downgrade silenciosamente do modo de gravação, do comportamento de governança ou dos requisitos de evidência.
  • Adicione documentos, testes, mapeamento de recursos e comportamento do adaptador para cada novo conceito semântico.
  • Divida os módulos por limites de domínio estáveis, não por conveniência.

Extension path

Para adicionar um novo adaptador de plataforma:

  1. Implement a capability declaration.
  2. Reutilize o planejamento principal, a menos que o adaptador precise de diagnósticos mais rigorosos.
  3. Renderize artefatos nativos a partir do plano abstrato.
  4. Preencha o modelo de evidência neutra com valores específicos da plataforma.
  5. Documento suportado, aviso, comportamento necessário para revisão e não suportado.
  6. Publique o adaptador como sua própria roda.

Consulte Criação de adaptador para obter o contrato completo.