Pular para o conteúdo principal

Critérios de superfície estável Snowflake

Propósito

Este documento define as condições verificáveis ​​para o tratamento contractforge-snowflake como estável para seu suporte snowflake_sql_warehouse surface.

O portão tem escopo intencional. Não afirma que todo ContractForge a semântica suportada pelo adaptador de referência Databricks é certificada para produção em Snowflake. Diz que a superfície do armazém Snowflake SQL está documentada aqui passou no planejamento, renderização, publicação de estágio, tempo de execução do procedimento hospedado, evidências, auditoria, ciclo de vida e verificações de paridade sem contratos específicos workarounds.

A matriz de evidências detalhada reside em snowflake-stabilization-matrix.md. Esse arquivo é a lista de verificação de lançamento que converte esses resultados em uma estabilidade decision.

Scope

A superfície Snowflake estável é:

  • Snowflake Tempo de execução do armazém SQL;
  • Tabelas nativas Snowflake;
  • catalogação de banco de dados/esquema Snowflake;
  • Evidência ContractForge como tabelas de controle Snowflake;
  • executor de biblioteca de procedimentos Snowpark hospedado com importações ZIP preparadas;
  • governança por meio de comentários, tags e ajudantes de validação/aplicação onde a equivalência for comprovada ou explicitamente necessária para revisão.

Famílias de origem estáveis:

  • table e view;
  • sql / query;
  • staged_files com CSV, JSON e Parquet usando arquivo nomeado Snowflake formats.

Modos de gravação estáveis:

  • append;
  • overwrite;
  • upsert;
  • hash_diff_upsert como SUPPORTED_WITH_WARNINGS; a produção de referência o benchmark é validado e a evidência SLA específica da carga de trabalho ainda é necessária para novas reivindicações de produção.

Limites exigidos para revisão:

  • Snowpipe, Streams, Snowpipe Streaming e ingestão do conector Kafka surfaces;
  • Data Metric Functions integration;
  • historical;
  • snapshot_reconcile_soft_delete;
  • política de acesso de linha ou mascaramento da aplicação da política em contas onde a política features are unavailable.

Inherited Preconditions

Esses invariantes de repositório devem passar antes que a estabilidade do Snowflake possa ser evaluated.

PreconditionVerification
Core não tem importações de plataformatests/test_core_platform_independence.py
Adaptadores não importam uns aos outrostests/test_adapter_independence.py
O formato da embalagem pública é estáveltests/test_publication_packaging.py
As versões do pacote declaradas correspondem aos metadadostests/test_package_version.py
A importação padrão Snowflake mantém os SDKs de tempo de execução opcionaistests/test_snowflake_adapter.py
Os documentos e o relatório de status do Snowflake permanecem sincronizadostests/test_snowflake_stability_docs.py
CI constrói a roda adaptadora SnowflakePacote .github/workflows/ci.yml/escopos completos

If any precondition fails, Snowflake stability evaluation is paused.

Stability Criteria

1. Portões locais e de renderização

O que deve ser mantido. Unidade, renderização, arquitetura, empacotamento e SQL gerado compilar portas passam para Snowflake.

Como verificar. Execute:

uv run pytest tests/test_snowflake_*.py tests/test_adapter_independence.py tests/test_publication_packaging.py tests/test_package_version.py
uv run contractforge-snowflake smoke --database CONTRACTFORGE_TEST --schema PUBLIC

Status. met.

2. Projetos de sucesso em tempo de execução

O que deve ser válido. Os projetos de validação reais são executados por meio do ContractForge somente comandos, sem tempo de execução manuscrito SQL fora do adaptador.

Projetos necessários:

  • snowflake_smoke_minimal;
  • snowflake_smoke_stage_publish;
  • snowflake_smoke_procedure;
  • snowflake_usgs_rest_medallion.

Cada projeto deve criar/gravar tabelas Snowflake de destino, preencher ctrl_ingestion_runs, qualidade/estado/metadados/linhagem do registro quando aplicável, e preserve as contagens de linhas esperadas.

Como verificar. Use a smoke do Snowflake CLI e os fluxos do projeto:

contractforge-snowflake smoke --connect-options <connection.yaml> --execute --execute-cleanup
contractforge-snowflake smoke-stage-publish --connect-options <connection.yaml> --execute --execute-cleanup
contractforge-snowflake smoke-procedure --connect-options <connection.yaml> --execute --execute-cleanup

