Skip to content

fix(drift): indisponibilidade não é drift, e o retry não segurava - #10

Merged
Mozurok merged 1 commit into
mainfrom
fix/drift-indisponibilidade-nao-e-drift
Sep 4, 2026
Merged

fix(drift): indisponibilidade não é drift, e o retry não segurava#10
Mozurok merged 1 commit into
mainfrom
fix/drift-indisponibilidade-nao-e-drift

Conversation

@Mozurok

@Mozurok Mozurok commented Sep 4, 2026

Copy link
Copy Markdown
Owner

Corrige um diagnóstico meu que o run seguinte desmentiu, e o ruído que vem confundindo o alarme desde agosto.

O que eu afirmei errado

No #8 eu escrevi, no código e no README, que www.cgibs.gov.br bloqueava o runner do GitHub. Base: um run em que ele deu timeout e os três alvos de tributos.gov.br responderam.

O run seguinte inverteu:

run CGIBS portal piloto api-split
33901733965 timeout MATCH MATCH MATCH
33902480218 MATCH timeout timeout timeout

Não é bloqueio de host nenhum. É a rota dos runners do GitHub para gov.br sendo intermitente. Conclusão apressada a partir de uma observação só, que é exatamente o erro que custou os 11 dias do v1.1.0, repetido por mim três horas depois de documentá-lo.

O que muda

1. Retry que cobre a janela real. Eram 3 tentativas com 2s fixos, 6s de janela, e dois runs seguidos furaram. Agora 5 tentativas com espaçamento exponencial (2, 4, 8, 16s), cerca de 30s.

2. Título de issue por natureza do problema. Chamar indisponibilidade de "Drift detectado nos contratos oficiais" já abriu duas issues em falso: a #4 (03/08, fechada como "soluço de rede no runner") e a #9 (hoje). Agora indisponibilidade tem título próprio, e o corpo abre dizendo que aquilo pode ser rede, com o comando para confirmar em 30 segundos.

3. O registro corrigido. A issue #6 nasceu em 17/08, não 31/08, e ficou 18 dias sem tratamento, não 4. Eu li a coluna de atualização do gh issue list como se fosse a de criação.

Por que o item 3 é o mais importante

A detecção automática funcionou. Pegou o drift em 17/08 e avisou de novo em 24/08 e 31/08. Três avisos, dezoito dias, nenhuma resposta.

Isso muda o diagnóstico da auditoria de hoje. Eu tinha registrado "falha de detecção" para o v1.1.0 e "falha de resposta" para o drift da Calculadora, como se fossem coisas separadas. Olhando junto: um detector que abre issue em falso por soluço de rede ensina o mantenedor a ignorar o alarme. Duas issues em falso e três avisos verdadeiros ignorados, no mesmo período, não são coincidência. O ruído é o que corrói a resposta.

Por isso o título da issue não é detalhe cosmético, é a correção do sinal.

Verificação

  • 41 testes no detector (5 novos): espaçamento dobra a cada tentativa, a janela de 5 tentativas dá 30s, a espera acontece na ordem certa, resposta boa na última tentativa ainda vale, e 4xx continua sem retry.
  • node scripts/drift-check.mjs local: 4/4 MATCH.

Corrige um diagnostico meu que o run seguinte desmentiu. No #8 eu afirmei que
o www.cgibs.gov.br bloqueava o runner do GitHub, com base num unico run em que
ele deu timeout e os tres alvos de tributos.gov.br responderam. O run seguinte
inverteu: CGIBS MATCH e os outros tres em timeout. Nao e bloqueio de host; e a
rota dos runners para gov.br sendo intermitente. Mesma conclusao apressada, a
partir de uma observacao so, que este projeto ja pagou caro uma vez.

Tres mudancas:

1. Retry que cobre a janela real. Eram 3 tentativas com 2s fixos, ou seja 6s,
   e dois runs seguidos furaram. Agora 5 tentativas com espacamento
   exponencial (2, 4, 8, 16s), ~30s de janela.

2. Titulo de issue por natureza do problema. Chamar indisponibilidade de
   "Drift detectado nos contratos oficiais" ja abriu duas issues em falso (#4
   e #9). Agora indisponibilidade tem titulo proprio e um corpo que diz, antes
   de qualquer coisa, que aquilo pode ser rede e como confirmar em 30 segundos.

3. O registro da rotina corrigido: a issue #6 nasceu em 17/08, nao 31/08, e
   ficou 18 dias sem tratamento, nao 4. Eu tinha lido a coluna de atualizacao
   do gh issue list como se fosse a de criacao.

O 3 e o mais importante dos tres. A deteccao automatica funcionou e avisou
tres vezes; o que falhou foi a resposta. E um detector que abre issue em falso
por soluco de rede ensina o mantenedor a ignorar o alarme, o que explica 18
dias de silencio melhor do que desatencao.

5 testes novos, 41 no total.
@Mozurok
Mozurok merged commit 26dcb4f into main Sep 4, 2026
2 checks passed
@Mozurok
Mozurok deleted the fix/drift-indisponibilidade-nao-e-drift branch September 4, 2026 18:05
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