<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Jakub Kornafel — Log (ES)</title>
    <link>https://jakubkornafel.com/log/es/</link>
    <atom:link href="https://jakubkornafel.com/log/es/feed.xml" rel="self" type="application/rss+xml"/>
    <description>Qué estoy construyendo, qué se rompió y qué sostienen realmente las pruebas.</description>
    <language>es</language>
    <lastBuildDate>Thu, 27 Aug 2026 00:00:00 +0000</lastBuildDate>
    <item>
      <title>Una puerta que no cuenta el dinero no es una puerta</title>
      <link>https://jakubkornafel.com/log/es/gate-without-a-spend-ceiling/</link>
      <guid isPermaLink="true">https://jakubkornafel.com/log/es/gate-without-a-spend-ceiling/</guid>
      <pubDate>Thu, 27 Aug 2026 00:00:00 +0000</pubDate>
      <category>Build</category>
      <description>Mi pipeline sabía decirte si el trabajo estaba bien. No sabía decirte que esa respuesta había costado cuatro horas y ocho intentos fallidos.</description>
      <content:encoded><![CDATA[<p>Tenía en el pipeline unas puertas de las que estaba orgulloso. Criterios, umbrales, un revisor que no era el autor, un veredicto capaz de decir que no.</p>

<p>Luego les hice una pregunta que no supieron responder: <em>¿esto cuánto ha costado?</em></p>

<p>Que el artefacto estaba a la altura, eso lo sabían. Si llegar hasta ahí había llevado cuarenta minutos o cuatro horas, doce dólares o doscientos, ni idea. Una aprobación limpia al primer intento y una ejecución que cruza la meta a rastras en el décimo asalto contra el mismo problema sin resolver les parecían la misma cosa.</p>

<p>Y no lo son. Solo una de las dos es un sistema que funciona.</p>

<h3>El límite que acota lo que no toca</h3>

<p>Tenía límites de iteración: diez vueltas por fase como mucho. Aquello parecía control. No lo es. Un límite de iteraciones acota cuántas veces gira el bucle, no lo que cuesta cada vuelta, y en mi pipeline una ronda de revisión se abre en abanico sobre ocho verificadores que corren en paralelo. Ese paso, él solo, puede costar más que todas las fases anteriores juntas, y ahí no hay límite que se entere.</p>

<p>Así que escribí un libro de cuentas. Presupuesto declarado antes de empezar. Se comprueba al pasar de una fase a otra y en cada vuelta atrás, nunca a media faena. Si cruzas una arista estando ya por encima del techo, la ejecución se para con un veredicto explícito, en vez de llegar al final calladita y pasarte la factura.</p>

<p>Lo que subestimé fue el análisis de ruta. Contabiliza el gasto que no movió la ejecución hacia delante — todo lo que se comieron los intentos terminados en una vuelta atrás — y marca los motivos que se repiten. Ese último número escuece. Una ejecución que aprueba al décimo reintento idéntico es una ejecución fallida con una medalla prestada, y mis informes de antes no lo enseñaban por ninguna parte.</p>

<h3>Por qué esto vale más de lo que parece</h3>

<p>Hay un estudio de marzo que me obligó a repensar qué le añado a un agente y por qué.</p>

<p>A un agente de programación le dieron una sola cosa de más: un mapa de qué pruebas cubren qué código, entregado como fichero de texto plano, para leerlo y ya está. Las regresiones — pruebas que antes pasaban y dejaron de pasar — bajaron del 6,08% al 1,82%. Un 70% menos con un fichero.</p>

<p>El mismo estudio tenía una segunda rama. En lugar del mapa, instrucciones de procedimiento: trabaja con las pruebas por delante, cíñete a esta disciplina. Las regresiones subieron al 9,94%. Peor que no tocar nada.</p>

<div class="pull">
  <span>La regla que me quedo</span>
  <p>Dale contexto al agente, no procedimiento. Decirle cómo comportarse empeoró las cosas, y se puede medir. Decirle qué es cierto las mejoró un 70%. Cada instrucción que me apetece escribir pasa ahora por ese filtro antes que por ningún otro.</p>
</div>

<p>Por eso mismo el presupuesto vive en el fichero de estado y no en un prompt que le pide al agente que tenga cuidado con el dinero. Nadie cuida un número que no ve.</p>

<div class="cta">
  <p><b>Si tienes agentes corriendo y no sabes decir cuánto te costó la semana pasada</b>, no gobiernas un sistema autónomo: acumulas factura. Yo construyo la pieza que sabe decir que no. <a href="mailto:jakubkornafel@gmail.com">Escríbeme qué sistema tienes y qué fecha límite manejas.</a></p>
</div>]]></content:encoded>
    </item>
    <item>
      <title>Todos citan el mismo número y ese número mide otra cosa</title>
      <link>https://jakubkornafel.com/log/es/the-measurement-nobody-publishes/</link>
      <guid isPermaLink="true">https://jakubkornafel.com/log/es/the-measurement-nobody-publishes/</guid>
      <pubDate>Thu, 27 Aug 2026 00:00:00 +0000</pubDate>
      <category>Note</category>
      <description>Cambia el harness y el benchmark se mueve tres puntos. Cambia el modelo y se mueve veinticinco. Conclusión: el harness da igual. Salvo que mires lo que ese benchmark no mide nunca.</description>
      <content:encoded><![CDATA[<p>Esta semana me hicieron una pregunta legítima: ¿cuánto mejora a un agente de programación un harness bien construido? Un número, por favor.</p>

<p>Fui a buscar el número.</p>

<p>En las clasificaciones públicas aparece de vez en cuando el mismo modelo corriendo bajo dos harnesses distintos. La distancia entre uno y otro va de tres a ocho puntos porcentuales. Ahora deja el harness quieto y cambia el modelo de debajo. La puntuación se mueve veinticinco.</p>

<p>Si te quedas ahí, la conclusión se escribe sola: el harness casi da igual, compra un modelo mejor y vete a casa.</p>

<h3>Solo que no es eso lo que nos quita el sueño</h3>

<p>Esos benchmarks miden una tarea, dentro de un contenedor, que pasa o no pasa. Nadie en producción duerme mal por una tarea dentro de un contenedor.</p>

<p>Se duerme mal por otras cosas. Un sistema que se viene abajo cada pocos días. Un resultado que el martes que viene ya no sale igual. Un veredicto que después no hay quien audite. Una ejecución que informa de éxito y resulta que el fichero que dice haber tocado se lo ha inventado.</p>

<p>Pues para eso — estabilidad, reproducibilidad, auditabilidad — no existe ningún benchmark público. El intento más cercano que he encontrado tiene tres semanas, y su propia auditoría preregistrada terminó sin conclusión.</p>

<p>Donde sí hay cifras, no son pequeñas. Un estudio recortó las regresiones un 70% dándole al agente un único fichero de contexto. Otro midió un 9,5% menos de tareas fallidas al meter un crítico que revisa el plan antes de ejecutarlo. Los dos son cambios de harness. Ninguno de los dos sale en una clasificación.</p>

<div class="pull">
  <span>La respuesta honesta</span>
  <p>El número que quieres todavía no existe. Los números que existen miden otra cosa. Y en el hueco entre unos y otros es donde viven los sistemas de producción.</p>
</div>

<p>De momento, entonces, el trabajo es tuyo. Mide lo que de verdad te importa — cada cuánto se cae el sistema, cuánto trabajo vuelve para rehacerse, cuántas veces un veredicto aguanta la revisión — porque nadie lo va a publicar por ti.</p>

<div class="cta">
  <p><b>Si tienes esa medición y pinta mal</b>, me gustaría verla. Es justo el problema en el que trabajo. <a href="mailto:jakubkornafel@gmail.com">jakubkornafel@gmail.com</a></p>
</div>]]></content:encoded>
    </item>
    <item>
      <title>Mi propia web me estuvo mintiendo tres semanas</title>
      <link>https://jakubkornafel.com/log/es/three-failed-deploys/</link>
      <guid isPermaLink="true">https://jakubkornafel.com/log/es/three-failed-deploys/</guid>
      <pubDate>Thu, 27 Aug 2026 00:00:00 +0000</pubDate>
      <category>Note</category>
      <description>Tres despliegues fallaron. La web seguía contestando 200. Me enteré de casualidad, mientras buscaba otra cosa.</description>
      <content:encoded><![CDATA[<p>Me gano la vida construyendo sistemas que sepan avisar a una persona de que algo ha salido mal.</p>

<p>Mi propia web estuvo tres semanas sirviendo una versión dos commits por detrás. Y yo, tan tranquilo.</p>

<p>Lo que pasó, por orden. El 6 de agosto subí dos cambios a una subpágina. Arrancaron tres despliegues. Los tres fallaron. Cada uno anotó una duración de build de cero milisegundos y el mensaje «Page build failed.». Ni un detalle, ni un aviso, nada en el correo.</p>

<p>Cero milisegundos quiere decir que el build ni llegó a empezar, así que mi código no tenía nada que ver. Se había caído algo más arriba.</p>

<p>¿Y la web? La web, estupenda. HTTP 200, certificado en regla, todo cargando. Seguía sirviéndose el último build correcto, igual que el día anterior. El fallo no tenía superficie visible por ningún lado. Desde fuera, desde mi navegador, desde el de cualquiera: una web sana.</p>

<p>Lo descubrí porque andaba enredando con otra cosa y miré el estado de los despliegues por curiosidad.</p>

<h3>El paralelismo que incomoda</h3>

<p>Es el mismo modo de fallo contra el que levanto puertas todos los días. Solo que llegó por un flanco que yo no había defendido.</p>

<p>El agente informa de éxito. Las pruebas pasan. El diff se ve limpio. Todo lo que asoma en la superficie dice que el trabajo está hecho, y la única forma de saber lo contrario es comprobar algo que quien informa no controla: abrir la aplicación de verdad, consultar el estado de verdad, contrastar con algo que el optimizador no alcance.</p>

<p>Ese reflejo lo tenía con los agentes. Con mi propio pipeline de despliegue, no. Y ahí estaba, veintiún días sirviendo contenido rancio sin decir ni mu.</p>

<p>El arreglo, por cierto, consistió en quitar, no en añadir. La web es HTML plano y aun así cada despliegue la pasaba por un motor de plantillas que nunca hizo falta: 165 segundos para publicar medio megabyte. Un fichero vacío después, el despliegue es una copia de ficheros y tarda 19 segundos. Nueve décimas partes del tiempo se iban en un paso cuya única aportación real era poder fallar.</p>

<div class="pull">
  <span>Lo que me llevo</span>
  <p>Un sistema que no sabe decirte que ha fallado te dejará creer que todo va bien tanto tiempo como tú se lo permitas. El silencio no es un estado. Si en tres semanas nada ha dado señal de problema, eso es una afirmación que conviene poner a prueba, no una razón para relajarse.</p>
</div>

<div class="cta">
  <p>Ve ahora a mirar el último despliegue correcto de aquello de lo que estés más seguro. Te espero. Si el resultado te sorprende, <a href="mailto:jakubkornafel@gmail.com">cuéntamelo</a> — colecciono estas historias.</p>
</div>]]></content:encoded>
    </item>
  </channel>
</rss>
