Blog
All articles. All pillars. All authors.
El autoescalador que comparaba un espacio con una T: dos bugs High, un día, antes y después
Un autoescalador que nunca decidía porque SQLite comparaba un espacio con una T, y un proxy que servía 502 en cada redespliegue. Misma máquina, mismas aplicaciones, antes y después, en un solo día, cerrado con observaciones fechadas y no con pruebas en verde.
La prueba es la clave, no su hash: renovar una licencia firmada sin migración
Un servidor autoalojado obtiene su licencia renovada presentando la propia clave firmada como prueba de posesión. El diseño basado en hash que sugería el prompt habría fallado justo en el momento de la renovación. Después, la prueba en producción: un ciclo de facturación real, una clave firmada de nuevo y un registro del servidor que dice que nadie tuvo que hacer nada.
Cero código entregado: llevar una búsqueda de empleo como un proyecto de software, con una IA que lo prepara todo y no envía nada
Un día, una sesión con una IA, ninguna línea de código de producto: una búsqueda de empleo llevada con las herramientas que ZeroSuite usa para entregar software, como método válido para cualquier oficio. Un repositorio privado, un único archivo de seguimiento donde «enviado» significa «fechado», reglas que rechazan la frase indemostrable, una hoja de ruta CASP que termina en un contrato firmado y una automatización que llena los borradores sin pulsar nunca Enviar. Con una guía paso a paso para descargar.
Funciona, y no está terminado
El director recorrió él mismo todos los canales de senndo — cinco canales, de uno en uno y en campaña, la importación, las estadísticas, un reembolso, la API — y todo respondió. El archivo de seguimiento seguía diciendo que no, y la única línea que bloqueaba no era código: era un documento que había dejado de ser cierto en silencio. Cuatro afirmaciones ciertas al escribirse y falsas al leerse, y las guardas legibles por una máquina que ahora atrapan cada una de esas formas.
La pregunta que la auditoría no podía hacer: por qué la verificación tiene un techo
Clippy limpio, 291 pruebas en verde, un revisor adverso a lo largo de once secciones y una prueba en vivo completa sobre dos distribuciones. Entonces el director miró una columna, preguntó por qué decía «perpetua» y encontró un defecto de ingresos que ninguna de esas capas podía alcanzar.
La licencia que no probaba nada: firmar una clave entre dos lenguajes
Una licencia de sh0 era un prefijo: quien supiera que las claves Business empiezan por sh0-biz- podía escribir una. Sustituirla por un documento firmado con Ed25519 obligó a firmar bytes entre dos lenguajes, a fallar en cerrado cuando falta la clave, y a una regla de revocación donde solo un revoked explícito retira un plan.
La auditoría que encontró el fallo en la corrección: diecinueve defectos, dos subagentes, un revisor de solo lectura
Diecinueve fichas surgidas de tres tardes de despliegues fallidos, corregidas en tres repositorios en una sola sesión. La regresión que más importaba nació de una de las correcciones, y solo la vio el revisor adverso.
El desbordamiento que no era un fallo de maquetación
Un verificador responsive informó de 130 px de desbordamiento horizontal. La cifra era correcta. El fallo que señalaba no existía, y el que en realidad estaba reportando había roto 92 URLs en producción.
La rama que nunca pudo ejecutarse
Un tique decía que las dependencias de Pipfile caían en la etapa de compilación equivocada. Corregirlo destapó algo peor: esa rama nunca se había ejecutado, en ningún despliegue.
El navegador en manos de Claude: manejar el propio Chrome del CEO
Claude-in-Chrome permite que una sesión de Claude Code maneje el navegador real del director — mismo perfil, mismas sesiones abiertas. Qué hace la herramienta en realidad, por qué es mejor que pedirle a una persona que haga clic y lo cuente, y dónde el humano sigue ganando. Anclado en el día en que Claude recorrió un alta de cliente completa en la consola de producción de senndo, con mensajes facturados incluidos.
La herramienta rápida y la regla lenta: cómo evitamos que un lanzador de una sola palabra desarmara la única decisión que importa
Construimos un lanzador de una sola palabra para las sesiones del CTO IA — y luego tuvimos que impedir que desarmara la regla de arbitraje a la que existe para servir. Los tres rechazos que un lanzador debe aprender, por qué la guarda vive en un skill y no en el gate determinista, y la única guarda que retiramos — dicho con franqueza.
El index es compartido: lo que dos sesiones paralelas de Claude Code nos enseñaron sobre la disciplina de carriles
Dos sesiones de Claude en paralelo, carriles de directorios disjuntos y una regla de commit escrita esa misma mañana. La regla no protegía nada: el index de git es estado compartido, y un `git add` perfectamente acotado publicó 945 líneas del trabajo del vecino. La tesis va más allá de git: un protocolo de carriles que razona sobre ficheros se deja fuera los estados compartidos.