Como migrar código legado com o GPT-6 Sol: fatiando o projeto em etapas que o modelo consegue terminar

fluxo de etapas para migrar código legado com GPT-6 Sol usando ExecPlan
Resposta rápida

Migrar código legado com GPT-6 Sol funciona quando você para de pedir a reescrita inteira de uma vez e passa a entregar fatias com fronteira clara. O modelo foi lançado pela OpenAI em 22/09/2026, é construído para codificação complexa e fluxos agênticos e já é o padrão do Codex. O método oficial é inventariar premissas em sandbox de leitura, escrever um ExecPlan via PLANS.md, avançar por milestones com camada de compatibilidade e rodar lint, type-check e testes focados depois de cada um, com /review fechando cada fatia antes da próxima 🙂

Migração de projeto legado quase nunca morre de dificuldade técnica

ela morre de escopo

Você abre a sessão, manda "migra esse projeto todo pro framework novo", o agente sai bem nos primeiros vinte arquivos e depois começa a inventar caminho, perder contexto e afirmar que terminou algo que nem compila

O GPT-6 Sol, que a OpenAI lançou em 22/09/2026 junto com o GPT-6 Luna, é um modelo construído justamente para codificação complexa e fluxos agênticos, com posicionamento oficial de escolha equilibrada para tarefas que se beneficiam de validação cuidadosa em múltiplas etapas

Repare na palavra: validação em MÚLTIPLAS etapas

Isso não é detalhe de marketing, é a instrução de uso do bicho

Então esse post não é promessa de reescrita automática, é método de fatiamento: como definir fronteira de tarefa, o que conta como "pronto" e onde o humano precisa olhar antes de liberar a próxima fatia

Bora?

O que você precisa antes de começar a migração

Antes de sair rodando, três coisas precisam estar de pé

1. Acesso ao modelo certo

O GPT-6 Sol está disponível no ChatGPT Work e no Codex para usuários Plus, Pro, Business, Enterprise e Edu

Quem está no Free ou no Go acessa o GPT-6 Luna no app de desktop

Na API os identificadores são gpt-6-sol e gpt-6-luna

Se o teu fluxo é GitHub Copilot, o GPT-6 Sol aparece nos planos Pro+, Max, Business e Enterprise, e o Luna nos planos Pro, Pro+, Max, Business e Enterprise

Detalhe importante pra quem vive no Codex: o GPT-6 Sol é o modelo padrão de lá, e a documentação recomenda gpt-6-sol pra quem usa login ChatGPT nos planos Plus, Pro, Business, Enterprise e Edu, com gpt-6-luna atendendo Free e Go

2. Repositório em estado migrável

Código versionado, sem alteração solta fora do git

Suíte de testes que rode, nem que seja parcial (ela vira teu critério de pronto lá na frente)

E uma branch base definida, porque é contra ela que você vai comparar cada fatia

Se você já passou por troca de modelo em projeto que estava rodando, vale revisar aquele checklist antes de trocar o modelo pra não misturar duas mudanças grandes na mesma semana

Formação Claude Code
Formação Recomendada

Formação Claude Code

Domine Claude Code do absoluto zero até o avançado

  • 120 aulas
  • 4 projetos
  • 9h 45min

3. Noção de custo por fatia

Na API, o GPT-6 Sol custa US$ 2 por milhão de tokens de entrada e US$ 10 por milhão de tokens de saída

Tokens de entrada cacheados saem por 10% da taxa de entrada não cacheada, e escritas de cache são cobradas a 1,25x dessa taxa

Ou seja: repetir o mesmo contexto base entre fatias é barato, empurrar o repositório inteiro a cada pergunta é caro

Tome cuidado com isso desde a primeira fatia, não depois que a fatura chegar 😛

Passo a passo: fatiando o projeto legado em etapas que o GPT-6 Sol termina

A sequência abaixo segue o método de migração que a própria documentação do Codex recomenda, com os pontos onde o vibe coder costuma se ferrar

  1. Inventarie as premissas do sistema legado com o agente em modo só leitura

Antes de escrever uma linha, você precisa saber o que o sistema faz hoje: rotas, modelos de dados, autenticação, configuração, tooling de build, testes, deploy e contratos externos

Esse levantamento é leitura pura, então rode o agente sem permissão de escrita:

