El muro de los tres meses


Construyes un SaaS con vibe coding. Empieza rapido. “Crea el login” — 30 segundos. “Agrega pagos” — 2 minutos. Un MVP sale en tres semanas.

Tres meses despues, cosas extranas ocurren. El AI “limpia” la logica de pagos y cambia silenciosamente los calculos de descuento. Agregar un nuevo endpoint rompe la autenticacion existente. Una solicitud de refactorizacion cambia los nombres de campos de la API publica, matando a todos los clientes.

Esto se llama logic drift — el AI modificando involuntariamente la logica de negocio existente. Los bugs de regresion tambien existen en el desarrollo tradicional. Pero el logic drift es diferente. Cambios que el desarrollador nunca pretendio ocurren de forma invisible en toda la base de codigo. Cada prompt comienza en una nueva context window.


Drift en numeros

Esto no es opinion. Hay datos.

La velocidad cuesta complejidad. Un equipo de investigacion de Carnegie Mellon comparo 807 repositorios de GitHub antes y despues de la adopcion de Cursor (MSR 2026). Las adiciones de codigo aumentaron 3-5x en el primer mes. Despues de dos meses, la ventaja de velocidad desaparecio. Lo que quedo: alertas de analisis estatico aumentaron 30%, complejidad del codigo aumentó 41% — permanentemente.

No se volvio mas rapido — se volvio mas lento. La organizacion de investigacion sin fines de lucro METR realizo un ensayo controlado aleatorizado con 16 desarrolladores experimentados de codigo abierto (2025). En proyectos que ya conocian bien, el grupo que uso herramientas de AI tardo 19% mas en completar las tareas. Sin embargo, los propios desarrolladores percibieron una aceleracion del 20%. Una brecha de 39 puntos porcentuales entre percepcion y realidad. Los resultados pueden diferir en proyectos nuevos, pero la suposicion “AI = siempre mas rapido” esta rota.

A escala, la estabilidad colapsa. Segun el Google DORA Report (2025), cada aumento del 25% en la adopcion de AI se correlaciona con una disminucion del 7.2% en la estabilidad de entrega de software.

De hecho, colapso. Amazon ordeno el uso obligatorio de herramientas de AI coding en toda la empresa en 2025 y desplego 21,000 AI agents. Durante el mismo periodo, aproximadamente 30,000 empleados fueron despedidos, reduciendo drasticamente la capacidad de revision. La combinacion de codigo generado rapidamente por AI y personal de revision reducido resulto en 4 incidentes Sev-1 en 90 dias. El 5 de marzo de 2026, una caida de 6 horas causo una perdida estimada de 6.3 millones de pedidos. Los documentos internos declararon: “La generacion rapida de codigo de GenAI esta exponiendo vulnerabilidades inadvertidamente, y las salvaguardas actuales son totalmente inadecuadas.”


“Haz TDD” no es la respuesta

El consejo comun para el logic drift del vibe coding es “escribe tests.” La direccion es correcta, pero como proporcionas los tests determina el resultado.

El estudio TDAD (arxiv 2026) probo esto con precision. Qwen3-Coder 30B fue evaluado con 100 instancias de SWE-bench Verified.

CondicionTasa de regresion
Linea base (sin instrucciones de test)6.08%
Instruccion procedimental “haz TDD”9.94% (peor)
Archivos de test afectados proporcionados en el context1.82% (reduccion del 70%)

Decirle al agent “haz TDD” empeora las cosas. El agent se desvia de la tarea original intentando seguir instrucciones procedimentales. Pero proporcionar “estos archivos de test deben pasar” como context concreto reduce las regresiones en un 70%.

La diferencia es clara. No instrucciones de “como testear”, sino contratos de “que debe pasar”.


Hurl: contratos en Plain Text

Hurl es una herramienta de testing que declara solicitudes HTTP y respuestas esperadas en plain text. Mantenida por Orange (France Telecom), es un binario de Rust sin dependencias de runtime, 18.7k estrellas en GitHub. Suficientemente rapido para ejecutarse en cada commit en 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

