La versión larga.
Para quien quiera la profundidad técnica — aquí está lo que cada fase produce realmente, por qué existe y cómo se conecta con la siguiente. En general: el pipeline es una cadena de artefactos donde cada fase toma como entrada un documento de la fase anterior y produce un nuevo documento que la siguiente fase puede leer. Sin entregas verbales. Sin "creo que hablamos de eso en el stand-up del miércoles".
Allium — el drift como dato.
Allium es un lenguaje de interrogación: escribís una especificación, luego se ejecuta una pasada de elicitación que encuentra huecos, ambigüedades e inconsistencias. Produce preguntas abiertas que hay que responder antes de avanzar. Más tarde se ejecuta una pasada de destilación que compara el código terminado con la spec — el drift aparece en tres categorías: especificado-pero-no-implementado, implementado-pero-no-especificado y drift de comportamiento. Cada elemento recibe una decisión individual: corregir ahora, defer (rastrear en spec) o dismiss con razón. Sin decisiones grupales de "lo vemos después" — cada hallazgo tiene un responsable y una fecha.
TLA+ — demostraciones, no pruebas.
Una prueba que pasa muestra que una ejecución funcionó. No dice nada sobre las ejecuciones que no probaste. TLA+ modela el sistema como un espacio de estados y hace un recorrido exhaustivo — el verificador de modelos TLC prueba cada secuencia posible de eventos y encuentra los estados donde los invariantes se rompen. Para gestión de casos: ¿puede un caso estar a la vez cerrado y en curso? Para SSE: ¿qué pasa si el cliente reconecta a la mitad de una actualización? Para idempotencia: ¿qué pasa si la misma idempotency-key llega en dos requests simultáneos? TLC responde matemáticamente, no por probabilidad.
Pruebas destructivas — seis categorías.
Las pruebas funcionales verifican que el camino feliz funcione. Las pruebas destructivas verifican que el sistema no se caiga cuando alguien intenta romperlo. Ejecutamos al menos ocho escenarios destructivos por superficie, repartidos en seis categorías.
La validación de entrada bombardea los campos con cadenas demasiado largas, caracteres inválidos, nulls y valores vacíos. La autorización intenta leer y escribir recursos que el usuario no posee. La categoría de inyección mete XSS en campos de texto e inyección SQL en parámetros de búsqueda. Las race conditions fuerzan a dos clientes a cambiar el mismo recurso en el mismo segundo. Los valores límite ponen a prueba longitudes máximas, conteos máximos y la paginación en la última página. La corrupción de estado envía cambios en orden incorrecto o contra recursos ya eliminados.
Nada de esto es teórico. Cada categoría ha atrapado bugs reales en sistemas en producción que construimos — antes de que salieran.
Desarrollo aumentado con IA — sin religión de IA.
Claude Code se usa como herramienta, no como reemplazo. El pipeline de arriba no es generado por IA — está documentado, versionado e impuesto vía hooks deterministas. Los hooks bloquean el trabajo de feature sin spec, exigen clarificación antes del plan, ejecutan la elicitación de Allium antes de la implementación y se niegan a liberar una feature sin validación de Playwright y TLA+. La IA sigue el método — no lo inventa. El resultado: velocidad de IA con revisión humana en las decisiones de arquitectura.
Este método tarda más en la primera semana. Ahorra meses cuando el sistema tiene un año.