Uma migração que antes exigia quatro anos e US$ 3 milhões agora levou duas semanas e US$ 160 mil.
Em 16 de julho, a Anthropic publicou um post de blog aparentemente discreto — “How Anthropic runs large-scale code migrations with Claude Code” — e a comunidade de desenvolvedores pegou fogo quase imediatamente. A história tem dois protagonistas.
O primeiro é Jarred Sumner, criador do Bun. Sozinho, em um pequeno apartamento em Oakland, ele passou um ano construindo um runtime JavaScript mais rápido que o Node.js. Hoje, a CLI do Bun ultrapassa 10 milhões de downloads mensais e está profundamente enraizada na própria pilha de dependências do Claude Code. Mas a dívida técnica de apostar em Zig havia vencido. Então ele tentou o que antes era impensável: usar o Claude Code para migrar todo o Bun de Zig para Rust, mais seguro em termos de memória.
Em menos de duas semanas, o processo gerou 1 milhão de linhas de código. Antes do merge, toda a suíte de testes existente do Bun passou 100% no CI; depois, 19 regressões surgiram — todas corrigidas. O build em Rust foi lançado silenciosamente junto com o Claude Code em junho. A migração consumiu 5,9 bilhões de tokens de entrada e 690 milhões de tokens de saída — cerca de US$ 165 mil em preços de API. Não é barato, mas comparado ao antigo balanço de quatro anos e US$ 3 milhões, é um arredondamento de centavos.
A segunda história pertence a Mike Krieger, cofundador do Instagram, que migrou uma base de código Python para 165 mil linhas de TypeScript em um fim de semana: centenas de agentes, oito portões de qualidade, três rodadas de revisão adversarial e uma verificação de consistência comparando a saída de cada comando com o original em Python — qualquer desvio de comportamento era tratado como bug. Ele até fez o Claude projetar sua própria suíte de testes de ponta a ponta, que rodou por quatro noites seguidas. Por que migrar? A toolchain Python levava 8 minutos para compilar por plataforma e meia hora por release em toda a matriz de builds. Depois: compilações de 2 segundos, binários que iniciam 6× mais rápido e um pipeline de deploy inteiro aposentado.
Juntando as duas histórias, chega-se a uma conclusão: a migração de código deixou de ser um abismo intransponível e virou uma barra de progresso esperando para ser esvaziada.
Conserte o Loop Que Produz Código, Não o Código
A Anthropic resume o método em uma frase: não conserte o código — conserte o loop que produz o código. Migrações em larga escala são adequadas para IA por razões evidentes:
-
O trabalho é naturalmente paralelo — milhares de arquivos começam de uma vez;
-
O código antigo é em si a melhor especificação;
-
A suíte de testes é um juiz pronto;
-
Quando uma compilação ou teste falha, o próximo todo surge por conta própria.
O modelo pode se debater contra essa verdade objetiva por dias sem precisar de um árbitro humano. A partir daí, a Anthropic oferece um framework reutilizável de seis passos.
O Framework de Migração em Seis Passos
Passo 1: construa o juiz
Antes de migrar, torne a suíte de testes completa e confiável. Os testes são o único critério objetivo de aprovação ou reprovação — sem eles, o código gerado por IA não tem âncora de qualidade.
Passo 2: escreva o manual de regras
Defina as regras da migração: estilo da linguagem de destino, convenções de nomenclatura, padrões de tratamento de erros, restrições de performance. O manual não é escrito uma única vez — cada defeito que um revisor captura vira uma nova frase nele, e o lote de arquivos afetado é regenerado.
Passo 3: desenhe o grafo de dependências
Mapeie as dependências entre módulos. A ordem importa: mova primeiro as dependências de nível mais baixo para que as camadas superiores tenham o que chamar.
Passo 4: liste as lacunas
Identifique funcionalidades do código antigo que não têm contrapartida direta na linguagem de destino. Essa parte exige julgamento humano — e é exatamente onde o manual de regras precisa ser complementado.
Passo 5: pilote em pequena escala
Execute um módulo de tamanho médio como teste para estressar o sistema de regras. Capture os problemas fatais antes que a execução se espalhe para mil arquivos.
Passo 6: tradução completa com um loop multi-agente
Inicie o loop de agentes implementar-revisar-corrigir. Compile, execute, compare o comportamento item por item. Ao longo de todo o processo, as regras nunca são remendadas manualmente — elas são corrigidas na origem e o trabalho é regenerado.
O Que Isso Significa
1. O custo de migração passa de linear para quase constante. Migrar 100 mil linhas costumava custar muito mais do que dez vezes uma migração de 10 mil linhas, porque a compreensão humana não escala. O custo da IA escala aproximadamente com o volume de código, e a taxa marginal continua caindo. O caso do Bun mostra que migrações de um milhão de linhas cabem em duas semanas.
2. A dívida técnica deixa de ser dívida e vira um risco com hedge possível. A definição clássica: mover-se rápido agora, pagar depois — com o fundador como credor, e o pagamento significando trabalho no produto pausado. Agora a dívida técnica tem um custo de hedge quantificável — US$ 165 mil ou duas semanas. Startups podem escolher o caminho mais rápido cedo sem temer a conta futura da migração.
3. A lógica da escolha de linguagem é reescrita. Escolher uma linguagem era como escolher um cônjuge — o custo de troca era alto demais. Está se tornando como escolher uma ferramenta de projeto: se o ecossistema ou os requisitos mudarem, a migração não é mais um projeto de sete dígitos. Espere mais estratégias do tipo “rodar primeiro, otimizar depois” e menos over-engineering na hora de arquitetar.
4. O ROI da codificação com IA finalmente é quantificado. US$ 165 mil contra US$ 3 milhões; duas semanas contra quatro anos. Este é o caso público mais convincente de ROI de codificação com IA já registrado. As discussões do setor antes eram qualitativas — “experiência agradável”, “eficiência melhor”. Agora há uma âncora: no cenário de migração de linguagem, a IA custa 1/20 do que custam humanos e roda 100× mais rápido.
O Que Fazer Agora
A Anthropic encerra seu post com uma sugestão: escolha uma base de código que você tolerou por tempo demais e pergunte ao Claude como seria o plano de migração dela. Não é uma piada. Primeiros passos concretos para desenvolvedores:
-
Faça um inventário dos módulos que você “sempre quis migrar mas nunca teve coragem” — rode um piloto pequeno com Claude Code ou similar;
-
Construa primeiro a suíte de testes completa — sem testes, sem âncora, sem migração;
-
Revise sua estratégia de seleção tecnológica — se o custo de migração colapsou, as decisões de arquitetura de hoje merecem reexame.
Quatro anos atrás, migração era um abismo que desenvolvedores não atravessavam. Hoje é uma barra de progresso esperando para ser esvaziada. A questão não é mais se você pode migrar — é quando pretende começar.