Regressivo por funcionalidade
O brabo-qa não aprova só "a stack sobe": ele tem um regressivo por
funcionalidade do Brabo. Toda PR que mexe numa funcionalidade roda o
regressivo dela, para atestar que ela não foi afetada. Na dev isso não
bloqueia nada; na main o catálogo inteiro roda e vale como portão. A decisão
está no ADR 0268.
O catálogo e o mapa
brabo-qa/funcionalidades.yml guarda as 14 funcionalidades (autenticação,
sessão e canal, turno do agente, aprovações, time e handoffs, projetos, git,
backlog, gates, container e broker, runner, providers e gasto, RAG e grafo,
instalação) e, para cada uma, os globs de caminho por repositório. O id é
estável e nunca é renomeado; aposentar é status: aposentada. A spec do
Playwright se liga à funcionalidade pela tag do próprio teste
({ tag: '@f-<id>' }), e o filtro é --grep. Mora no brabo-qa (e não no
brabo-contracts, consumido por tag) para que ajustar o mapa seja uma PR só
(RN-1031).
PR para a dev: atesta, não bloqueia
- O job
regressivo-devdoqa-e2e-gatilho.ymldobrabo-cicruza os arquivos da PR com o mapa. - Três regras valem antes do mapa (RN-1033):
docs e testes do repositório não tocam funcionalidade (
neutral); lockfile,Dockerfile, entrada da app, schema e a subida de TAG do contracts rodam o catálogo inteiro; caminho sem dono no mapa roda o smokeinstalacao+autenticacaoe é listado como "sem dono no mapa". - O
brabo-qaroda as specs das funcionalidades tocadas contra a imagemsha-<12>do head da PR, que oci.ymlpublica e assina só para PR do próprio repositório; PR de fork não recebe segredo e fica sem regressivo (RN-1035). - O resultado volta como o check
Regressivo do brabo-qa(success,failureouneutral).
Esse check nunca é exigido. Nenhum ruleset o cita e o merge segue livre com
ele vermelho (RN-1032). O nome é distinto do
E2E do brabo-qa de propósito, para não se confundir com o portão da main.
PR para a main: o catálogo inteiro
O check E2E do brabo-qa (ADR 0267)
roda todas as specs e traz a tabela funcionalidade | specs | resultado.
Funcionalidade do catálogo sem spec aparece como "sem cobertura" e não
reprova (RN-1034); hoje essa é a situação de
10 das 14, e cada uma deixa a lista quando ganha uma spec. O /qa-aceitar <justificativa> do dono segue valendo para vermelho de spec ou ambiente.
A regra do card
PR que toca uma funcionalidade do catálogo ajusta o regressivo dela no
brabo-qa contra a dev, ou diz no card por que não precisa. Quando um card
entra, o levantamento avalia se ele mexe numa funcionalidade e anota os id do
catálogo. Se o mapa diz que a funcionalidade foi tocada e nenhuma spec @f-<id>
mudou, o App comenta uma vez na PR, como lembrete.
O que isto custa
Uma PR para a dev gasta de 8 a 12 minutos assíncronos de CI no brabo-qa e de 3
a 5 minutos no CI do repositório (a imagem). Os repositórios são públicos, e o
runner padrão não consome minutos pagos. Os golden-sets (conhecimento, gates)
continuam agendados: o resumo cita o último run, sem rodar na PR.
Para ver de qual run do Actions saiu cada resultado, e que irmãos ele leu, veja os Vínculos no Summary (ADR 0271).