Achado da revisão do lote 3 (milestone 3), fora do escopo daquelas issues: é defeito preexistente em scripts/gate.sh, não veio das mudanças da branch fix/rodada-2-lote-3.
Problema
Go, Rust, .NET e Python têm cap de "suíte vazia" no gate: quando não há arquivo de teste, o gate conta só o typecheck e sai 0 com o teto YELLOW, em vez de tratar a ausência de testes como vermelho. O ramo JS/TS não tem nada disso — ele só pergunta ao package.json se o script existe e o executa.
Consequência: um repo JS com {"scripts":{"test":"vitest run"}} e zero arquivo de teste faz o vitest sair 1 com No test files found, o run() imprime RED e o gate sai 1. E a regra nova introduzida pela #22 lê exit 1 como baseline quebrado, ou seja, RED com diagnóstico e nenhum commit.
Só que README.en.md e README.md prometem exatamente o contrário para esse caso — YELLOW, "nenhum arquivo de teste no stack" — e a lista de stacks com cap enumera Go, .NET, Rust e pytest, sem JS.
Por que ficou pior agora
Os apelidos de script (#23) alargam o casamento: antes só um script chamado test disparava isso; agora test:integration (ou qualquer test:* sozinho) também dispara. Mais projetos caem no caminho errado.
Etapas
Achado da revisão do lote 3 (milestone 3), fora do escopo daquelas issues: é defeito preexistente em
scripts/gate.sh, não veio das mudanças da branchfix/rodada-2-lote-3.Problema
Go, Rust, .NET e Python têm cap de "suíte vazia" no gate: quando não há arquivo de teste, o gate conta só o typecheck e sai 0 com o teto YELLOW, em vez de tratar a ausência de testes como vermelho. O ramo JS/TS não tem nada disso — ele só pergunta ao
package.jsonse o script existe e o executa.Consequência: um repo JS com
{"scripts":{"test":"vitest run"}}e zero arquivo de teste faz o vitest sair 1 comNo test files found, orun()imprime RED e o gate sai 1. E a regra nova introduzida pela #22 lê exit 1 como baseline quebrado, ou seja, RED com diagnóstico e nenhum commit.Só que
README.en.mdeREADME.mdprometem exatamente o contrário para esse caso — YELLOW, "nenhum arquivo de teste no stack" — e a lista de stacks com cap enumera Go, .NET, Rust e pytest, sem JS.Por que ficou pior agora
Os apelidos de script (#23) alargam o casamento: antes só um script chamado
testdisparava isso; agoratest:integration(ou qualquertest:*sozinho) também dispara. Mais projetos caem no caminho errado.Etapas
no_tests/no_tests_rcque os outros stacks já usam, sem setarincomplete(o comentário nogate.shexplica por quê).gate_test.shcom um runner stub que sai 1 com a mensagem de suíte vazia, cobrindoteste umtest:*sozinho.