test: fecha gaps de cobertura da Automation Discovery encontrados em auditoria #40
Loading…
Reference in a new issue
No description provided.
Delete branch "feature/close-backend-outcome-automation-audit"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Item 1 do roadmap pós-refactor ("fechar e validar o pacote backend atual"): auditoria completa do estado real de Outcome vocabulary, Failure Classification, Automation Discovery e Stable IDs (public_id/external_key), feita por 3 investigações independentes antes de qualquer mudança de código.
Resultado da auditoria
PENDING/RUNNING/PASS/FAIL/ERROR/BLOCKED/SKIPPED): 100% confirmado, sem gaps - migration de dados real (448ab764c678) com downgrade documentado, schemas fechados (Literal), nenhuma dependência residual do vocabulário antigo em português em lógica de negócio/frontend/métricas/exports, e verificado direto nos dados reais do banco de dev (SELECT DISTINCT status FROM test_run_stepssó retorna os valores novos).PRODUCT_DEFECT/AUTOMATION/ENVIRONMENT/TEST_DATA/OBSOLETE_TEST/UNKNOWN): 100% confirmado -clear_failure_classification_unless_failedchamada em todo update de step, nenhuma regra nova exigindo classification em FAIL, nenhuma dependência do literal antigo"Falhou".public_id/external_key): 100% confirmado no backend -public_idimutável (só escrito na criação),external_keyseparado/normalizado/único, duplicar nunca herdaexternal_keynempublic_idnemversion, migration com backfill pros registros legados, automação identifica cenário porexternal_key(nunca pelo PK interno). Único gap encontrado é de frontend (não existe UI de edição de cenário na Library hoje, entãoexternal_keynão é editável na prática) - sinalizado como decisão em aberto, não implementado nesta PR (é fora do escopo de "fechar backend", e a fase de estabilização do frontend em andamento pediu explicitamente para não fazer redesign/features novas agora).(source, external_key); histórico preservado ediscovery_idnunca apagado após mapear; exatamente 3 estados UNMAPPED/MAPPED/IGNORED; os 4 endpoints map/create-scenario/ignore/unignore já existem; IGNORED continua aceitando resultados; Library como fonte canônica comexternal_keydo template independente domapped_template_idda discovery) estão 100% confirmados no código. O único gap real era cobertura de teste em 3 pontos específicos - fechado nesta PR.O que esta PR muda
Só
backend/tests/test_automation.py, com 3 testes novos:test_ingestion_with_mixed_known_and_unknown_external_keys_in_same_payload- confirma que umaexternal_keydesconhecida num payload com múltiplos resultados não derruba o processamento das outras.test_ingestion_never_creates_a_scenario_template- confirmação negativa de que a ingestão nunca cria umTestScenarioTemplatesozinha.test_discovery_status_stays_within_the_closed_set_across_the_full_lifecycle- percorre o ciclo de vida completo (criar → ignorar → reabrir → mapear) e confirma que o status observado é exatamente{UNMAPPED, MAPPED, IGNORED}, nem mais nem menos.Nenhuma mudança de comportamento, schema ou contrato de API - só fechamento de cobertura de teste sobre comportamento já existente e correto.
Verificação
151 testes de backend passando (3 novos, 148 preexistentes sem regressão).
🤖 Gerado com Claude Code