Skip to content

fix(drift): indisponibilidade do CGIBS não deve reprovar o run - #8

Merged
Mozurok merged 1 commit into
mainfrom
fix/drift-cgibs-inalcancavel-do-runner
Sep 4, 2026
Merged

fix(drift): indisponibilidade do CGIBS não deve reprovar o run#8
Mozurok merged 1 commit into
mainfrom
fix/drift-cgibs-inalcancavel-do-runner

Conversation

@Mozurok

@Mozurok Mozurok commented Sep 4, 2026

Copy link
Copy Markdown
Owner

O quarto alvo de drift, entregue no #7, deixou main vermelha no primeiro run. Regressão minha, corrigida aqui.

O que aconteceu

MATCH         calculadora regime-geral (portal)
MATCH         calculadora regime-geral (piloto)
MATCH         api-split simplificado (portal)
UNREACHABLE   inventario de artefatos do Split Payment (CGIBS): fetch failed
              (Connect Timeout Error, www.cgibs.gov.br:443, 10000ms) (apos 3 tentativas)

www.cgibs.gov.br não aceita conexão do runner do GitHub Actions, enquanto consumo.tributos.gov.br e piloto-cbs.tributos.gov.br respondem do mesmo runner (run 33901733965). É bloqueio do host, provavelmente geográfico ou anti-datacenter, não rede instável. Localmente o alvo dá MATCH.

A correção

Rebaixar o alvo inteiro para warn perderia o sinal que importa. Manter fail deixaria o detector vermelho toda semana por uma causa externa que não vamos consertar, que é exatamente o "detector que grita lobo acaba silenciado" contra o qual o próprio arquivo já advertia.

Então a severidade de indisponibilidade passa a ser separada da severidade de drift, por alvo:

severity: "fail",                 // drift ali reprova
severidadeIndisponivel: "ignore", // não conseguir falar com o host, não

ignore é uma terceira via: aparece no relatório, não reprova, não abre issue. Um alvo sem o campo mantém exatamente o comportamento anterior (coberto por teste).

A parte que mais importa

O limite fica declarado no README (nas duas metades) e na rotina de vigilância, em vez de implícito:

Na prática, esse alvo só compara de verdade quando o drift-check roda de uma rede que alcança o host. Para esse contrato, a checagem semanal manual não é redundância, é a cobertura principal.

Isso é o ponto. O #7 existiu porque uma limitação foi afirmada com confiança e nunca verificada, e custou 11 dias. Entregar um alvo que não funciona no CI sem dizer isso repetiria o mesmo erro com o sinal trocado.

Verificação

  • 36 testes no detector (6 novos), cobrindo: indisponibilidade ignorada não reprova nem abre issue, drift no mesmo alvo continua reprovando, o relatório explica por que não reprovou, e alvo sem o campo não muda de comportamento.
  • node scripts/drift-check.mjs local: 4/4 MATCH, exit 0.

O quarto alvo, adicionado no #7, deixou main vermelha no primeiro run:
www.cgibs.gov.br da connect timeout em 443 a partir do runner do GitHub, tres
tentativas, enquanto consumo.tributos.gov.br e piloto-cbs.tributos.gov.br
respondem do mesmo runner (run 33901733965). E bloqueio do host, nao rede
instavel, e nao e coisa que a gente conserte.

Reprovar por isso e o defeito contra o qual o proprio arquivo ja advertia: um
detector que grita lobo toda semana acaba silenciado. Mas rebaixar o alvo
inteiro para "warn" tambem estaria errado, porque perderia o sinal que
importa, que e drift.

Entao a severidade de indisponibilidade passa a ser separada da severidade de
drift, por alvo. O CGIBS declara severidadeIndisponivel: "ignore": aparece no
relatorio, nao reprova, nao abre issue. Drift ali continua reprovando. Alvo
sem o campo mantem exatamente o comportamento de antes.

O limite fica declarado no README e na rotina, em vez de implicito: esse alvo
so compara de verdade rodando de uma rede que alcance o host, entao para esse
contrato a checagem manual e a cobertura principal, nao a redundancia. Foi
justamente uma limitacao nao declarada que custou os 11 dias do v1.1.0.

6 testes novos, 36 no total.
@Mozurok
Mozurok merged commit 0691128 into main Sep 4, 2026
2 checks passed
@Mozurok
Mozurok deleted the fix/drift-cgibs-inalcancavel-do-runner branch September 4, 2026 17:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant