PTENES
MÓDULO 3.3

🚦 Quality Gates

Los Quality Gates son condiciones obligatorias antes de que un cambio avance. El principio es sencillo: una regla escrita en texto es útil; la misma regla convertida en una prueba automática es mucho más confiable.

6
Temas
50
Minutos
Core
Nivel
Práctico
Tipo
0%0 de 6
1

🚦 Convierte una regla escrita en una verificación

Todos los equipos tienen reglas acordadas: «no hacer commit de secretos», «mantener la compatibilidad», «cubrir con pruebas». Funcionan mientras todos las recuerdan. Con la IA generando más volumen, recordar deja de ser suficiente — la regla debe ejecutarse sola.

build lint pruebas cobertura estática seguridad revisión aprobación → deploy ¿falló en alguna casilla? el código no avanza — no existe «solo por esta vez»

Cómo leer: es una fila, no un menú. Cada caja es una condición obligatoria; la última (aprobación humana) solo recibe lo que ya pasó por todo. El valor del diagrama está en la frase de abajo: un gate que se puede omitir deja de ser un gate.

🆕 ¿Nuevo por aquí?

Quality gate es una comprobación automática que impide que el cambio avance si falla. Análisis estático examina el código sin ejecutarlo y busca patrones peligrosos. Prueba de contrato verifica que la interfaz que consumen otros sistemas siga comportándose como antes.

Obligatorio

No es una recomendación

Automático

No depende de recordar

Objetivo

Pasa o no pasa

Igual para todos

Humano y agente

2

🏗️ Prepara la base: build, lint y pruebas

Estos tres son los gates que el propio agente usa dentro del loop. Por eso, su característica más importante no es el rigor, sino la velocidad y determinismo.

✓ Gate que sirve al loop

  • ✓Se ejecuta en segundos, no en decenas de minutos
  • ✓Misma entrada, mismo resultado, siempre
  • ✓Mensaje de error que indica dónde y por qué
  • ✓Un único comando, documentado en AGENTS.md

✗ Gate que estorba

  • ✗Suite de 40 minutos: el loop no puede usarla
  • ✗Prueba inestable que falla una vez cada cinco
  • ✗Error genérico ("failed") sin contexto
  • ✗Secuencia de siete comandos que solo el veterano conoce

💡 Consejo práctico

Divide la suite: un objetivo rápido para el ciclo (pruebas unitarias de los módulos afectados, unos pocos segundos) y un objetivo completo para el merge. Sin esa separación, el ciclo se vuelve demasiado lento para ser útil o recortas verificaciones donde no deberías.

Rápido

El loop depende de esto

Determinístico

La inestabilidad acaba con la confianza

Dos objetivos

Loop y merge

Lint

Cierra el debate de estilo

3

📜 Agrega pruebas de contrato y una cobertura mínima

Cuando aumenta el volumen de cambios, el contrato es la primera víctima silenciosa, y quien descubre la ruptura es quien consume tu API. Una prueba de contrato convierte ese acuerdo tácito en un gate.

🧪 Ejercicio copiable — generar los gates que faltan

Objetivo: descubrir qué reglas de tu equipo siguen siendo un «acuerdo» y no un gate. Ejecútalo en el repositorio real.

Leia a configuração de CI em <caminho do workflow/pipeline> e o AGENTS.md.

1. liste os gates que JÁ existem hoje (o que bloqueia o merge de verdade);
2. liste as regras que estão escritas em texto mas NÃO são verificadas
   automaticamente (ex.: "não commitar segredo", "manter compatibilidade");
3. para cada regra do item 2, proponha a verificação automática
   correspondente e diga o custo (baixo/médio/alto) de implementá-la;
4. ordene por (impacto se violada) ÷ (custo de implementar);
5. implemente APENAS a primeira da lista e me mostre o diff.

Não altere gates existentes. Não desative nada.

Cómo verificar: abre un PR de prueba que infrinja a propósito la regla que acabas de automatizar (por ejemplo, un archivo con un secreto falso). Si el pipeline no se pone en rojo, el gate no existe: solo existe su configuración.

📐 Sobre la cobertura

