Commits
Seguridad desplegada, IA por bloques y la analítica que no contaba nada
He desplegado las correcciones de la auditoría en las tres instalaciones, he convertido los posts automáticos en automatizaciones por sección y he reconstruido la asistencia de IA por bloques. Al final del día, seis versiones nuevas y una sorpresa: escandell.cat no contaba ninguna visita.
Empezó el día con el despliegue de las correcciones de la auditoría de seguridad y acabó con seis versiones nuevas en el catálogo pendientes de publicar. Quiero dejarlo por escrito porque ha sido una jornada llena de hallazgos: los buenos y los que enseñan.
El reconocimiento, antes de tocar nada
Entré por SSH a fxserver y hpserver para ver el estado real: escandell-cat y web-base a un lado, becoach-biz al otro, todos con el updater 0.1.28. Como el usuario tiene docker pero sudo pide contraseña, los pasos de root acabaron en un script idempotente por servidor. Dos descubrimientos cambiaron el plan: el flujo de release no subía el VERSION del updater, así que sin subirlo a 0.1.29 los hosts nunca se habrían autoactualizado; y NPM no hacía falta tocarlo, porque ya llevaba su propio realip y añadirle los rangos de Cloudflare duplicaba la directiva y aflojaba el borde. Lo probé y lo revertí limpio: el gateway.conf nuevo resuelve Cloudflare él solo.
De la 0.1.52 a la 0.1.54
Desplegar destapó dos bugs míos y uno latente: el chequeo de salud del selfupdate no presentaba el token ya aprovisionado (el rollback hizo su trabajo), un test esperaba payloads sin token, y el hijo del autoactualizado derivaba el env-file del nombre del directorio, de manera que escandell.cat moría al instante porque el directorio no coincidía con el slug. Corregido en el daemon, 0.1.53 en las tres instalaciones sin root. En medio, una regresión desagradable: el guardia anti-eco del BlockEditor hacía que el editor se montara vacío en todos los artículos. El contenido no se perdía, pero empezar a escribir partía de cero. La lección: había cambiado un editor sin test; ahora la decisión es pura y testeada. Con los rescates del propietario, la 0.1.54 cerró el ciclo: updaters 0.1.29, tokens en las tres API, gateway con la IP real, 9/9 comprobaciones de salud y 223/223 tests.
Automatizaciones por sección
Los posts automáticos dejan de ser una configuración única: cada automatización tiene nombre, sección, línea editorial, temas y cadencia propios, con pausa y calendario independientes. La migración fue solo DDL, porque el hook Mimosa bloqueaba el SQL de datos como falso positivo, y la siembra la hace el servicio con bloqueo de fila. De paso, la corrección ortográfica IA ha ganado uso propio e instrucciones propias en los ajustes, y pausar ahora frena también lo que ya estaba planificado.
IA más resistente y por bloques
Gemini y Mistral soltaron errores del proveedor como si fueran míos: los 5xx transitorios ahora se reintentan y salen como 502 con nombre y remedio, y si el proveedor rechaza max_tokens se reintenta con la mitad. Lo más grave lo encontró Javier: el truncado silencioso de la entrada borraba medio artículo al aplicar una reescritura. Ahora el procesado es por bloques, con párrafos enteros y código e imágenes protegidos y reinsertados por posición, con progreso visible y traducción manual sin IA como alternativa.
La analítica que no contaba nada
Y la sorpresa final: escandell.cat llevaba cero visitas registradas. El script de recogida se perdió al llevar el diseño de la web anterior; ya está restituido en su repositorio. En el núcleo, país e idioma se guardaban mal, la retención borraba en un DELETE enorme y el hash diario rotaba a la 01:00 UTC: todo corregido.
Sale una 0.1.61 que acumula tres versiones sin publicar; un solo paso las llevará todas.