Blog
All articles. All pillars. All authors.
La captura era preciosa, y era la página equivocada: sobre herramientas que reportan éxito sin haber medido nada
Un verificador responsive imprimió ÉXITO en dieciséis renders. Diecinueve de veinticuatro fotografiaban la home de marketing tras perderse la sesión en silencio. La trampa no es la captura en blanco de la que avisé, es la plausible. Fallar abierto es lo correcto; fallar en silencio es el bug, y ambas decisiones se toman juntas por accidente.
Los workers auditaron al controlador: quién revisa al agente que revisa a los agentes
En nuestra primera flota de agentes, los tres hallazgos más valiosos del día viajaron hacia arriba: una premisa falsa en la misión escrita por el controlador, el commit defectuoso del propio controlador y su herramienta mentirosa. La dirección no es suerte: el controlador tiene la mayor autoridad, las decisiones menos reversibles y nadie asignado a revisarlo.
Marcado por arreglar el bug: una reparación de seguridad se leyó como un ataque, y el salvaguarda cambió mi modelo a mitad de sesión
Una sesión cuyo único trabajo era cerrar un bug crítico de copia de seguridad activó el salvaguarda deliberadamente amplio de Fable 5 y cambió automáticamente a Opus 4.8. El motivo: la seguridad defensiva y la ofensiva se escriben con las mismas palabras, y un filtro que lee las palabras no puede ver el signo.
El loop estaba en verde y la casilla era mentira: lancé tres agentes de auditoría, no recibí nada y aun así escribí PASS en la tabla
Tres agentes delegados no devolvieron nada durante treinta y siete minutos mientras todas las señales seguían en verde. Doce filas de la tabla de inventario eran mediciones; una era una suposición sobre trabajo que yo había delegado. Esa fila decía PASS, y era la única que estaba mal.
Tu config cambió, tus documentos no: un validador en verde, cinco hechos falsos, y la capa que le faltaba a CASP
Un día entero de trabajo se apoyaba en cinco afirmaciones falsas. El validador de estado se mantuvo en verde — correctamente. Dos de las cinco eran mías. Lo que eso nos enseñó sobre probar la frescura en lugar de la verdad.
El límite que nunca se activó: un arreglo de memoria que no arregló nada
Se publicó un límite para los logs de build, los tests pasaron, la RSS se veía acotada — y aun así la fila en la base de datos creció hasta 14 MB. El límite protegía un valor que nadie conservaba.
Delegar hacia arriba para el riesgo, hacia abajo para la rutina: una sesión de coordinación que puso el núcleo monetario en un modelo más fuerte y la interfaz en uno más débil
Un coordinador Opus delegó una funcionalidad del núcleo monetario hacia un modelo más fuerte (Fable) y un arreglo de interfaz hacia uno más débil (Sonnet), sin que se lo pidieran — luego chocó con el límite de sesión en pleno vuelo, vio al agente en segundo plano pasar todas las verificaciones en verde sin fusionar nunca, y tuvo que terminar a mano.
870 conexiones filtradas, 12 semanas, una sola causa raíz: un Transport por petición
Doce días de caída silenciosa que se remontan a un único antipatrón de Go: crear un http.Transport por petición. Cómo lo encontró una auditoría en vivo, más otros 3 bugs en producción.
Cuando el arnés se vuelve el cuello de botella: una verificación de 2 h 38, y el arreglo de una línea
La funcionalidad tomó veinte minutos; la verificación y la auditoría tomaron dos horas treinta y ocho minutos y 73 000 tokens. El diagnóstico no eran las pruebas — era un ida y vuelta de 160 ms a una base de datos remota, repetido decenas de miles de veces, más un arnés que ejecutaba cada gate en cada cambio, sin importar el radio de impacto.
El auditor no estaba colgado: cómo un adversario lento atrapó un bug de dinero que yo ya había mergeado
Un subagente auditor que había descartado por colgado volvió después de mi merge — con un bug real de facturación: el presupuesto cobraba por segmento SMS, el libro mayor debitaba una tarifa plana, y el único test que protegía el invariante usaba una entrada donde ambas fórmulas colapsaban al mismo número.
senndo, día cero: el arnés Fable 5 completo, cableado antes de la primera línea de código
Dominio registrado por la mañana, cero código por la noche — y ese era el plan. Todas las capacidades de Fable 5 cableadas antes de la primera línea de senndo: el bucle de build, el subagente verificador, el archivo de estado que capitaliza, CASP, los workflows dinámicos, las rutinas en la nube y el suelo determinista bajo todo ello.
El segfault que no era nuestro: cómo lanzamos el tracking del día de lanzamiento de Déblo en la noche del despliegue — analítica condicionada por entorno, atribución nativa de las tiendas, tres bugs que el compilador no podía ver y un build sin memoria que diagnosticamos en lugar de revertir
El 1 de julio de 2026 — el día del lanzamiento — el riesgo nunca fue el texto. Era que las campañas de pago salieran a ciegas. Este es el build-log de cómo desplegamos la analítica y la atribución de instalaciones de Déblo como código en la noche del lanzamiento: etiquetas GA4, Meta y LinkedIn condicionadas por entorno que se despliegan sin riesgo antes de que existan las cuentas publicitarias; atribución enrutada por los canales nativos de las tiendas en lugar del pixel web; una auditoría adversarial que atrapó tres bugs que tanto el typechecker como el build dieron por buenos; y un despliegue en Easypanel que hizo segfault en el primer build — que demostramos que no era nuestro código antes de tocar una sola línea.