Files
feadulta/docs/releases/enrique-2026-07-25-prod-dry-run.md
rafa df7bf98ef1 Apunta los scripts de sync prod al Hetzner nuevo y suma trabajo pendiente
- sync_translations_to_prod.py / sync_audio_to_prod.py / sync_carta_from_prod.py:
  migran de FEA_PROD_HOST/PASS (CDMON, password) a FEA_PROD_SSH_HOST/PASS +
  FEA_PROD_DOCKER_CONTAINER (Hetzner/Coolify, auth por clave), con wrapping
  docker exec y el fix del bug de redirecciones (wc -c/cat) resuelto en el host
  en vez de dentro del contenedor.
- fea_translate_helper.php: subcomando clone_new para clonar en ID local nuevo
  cuando el ID de prod ya está ocupado localmente.
- translate_post.py: --dry-run.
- tts_produce.py: --allow-default-voice (voz Nico solo si se permite
  explícitamente para autores sin voz clonada) + fix voice_for_author.
- minimax_tts.py: parámetro speed en t2a/_synth_chunk.
- mirror-antiguo/deploy/nginx-mirror.conf: redirects de URLs históricas de
  catálogo y vista imprimible EFFA.
- Importaciones humanas de Pagola (carta 738) + scripts/manifest de la
  fase A Enrique, y release_issue181_prod.sh / cdmon-retire-fewp1.sh.
- .gitignore: excluye docs/backups/ (dumps SQL, mismo motivo que backups/*).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-05 07:09:29 -04:00

72 lines
3.5 KiB
Markdown

# Release dry-run — Enrique Martínez Lozano / carta «Hacia el corazón»
**Estado:** preparado localmente; **no ejecutado en producción**.
## Validación local completada
- Comentario ES: `#55041``El tesoro está ya en nosotros`
- Categorías: `Comentarios al evangelio` + `Feadulta`.
- Audio: `tts/55041.mp3`, 2,221,101 bytes, voz `NicoFeadulta2026`.
- QA Haiku: aprobado tras correcciones objetivas EN/FR/IT.
- Traducciones del comentario: EN `#55047`, FR `#55048`, IT `#55049`, PT `#55050`.
- Carta local ES: `#55042``Hacia el corazón` (slug técnico de preview conservado).
- Traducciones: EN `#55051`, FR `#55052`, IT `#55053`, PT `#55054`.
- QA Haiku: contenido aprobado tras correcciones; 24 enlaces con destino traducido se repuntaron. Los 12 enlaces externos que quedan son fallback ES: no existe post destino traducido en local (verificado por `post_title` exacto y Polylang).
- Render comprobado en Tailscale:
- Comentario ES: título correcto, categorías correctas y reproductor HTML5 visible.
- Carta FR: título correcto; Enrique aparece tras Fray Marcos y antes de Pagola.
## Evidencia de producción (sólo lectura server-side)
- Carta real: `#54914`, título `Hacia el corazón`, estado `publish`.
- Hash actual de contenido prod: `5e7eb1b880bfc6311edb78ac8b6e81639f5b4502282a1b182c610b1d01308b69`.
- Hash candidato local: `6fdb4929fcb5b49b7f2dc1deb7c6f5be70983af866d44c5d5c27d2866c09418c`.
- La carta candidata lleva `fea_phase_a_source_prod_id=54914`; por tanto debe **actualizar #54914**, no crearse una carta nueva.
## Dry-runs que pasaron
```bash
# Crea solamente el grupo nuevo del comentario (ES + EN/FR/IT/PT): 5 posts draft
python3 scripts/sync_translations_to_prod.py --ids 55041 --dry-run
# Sube y asocia solamente el MP3 de Enrique
python3 scripts/sync_audio_to_prod.py --ids 55041 --dry-run
```
Ambos devolvieron `ok/error=1/0` (audio) y un grupo Polylang de cinco posts (comentario).
## Guardarraíl crítico
**NO ejecutar:**
```bash
python3 scripts/sync_translations_to_prod.py --ids 55041,55042
```
El dry-run demostró que clonaría `#55042` como una segunda carta ES. No actualiza la carta real `#54914`.
## Release que debe ejecutar Rafa (producción)
1. Backup de producción y snapshot server-side de `#54914`.
2. Crear el grupo nuevo del comentario desde `#55041` (ES + EN/FR/IT/PT), inicialmente en `draft`; anotar los IDs reales de producción.
3. Subir `tts/55041.mp3` y asociarlo al ID ES real creado en producción.
4. Actualizar **solamente** título/contenido de la carta real `#54914` con el candidato local `#55042`; mantener título `Hacia el corazón`, autor, fecha y estado existentes.
5. Crear EN/FR/IT/PT de la carta contra el origen real `#54914` y enlazarlas en Polylang. No clonar otra ES.
6. Releer por servidor los IDs creados y `#54914`; comprobar:
- Enrique sólo está en `Evangelio y comentarios al Evangelio`, tras Fray Marcos y antes de Pagola.
- No aparece en `Artículos seleccionados`.
- Cada carta enlaza a Enrique en su mismo idioma.
- El reproductor del ES carga `tts/55041.mp3`.
7. Sólo tras esas lecturas, promover los drafts de producción a `publish`.
## Rollback
- Restaurar el backup de producción previo.
- Alternativamente, restaurar el contenido/hash previo de `#54914` y despublicar el nuevo grupo + audio de Enrique.
## Backups locales relacionados
- `docs/backups/enrique-translations-20260725T004921Z/`
- `docs/backups/enrique-carta-fr-final-20260725T012649Z/`
- `docs/backups/enrique-pre-tts-20260725T013021Z/`