Notebook com código na tela e mãos sobre o teclado.

Por que a revisão de pull requests com IA dá trabalho?

Por luizeof|

Uma correção pode chegar pronta numa pull request e ainda deixar você com várias tarefas de revisão. A descrição afirma que o bug foi resolvido, os testes estão aprovados e a alteração parece pequena. Falta conferir se esses testes reproduzem o problema e se a biblioteca continua atendendo aos usos existentes.

Eu entendo o mantenedor que prefere receber uma issue detalhada e implementar a correção com os próprios agentes. A minha preferência por receber código continua, mas não elimina o tempo necessário para compreender e verificar uma contribuição externa.

Direto ao ponto

A revisão examina uma proposta junto do comportamento que a biblioteca precisa preservar. Gerar código rapidamente não demonstra que a mudança resolve o bug descrito. Você pode diminuir o trabalho da manutenção com um caso reproduzível, uma alteração concentrada na falha e a explicação dos testes executados.

Os testes aprovados podem não incluir o bug

Imagine uma contribuição para uma biblioteca que interpreta datas. Uma entrada sem fuso é tratada como horário local, mas sua aplicação esperava outra interpretação. O agente modifica a função, executa os testes existentes e informa que todos passaram.

Esse resultado mostra o comportamento dos casos testados. A entrada que motivou a contribuição pode continuar ausente da verificação, deixando o mantenedor sem saber se a alteração realmente corrige o problema relatado.

Você pode acrescentar um teste que use a mesma entrada e compare o resultado com o comportamento esperado. Ao executar esse teste na versão anterior, a falha precisa corresponder ao bug descrito. Na versão alterada, o retorno deve atender à expectativa informada, preservando também os testes que já existiam.

A discussão sobre testar código gerado por IA com Laravel acompanha essa relação entre implementação e comportamento. A aprovação dos testes precisa ser interpretada pelo alcance dos casos verificados, sem supor que eles cobrem todos os usos da biblioteca.

Renomeações e formatação ampliam a revisão

Uma correção de poucas linhas pode vir acompanhada de renomeações e mudanças de formatação. Ao comparar os arquivos, você precisa separar o que trata o bug do que reorganiza o projeto. A leitura fica mais trabalhosa mesmo quando o comportamento corrigido é simples.

Uma alteração concentrada permite relacionar a função modificada ao teste apresentado. A reorganização pode merecer outra proposta, com uma explicação própria, para que o projeto consiga examiná-la sem condicioná-la à correção do defeito.

A descrição também pode ficar desatualizada durante o trabalho do agente. Você começa investigando uma função, encontra a causa em outro arquivo e termina com uma implementação diferente. O texto da pull request precisa refletir o código que está sendo enviado, incluindo o que mudou durante a investigação.

É por isso que compreendo a comparação feita pelos mantenedores entre revisar uma proposta externa e implementar a correção internamente. Recuperar a relação entre relato, alteração e teste também ocupa o tempo de desenvolvimento.

A biblioteca será usada fora da sua aplicação

No exemplo das datas, alterar o fuso adotado para entradas sem indicação explícita pode corrigir sua aplicação e mudar o resultado de outra. A manutenção precisa conferir se a interpretação anterior fazia parte do comportamento documentado e quais aplicações podem usar essa resposta.

A correção talvez precise ficar na aplicação que chama a biblioteca. Outra possibilidade é oferecer uma configuração explícita, preservando a interpretação anterior para os usos existentes. Cada caminho exige uma verificação diferente, e o teste do seu caso não escolhe a solução sozinho.

Desenvolver os meus sistemas, entregar trabalho para clientes e manter código aberto são compromissos distintos. A possibilidade de corrigir depois um sistema meu não pode orientar, por si só, a distribuição de uma biblioteca incorporada a outras aplicações.

Quando você envia a contribuição, a explicação sobre o comportamento esperado permite discutir essas alternativas. O código mostra uma solução possível, enquanto a manutenção examina se ela cabe na versão e nas interfaces que o projeto oferece.

Implementar internamente também exige conferência

O mantenedor que recebe uma issue pode orientar o agente com os testes e as convenções do próprio repositório. Isso permite começar a implementação com informações que uma contribuição externa talvez não tenha considerado.

A implementação interna pode interpretar incorretamente a falha, ampliar a alteração ou deixar de testar um comportamento usado pelas aplicações existentes. Receber somente issues muda a forma de obter o código, mas a manutenção continua precisando conferir a alteração e os testes.

Continuo vendo utilidade em receber código acompanhado da descrição do problema. Também entendo que o mantenedor escolha resolver a issue internamente quando o trabalho de revisão das contribuições ultrapassa o tempo disponível. Essa comparação depende das contribuições recebidas e do trabalho necessário para verificar cada correção.

A formação de Vibe Coding, disponível pelo plano IA Makers, oferece um caminho para estudar o desenvolvimento com agentes. A prática precisa incluir compreender o código e verificar o comportamento que você pretende alterar.

Entregue uma correção que você consiga discutir

Ao preparar a pull request, compare a descrição com os arquivos alterados e com o teste que reproduz a falha. Uma dúvida sobre o retorno esperado precisa continuar visível para a manutenção, em vez de desaparecer numa afirmação de que o agente resolveu o problema.

Para examinar uma alteração do seu projeto junto de orientação técnica ao vivo, você pode usar o Desenvolvimento Colaborativo da Dev Side Studio. Você opera o editor e o terminal enquanto trabalhamos na investigação e na execução da correção.

A contribuição está mais bem preparada para revisão quando você consegue reproduzir o bug e explicar por que a mudança atende ao comportamento esperado. Esse é o trabalho que vale conferir junto do código, mesmo quando o agente levou poucos minutos para escrevê-lo.

No Diário do VibeCoder sobre pull requests e issues, continuo a discussão sobre o tempo dos mantenedores. Outros conteúdos sobre desenvolvimento estão no catálogo de vídeos da Promovaweb.

Compare os Planos

Escolha o plano adequado ao seu objetivo e consulte tudo o que está incluído.

O Plano Martech cobre automação e atendimento. O Plano IA Makers acrescenta desenvolvimento com IA, enquanto o Plano Founders trata de gestão de negócios. Todos são anuais.

Plano Martech

Para conectar automação, marketing e atendimento com infraestrutura própria.

R$ 897

R$ 597/ano

  • Grade de automação, atendimento, marketing e análise de indicadores
  • Instalador Exclusivo Promovaweb
  • n8n, Evolution API, Chatwoot e Mautic
  • Trilha DevOps incluída
  • Encontros ao vivo (terça e quinta)
  • Comunidade e acompanhamento
Conhecer o plano

Plano Founders

Plano anual para fazer um projeto de tecnologia avançar, com 90 dias de mentoria intensiva. R$ 1.997 à vista ou até 10x de R$ 219 no cartão.

R$ 1.997/ano

  • 12 meses de acesso ao Founders
  • 90 dias de mentoria intensiva, um encontro por dia útil
  • Dia de conteúdo (terça e quinta) e War Room (segunda, quarta e sexta)
  • Encontro semanal em grupo após a fase intensiva
  • Formação Vibe Coding incluída no plano anual
  • Consultoria individual de até duas horas (bônus)
Conhecer o plano