Pular para o conteúdo principal

Matriz de estabilização Snowflake

Propósito

Esta especificação define a porta de lançamento para estabilizar o contractforge-snowflake adaptador. Não é um roteiro de possíveis recursos do Snowflake. É a lista de verificação que decide se o adaptador Snowflake pode ser chamado de estável para o suporte suportada.

O alvo é snowflake_sql_warehouse:

  • Snowflake Tempo de execução do armazém SQL;
  • Tabelas nativas Snowflake;
  • catalogação de banco de dados/esquema Snowflake;
  • governança opcional por meio de tags, comentários, políticas de acesso a linhas e políticas de mascaramento;
  • As tabelas de evidências ContractForge persistiram como tabelas de controle Snowflake.

O adaptador deve preservar a semântica central. Se um tempo de execução Snowflake não puder preservar um comportamento de contrato, o planejador ou renderizador deve retornar REVIEW_REQUIRED, SUPPORTED_WITH_WARNINGS ou UNSUPPORTED. Não deve desvalorizar silenciosamente o contrato.

Escopo de estabilização

O escopo do candidato estável é intencionalmente menor que o Snowflake completo tese.

ÁreaEscopo de candidato estávelFora do escopo para candidato estável
Origenstable, view, sql, staged_files com formatos de arquivo nomeados CSV, JSON e Parquetautoloader, kafka, copy_into, Snowpipe, streams, stages externos
Modos de gravaçãoappend, overwrite, upsert, hash_diff_upsertequivalência histórica, soft delete por snapshot
Qualidadeabortar, avisar, quarentena em nível de linha, not_null, required_columns, accepted_values, min_rows, unique_key, max_null_ratio, expressões em nível de linhaIntegração com Data Metric Functions
PreparaçãoCasts, derives, padronização, filtros e desduplicação determinística compatíveis com SQLFormas aninhadas complexas, explosões de matrizes, operações inseguras de bronze
Política de esquemaAditiva, estrita e permissiva via INFORMATION_SCHEMA.COLUMNSPolíticas automáticas de evolução de coluna
Evidênciaexecuções, erros, qualidade, quarentena, alterações de esquema, estado, anotações, acesso, operações, linhagem, explicação, custoArmazenamentos de evidências alternativos
GovernançaComentários de tabela/coluna, tag SQL com modo somente validação, política de acesso de linha SQL, política de mascaramento SQL, controle de revogação destrutivoGarantias automáticas do mecanismo do consumidor para filtros de linha e máscaras de coluna
ImplantaçãoValidação de simulação, publicação no estágio, execução de procedimento hospedado, renderização de gráfico de tarefa, execução/limpeza de projetoExecução do gráfico de tarefas ao vivo (bloqueada por concessões de tarefas)
CustoReconciliação de histórico de consultas, sinais de atribuição de consulta, tratamento de pendência/latênciaDashboards de custo em tempo real
LinhagemLinhagem imediata e evidências explicativas, reconciliação atrasada de ACCESS_HISTORYStreaming de linhagem em tempo real

Projetos de teste necessários

O adaptador Snowflake não pode ser estabilizado apenas com testes de renderização. Esses cenários executam comandos contractforge-snowflake contra uma conta Snowflake real.

ProjetoFonteObjetivo principalResultado obrigatório
smokeFontes de teste geradasCiclo completo de append, overwrite, quarentena, upsert e hash-diffCinco contratos concluídos com sucesso com evidências de controle correspondentes
smoke-failure-pathsContratos ruins controladosEvidência de erro, evidência de falha na execução, redação, fonte ausente, cancelamento de qualidade, esquema estritoFalhas produzem evidências redigidas sem expor segredos
smoke-stage-publishStage internoPublicação de stage, recarga de artefato, execução de contrato em stageO pacote publicado é carregado e executado a partir do @stage
smoke-procedureStage interno + procedureImplantação de procedure, importações de ZIP preparadas, chamada de procedureA procedure implanta e executa um contrato
smoke-task-graphProcedure + tasksImplantação de gráfico de tasks, execução de task raiz, pesquisa de histórico de tasksAs tasks são implantadas e executadas por meio da procedure do executor

Os cenários hash-diff devem declarar merge_keys e uma estratégia de hash. O Snowflake o adaptador valida chaves de mesclagem nulas e duplicadas antes de executar a gravação. Hash a computação usa a função Snowflake do HASH em vez de não mesclado, não excluído colunas.

Portas de release

PortaRequisitoValores de status
Conjunto local G0Testes de unidade e renderização aprovadosPASS, FAIL
Compilação de renderização G1Contratos Smoke tornam Snowflake SQL válido sem erros de sintaxePASS, FAIL
Fluxo de publicação G2Os artefatos são publicados no stage interno do Snowflake e recarregados corretamentePASS, FAIL
Tempo de execução de sucesso do G3Contratos Smoke são executados com sucesso por meio de executor apoiado por conectorPASS, FAIL
Tempo de execução de falha G4A matriz de falha grava erros redigidos e evidências de falha na execuçãoPASS, FAIL
Auditoria de controle G5As tabelas de evidências correspondem às contagens e status esperados após a execução da smokePASS, FAIL
Linhagem G6A linhagem imediata e a evidência explicativa são escritas; a reconciliação ACCESS_HISTORY lida com pendência/latênciaPASS, FAIL
Custo G7A reconciliação do histórico de consultas investiga tags de consulta estruturadas e registra sinais de custoPASS, FAIL
Governança G8Os comentários se aplicam corretamente; a tag somente evidência de validação corresponde às concessões esperadasPASS, FAIL
Procedure G9A procedure Snowpark é implantada e executada com importações de biblioteca ZIP preparadasPASS, BLOCKED
Gráfico de tasks G10As tasks são implantadas e executadas por meio da procedure do executorPASS, FAIL
Paridade G11As diferenças contratuais Snowflake/Databricks/AWS são documentadas e mínimasPASS, REVIEW_REQUIRED, FAIL
Documentação G12Os documentos, especificações e site do usuário Snowflake refletem o comportamento testadoPASS, FAIL
Ciclo de vida G13Os objetos de teste de smoke têm um plano de limpeza não destrutivo e documentadoPASS, FAIL