codex --sandbox read-only --ask-for-approval on-request

O modo read-only é só leitura, e a política on-request faz o agente trabalhar dentro do sandbox e pedir autorização quando precisar sair do limite

Se quiser trocar o perfil no meio da sessão, o comando /permissions abre o seletor

O erro comum deste passo: começar o inventário já com workspace-write ligado, que é o modo padrão de baixo atrito pra trabalho local

Aí o agente "aproveita" e ajeita um arquivo no meio do mapeamento, e você perde a foto do estado original

  1. Mapeie o stack antigo para o novo, apontando o que NÃO tem equivalente direto

Essa é a parte que todo mundo pula

Migração fácil é a que tem tradução um pra um, e essa não é a que dá problema

O que trava o agente lá na fatia 7 é justamente o pedaço sem equivalente: um helper de sessão que não existe no framework novo, um ORM que resolvia relação de um jeito que o outro não resolve, um comportamento de config implícito

Peça esse mapeamento explicitamente, com a lista do que não tem correspondente

O erro comum deste passo: aceitar o mapeamento como tabela bonitinha sem revisar o que ficou no vazio

O que ficou sem equivalente é exatamente onde o humano decide, não o modelo

  1. Escreva o ExecPlan antes de qualquer implementação longa

O Codex trabalha com um documento de design chamado ExecPlan, cujos requisitos ficam descritos num PLANS.md

A ativação tem duas partes: adicionar o arquivo PLANS.md ao repositório e atualizar o AGENTS.md pra descrever quando usar o PLANS.md

Que AGENTS.md? É o arquivo de memória de projeto que o Codex lê antes de começar o trabalho, montando uma cadeia de instruções uma vez por execução

No escopo global ele lê o diretório home do Codex (padrão ~/.codex, ou o definido em CODEX_HOME), priorizando AGENTS.override.md e, na ausência dele, AGENTS.md

No escopo de projeto ele caminha da raiz até o diretório atual, e os arquivos mais próximos do diretório atual sobrescrevem os anteriores

Regra de ouro do ExecPlan, segundo a documentação oficial: o plano deve tratar o leitor como alguém que NÃO conhece o repositório, com acesso apenas à árvore atual e ao próprio arquivo de plano

Se o plano só faz sentido pra quem já tem o projeto na cabeça, ele não serve como fronteira de tarefa

O erro comum deste passo: escrever plano com atalho mental do tipo "migrar o módulo de pagamento como sempre fizemos"

O agente não tem o "como sempre fizemos"

  1. Defina a fronteira de cada milestone com camada de compatibilidade, não com reescrita única

O método recomendado é plano incremental com camadas de compatibilidade ou checkpoints, em vez de trocar tudo de uma vez

E tem uma regra que precisa estar escrita no plano: manter o comportamento inalterado, salvo quando a migração exigir mudança visível

Essa frase é o que impede o modelo de "melhorar" a regra de negócio enquanto migra

Na prática, cada fatia vira uma linha de plano com três campos: o que entra, o que continua igual e o que o rollback derruba

O erro comum deste passo: escopo definido por arquivo ("migrar services/") em vez de por comportamento

Pasta não é fronteira, comportamento é

  1. Ajuste o esforço de raciocínio por tipo de fatia

O GPT-6 Sol suporta os níveis none, low, medium (padrão), high, xhigh e max

Esforço menor favorece velocidade e gasta menos token, esforço maior entrega resposta mais completa

Dentro da sessão interativa, o comando /model troca o modelo ou ajusta o esforço

Na abertura do Codex dá pra escolher com --model ou com o alias -m, e a mesma opção funciona em execução não interativa

Pra fixar por configuração, use a chave model_reasoning_effort no ~/.codex/config.toml:

model_reasoning_effort = "high"

A chave aceita esses mesmos níveis de esforço, conforme o modelo e o cliente suportarem

O erro comum deste passo: deixar tudo no max "pra garantir"

Fatia mecânica (renomear import, trocar assinatura repetida) não precisa de raciocínio pesado, e você paga a diferença em token de saída

  1. Rode cada fatia em worktree isolada (suporte experimental)

Um aviso antes de você apoiar o isolamento das fatias nisso: o suporte a worktree no Codex é experimental, então trate como conveniência e não como garantia

O recurso cria checkouts isolados pra sessões novas ou bifurcadas, com navegação e retomada dessas sessões:

