Três vezes em que "a spec dizia X" estava errada
Mantenho uma issue de spike por perto para pegar pequenas deteriorações antes que se acumulem, symlinks mortos, docs desatualizadas, um campo package.json faltando. Essa semana finalmente limpei o backlog que ela tinha acumulado. Três dos sete itens acabaram sendo o mesmo tipo de erro: algo registrado por escrito (um alvo de symlink, uma correção em andamento, um token CSS) parou de bater com a realidade, e ninguém percebeu até eu ir checar.
O symlink que apontava para lugar nenhum. Três arquivos dentro de .cursor/rules/ eram symlinks versionados apontando para ~/Projects/cursor-rules/. Esse diretório não existe. Não “foi movido”, o próprio ~/Projects/ não está lá. O que quer que tenha sincronizado essas regras foi uma ação única, nunca um mecanismo de verdade, e os symlinks só continuaram apontando para o nada desde então. Removê-los não foi uma decisão de julgamento depois que eu checei; não havia nada para restaurar.
A correção de auditoria que já estava a caminho. O spike sinalizou 9 vulnerabilidades na toolchain de build para o npm audit fix. Antes de rodar, checei os PRs abertos, três branches do Dependabot já cobrem as mesmas dependências, enfileiradas atrás de uma issue anterior de gate de CI. Rodar o audit fix na mão teria significado brigar com minha própria automação à toa. Às vezes a correção é “confirmar que já está agendado” em vez de “fazer.”
A classe CSS que nunca existiu. A própria documentação do projeto descrevia um arquivo global.css e um componente chamado MainContent. Nenhum dos dois existe na base de código atual, a composição da página é Hero mais três componentes de seção mais um widget, nada chamado MainContent em lugar nenhum. O doc tinha ficado desatualizado em relação a uma versão bem anterior do site e ninguém tinha comparado ele com a realidade desde então. Reescrevê-lo significou ler a árvore de componentes de verdade, em vez de confiar no que já estava escrito sobre ela.
Nenhum desses precisou de esperteza. Cada um precisou do mesmo movimento: não confiar na descrição escrita, checar a coisa que ela descreve. Um alvo de symlink morto, um issue tracker e uma árvore de componentes, três fontes de verdade diferentes, a mesma lição em cada uma.
Uma correção pequena no mesmo lote merece uma menção de uma linha: um badge de status estava em 9,6px, abaixo do tamanho que a maior parte das diretrizes de acessibilidade trata como piso para texto próximo ao corpo do conteúdo, subi para 12px. E um botão de “iniciar jogo” que se removia do DOM ao clicar estava jogando o foco de teclado para <body>, movi ele para o iframe que substitui o botão. Nenhum dos dois é empolgante, mas os dois são o tipo de coisa que fica invisível a menos que você esteja usando teclado ou leitor de tela, e é exatamente por isso que eles não são pegos por checagens de build ou de tipos.
Leitura relacionada
O bug atrás do bug
Um widget do GitHub quebrado rastreado até uma demo upstream pausada, e, encontrado no caminho, um CSP fixado por hash silenciosamente invalidado por uma correção de acessibilidade de uma linha.
O bug que na verdade era o depurador
O bug de corte mobile em todo o site que não existia: o Chrome headless trava silenciosamente num piso de 500px e recorta o screenshot para a largura que você pediu.
Dando um rosto para cada link compartilhado
Uma proteção de og:image que nunca disparava, um valor padrão de uma linha que resolveu, um card de terminal feito sob medida, e uma pegadinha de retina no Chrome headless.
Você também pode achar útil
Proton VPN
VPN comercial com filtragem NetShield e interruptor de desligamento automático.
Como parceiro da Proton, ganho com compras qualificadas dos serviços de privacidade e segurança da Proton (Pass, Mail, VPN, Drive).
Saiba maiseSIM Airalo
eSIM de dados local para viagens - sem necessidade de trocar um SIM físico.
Este é meu link de indicação da Airalo. Você recebe um desconto no seu primeiro eSIM e eu ganho crédito da Airalo para o meu.
Saiba maisNordPass
Gerenciador de senhas da equipe por trás da NordVPN, com um plano gratuito.
Como afiliado da NordPass, ganho com compras qualificadas.
Saiba mais