Status. met.

3. Evidência de falha

O que deve ser mantido. Falhas controladas produzem evidências de falha na execução e são editadas evidência de erro, preservando a falha do tempo de execução original.

Casos necessários:

  • fonte ausente;
  • aborto de qualidade;
  • falha estrita de esquema;
  • redaction of connection secrets in diagnostics.

Como verificar. Execute o smoke do caminho de falha Snowflake com a limpeza habilitada e auditar ctrl_ingestion_runs, ctrl_ingestion_errors e ctrl_ingestion_quality.

Status. met.

4. Auditoria de evidências

O que deve ser válido. As tabelas de controle canônico são escritas em Snowflake e auditadas as contagens correspondem aos resultados de smoke esperados.

Tabelas obrigatórias:

  • ctrl_ingestion_runs;
  • ctrl_ingestion_errors;
  • ctrl_ingestion_quality;
  • ctrl_ingestion_quarantine;
  • ctrl_ingestion_schema_changes;
  • ctrl_ingestion_state;
  • ctrl_ingestion_annotations;
  • ctrl_ingestion_access;
  • ctrl_ingestion_operations;
  • ctrl_ingestion_lineage;
  • ctrl_ingestion_explain;
  • ctrl_ingestion_cost.

Status. met.

5. Paridade de plataforma

O que deve ser válido. A intenção de contrato ContractForge compartilhada produz o mesmo resultados lógicos em Databricks, AWS e Snowflake para o compartilhamento suportado superfície. As diferenças específicas do Snowflake são limitadas à ligação da fonte, ambiente, namespace de tabela nativa, configurações de governança Snowflake e aceita revisar limites.

Como verificar.

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

Evidências reais de E2E dos mesmos contratos em todas as três plataformas devem ser anexado às notas de lançamento ou ao manifesto de evidências de lançamento em ../reports/snowflake-stable-surface-evidence.json.

Status. met para a superfície suportada.

6. Limites de segurança e tempo de execução

O que deve ser mantido.

  • O núcleo não importa clientes Snowflake.
  • O pacote Snowflake base não importa antecipadamente o conector Snowflake ou Snowpark SDK modules.
  • Os artefatos renderizados não contêm segredos de texto simples.
  • As opções de conexão de tempo de execução estão na lista de permissões.
  • Stage artifact paths reject unsafe traversal.
  • Avisos de falha e reconciliação editam valores confidenciais antes da evidência gravações ou saída CLI.

Status. met.

Limites abertos de certificação de produção

A superfície suportada estável está pronta. stable_final é verdadeiro para o documentado reivindicação porque recursos mais amplos indisponíveis ou não implementados são explicitamente excluded:

LimiteDecisão atualFechamento necessário
hash_diff_upsert workload-specific performanceSUPPORTED_WITH_WARNINGSReferência de referência aprovada; anexe evidências específicas da carga de trabalho antes de reivindicar um SLA de produção para um novo contrato hash-diff.
Políticas de acesso de linha e políticas de mascaramentoEXCLUDED_FROM_STABLE_FINALA conta conectada retorna Unsupported feature 'ROW ACCESS POLICY'; execute novamente e promova apenas em uma conta onde os recursos de política nativa estejam disponíveis.
Continuous ingestionEXCLUDED_FROM_STABLE_FINALSnowpipe, Streams, Snowpipe Streaming e ingestão de conector Kafka exigem um mapeamento de conector/tempo de execução separado com semântica de recuperação e evidência.
historical e snapshot_reconcile_soft_deleteEXCLUDED_FROM_STABLE_FINALExclusão de escopo estável documentada até a implementação do tempo de execução e evidências de equivalência E2E serem anexadas.

Estes não são defeitos ocultos. São limites explícitos sobre o que o estábulo Snowflake surface claims.

Machine-Readable Gate

Usar:

contractforge-snowflake stabilization-report

Resultado esperado de superfície estável:

  • classification = STABLE_SUPPORTED_SURFACE;
  • supported_surface_ready = true;
  • stable_final = true para a reivindicação final estável documentada;
  • evidence_manifest = docs/reports/snowflake-stable-surface-evidence.json.

Use --strict-final em fluxos de trabalho que devem impor o final estável documentado reivindicação e exclusões.