codex --worktree

Dentro da sessão, o comando equivalente é /worktree

A vantagem é óbvia: fatia que deu errado morre no checkout dela, sem contaminar a branch base

O erro comum deste passo: rodar três fatias na mesma árvore de trabalho e depois não saber qual mudança veio de qual milestone na hora de reverter

  1. Critério de pronto: lint, type-check e testes focados depois de CADA milestone

Aqui está o coração do método

"Pronto" não é o agente dizer que terminou

Pronto é rodar lint, type-check e testes focados após o milestone, e se a validação falhar, corrigir ANTES de seguir pra próxima fatia

Dívida de validação acumulada é o que transforma migração em bola de neve

Vale lembrar que teste verde não garante código no padrão da casa, então olha também as convenções do projeto e não só o que roda

O erro comum deste passo: rodar a suíte inteira e demorar tanto que você começa a pular a checagem

Teste focado existe por isso

  1. Ponto de checagem humana com /review

O Codex CLI tem o comando /review, que roda uma revisão não interativa e reporta achados priorizados SEM modificar a árvore de trabalho

Ele funciona sobre mudanças não commitadas, sobre o diff contra uma branch base, sobre um commit específico ou com instruções customizadas

É o encaixe perfeito pro fim de fatia: o agente implementou, a validação passou, e agora vem uma leitura crítica do diff contra a branch base antes de você aprovar

O erro comum deste passo: tratar o /review como carimbo

Ele prioriza achados, quem decide o que é aceitável continua sendo você

  1. Gerencie o contexto ao longo da sessão longa

Migração é conversa comprida, e conversa comprida entope contexto

O comando /compact resume o histórico, substituindo os turnos anteriores por um sumário e liberando espaço

Pra automatizar, existe a configuração model_auto_compact_token_limit (em tokens), com model_auto_compact_token_limit_scope aceitando total (padrão) ou body_after_prefix

O erro comum deste passo: compactar no meio de uma fatia, perdendo a decisão de design que justificava o que estava sendo feito

Compacte na fronteira entre milestones, com o ExecPlan atualizado no repositório servindo de memória de verdade

  1. Migração maior? Conduza pelo /goal

Pra migrações de porte maior, a documentação de casos de uso sugere usar o /goal pro Codex conduzir o processo, com prompt do tipo:

migrar este projeto de <stack legado> para <stack alvo>

E mantenha rollback ou fallback visíveis até o fim da transição

Não é frescura: enquanto a camada de compatibilidade estiver de pé, você tem saída

O erro comum deste passo: derrubar o caminho antigo na metade da migração porque "já tá funcionando"

Já vi projeto virar refém disso

Como o fatiamento muda conforme o tipo de migração

Fronteira de tarefa não é uma só, ela depende do que está migrando

O cookbook oficial de modernização de codebase organiza o trabalho em 5 fases que giram em torno do ExecPlan, e o plano piloto é escopado a um ÚNICO fluxo, cobrindo quatro entregas: inventário e diagramas, relatório técnico de modernização, design e especificação do alvo, e plano de testes de paridade

Essas quatro entregas são o esqueleto que você adapta nos três cenários abaixo

Troca de versão de framework: fatia por módulo

Aqui o mapeamento costuma ter muito equivalente direto, e o perigo é o excesso de confiança

Fatie por módulo, com camada de compatibilidade segurando a ponta entre o módulo migrado e o resto do sistema ainda na versão antiga

O critério de pronto do módulo é comportamento idêntico, então o plano de testes de paridade vale ouro

Troca de linguagem: fatia por fluxo

Esse é o caso em que a lista de "não tem equivalente direto" fica comprida

Fatie por fluxo de negócio inteiro, não por camada, e use o piloto escopado a um único fluxo antes de prometer prazo pra qualquer outra coisa

O inventário e os diagramas aqui não são burocracia, são o que permite o ExecPlan ser lido por quem não conhece o repositório

E o relatório técnico de modernização é onde as decisões difíceis ficam registradas, em vez de morarem na cabeça de uma pessoa

Infraestrutura e contratos externos: fatia por contrato

Quando o que muda é deploy, configuração ou integração com terceiro, a fronteira natural é o contrato

Uma fatia = um contrato externo migrado, com fallback visível até o fim da transição

