AUR-541: fixtures de modelo dos testes e2e passam pelo gate de evidencia
O que foi medido
Todo tests/e2e/*.sh que referencia AURUMCODE_LLM_FIXTURE foi executado via
.board/bin/go-shared exec contra o worktree deste card. Para cada um,
registramos: o exit code antes e depois, quantos achados simulados o gate de
escopo e evidencia (internal/review/scope.go::filterModelIssues) descarta e
por que, se o cenario do teste depende do achado chegar ao resultado, e a
promessa do card de origem (.board/cards/done/AUR-NNN.md).
O gate tem quatro motivos de descarte: fora de linhas alteradas no diff
(OutsideAddedLines -- comportamento intencional, fora do escopo deste card),
sem evidencia, sem impacto, sem verificacao. Este card so corrige os ultimos
tres; o primeiro e um comportamento correto e preexistente do gate.
| Script | Exit antes | Exit depois | Achados descartados (antes) | Motivo | Cenario depende do achado? | Card de origem / promessa |
|---|---|---|---|---|---|---|
| AUR-430 | 0 | 0 | 0 | fixture ja usa known-problem-response.json, que ja tem evidence/impact/verification |
sim, e ja passa | AUR-430: review contra git-demo fixture, --base obrigatorio |
| AUR-431 | 1 (gate_did_not_fire:exit:0) |
0 | 1 de 1 (fixture_error), 1 de 1 (fixture_info) | sem evidencia/impacto/verificacao | sim -- o --fail-on high so fecha o gate se o achado error sobreviver |
AUR-431: --fail-on fecha o pipeline de CI |
| AUR-432 | 1 (header_not_redacted_on_stdout) |
0 | 1 de 1 | sem evidencia/impacto/verificacao | sim -- a asserção de redacao olha o achado publicado no stdout | AUR-432: redacao de credenciais no prompt e no stdout |
| AUR-433 | 0 (passava, mas vacuamente) | 0 (passa pelo motivo certo agora) | 1 de 1 | sem evidencia/impacto/verificacao | sim, mas a asserção antiga (grep -Fq 'config/demo-tokens.txt') tambem casava com o nome do arquivo no diagrama de arquivos tocados, que aparece mesmo sem nenhum achado sobrevivendo -- falso positivo corrigido pela fixture, nao pela asserção |
AUR-433: orcamento/--limite de custo por chamada |
| AUR-434 | 1 (missing_grounded_finding) |
0 | 3 de 3 (mixed_fixture) | sem evidencia/impacto/verificacao no achado fundamentado; os outros dois sao propositalmente sem rule_id -- isso e o proprio ponto do card (gate de citacao de regra) |
sim -- o achado fundamentado precisa sobreviver para provar que so os ungrounded caem | AUR-434: gate de citacao de regra (rule gate) |
| AUR-435 | 1 (base-quality-missing) |
0 | 1 de 1 | sem evidencia/impacto/verificacao | sim -- prova a separacao quality/security | AUR-435: secao de qualidade so aparece com --seguranca? (separacao de secoes) |
| AUR-436 | 0 (passava, mas vacuamente) | 0 (passa pelo motivo certo agora) | 1 de 1 | sem evidencia/impacto/verificacao | sim, mesmo falso positivo do AUR-433 (nome do arquivo no diagrama) | AUR-436: selecao de --modelo |
| AUR-438 | 1 (missing_inline_finding) |
1 (missing_general_finding) -- NAO RESOLVIDO |
2 de 2 | achado inline: sem evidencia (corrigido); achado geral (docs/notas.md:99, fora das linhas alteradas de proposito): descartado por OutsideAddedLines, nao por evidencia |
sim para os dois, mas o achado "geral" nunca pode sobreviver ao gate como ele existe hoje | AUR-438: publicacao de comentario geral (fora da linha) em PR -- gap encontrado, nao corrigido, ver secao abaixo |
| AUR-439 | 0 | 0 (sem mudanca) | 1 de 3 fixtures tem achado descartado (fixture_general_only, por OutsideAddedLines) |
fora de linhas alteradas -- intencional, nao e sobre evidencia | nao -- o teste passa sem depender desse achado especifico | AUR-439: publicacao de comentarios de PR (grave/clean/general) |
| AUR-441 | 1 (behavior-missing) |
0 | 1 de 1 | sem evidencia/impacto/verificacao | sim -- prova reuso de cache do prompt | AUR-441: cache de prompt por arquivo |
| AUR-442 | 0 | 0 (sem mudanca) | fixture principal usa known-problem-response.json (ja valido); 1 achado adicional e descartado de proposito por OutsideAddedLines |
intencional | nao -- o teste ja prova a exclusao correta | AUR-442: aplicacao do catalogo de regras de seguranca |
| AUR-443 | 1 (help_missing_docs) |
1 (sem mudanca -- fora do escopo) | 0 relacionado ao gate de evidencia (usa known-problem-response.json e uma fixture vazia) |
n/a | nao | AUR-443: falha preexistente e nao relacionada (docs de --help); nao tocado |
| AUR-448 | 1 (no_provider_wrong_exit:0) |
1 (mesmo ponto) -- NAO RESOLVIDO | mixed_fixture corrigida (achado fundamentado agora tem evidencia); all_discarded_fixture e intencionalmente sem evidencia | achado fundamentado: corrigido; os outros dois do mixed_fixture e o unico do all_discarded: sem rule_id, intencional (gate de citacao) |
sim para o achado fundamentado (corrigido); o script nunca chega la nesta worktree | AUR-448: discard nunca e silencioso -- bloqueado por uma falha preexistente e anterior ao gate de evidencia (cenario "sem provedor" retorna exit 0), nao corrigido |
| AUR-449 | 1 (no-seguranca-no-provider-must-still-fail:0) |
1 (sem mudanca -- fora do escopo) | n/a (nao chega a usar a fixture com achado antes de falhar) | mesma falha preexistente do AUR-448 | nao avaliavel | nao tocado -- mesmo bloqueio do AUR-448 |
| AUR-450 | 0 | 0 (sem mudanca) | 0 -- usa known-problem-response.json, ja valido |
n/a | sim, e ja passa | AUR-450: fluxo completo com --modelo + provedor |
| AUR-451 | 1 (seguranca_only_wrong_post_count) |
1 (sem mudanca -- nao investigado a fundo no prazo) | nao confirmado que seja sobre o gate de evidencia | nao confirmado | nao avaliado | falha preexistente, nao tocado; ver gap abaixo |
| AUR-459 | 79 (infra: missing-input:cmd/regenerate-docs) |
79 (sem mudanca) | nao executavel nesta worktree | gap arquitetural: a fixture usa o formato line_comments, cujo lineComment (internal/prompt/parser.go) nao tem campos evidence/impact/verification -- um achado convertido de line_comments nunca pode sobreviver ao gate sem mudar o parser (fora do escopo deste card) |
sim, mas inviavel de corrigir sem tocar codigo de produto | AUR-459: conversao de line_comments pelo gate de --fail-on -- gap encontrado, nao corrigido |
| AUR-461 | 1 (catalog-id-gate-exit:0) |
0 | 1 de 1 (catalog-id.json); invented-id.json tambem recebeu evidencia para que o descarte dele seja feito pelo gate de regra (motivo certo: unknown rule_id), nao pelo gate de escopo |
sem evidencia/impacto/verificacao | sim -- prova resolucao de rule_id contra o catalogo embutido |
AUR-461: catalogo de regras embutido |
| AUR-467 | 0 (ja corrigido pelo AUR-540) | 0 | 0 | n/a | ja corrigido | AUR-467: classificacao prosa-vs-codigo (controle de nao-regressao) |
| AUR-475 | 1 (no-regression-gate-exit:0) |
0 | 1 de 1 | sem evidencia/impacto/verificacao -- mesma forma exata que o AUR-467 tinha antes do AUR-540 | sim | AUR-475: controle de nao-regressao equivalente ao AUR-467 |
Scripts que so fazem env -u AURUMCODE_LLM_FIXTURE / unset ... AURUMCODE_LLM_FIXTURE
(AUR-458, AUR-460, AUR-462, AUR-466, AUR-473, AUR-481, AUR-486) nunca alimentam
um achado de modelo real: nao ha nada para o gate descartar. Marcados N/A.
Fixtures corrigidas (evidence/impact/verification adicionados)
tests/e2e/AUR-431.sh, AUR-432.sh, AUR-433.sh, AUR-434.sh (so o achado
fundamentado do mixed_fixture), AUR-435.sh, AUR-436.sh, AUR-438.sh (os dois
achados -- o inline passou a se sustentar; o geral continua bloqueado, ver
gap), AUR-441.sh, AUR-448.sh (so o achado fundamentado do mixed_fixture),
AUR-461.sh (os dois achados), AUR-475.sh. O texto de evidence/impact/
verification e prosa plausivel em portugues ou ingles (seguindo o idioma do
script) que nao repete nenhuma string que a propria asserção grep -Fq
do script usa -- evita o casamento vazio que AUR-433/AUR-436 tinham.
Scripts que testam o descarte de proposito (achados sem rule_id ou com
rule_id inventado, usados para provar o gate de citacao de regra do
AUR-434) ganharam um comentario # AUR-541: expect-gate-discard: ... no
proprio arquivo: tests/e2e/AUR-434.sh e tests/e2e/AUR-448.sh.
Gaps encontrados e NAO corrigidos (fora do escopo deste card ou do prazo)
- AUR-438 (achado "geral", fora da linha): o achado plantado em
docs/notas.md:99e deliberadamente fora das linhas alteradas, para provar queaurumcodepublica um comentario geral de PR quando o achado nao ancora numa linha do diff. MasfilterModelIssuesdescarta QUALQUER achado fora das linhas alteradas antes mesmo de chegar na logica de classificacao inline/geral -- isso nao tem relacao com evidencia, impacto ou verificacao (que este card corrigiu), e consertar exigiria mudarinternal/review/scope.go, o que e um nao-objetivo explicito deste card. Achado: o recurso de comentario geral de PR pode estar inalcancavel em producao hoje, ja que todo achado fora do diff e descartado antes de chegar na etapa de publicacao. Recomenda-se um card novo para decidir se o gate deve ter uma excecao para achados classificados como "gerais". - AUR-448 / AUR-449 (cenario "sem provedor"): nesta worktree, rodar
reviewcomAURUMCODE_LLM_FIXTURE,LLM_API_KEYeLLM_BASE_URLtodos explicitamente desativados (env -u ...) ainda retorna exit 0 em vez do exit 1 esperado (errNoProviderConfigured), antes mesmo do script chegar nas fixtures que o gate de evidencia afetaria. Reproduzido de forma consistente em duas execucoes isoladas (nao e um artefato de cache entre execucoes). Causa raiz nao identificada dentro do prazo deste card -- nao parece relacionada ao gate de escopo/evidencia. Recomenda-se investigacao separada. - AUR-459 (conversao de
line_comments): bloqueado nesta worktree pormissing-input:cmd/regenerate-docs(esse diretorio existe emmainmas nao neste worktree -- provavel materializacao parcial do checkout). Independentemente do bloqueio de infra, ha uma lacuna arquitetural real: o tipolineComment(internal/prompt/parser.go) nao carregaevidence,impactnemverification, entao todo achado convertido deline_commentse descartado pelo gate de escopo/evidencia por construcao. Esta fixture nao pode ser corrigida sem alterar o parser (fora do escopo deste card: "Non-goals: Mudar o gate de evidencia"). - AUR-451: falha hoje em
seguranca_only_wrong_post_count, nao confirmado dentro do prazo se tem relacao com o gate de evidencia ou se e uma falha preexistente e nao relacionada. Nao investigado a fundo; nao tocado. - AUR-443: falha hoje em
help_missing_docs, claramente nao relacionada ao gate de evidencia (fixtures usadas ja sao validas). Nao tocado.
Verificacao automatizada (tests/acceptance/AUR-541.sh)
Modelado em tests/acceptance/AUR-540.sh. Builda um go shim que fica na
frente do PATH: ele deixa toda chamada passar para o go real, exceto que
depois de um go build -o X ... com sucesso, move X para X.aur541real e
escreve em X um wrapper que roda o binario real, repassa seu stdout/stderr
inalterados, e tambem acrescenta qualquer linha de descarte por evidencia/
impacto/verificacao faltante (NAO por OutsideAddedLines, que e
comportamento intencional preexistente) a um arquivo de log com caminho fixo
-- preservando a linha mesmo quando o script e2e redireciona o stderr do
binario para um arquivo temporario que apaga ao sair.
Selectors: all, AC-001 (roda todo tests/e2e/*.sh que atribui um valor
real a AURUMCODE_LLM_FIXTURE e falha se algum reportar descarte por
evidencia/impacto/verificacao sem um comentario
# AUR-541: expect-gate-discard no proprio arquivo), AC-002 (os scripts
que este card corrigiu de fato -- AUR-431/432/433/434/435/436/441/461/475 --
continuam saindo 0), AC-001-MUT-001 (copia em stage de tests/e2e/AUR-461.sh
com os campos evidence/impact/verification removidos de volta da fixture
catalog-id.json -- o detector do AC-001 deve reportar o descarte). Selector
desconhecido sai 64; falha de infraestrutura sai 79.
Limitacao conhecida, documentada no proprio script: a declaracao
expect-gate-discard e por arquivo, nao por achado ou por motivo -- um
script com o comentario silencia qualquer descarte que ele reporte. Por
isso o MUT-001 usa AUR-461.sh (que nao tem esse comentario) em vez de
AUR-434.sh ou AUR-448.sh.
Non-goals respeitados
Nenhuma linha de internal/review/scope.go ou de qualquer outro pacote de
produto foi alterada. Nenhuma promessa de card foi mudada -- so os dados de
fixture (evidence/impact/verification) foram adicionados, com prosa que nao
repete as strings que as asserções dos proprios scripts verificam.