TTS carta 734: sync de audio local→prod + runbook de rollback (para Hermes) #163
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Qué se hizo (2026-07-08)
Se locutaron con MiniMax (voz
NicoFeadulta2026, modelospeech-2.8-hd) los 28 artículos ES de la carta 734 (WP post local #54254, «Echar raíces») conscripts/tts_produce.py, y se publicó el resultado en prod (www.feadulta.com) con un script nuevo:scripts/sync_audio_to_prod.py.Bug encontrado y arreglado
wp-content/uploads/tts/en el contenedor local (wordpress-web) había quedado con dueñouid 21165sin permiso de escritura pararafa. Fix:docker exec wordpress-web chown -R 1000:1000 /var/www/html/wp-content/uploads/tts/(el contenedor corre como root, puede chown sin problema).Sync a prod — script nuevo
scripts/sync_audio_to_prod.pysube los mp3 y fija el metafea_audio_urlen prod. Importante: prod (134.0.10.170) tiene la glibc rota conocida (ver issue de[[feadulta-server-glibc-rota]]en memoria / ticket hosting#cdmoncc263268) yscp/sftpno funcionan («Connection closed»). El script sube el binario porssh ... "cat > ruta"(stdin crudo) y verifica el tamaño conwc -ctras subir, porque no haystattampoco.Uso:
Se encadenó automáticamente tras el orquestador local (
tts_produce.py, PID 70729): un wrapper en background espera a que termine y lanza el sync completo solo, sin intervención. Log:logs/feadulta-audio-sync.log. Estado (ids ya sincronizados):logs/feadulta-audio-sync-state.json.⚠️ ROLLBACK — cómo despublicar los audios en prod
Si algo suena mal, se corta el audio a mitad, la voz no es la esperada, etc., y hay que quitarlos de prod sin esperar a que Rafa vuelva:
Esto, para cada post de la carta 734:
/web/wp-content/uploads/tts/<id>.mp3)fea_audio_url,fea_audio_voice,fea_audio_done,fea_audio_errordel post en prod (víafea_post_io.php unsetaudio, acción nueva añadida a ese helper)Para despublicar solo algunos posts concretos en vez de toda la carta:
El rollback no toca nada en local (ni el mp3 ni el meta local); solo revierte lo publicado en prod. Probado end-to-end antes de encadenar el sync real (subida+verificación+rollback+reverificación sobre el post #912).
Notas para Hermes
farmer) esté encendida — el script corre aquí, no en prod.sync_translations_to_prod.py); no hace falta pedirlas.Connection closeden la subida/verificación, es la glibc rota de siempre — reintentar suele bastar; si persiste, avisar a Rafa en vez de insistir en bucle.Confirmado y verificado en prod (no solo por el log, por datos reales del servidor) — 2026-07-08 09:57
21/21 audios publicados correctamente: tamaño local=remoto byte a byte + meta
fea_audio_urlfijado en cada post. Los 7 artículos sin contenido locutable (54233, 54235, 54236, 54238, 54240, 54244, 54246) correctamente ausentes en prod, tal y como se esperaba.Tarea cerrada. El runbook de rollback de este issue sigue vigente por si hiciera falta más adelante.