El 12 de agosto de 2026 el bot de emergencias estuvo 11 horas sin poder publicar. Las emergencias siguieron ocurriendo, el scraper las siguió leyendo y la cuenta pública estuvo muda todo ese tiempo. X había contado 64 publicaciones dentro de su ventana y cerró la puerta. Mi contador, mientras tanto, miraba el reloj de la pared y se daba por satisfecho con dos días tranquilos.
El contador de límites hacía exactamente lo que le escribí, y por eso tardé en sospechar de él.
Cada dos minutos, sin IA
Cada 2 minutos el bot entra al sistema de despacho de la institución, lee las emergencias nuevas, geocodifica la dirección y publica un resumen. Adentro no hay IA: un scraper que lee la página, un geocodificador y un presupuesto de publicaciones.
Ese presupuesto existe porque X permite unas 50 publicaciones propias por día más 200 respuestas, con topes adicionales por cada media hora. Nos pusimos un tope interno más conservador y dimos el tema por cerrado.
Dos formas de contar la misma noche
Nuestro contador se reiniciaba a medianoche, hora de Lima. El de X no se reinicia nunca: mira hacia atrás 24 horas desde este segundo.
La reconstrucción de ese día es corta y da vergüenza. El bot publicó unas 48 veces hasta las 23:00 y llenó el presupuesto del día. La medianoche puso el contador en cero y el bot siguió publicando como si fuera otro día: nuestro contador le permitía llegar a 96 en 24 horas corridas. En nuestro cuaderno eran dos días tranquilos; X, que mira las últimas 24 horas, contó 64 dentro de su ventana y disparó el bloqueo.
Pasa lo mismo con el gimnasio que reinicia tu contador de visitas a medianoche: entras a las 23:00, sales, vuelves a las 00:30 y en tu cuaderno son dos días distintos. El torniquete cuenta las últimas 24 horas y sabe que fue la misma noche.
¡El contador volvió a cero!
Yo cuento 24 horas corridas
El castigo usaba el mismo calendario
Mi primera teoría fue que X nos había marcado por el contenido o por publicar con automatización de navegador. Perdí un rato ahí: los textos no tenían nada raro y el ritmo, visto día por día, tampoco.
El error estaba duplicado en el cooldown, la pausa que el bot se impone al llegar al tope. Al frenarse, dormía hasta la medianoche siguiente, porque la medianoche era su única idea de que el límite ya había pasado. Las publicaciones viejas salen de la ventana de X a su propia hora, no cuando cambia el día, así que el bot despertaba igual de bloqueado y se volvía a dormir.
Cómo quedó el presupuesto el 13 de agosto
El presupuesto pasó a ser una ventana móvil de 24 horas con tope de 45 publicaciones propias (las respuestas se cuentan aparte), máximo 2 por franja de media hora y 30 minutos mínimos entre una y otra. Cada publicación guarda su marca de tiempo en disco, así que un reinicio del proceso ya no empieza a contar desde cero. Eso también nos había pasado.
No subimos el tope hasta el límite de la plataforma. 45 contra 50 deja margen para las noches de emergencias seguidas y para los cambios de política de X, que no avisa.
Dejamos una excepción deliberada: las emergencias críticas se ordenan primero en la cola y pueden usar un espaciado más corto que el general. Lo urgente sale a tiempo aunque ese día se publique menos.
Desde el arreglo no hubo otro bloqueo
En los días cargados el bot publica menos, y es a propósito: preferimos perder el resumen de una emergencia menor antes que 11 horas completas. Sigue abierto que los límites de X no están publicados con precisión ni son estables, así que nuestro 45 es una apuesta informada que nadie nos confirmó.
Este bot es uno de los proyectos más baratos del sistema, 14 sesiones de trabajo y 116 mensajes míos en total. Lo que costó fueron las 11 horas de silencio, y eso no se recupera al día siguiente. El resto de las defensas ya razonaba en ventanas móviles (el caché de geocodificación con 30 días de vida, la cola de reintentos con tope de intentos) y ninguna repitió el error.
La regla vive ahora en el AGENTS.md del repo, el archivo que lee cualquier agente de IA antes de tocar el código: al tocar un límite, razonar en ventanas móviles y nunca en días calendario. El presupuesto era el único que se felicitaba a medianoche, y el torniquete de X no mira el reloj de la pared.
