# 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/`
