Limpar ferramentas abandonadas me ensinou duas coisas que npm e git não contam
Algumas sessões atrás eu montei um caminho de automação de dispositivo para o Deep Cut Atlas: go-ios, um clone do WebDriverAgent, registro de um servidor MCP. Precisava de um passo presencial para de fato terminar, assinar e parear o WDA no telefone físico, e esse passo nunca aconteceu. Depois surgiu uma abordagem diferente e melhor (baseada em espelhamento de tela), e a primeira tentativa, meio construída, ficou parada ali. Hoje limpei tudo isso, e limpar ferramentas mortas acabou virando sua própria lição pequena sobre não confiar no sinal óbvio.
O uninstall que não foi
npm uninstall -g go-ios imprimiu “removed 2 packages.” Caso encerrado, ou foi o que assumi, até which ios continuar resolvendo para um binário vivo de 44 megabytes, sentado exatamente onde sempre esteve. O script de instalação do pacote tinha copiado um binário pré-compilado direto para o diretório bin global, em vez de usar o mecanismo normal de symlink do npm, aquilo que o npm de fato rastreia e limpa. O npm não sabe que esse arquivo existe em nenhum sentido sobre o qual ele consiga agir, então desinstalar o pacote não toca nele. O fix foi um rm simples, mas o fix de verdade é o hábito: depois de qualquer npm uninstall de uma ferramenta que distribui um binário compilado, conferir com which você mesmo em vez de confiar na linha “removed N packages.”
Um stash que mentiu sobre o que era
Parte da configuração original deixou uma edição não commitada em .mcp.json, adicionando a entrada do servidor MCP. Em algum momento eu tinha guardado isso num stash para trocar para um trabalho não relacionado, e o stash carregou o rótulo de qualquer branch que estivesse checada naquele momento, uma feature completamente diferente. Semanas depois, esse rótulo era a única coisa me dizendo do que o stash “tratava,” e estava errado. O nome da branch num stash registra onde o HEAD estava apontando, não do que o diff realmente trata. Se eu tivesse confiado no rótulo, teria deixado essa entrada enterrada no trabalho futuro da branch errada indefinidamente. O único fix de verdade é nunca confiar nisso: diferenciar o stash antes de decidir qualquer coisa sobre ele.
Um problema pequeno de limpeza, duas descobertas que vou usar de novo, isso já são três lições sobre stash numa semana, o que provavelmente diz algo sobre quanto do meu trabalho fica sem commit por mais tempo do que deveria.
Leitura relacionada
Parar diante de um aviso de "tap não confiável" do Homebrew para realmente auditar antes de confiar
A barreira de confiança existe porque um tap real foi comprometido. Vinte minutos lendo a fórmula, as permissões e o mantenedor venceram dez segundos rodando o comando sugerido.
Rotas de dev log filtradas por projeto, e a sessão concorrente que me pegou de surpresa
Consertar dois links sem destino exigiu construir filtragem por tag, até uma colisão do git de uma sessão concorrente me pegar no meio do lançamento.
Uma seção de tracklist, e por que levou 30 minutos
Um método de protocolo, um enum de estado reaproveitado, uma convenção de roteamento que se manteve, e um orçamento de lint que forçou uma divisão que valia a pena fazer de qualquer forma.
Você também pode achar útil
AdGuard para iOS
Bloqueio de anúncios e rastreadores em todo o sistema no iOS, sem necessidade de um servidor DNS separado.
Como afiliado da AdGuard, ganho com compras qualificadas.
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 maisProton Pass
Gerenciador de senhas focado em privacidade, da equipe por trás do Proton Mail.
Como parceiro da Proton, ganho com compras qualificadas dos serviços de privacidade e segurança da Proton (Pass, Mail, VPN, Drive).
Saiba mais