O muro dos tres meses


Voce constroi um SaaS com vibe coding. Comeca rapido. “Crie o login” — 30 segundos. “Adicione pagamentos” — 2 minutos. Um MVP e lancado em tres semanas.

Tres meses depois, coisas estranhas acontecem. A AI “limpa” a logica de pagamentos e silenciosamente altera os calculos de desconto. Adicionar um novo endpoint quebra a autenticacao existente. Um pedido de refatoracao muda os nomes dos campos da API publica, matando todos os clientes.

Isso se chama logic drift — a AI modificando involuntariamente a logica de negocios existente. Bugs de regressao tambem existem no desenvolvimento tradicional. Mas logic drift e diferente. Mudancas que o desenvolvedor nunca pretendeu acontecem invisivelmente em toda a base de codigo. Cada prompt comeca em uma nova context window.


Drift em numeros

Isso nao e opiniao. Ha dados.

Velocidade custa complexidade. Uma equipe de pesquisa da Carnegie Mellon comparou 807 repositorios do GitHub antes e depois da adocao do Cursor (MSR 2026). As adicoes de codigo aumentaram 3-5x no primeiro mes. Apos dois meses, a vantagem de velocidade desapareceu. O que restou: alertas de analise estatica aumentaram 30%, complexidade do codigo aumentou 41% — permanentemente.

Nao ficou mais rapido — ficou mais lento. A organizacao de pesquisa sem fins lucrativos METR realizou um ensaio controlado randomizado com 16 desenvolvedores experientes de codigo aberto (2025). Em projetos que ja conheciam bem, o grupo que usou ferramentas de AI levou 19% mais tempo para completar as tarefas. No entanto, os proprios desenvolvedores perceberam uma aceleracao de 20%. Uma diferenca de 39 pontos percentuais entre percepcao e realidade. Os resultados podem diferir em projetos novos, mas a suposicao “AI = sempre mais rapido” esta quebrada.

Em escala, a estabilidade colapsa. Segundo o Google DORA Report (2025), cada aumento de 25% na adocao de AI correlaciona-se com uma diminuicao de 7.2% na estabilidade de entrega de software.

E de fato colapsou. A Amazon determinou o uso obrigatorio de ferramentas de AI coding em toda a empresa em 2025 e implantou 21.000 AI agents. No mesmo periodo, aproximadamente 30.000 funcionarios foram demitidos, reduzindo drasticamente a capacidade de revisao. A combinacao de codigo gerado rapidamente por AI e equipe de revisao reduzida resultou em 4 incidentes Sev-1 em 90 dias. Em 5 de marco de 2026, uma queda de 6 horas causou uma perda estimada de 6,3 milhoes de pedidos. Documentos internos declararam: “A geracao rapida de codigo do GenAI esta inadvertidamente expondo vulnerabilidades, e as salvaguardas atuais sao totalmente inadequadas.”


“Faca TDD” nao e a resposta

O conselho comum para o logic drift do vibe coding e “escreva testes.” A direcao esta certa, mas como voce fornece os testes determina o resultado.

O estudo TDAD (arxiv 2026) testou isso com precisao. Qwen3-Coder 30B foi avaliado com 100 instancias do SWE-bench Verified.

CondicaoTaxa de regressao
Linha de base (sem instrucoes de teste)6.08%
Instrucao procedimental “faca TDD”9.94% (pior)
Arquivos de teste afetados fornecidos no context1.82% (reducao de 70%)

Dizer ao agent “faca TDD” piora as coisas. O agent se desvia da tarefa original tentando seguir instrucoes procedimentais. Mas fornecer “estes arquivos de teste devem passar” como context concreto reduz regressoes em 70%.

A diferenca e clara. Nao instrucoes de “como testar”, mas contratos de “o que deve passar”.


Hurl: contratos em Plain Text

Hurl e uma ferramenta de testes que declara requisicoes HTTP e respostas esperadas em plain text. Mantida pela Orange (France Telecom), e um binario Rust sem dependencias de runtime, 18.7k estrelas no GitHub. Rapido o suficiente para rodar em cada commit no CI.

# Login succeeds
POST http://localhost:8080/api/auth/login
{
  "email": "test@example.com",
  "password": "secret123"
}
HTTP 200
[Asserts]
jsonpath "$.token" exists
jsonpath "$.user.email" == "test@example.com"

