Integración y entrega continua es donde el control deja de depender de que alguien se acuerde. Pero un pipeline armado para código escrito a mano no cubre lo que cambia cuando el que escribe es un agente.
Un pipeline no revisa código. Comprueba que la revisión ya ocurrió — y se planta si el contenido cambió después.
Los cinco puntos de salida
Los cinco puntos de salida
Un cambio no sale de un salto: pasa por puntos. Cada uno establece algo distinto, y el error más caro es pedirle a uno lo que le corresponde a otro. Estos son los nombres que usa gentle-ai, y sirven igual si tu pipeline se llama de otra forma.
01
Después de escribir
post-apply
Qué deja probado
Que el cambio está terminado y que lo miró algo que no es quien lo escribió.
El error de siempre
Saltearlo porque “lo fui mirando mientras lo escribía”. El que escribe es el peor ubicado para juzgar: el mismo razonamiento que produjo el error es el que está revisando.
Qué corre acá
La revisión, una sola vez, sobre un objetivo congelado.
El análisis que corresponda al riesgo del cambio, no el mismo para todo.
El cierre con un comprobante atado a ese contenido exacto.
02
Antes del commit
pre-commit
Qué deja probado
Que lo que vas a guardar es exactamente lo que se revisó.
El error de siempre
Poner acá un formateador que modifica archivos. Si toca un byte, lo que se revisó ya no es lo que se commitea, y el comprobante deja de aplicar. Normalizá antes de revisar, no después.
Qué corre acá
Formato, lint y tipos en modo verificación.
La validación del comprobante contra lo que está en el índice.
03
Antes del push
pre-push
Qué deja probado
Que lo que está por salir de tu máquina sigue siendo el contenido que se revisó, y que pasa entero y no por partes.
El error de siempre
Repetir acá todo lo que ya corriste en el commit. El gate se vuelve lento, la gente lo saltea con una bandera, y a partir de ahí no existe.
Qué corre acá
Los chequeos que siguen siendo rápidos sobre lo que cambió — tipos, lint, los tests de alrededor.
La validación del mismo comprobante, sin abrir una revisión nueva.
04
Antes del PR
pre-pr
Qué deja probado
Que el cambio es revisable por una persona, y que la evidencia de CI corresponde a ese contenido y no a otro.
El error de siempre
Abrir un PR de dos mil líneas y esperar que la revisión humana encuentre lo que el pipeline no buscó. Un PR así no se revisa: se aprueba.
Qué corre acá
La validación del comprobante contra el árbol candidato.
La atestación de CI para ese commit exacto.
El control de tamaño: si no entra en la cabeza del revisor, se parte.
05
Antes del release
release
Qué deja probado
Que lo que se publica es el árbol exacto que pasó todo lo anterior, y que la evidencia sigue siendo fresca.
El error de siempre
Etiquetar una rama en vez de un commit. Una rama se mueve; un release no puede moverse después de publicado.
Qué corre acá
Procedencia del artefacto y del árbol publicado.
Verificación de que la evidencia no venció y de que la cabeza remota no se movió.
El límite de publicación: qué sale y qué no.
Qué cambia con un agente en el medio
Nada de esto es nuevo del todo. Lo nuevo es la frecuencia: comportamientos que antes aparecían una vez por sprint ahora aparecen varias veces por día, y a esa frecuencia dejan de ser anécdotas y pasan a ser el sistema.
Arregla el test, no el código
Cuando el pipeline falla, la salida más barata para un agente es tocar el test hasta que pase. Es la reparación correcta en una minoría de los casos y la que va a elegir en el resto. Un fix de CI se revisa al revés que otro cambio: primero mirás qué tocó, después si pasa.
El reintento como estrategia
Un test intermitente enseña que reintentar funciona. Un agente que puede reintentar lo va a hacer, y va a llegar a verde sin haber arreglado nada. Un test flaky dejó de ser una molestia: es una puerta abierta.
El cuello de botella se mudó
Generar cambios se abarató, así que hay más PRs, más chicos y más seguido. El límite del equipo pasó a ser la cola de CI y la capacidad de revisión. Optimizar la parte de escribir código ya no mueve la aguja.
CI ahora cuesta tokens
Si corrés agentes dentro del pipeline —revisión, triage, generación de tests— cada push tiene un precio variable además del tiempo. Sin un presupuesto declarado, el gasto lo descubrís a fin de mes.
Verde no significa correcto
El agente escribe código que pasa lo que hay. Si tu pipeline solo corre lint y tests, estás midiendo si el código es plausible, no si es correcto. Lo que agrega señal real es lo que el agente no puede anticipar: tipos estrictos, contratos, y una revisión que no la haga quien escribió.
Qué corre en tu máquina y qué corre en CI
El criterio no es la importancia, es el tiempo y el determinismo. Local va lo rápido y lo que da siempre el mismo resultado; en CI va lo lento, lo aislado y lo que necesita un entorno limpio. Un gate local que tarda dos minutos se saltea con una bandera y todos lo sabemos.
En tu máquina
Formato y lint en modo verificación, nunca en modo modificación.
Tipos: es la comprobación más barata que tenés.
Los tests de la unidad que tocaste, no la suite entera.
La validación del comprobante de revisión.
En CI
La suite completa, en un entorno que no es la máquina de nadie.
El build de producción, con las mismas versiones que se publican.
Integración, migraciones y todo lo que necesita servicios reales.
Auditoría de dependencias y la evidencia que después se cita en el PR.
Nada de esto reemplaza el juicio. Un gate determinista te dice que algo se rompió; nunca te va a decir que estás construyendo lo que no había que construir. Eso sigue siendo tuyo.