É o cenário em que mais dói pular o passo de rollback, porque a quebra não aparece no teste local, aparece no cliente 😀

Janela de contexto, esforço e custo: o que cabe em cada fatia

O tamanho da fatia não é gosto pessoal, ele sai de números concretos

Variável Valor no GPT-6 Sol O que isso muda no fatiamento
Janela de contexto 1.050.000 tokens Cabe muito repositório, mas caber não é o mesmo que ser barato
Saída máxima 128.000 tokens Teto de quanto código sai numa resposta, limita o tamanho útil do milestone
Corte de conhecimento 20/04/2026 API ou versão de framework mais nova que isso precisa vir no contexto, não da memória do modelo
Limiar de prompt longo Acima de 272 mil tokens de entrada Cobrança de 2x nas taxas de entrada e de cache e 1,5x na saída, valendo pra requisição INTEIRA
Entrada US$ 2 por milhão de tokens Contexto repetido a cada fatia pesa mais do que parece
Saída US$ 10 por milhão de tokens Fatia que gera código demais de uma vez é a parte cara da conta
Tokens em cache 10% da taxa de entrada não cacheada Prefixo estável entre fatias sai quase de graça
Escrita de cache 1,25x da taxa de entrada não cacheada Vale a pena quando o mesmo contexto base é reusado várias vezes
Esforço de raciocínio none, low, medium (padrão), high, xhigh, max Menor esforço = mais velocidade e menos token; maior esforço = resposta mais completa

A leitura prática é direta: fatia grande demais custa desproporcionalmente mais

Passou de 272 mil tokens de entrada, a multiplicação vale pra requisição toda, não só pro excedente

Então o fatiamento não é só disciplina de engenharia, é decisão de custo

O GPT-6 Sol dá conta de uma migração de verdade?

Vou ser honesto: esse post não traz teste próprio

O que dá pra fazer é ler os números divulgados sem inventar conclusão em cima deles

No DeepSWE v1.1, o GPT-6 Sol em esforço max marca 68,8%, contra 69,9% do Claude Fable 5 em xhigh, com custo por tarefa cerca de 80% menor

Ou seja: fica ligeiramente atrás no placar e MUITO à frente na conta

O GPT-6 Luna em max marca 66,6%

Nos benchmarks de agente de código a evolução contra o antecessor aparece: Terminal-Bench 4.0 em 43% contra 37% do GPT-5.6 Sol, e SWE-Atlas-QnA em 58% contra 54%, ambos em esforço max

No Coding Agent Index da Artificial Analysis, que combina modelos com harnesses agênticos e reúne DeepSWE, Terminal-Bench v2 e SWE-Atlas-QnA, o GPT-6 Sol faz 57 pontos em max, 2 pontos acima do GPT-5.6 Sol em max, com cerca de metade do custo por tarefa do antecessor

No Artificial Analysis Intelligence Index, a página do modelo marca 48 pontos pro GPT-6 Sol em max

E tem o preço: os modelos Sol e Luna vieram com corte de 50% frente ao preço promocional dos equivalentes GPT-5.6, sendo que o GPT-5.6 Sol custava US$ 4 e US$ 20 por milhão de tokens de entrada e saída

Agora a parte que mais interessa em migração

Na avaliação interna de factualidade da OpenAI, baseada em conversas reais desidentificadas em que usuários sinalizaram erros dos modelos, o GPT-6 Sol comete cerca de METADE dos erros do antecessor, chegando a uma confiabilidade próxima da do GPT-6 Astra a custo bem menor

E tanto Sol quanto Luna apresentam taxas menores de afirmações enganosas sobre o trabalho de código que realizaram, em comparação com os equivalentes GPT-5.6

Isso importa pra caramba num projeto legado, porque o custo alto não é o modelo errar, é o modelo errar dizendo que acertou

Mas repare no verbo: reduz

Não elimina

Por isso o /review e a validação por milestone não saem do método

Veredito: dá conta de migração de verdade DESDE QUE o trabalho chegue fatiado até ele

O que os números sugerem é um modelo forte em fluxo agêntico com custo que permite iterar bastante, não um botão de reescrita

Próximo passo: comece pelo ExecPlan de um fluxo só

Se eu pudesse resumir tudo em uma frase, seria: resista à vontade de migrar o projeto inteiro na primeira sessão

