TTS: extender reproducción verificada por SHA-256 a todo el catálogo #212
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?
Contexto
Incidente validado en
#55967(Fray Marcos): el MP3 íntegro del origen era correcto, pero la reproducción pública porRangepodía reiniciarse a mitad. La validación sólo server-side no detectaba esa clase de entrega defectuosa.Fix ya desplegado para #55967
El mu-plugin original
mu-plugins/fea-audio-player.phpya incluye el mecanismo genérico (commitbc3af3c):fea_audio_sha256válido, muestra Reproducir audio;fetch(..., {cache: 'no-store'});crypto.subtle.digest;Bloblocal para el elemento<audio>.Esto evita streaming
Rangedurante playback y bloquea una copia corrupta/mezclada antes de que se oiga.Actualmente el comportamiento está activo únicamente en #55967, porque es el único post al que se le ha registrado
fea_audio_sha256. El plugin no está duplicado ni es específico de ese artículo; falta migrar metadatos del catálogo.Prevención para audios nuevos
scripts/sync_audio_to_prod.pyahora calcula SHA-256 local, comprueba el mismo hash en el contenedor de producción y persistefea_audio_sha256trassetaudio. Los audios futuros sincronizados por ese flujo ya deben activar el modo verificado.Trabajo pendiente: catálogo existente
fea_audio_done=1/fea_audio_urly sinfea_audio_sha256.ffprobe+ SHA-256 y guardarfea_audio_sha256sólo si es verificable.fea_audio_sha256devuelve el post al reproductor nativo, sin tocar el MP3 ni el contenido.Criterios de aceptación
fea_audio_sha256y no se publica si el hash remoto no coincide.Relacionado: #210.
Backfill completado y verificado en produccion (2026-08-23), ejecutado por Codix en lotes reversibles por voz, con revision independiente mia en cada lote (recalculo de SHA-256 directo sobre el contenedor, sin fiarse solo del reporte):
Verificacion final:
fea_audio_sha256= 783 registros, coincide exactamente confea_audio_done=1= 783 (tras excluir los 5 posts de donaciones via #214). Spot-check final sobre post 2675 (Pagola): hash recalculado en el contenedor coincide byte a byte con el meta.No se toco ningun MP3, URL ni voz durante el proceso -- solo se escribio el meta
fea_audio_sha256tras verificar cada asset. Rollback (borrar el meta) probado y funcional en el ensayo de Arregi.Criterios de aceptacion del issue cumplidos: catalogo completo con reproduccion verificada, exclusion de la pagina de donaciones resuelta aparte (#214), mecanismo ya en
main(#213).Cerrando el issue.