Dos contratos. El login debe devolver 200 con un token. El acceso no autenticado debe devolver 401.

Cuando este archivo se commitea en git y se ejecuta en cada commit en CI — en el momento en que el AI “limpia” la logica de autenticacion y el 401 se convierte en 200, el commit se rechaza. El drift se captura antes de llegar a produccion.


Por que Hurl

Los tests unitarios tambien pueden capturar drift — si no le das permiso al AI para modificar archivos de test. Pero los tests unitarios verifican funciones internas, haciendolos estructuralmente acoplados a la implementacion. Cuando cambian los nombres de funciones, los tests se rompen. Cada refactorizacion requiere actualizar los tests.

Hurl se situa en la frontera HTTP. Solo declara solicitudes y respuestas. No sabe nada del codigo interno. No importa como el AI cambie el codigo, si el comportamiento observable externamente permanece igual, los tests pasan; si difiere, fallan. Es naturalmente independiente de la implementacion.

Tests unitariosHurl
VerificaFunciones internasContrato HTTP
En refactorizacion por AISe modifican juntosSin cambios
Deteccion de driftCondicional (si esta bloqueado)Natural
Dependencia de estructura de codigoAltaNinguna
Legibilidad humanaNivel de codigoPlain text
Generacion por LLMRequiere entender la estructura del codigoSolo necesita HTTP

Lo que Hurl verifica no es codigo sino comportamiento. El codigo puede ser libremente cambiado por AI. El comportamiento no debe cambiar. Esta distincion es la clave para capturar el drift.


Bloqueo Ratchet

Cuando los tests de Hurl pasan, bloquealos. Esto es el 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

Dile al agent “refactoriza este codigo” y cambia el codigo libremente. Pero si los tests de Hurl fallan, el commit se rechaza. El agent debe preservar todo el comportamiento existente mientras refactoriza. El drift en casos limite no cubiertos por Hurl sigue siendo posible, pero para el comportamiento cubierto, el drift se suprime estructuralmente.

Esto se alinea exactamente con el hallazgo del estudio TDAD. No una instruccion procedimental “escribe tests”, sino un contrato concreto “estos archivos Hurl deben pasar”. El agent puede elegir el metodo, pero no puede violar el contrato.


Tambien funciona en sistemas legacy

Ya tienes software hecho con vibe coding en produccion? No necesitas empezar de cero.

Paso 1: Captura el comportamiento actual en Hurl.

Si existe documentacion de la API, traducela directamente a Hurl. Si no, haz que un agent lea el codigo existente y escriba tests de Hurl. El objetivo es declarar “asi funciona actualmente” en plain text para cada endpoint.

Paso 2: Conectalo al CI.

Verifica que todos los tests de Hurl pasen y agregalos como condiciones de merge.

Paso 3: Ahora estas seguro.

Ya sea que el AI refactorice o agregue funcionalidades, Hurl protege el comportamiento existente. Si ocurre drift, el CI lo captura inmediatamente.

No es trabajo de cimientos — es refuerzo sismico. Reforzar el edificio sin cerrar el negocio.


No es el fin del Vibe Coding — es su evolucion

Andrej Karpathy, quien acuno el termino “vibe coding”, declaro exactamente un ano despues en febrero de 2026 que “la era del vibe coding ha terminado”. El nuevo paradigma es agentic engineering — los humanos no escriben codigo, orquestan agents que planifican, implementan y testean de forma autonoma.

Thoughtworks Technology Radar (2025) coloco Spec-Driven Development en el nivel “Assess”. El equipo de Martin Fowler publico un analisis de herramientas SDD. La industria converge en la misma direccion.

Los tests de Hurl son la unidad minima de esta transicion. No necesitas 10 especificaciones. No necesitas aprender OpenAPI. Un archivo Hurl es un contrato. Y ese contrato previene estructuralmente el drift sin restringir la libertad del agent.

No cambies el modelo. Agrega un contrato.


Relacionados


References