Pega UM fluxo

Escreve o ExecPlan dele, com PLANS.md no repositório e o AGENTS.md dizendo quando usar esse plano

Roda o inventário em sandbox de leitura, mapeia o que não tem equivalente direto, define a camada de compatibilidade e só então libera escrita

Fecha o milestone com lint, type-check e testes focados, passa o /review no diff contra a branch base e só depois abre a próxima fatia

Depois é repetir o ciclo, fatia a fatia, mantendo rollback visível, até o dia em que a camada de compatibilidade não tem mais ninguém do outro lado

Aí você derruba ela e a migração acabou de verdade

Sem heroísmo, sem sessão de madrugada, sem reescrita mágica…

até o próximo post! 😀

Perguntas frequentes

Quanto custa migrar um projeto grande usando o GPT-6 Sol pela API?

Na API, o GPT-6 Sol cobra US$ 2 por milhão de tokens de entrada e US$ 10 por milhão de tokens de saída. Esse valor já é 50% menor que o do GPT-5.6 Sol, que custava US$ 4 e US$ 20 por milhão de tokens. Tokens de entrada cacheados saem por 10% da taxa normal, então repetir contexto entre fatias da migração reduz bastante a conta.

Como trocar o modelo ou o nível de esforço de raciocínio no meio de uma sessão de migração no Codex?

Dentro da sessão interativa, o comando /model troca o modelo ou ajusta o esforço de raciocínio sem sair do Codex. Na abertura, dá pra escolher com –model ou o alias -m, opção que também funciona em execuções não interativas. Pra fixar o esforço de forma permanente, a chave model_reasoning_effort no ~/.codex/config.toml resolve.

O que fazer quando a conversa de migração fica longa demais e o Codex começa a perder contexto?

O comando /compact resume o histórico da conversa, substituindo turnos anteriores por um sumário e liberando espaço de contexto. Dá pra automatizar isso com a configuração model_auto_compact_token_limit, que define um limite em tokens pra compactação automática. Vale lembrar que o GPT-6 Sol já tem uma janela de 1.050.000 tokens, então esse recurso normalmente entra em cena só em migrações bem longas.

Dá pra pedir pro Codex conduzir a migração inteira sozinho em vez de fatiar manualmente?

Pra migrações maiores, a documentação sugere o comando /goal, com um prompt no formato migrar este projeto de <stack legado> para <stack alvo>. Mesmo assim, o método oficial recomenda plano incremental com checkpoints em vez de reescrita única. Ou seja: o /goal ajuda a conduzir, mas não substitui o fatiamento em milestones com validação.

Como revisar o que o GPT-6 Sol mudou antes de aceitar uma fatia da migração?

O comando /review roda uma revisão não interativa das mudanças não commitadas, do diff contra uma branch base ou de um commit específico. Ele reporta os achados priorizados sem modificar a árvore de trabalho, então dá pra usar como checkpoint antes de liberar a próxima etapa. É uma forma de manter a validação em múltiplas etapas que é o próprio posicionamento oficial do GPT-6 Sol.

O GPT-6 Sol é melhor que o GPT-5.6 Sol pra esse tipo de tarefa de código agêntico?

Nos benchmarks de agente de código, o GPT-6 Sol marca 43% no Terminal-Bench 4.0 contra 37% do GPT-5.6 Sol, e 58% no SWE-Atlas-QnA contra 54% do antecessor, ambos em esforço max. No Coding Agent Index da Artificial Analysis, o GPT-6 Sol chega a 57 pontos no esforço max, 2 pontos acima do GPT-5.6 Sol, com cerca de metade do custo por tarefa.



Escrito por | Matheus Battisti

Matheus Battisti
Fundador da Hora de Codar

Programador apaixonado pelo mundo das tecnologias, sempre buscando em aprender e se aprofundar em linguagens, frameworks e o que mais for necessário para executar um bom trabalho. Agora tem uma nova missão que é de passar seu conhecimento adiante para formar novos programadores e especializar mais os que já são.

Subscribe
Notify of
guest

0 Comentários
Oldest
Newest Most Voted

Formações

Formação Vibe Coding

Formação Vibe Coding

Do Prompt ao Produto: Crie Software Real com IA

  • 474 aulas
  • 20 projetos
  • 39h 27min

Blog | Mais populares