O adaptador não é estável até que todas as portas não bloqueadas sejam PASS, exceto itens de paridade REVIEW_REQUIRED explicitamente aceitos. Portas bloqueadas exigem um plano de desbloqueio documentado.

Rastreador de estabilização

ItemStatus atualObservações
Testes de unidade do adaptador local SnowflakePASSConjunto Snowflake focado: 175 aprovados. Conjunto completo: 1421 aprovados, 2 falhas conhecidas de AWS não relacionadas ao Snowflake.
Compilação de renderização de contrato de smokePASSA simulação mínima de smoke validou todos os contratos e renderiza SQL sem erros de sintaxe.
Smoke de publicação em stagePASSsmoke-stage-publish criou um stage interno temporário, publicou o pacote do executor de biblioteca, recarregou os artefatos do @stage e executou o contrato preparado.
Tempo de execução de sucesso mínimoPASSTodos os cinco contratos (anexar, substituir, colocar em quarentena, upsert, hash-diff) foram concluídos com êxito por meio de um executor apoiado por conector com evidências.
Tempo de execução do caminho de falhaPASSFonte ausente, interrupção de qualidade e falhas estritas de esquema produziram evidências de erro redigidas sem expor segredos de conexão.
Auditoria de tabela de controlePASSA verificação de smoke confirmou linhas de execução, erro, qualidade, quarentena, alteração de esquema, estado, anotação, acesso, operações, linhagem, explicação e evidência de custo.
Evidência de linhagemPASSA linhagem imediata gravou 5 linhas em ctrl_ingestion_lineage. EXPLAIN USING TEXT gravou 5 linhas em ctrl_ingestion_explain. A reconciliação ACCESS_HISTORY retornou PENDING com 0 linhas, correspondendo à latência de uso da conta.
Reconciliação de custoPASSA reconciliação do histórico de consultas investigou IDs de execução estruturados do QUERY_TAG e retornou PENDING para uso atrasado da conta. As tags de consulta de tempo de execução armazenam JSON analisáveis ​​com nomes de destino sem aspas.
Comentários e tags de governançaPASSComentários de tabela/coluna aplicados; marque evidências somente validadas registradas com concessões corretas.
Política de esquemaPASSInspeção INFORMATION_SCHEMA.COLUMNS com fallback de metadados do conector; smoke de coluna aditiva e smoke de falha estrita passaram.
Tempo de execução de qualidadePASSTodos os cenários de aprovação, quarentena e aborto produziram evidências corretas e propagaram quality_status em registros de execução.
Idempotência de estado e bloqueiosPASSCálculo de candidato de marca d'água, filtragem anterior de marca d'água, salto de repetição idempotente, aquisição de bloqueio e teste de liberação.
Implantação de procedimentoPASSProcedimento Snowpark hospedado implantado com importações ZIP preparadas para as bibliotecas principais/adaptadores, chamado de executor estável, e o live smoke gravou 2 linhas.
Implantação do gráfico de tarefasPASSO Live Smoke implantou o gráfico, executou a tarefa root, aguardou o sucesso da tarefa root/dependente e limpou os artefatos do smoke.
Paridade de origem de arquivo preparadaPASSProjeções posicionais CSV, projeções tipadas/carga útil JSON e projeções tipadas Parquet com formatos de arquivo nomeados validados. Caminhos inseguros e expressões de coluna rejeitados.
Preparation registryPASSProjeção de metadados, filtros, conversões, derivações, padronização e desduplicação determinística validada com smoke viva.
Registro do modo de gravaçãoPASSAnexar, substituir, upsert e hash-diff divididos em módulos de registro independentes com validação de chave de mesclagem pré-gravada.
Cleanup lifecyclePASSsmoke --execute --execute-cleanup removes all CF_SMOKE_* objects. cleanup-plan produces non-destructive DROP IF EXISTS SQL.
Docs/site updatePASSO guia de operações do adaptador Snowflake, o plano de execução de paridade, as especificações de paridade de capacidade e a matriz de estabilização são publicados.

Plano de desbloqueio de portões bloqueados

A smoke da política de acesso Snowflake é bloqueada pela resposta do recurso da conta Unsupported feature 'ROW ACCESS POLICY'. Essa alegação de aplicação da política é explicitamente excluído do stable-final para contas onde a política nativa recursos não estão disponíveis. A ingestão contínua também está excluída stable-final até que um mapeamento de tempo de execução/evidência separado seja implementado. A semântica histórica/instantânea é excluída do final estável até a paridade existem evidências.

Machine-Readable Status

contractforge-snowflake stabilization-report

Para a versão atual, a classificação pretendida é STABLE_SUPPORTED_SURFACE com supported_surface_ready: true e stable_final: true. Ingestão contínua, política dependente de recursos da conta aplicação e exclusão reversível de histórico/instantâneo são excluídas do final estável, e o benchmark hash-diff de referência é validado.