AUR-473: um --modelo inexistente e erro de USO, e falha antes de computar qualquer coisa
O conflito que este card resolve
Dois contratos done se contradiziam sobre a mesma situação: --seguranca
com um provider que nao entrega a revisao de qualidade.
- AUR-450 fixa que um modelo explicito indisponivel falha alto e que a saida da passagem de seguranca -- secao e nota de cobertura -- nao chega a imprimir.
- AUR-458 fixa que uma passagem deterministica que ja rodou sobrevive a falha de provider: seus achados ainda imprimem, porque "achado computado e depois retido" e o defeito que aquele card existe para matar.
Nao ha lado errado nos dois principios. Ha uma classificacao diferente para duas situacoes diferentes:
- Um modelo que o usuario nomeou com
--modeloe que o gateway nao serve e um erro de uso -- a mesma classe de um flag digitado errado. Ele falha antes de qualquer trabalho ser computado. - Um provider que estava configurado e quebrou em runtime e uma falha operacional; o trabalho deterministico ja computado (achados de seguranca) e legitimo e deve ser entregue.
Decisao
Em runReview, no ramo em que selectProviderForModel falha:
if !*seguranca || *modelo != "" {
return rc
}
Com --modelo, o comando retorna imediatamente, depois de
reportModelUnavailable ter nomeado o modelo indisponivel no stderr. A
passagem de seguranca nunca roda, entao nem a secao nem a nota de cobertura
imprimem, e o stdout fica vazio: nada foi computado, logo nada foi retido.
Sem --modelo (provider configurado que falhou), o comportamento do AUR-458
permanece identico -- os achados deterministicos continuam imprimindo e o
exit continua 1.
O exit code do caso permanece 1: nao ha um codigo novo para mintar.
Testes
- Unit:
tests/unit/AUR-473.go::TestAUR473. - Integration:
tests/integration/AUR-473.go::IntegrationAUR473. - Acceptance:
tests/acceptance/AUR-473.sh(selectores AC-001, AC-002, AC-003, e as camadas). - E2E:
tests/e2e/AUR-473.sh::E2EAUR473.
Mutacoes ceticas
- MUT-001 (AC-001): voltar a rodar a passagem de seguranca antes de
recusar o modelo nomeado. O mutante passa a imprimir a secao de seguranca
para um
--modeloindisponivel e e rejeitado. - MUT-002 (AC-002): fazer a falha de runtime de provider tambem pular a passagem de seguranca. O mutante perde os achados deterministicos que o AUR-458 exige e e rejeitado.
Limpeza de aceite irmao
O aceite do AUR-450 (tests/acceptance/AUR-450.sh) estava quebrado na base
ed1eae4 por duas razoes alheias a este card:
stage_sourcecopiavainternal/documentation/*,internal/pipelineecmd/regenerate-docs, todos removidos por670c7f6; ocpabortava antes de executar qualquer assercao. A lista foi re-derivada das dependencias reais dego list -deps ./cmd/aurumcode.- O sha256 de stdout com provider configurado (
63c649af...) ficou stale:AUR-490(done) fezreview --baseimprimir o resumo e o diagrama Mermaid que--prja imprimia. O valor foi re-derivado executando o comando exato nesta base, nao ajustado para "passar".
AC-003 exige que bash tests/acceptance/AUR-450.sh AC-001 volte a sair 0.