El runner necesita el array 'urls'; el fichero solo tenia baseUrl. Se anaden 11
targets: portadas de los 5 idiomas, carta de la semana, un articulo, evangelio
del dia, buscador, wp-admin y wp-login.
Resultado de la corrida contra nuevo.feadulta.com: los 6 puntos en verde
(5 idiomas 200, carta de la semana con sus enlaces, permalink de articulo,
buscador con 7.344 resultados para "evangelio", wp-admin/wp-login, y CERO
errores PHP en el HTML). Los WARN son imagenes que aun no habian llegado por el
rsync en curso, no fallos de la migracion.
Nota para no volver a asustarse: 6.195 guid de adjuntos apuntan al WordPress
local (IP de Tailscale). Es cosmetico: el guid no sirve imagenes. Lo que las
sirve es _wp_attached_file, y las 7.755 son rutas relativas, 0 absolutas, con
upload_path y upload_url_path vacias.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Con los tiempos REALES medidos en el ensayo del 31-jul, no estimados:
dump 25s + subida 74s + saneo 2s + import 107s = camino critico ~3min30s.
- docs/cutover/RUNBOOK-cutover-wordpress.md: los pasos en orden, copiables, con
el rollback y los tres verdes obligatorios previos (freeze, CDMON vivo, modo
SSL de la zona).
- scripts/cutover/post-import-seguridad.sh: rota la contrasena de los 6
administradores (las lee del .env del perfil, nunca van en el repo), retira el
rol a pabloarias/josek/andrey y limpia los cron huerfanos de Yoast y WP
Profile Builder. Es un script y no una tarea manual porque el dump revive esas
cuentas en CADA import.
- tools/e2e/sites/nuevo.json: la suite toma el host de un JSON, asi que apuntarla
al staging es anadir un fichero.
Hallazgo del ensayo: el origen es MariaDB 11.8.6 y el destino MySQL 8.4.10; el
dump trae 20 tablas con collations uca1400_* que MySQL rechaza. El saneo las
mapea antes de importar. Sin ese paso, el import aborta.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>