# Unauthenticated access returns 401
GET http://localhost:8080/api/pages
HTTP 401

Dois contratos. O login deve retornar 200 com um token. Acesso nao autenticado deve retornar 401.

Quando este arquivo e commitado no git e roda em cada commit no CI — no momento em que a AI “limpa” a logica de autenticacao e o 401 vira 200, o commit e rejeitado. O drift e capturado antes de chegar a producao.


Por que Hurl

Testes unitarios tambem podem capturar drift — se voce nao der permissao para a AI modificar arquivos de teste. Mas testes unitarios verificam funcoes internas, tornando-os estruturalmente acoplados a implementacao. Quando nomes de funcoes mudam, testes quebram. Cada refatoracao exige atualizacao dos testes.

Hurl fica na fronteira HTTP. Declara apenas requisicoes e respostas. Nao sabe nada sobre o codigo interno. Nao importa como a AI mude o codigo, se o comportamento observavel externamente permanece o mesmo, os testes passam; se difere, falham. E naturalmente independente da implementacao.

Testes unitariosHurl
VerificaFuncoes internasContrato HTTP
Na refatoracao por AIModificados juntosSem alteracao
Deteccao de driftCondicional (se travado)Natural
Dependencia de estrutura de codigoAltaNenhuma
Legibilidade humanaNivel de codigoPlain text
Geracao por LLMRequer entendimento da estrutura do codigoPrecisa apenas de HTTP

O que Hurl verifica nao e codigo, mas comportamento. O codigo pode ser livremente alterado pela AI. O comportamento nao deve mudar. Essa distincao e a chave para capturar o drift.


Travamento Ratchet

Quando os testes Hurl passam, trave-os. Isso e o ratchet.

1. Write Hurl tests for current API (or auto-extract)
2. Run on every commit in CI
3. Passing tests cannot be deleted or modified
4. New features require new Hurl tests
5. All existing + all new tests must pass to merge

Diga ao agent “refatore este codigo” e ele muda o codigo livremente. Mas se os testes Hurl falharem, o commit e rejeitado. O agent deve preservar todo o comportamento existente enquanto refatora. Drift em casos de borda nao cobertos pelo Hurl ainda e possivel, mas para o comportamento coberto, o drift e suprimido estruturalmente.

Isso se alinha exatamente com a descoberta do estudo TDAD. Nao uma instrucao procedimental “escreva testes”, mas um contrato concreto “estes arquivos Hurl devem passar”. O agent pode escolher o metodo, mas nao pode violar o contrato.


Funciona em sistemas legados tambem

Ja roda software feito com vibe coding em producao? Nao precisa comecar do zero.

Passo 1: Capture o comportamento atual em Hurl.

Se existe documentacao da API, traduza diretamente para Hurl. Se nao, faca um agent ler o codigo existente e escrever testes Hurl. O objetivo e declarar “e assim que funciona atualmente” em plain text para cada endpoint.

Passo 2: Conecte ao CI.

Verifique que todos os testes Hurl passam e adicione-os como condicoes de merge.

Passo 3: Voce esta seguro agora.

Seja a AI refatorando ou adicionando funcionalidades, Hurl protege o comportamento existente. Se drift ocorrer, o CI captura imediatamente.

Nao e trabalho de fundacao — e reforco sismico. Reforcar o predio sem fechar a loja.


Nao e o fim do Vibe Coding — e sua evolucao

Andrej Karpathy, que cunhou o termo “vibe coding”, declarou exatamente um ano depois, em fevereiro de 2026, que “a era do vibe coding acabou”. O novo paradigma e agentic engineering — humanos nao escrevem codigo, orquestram agents que planejam, implementam e testam autonomamente.

O Thoughtworks Technology Radar (2025) colocou Spec-Driven Development no nivel “Assess”. A equipe de Martin Fowler publicou uma analise de ferramentas SDD. A industria converge na mesma direcao.

Testes Hurl sao a menor unidade dessa transicao. Voce nao precisa de 10 especificacoes. Nao precisa aprender OpenAPI. Um arquivo Hurl e um contrato. E esse contrato previne estruturalmente o drift sem restringir a liberdade do agent.

Nao mude o modelo. Adicione um contrato.


Relacionados


References