Case· Imobiliária (case anonimizado)

A trava funcionou e ninguém soube: três dias de automação parada em silêncio

Uma automação de revalidação de base parou por três dias sem que ninguém percebesse. Cada peça da corrente se comportou exatamente como projetada, inclusive a trava de segurança que interrompeu tudo. O defeito não estava na trava: estava em não existir ninguém encarregado de perceber que ela tinha disparado.

Este case está publicado de forma anonimizada, sem nome de cliente, sem marca e sem o nome do sistema de terceiros envolvido: o projeto tem contrato de confidencialidade e proteção de propriedade intelectual assinado. O que se conta aqui é o modo de falha, que é o ativo técnico reaproveitável.

O sistema faz revalidação de cadastro: percorre uma base de proprietários, dispara mensagem, registra resposta e mantém o cadastro vivo. Ele cruza um CRM de mercado com uma lista de registros publicados, e só fala com quem está nas duas pontas.

A corrente

Num dia comum, o fluxo é este: sincronizar a lista de publicados a partir do sistema externo, montar a lista de autorizados a partir dela, e disparar para quem está na lista. Três elos, nessa ordem.

No dia da falha, o primeiro elo quebrou. A sincronização falhou, a lista de publicados congelou na data anterior, e a montagem da lista de autorizados abortou em vez de seguir com a lista velha. Os dois fluxos de disparo pararam. E ficaram parados por três dias.

Todo mundo fez o certo

A parte difícil de aceitar é que nenhum desses comportamentos é bug. Abortar com lista incompleta é a decisão correta, e ela existe por causa de um incidente anterior: quem não aparece na lista de autorizados é marcado com um estado que é terminal — não volta para a fila sozinho. Numa sincronização parcial, cinco proprietários legítimos foram marcados assim e saíram da base de disparo.

Depois disso, a trava passou a preferir parar tudo a arriscar apagar gente. Ela funcionou. Foi exatamente para isso que foi feita.

Do lado de fora, "não teve disparo hoje" é indistinguível de um dia fraco. Foi essa ambiguidade, e não a falha, que custou três dias.

O defeito real

O defeito não era a trava: era ninguém ficar sabendo que ela tinha disparado. Um sistema que falha de forma segura e silenciosa ainda é um sistema que falha — só que o relógio corre a favor do problema, porque a ausência de sinal se parece com normalidade.

Quem percebeu foi um humano, três dias depois, olhando para um número que não fechava.

O modo de falha traiçoeiro do sistema externo

A causa raiz merece registro próprio, porque é o tipo de coisa que a documentação de uma API não conta. Quando aquele sistema aplica limite de requisição, ele não devolve erro de autenticação nem erro de excesso de chamadas. Ele devolve uma lista vazia, com código de sucesso.

E a condição de fim de paginação, do lado de quem consome, é exatamente "lista vazia". Ou seja: limite de requisição e fim natural dos dados são o mesmo evento para o paginador. Ele para achando que terminou, e grava uma lista truncada — ou nenhuma — com aparência de sucesso completo.

Medido no mesmo dia: pedir mais de vinte registros por página também devolve lista vazia em vez de erro. Quem tentar acelerar a paginação por aí vai achar que funcionou.

O que ficou no lugar

Três correções, nenhuma delas no elo que quebrou. Sincronização com três tentativas escalonadas de madrugada, para que uma falha isolada não vire um dia perdido. Um vigia de idade da lista dentro do auditor de produção, que grita quando o dado envelhece além do esperado. E, na aplicação manual, uma trava que se recusa a aplicar lista incompleta sem confirmação explícita.

Nenhuma dessas três impede a falha original. As três garantem que ela seja vista no mesmo dia.

A lição, que vale para qualquer automação

Falhar seguro não é o fim do projeto de confiabilidade — é metade dele. A outra metade é alguém, ou alguma coisa, encarregada de notar. Toda trava silenciosa precisa de um vigia, e todo vigia precisa de um número que envelhece: não "deu erro?", mas "há quanto tempo esse dado não é atualizado?".

O projeto foi entregue em 16 de agosto de 2026, com as três frentes no ar e em uso com dado real, dentro da vigência contratada, e o contrato quitado.