La cobertura mínima sirve como piso que evita caídas, no como una meta que haya que perseguir. Un agente que necesita "llegar al 90%" genera pruebas que ejecutan el código sin comprobar nada. Prefiere: no puede bajar con respecto a la base, y el código nuevo debe venir cubierto.

Contrato

El acuerdo se convirtió en una prueba

Piso

La cobertura no baja

Código nuevo

Llega con cobertura

Meta de %

Genera una prueba vacía

4

🛡️ Incluye análisis estático y seguridad

Son hallazgos objetivos y costosos: el perfil perfecto para el bloqueo automático. Ninguna de estas verificaciones debería depender de un revisor atento un viernes por la tarde.

1

Secreto en el repositorio: bloqueo absoluto

Un token, una clave o una contraseña incluidos en un commit son un incidente, no un hallazgo. Y recuerda: borrarlos en el siguiente commit no lo resuelve; el secreto ya está en el historial y hay que rotarlo.

2

Vulnerabilidad crítica en una dependencia

Bloquea el merge cuando la vulnerabilidad es crítica y explotable en tu contexto. Calibra la severidad: si el scanner genera demasiado ruido, todos terminan desactivándolo.

3

Patrones peligrosos y reglas de arquitectura

Concatenación de SQL, deserialización insegura, importación que cruza un límite de dominio. Aquí, el análisis estático se convierte en el gate arquitectónico del módulo 3.2.

Secreto

Bloqueo + rotación

CVE crítica

Bloquea el merge

Calibrar

El ruido termina en desactivación

Frontera

Se convierte en regla estática

5

⚡ Controla el rendimiento y la reversibilidad

La degradación del rendimiento aparece poco a poco, un pequeño cambio a la vez, hasta convertirse en un incidente. Y una migración irreversible es lo que transforma un error de diez minutos en una noche entera.

📊 Gates que valen la pena

  • •Presupuesto de rendimiento: el tiempo de respuesta y las consultas por solicitud no pueden empeorar más de X% respecto de la base.
  • •Migración reversible: toda migración viene con un camino de regreso — y se ejecuta en el entorno de prueba.
  • •Compatibilidad: ninguna ruptura de contrato público sin versionado y aviso.
  • •Tamaño del cambio: los diffs que superen el límite acordado requieren una justificación explícita.

⚠️ Atención

Un rollback que nunca se ejecutó no es rollback: es una intención. Si tu migración tiene un script para volver que nadie ejecutó, considera que no existe.

Presupuesto

El rendimiento tiene un límite

Reversible

Y probado

Compatible

O versionado

Tamaño

El diff también es un gate

6

✅ Define el criterio para liberar el cambio

El código solo avanza cuando se cumplen todos los gates obligatorios. Un gate que se puede saltar «solo esta vez» no es un gate: es una sugerencia. Y la excepción se convierte en regla en dos semanas.

Checklist de liberación

☐ build completado · ☐ lint aprobado

☐ pruebas unitarias, de integración y de contrato aprobadas

☐ cobertura mínima alcanzada (no disminuyó)

☐ ninguna vulnerabilidad crítica · ☐ ningún secreto expuesto

☐ contratos preservados · ☐ migraciones reversibles

☐ rendimiento dentro del límite

☐ revisión completada (agente + humano)

☐ aprobación humana registrada cuando la acción es irreversible

Verificación rápida: la entrega es hoy y el gate de cobertura falló por 0,4%. ¿Qué hacer?

Todos

Sin excepciones silenciosas

Excepción

Registrada, con plazo

Evidencia

Adjunta a la liberación

Protege

El gate es del equipo

📌 Resumen del módulo

✓
Una regla en texto se convierte en una prueba - es el principio central de los gates.
✓
Base rápida y determinista - build, lint y pruebas sirven al ciclo del agente.
✓
Contrato y cobertura - piso que no puede bajar; el código nuevo llega cubierto.
✓
La seguridad es un bloqueo - los secretos y las CVE críticas no pasan.
✓
Rendimiento y rollback - presupuesto explícito y reversión probada.
✓
Lo obligatorio es obligatorio - solo se registran las excepciones, con responsable y plazo.

Próxima ruta:

Ruta 4 - Arquitectura en la era de la IA: código heredado, repositorios legibles por agentes y control de deuda.