Pular para o conteúdo
Development

Três vezes em que "a spec dizia X" estava errada

Por Victor Da Luz•
maintenancedocumentationdev-logsite

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

Development

O bug atrás do bug

Um widget do GitHub quebrado levou a uma demo pausada, e no caminho apareceu um CSP fixado por hash invalidado por uma correção de acessibilidade de uma linha.

Ler: O bug atrás do bug

Você também pode achar útil

Proton

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 mais
Airalo

eSIM 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 mais
NordPass

NordPass

Gerenciador de senhas da equipe por trás da NordVPN, com um plano gratuito.

Como afiliado da NordPass, ganho com compras qualificadas.

Saiba mais