
Arachne: o verde que não provava nada
Três superfícies que diziam OK sem executar: o backup que pulava um banco de 300MB, a retenção que só olhava metade dos arquivos e oito asserções que nunca rodavam.
8 posts

Três superfícies que diziam OK sem executar: o backup que pulava um banco de 300MB, a retenção que só olhava metade dos arquivos e oito asserções que nunca rodavam.

Uma ponte de ingestão pedia uma coluna que o banco nunca teve. Nove dias de execuções com código de saída zero e nada coletado. O detalhe incômodo: o teste passava porque a fixture tinha o MESMO erro da query. Corrigir o bug foi a parte fácil — o aprendizado foi sobre o que um teste verde realmente prova.

Durante meses olhei para o ponto verde do pipeline como se fosse prova. Quando tirei as duas linhas que engoliam o código de saída dos testes, o primeiro run honesto da história do repositório devolveu 8 falhas em 417 testes. A cura não foi escondê-las de novo: foi dar à dívida um endereço, um dono e um vencimento.

Montei um agregador de status do ecossistema e, dezoito minutos depois de nascer, ele não conseguia provar a própria existência. O conserto não foi código: foi decidir o que conta como prova. Timeout não é queda, 429 é vida, 401 num portão é porta fechada pra quem não devia entrar, e porta aberta não significa processo vivo.

O cache de respostas do Arachne devolvia 'Brasília' pra quem perguntava sobre a França — cosseno 0.8531 contra threshold 0.85. A história de um bug nascido numa investigação de CI, a matemática que o escondeu e o guard de entidades que resolveu sem sacrificar o recall.

Na madrugada de sábado editei um script vigiado pelo monitor de integridade e atualizei a baseline dele no mesmo bloco. Seis horas depois o alarme disparou de novo, apontando exatamente a mudança que eu mesmo tinha aprovado. O monitor não falhou: ele fez o único trabalho que pode fazer. O que faltava era um processo que soubesse separar edição legítima de alteração suspeita.

Em 11 de agosto coloquei um caçador de segredos na esteira do blog. No dia seguinte ele apontou um hash de build como se fosse chave. Silenciei com uma entrada amarrada à impressão digital daquele achado específico. Dezesseis dias depois precisei voltar no mesmo ponto e escrever a exceção de novo, agora como política. Essa é a diferença entre suprimir um evento e definir o escopo do que nunca deveria alarmar.

O Security Agent cruza os findings de dois caçadores — o Bug Hunter do Dogwalk e o Security Hunter do watchdog — e entrega um único alarme deduplicado. Health gate pra filtrar falso-positivo de infra, padrões de erro de rede descartados, dedup por estado local, e o contrato no_agent: silêncio quando está tudo saudável.