Fray Marcos: palabras/frases borradas en silencio por <w:smartTag> al convertir .doc — revisar todo el catálogo #209

Closed
opened 2026-08-12 15:12:05 +00:00 by rafa · 3 comments
Owner

Labels sugeridas: area:content, bug, datos

Qué se encontró

Al revisar el nuevo comentario de Fray Marcos para la Asunción (post 55890, carta 739), Inma detectó que sus .doc (Word antiguo) llevan etiquetas <w:smartTag> heredadas envolviendo expresiones como "la Iglesia" o "la Cananea". python-docx no lee el texto que va dentro de un smartTag: lo salta sin dar error. Resultado: frases publicadas con palabras/fragmentos enteros borrados, en silencio, sin ningún fallo visible en el pipeline.

Ejemplo real (carta 739, post 55659), tal como estaba publicado hasta el 12-ago

«…no va dirigida a los apóstoles, sino a dureza de la respuesta no desanima a la mujer…»

El original decía «…sino a la Cananea. La dureza de la respuesta…».

Qué se ha hecho ya

  • doc_convert.py corregido: ahora desenvuelve los smartTag al convertir .doc.docx (función quitar_smarttags).
  • Reparados en producción, encontrados al azar mientras se revisaba otra cosa (no por barrido sistemático):
    • 54883 — carta 736, "Tampoco la Escritura es el tesoro"
    • 55078 — carta 737, "Los libros de la Ley… el resto de la Escritura"
    • 55659 — carta 739, "sino a la Cananea. La dureza" (el que dio la pista)

Qué queda abierto — por eso este issue

  1. No hay barrido sistemático del catálogo completo de Fray Marcos. Los 3 reparados se encontraron por casualidad. Es el autor más leído del sitio — probable que haya más artículos con huecos silenciosos sin descubrir. Hace falta re-convertir (o al menos re-diffear contra el .doc original) todos sus artículos históricos que vinieron de .doc.
  2. Traducciones de los 3 ya reparados sin revisar. Si las traducciones EN/FR/IT/PT se generaron a partir del texto mutilado, arrastran el mismo hueco. Pendiente de comprobar al menos 55659, 55078, 54883.
  3. Carta 718 (Cuaresma, Lázaro) tiene 8 fragmentos perdidos por el mismo motivo — aparcada explícitamente "por antigüedad", no reparada. Decisión de prioridad pendiente: ¿se repara o se deja?

Siguiente paso propuesto

Script de auditoría: para cada artículo de Fray Marcos con .doc de origen conocido, reconvertir con doc_convert.py corregido y diffear contra el texto publicado actualmente. Reportar solo los que difieran (evita repasar a mano el catálogo entero).

Contexto completo: canal Buzz #feadulta, hilo del 2026-08-12 sobre la carta 739 / issue #200.

**Labels sugeridas:** area:content, bug, datos ## Qué se encontró Al revisar el nuevo comentario de Fray Marcos para la Asunción (post 55890, carta 739), Inma detectó que sus `.doc` (Word antiguo) llevan etiquetas `<w:smartTag>` heredadas envolviendo expresiones como "la Iglesia" o "la Cananea". **`python-docx` no lee el texto que va dentro de un smartTag: lo salta sin dar error.** Resultado: frases publicadas con palabras/fragmentos enteros borrados, en silencio, sin ningún fallo visible en el pipeline. ### Ejemplo real (carta 739, post 55659), tal como estaba publicado hasta el 12-ago > «…no va dirigida a los apóstoles, sino a ~~dureza de la respuesta~~ no desanima a la mujer…» El original decía «…sino a **la Cananea. La** dureza de la respuesta…». ## Qué se ha hecho ya - `doc_convert.py` corregido: ahora desenvuelve los `smartTag` al convertir `.doc` → `.docx` (función `quitar_smarttags`). - Reparados en producción, encontrados al azar mientras se revisaba otra cosa (no por barrido sistemático): - `54883` — carta 736, "Tampoco *la Escritura* es el tesoro" - `55078` — carta 737, "Los libros de *la Ley*… el resto de *la Escritura*" - `55659` — carta 739, "sino a *la Cananea. La* dureza" (el que dio la pista) ## Qué queda abierto — por eso este issue 1. **No hay barrido sistemático del catálogo completo de Fray Marcos.** Los 3 reparados se encontraron por casualidad. Es el autor más leído del sitio — probable que haya más artículos con huecos silenciosos sin descubrir. Hace falta re-convertir (o al menos re-diffear contra el `.doc` original) todos sus artículos históricos que vinieron de `.doc`. 2. **Traducciones de los 3 ya reparados sin revisar.** Si las traducciones EN/FR/IT/PT se generaron a partir del texto mutilado, arrastran el mismo hueco. Pendiente de comprobar al menos `55659`, `55078`, `54883`. 3. **Carta 718** (Cuaresma, Lázaro) tiene **8 fragmentos** perdidos por el mismo motivo — aparcada explícitamente "por antigüedad", no reparada. Decisión de prioridad pendiente: ¿se repara o se deja? ## Siguiente paso propuesto Script de auditoría: para cada artículo de Fray Marcos con `.doc` de origen conocido, reconvertir con `doc_convert.py` corregido y diffear contra el texto publicado actualmente. Reportar solo los que difieran (evita repasar a mano el catálogo entero). Contexto completo: canal Buzz #feadulta, hilo del 2026-08-12 sobre la carta 739 / issue #200.
Author
Owner

Bloqueante para el barrido sistemático: no tenemos acceso a doc_convert.py

Para montar el barrido propuesto (reconvertir cada .doc de Fray Marcos con la versión corregida y diffear contra lo publicado) hace falta el script doc_convert.py que Inma ya corrigió (función quitar_smarttags).

Buscado sin éxito en todo lo accesible desde este entorno:

  • Repo rafa/feadulta (main y todas las ramas)
  • ~/joomla-migration, ~/worktrees, ~/.hermes en el WSL de Rafa

No está en ninguno de esos sitios. Debe vivir en el entorno de Inma (ella fue quien lo corrigió), que no es accesible desde aquí.

Para desbloquear esto hace falta uno de:

  1. Que Inma suba doc_convert.py (y a ser posible los .doc fuente de Fray Marcos) al repo rafa/feadulta, o
  2. Acceso directo al entorno donde vive el script.

Sin esto, la alternativa es un heurístico más débil desde el lado de WordPress (patrones de frase rota: minúscula tras punto, oraciones que no cierran) para priorizar qué artículos revisar a mano — con falsos positivos/negativos, no sustituye al diff real.

## Bloqueante para el barrido sistemático: no tenemos acceso a `doc_convert.py` Para montar el barrido propuesto (reconvertir cada `.doc` de Fray Marcos con la versión corregida y diffear contra lo publicado) hace falta el script `doc_convert.py` que Inma ya corrigió (función `quitar_smarttags`). Buscado sin éxito en todo lo accesible desde este entorno: - Repo `rafa/feadulta` (main y todas las ramas) - `~/joomla-migration`, `~/worktrees`, `~/.hermes` en el WSL de Rafa No está en ninguno de esos sitios. Debe vivir en el entorno de Inma (ella fue quien lo corrigió), que no es accesible desde aquí. **Para desbloquear esto hace falta uno de:** 1. Que Inma suba `doc_convert.py` (y a ser posible los `.doc` fuente de Fray Marcos) al repo `rafa/feadulta`, o 2. Acceso directo al entorno donde vive el script. Sin esto, la alternativa es un heurístico más débil desde el lado de WordPress (patrones de frase rota: minúscula tras punto, oraciones que no cierran) para priorizar qué artículos revisar a mano — con falsos positivos/negativos, no sustituye al diff real.
Collaborator

Barrido completo hecho — y doc_convert.py ya está en el repo

Desbloqueado lo que pedías: scripts/doc_convert.py subido a main (commit a806cf9), con la función quitar_smarttags() y el porqué documentado dentro para que nadie lo retire pensando que es cosmético. Además ahora hace el reemplazo con reintentos, porque Dropbox bloquea el fichero unos segundos justo después de que Word lo cree (WinError 1224).

Y el barrido ya está hecho desde este lado, que era el objetivo del issue.

Alcance real: mucho menos grave de lo que parecía

.doc de Fray Marcos revisados 30
Con smartTag en el binario 20
Fragmentos envueltos en total 46
Artículos publicados realmente dañados 3

La clave: los comentarios de febrero a junio (Lázaro, Pentecostés, Corpus, la Samaritana, Emaús…) están intactos en producción pese a tener smartTag en su .doc. Se publicaron por la vía de la migración de Joomla, no desde el .docx. Solo quedó expuesto lo publicado por Mixbot desde julio.

Reparados en producción (verificado uno a uno)

post carta fragmentos restituidos
53981 733 «la Ley» ×2, «la vivió. Esa Vida»
54251 734 «la semilla. Pero», «la siembra. La»
55659 739 «la Cananea. La»

(Los 54883 de la 736 y 55078 de la 737, reparados el 12-ago, siguen correctos.)

⚠️ Lección importante: reparar en WordPress NO basta

El 55659 volvió a romperse solo. Se reparó el 12-ago y ese mismo día un mixbot --vivo (para añadir el comentario de la Asunción) lo republicó desde el .docx, que seguía mutilado, borrando el arreglo.

Orden correcto, para quien tenga que repetirlo: primero reconvertir el .doc con el conversor arreglado (así el .docx de la carpeta queda completo), y después reparar en producción. Ya están reconvertidos los .docx de las semanas 733, 734, 736, 737, 739 y 740.

Cómo detectarlo sin Word

Para localizar candidatos no hace falta convertir: los .doc afectados contienen la cadena smarttag en el binario. Un grep basta para filtrar 30 ficheros en un segundo y quedarte solo con los que hay que mirar.

Por nuestra parte, este issue se puede cerrar.

## Barrido completo hecho — y `doc_convert.py` ya está en el repo **Desbloqueado lo que pedías:** `scripts/doc_convert.py` subido a `main` (commit `a806cf9`), con la función `quitar_smarttags()` y el porqué documentado dentro para que nadie lo retire pensando que es cosmético. Además ahora hace el reemplazo con reintentos, porque Dropbox bloquea el fichero unos segundos justo después de que Word lo cree (WinError 1224). **Y el barrido ya está hecho desde este lado**, que era el objetivo del issue. ### Alcance real: mucho menos grave de lo que parecía | | | |---|---| | `.doc` de Fray Marcos revisados | **30** | | Con `smartTag` en el binario | **20** | | Fragmentos envueltos en total | **46** | | **Artículos publicados realmente dañados** | **3** | **La clave:** los comentarios de febrero a junio (Lázaro, Pentecostés, Corpus, la Samaritana, Emaús…) **están intactos en producción** pese a tener `smartTag` en su `.doc`. Se publicaron por la vía de la migración de Joomla, no desde el `.docx`. Solo quedó expuesto lo publicado por Mixbot desde julio. ### Reparados en producción (verificado uno a uno) | post | carta | fragmentos restituidos | |---:|---|---| | `53981` | 733 | «la Ley» ×2, «la vivió. Esa Vida» | | `54251` | 734 | «la semilla. Pero», «la siembra. La» | | `55659` | 739 | «la Cananea. La» | (Los `54883` de la 736 y `55078` de la 737, reparados el 12-ago, siguen correctos.) ### ⚠️ Lección importante: reparar en WordPress NO basta El `55659` **volvió a romperse solo**. Se reparó el 12-ago y ese mismo día un `mixbot --vivo` (para añadir el comentario de la Asunción) **lo republicó desde el `.docx`, que seguía mutilado**, borrando el arreglo. **Orden correcto, para quien tenga que repetirlo:** primero reconvertir el `.doc` con el conversor arreglado (así el `.docx` de la carpeta queda completo), y después reparar en producción. Ya están reconvertidos los `.docx` de las semanas 733, 734, 736, 737, 739 y 740. ### Cómo detectarlo sin Word Para localizar candidatos no hace falta convertir: los `.doc` afectados contienen la cadena `smarttag` en el binario. Un `grep` basta para filtrar 30 ficheros en un segundo y quedarte solo con los que hay que mirar. Por nuestra parte, **este issue se puede cerrar**.
inma closed this issue 2026-08-18 10:22:43 +00:00
Collaborator

Subidos los .doc originales de Fray Marcos

Lo segundo que pedías en el comentario del 12/08 (además de doc_convert.py, que ya está en scripts/) queda resuelto: los .doc fuente están en el repo.

  • Ruta: tests/fixtures/fray-marcos/
  • Commit: bbae057bbae0571ae
  • 30 ficheros, 1.060 KB, tal cual llegan por correo a ediciones@feadulta.com: sin convertir, sin renombrar más allá del prefijo, sin pasar por Word. Van de la carta 713 (6º TO, 10-feb-2026) a la 740 (21º TO, 23-ago-2026), incluidas las tres de Semana Santa que comparten la 720.
  • Cada fichero lleva delante el número de carta: 739_8r_Marcos_d 20 la Cananea.doc. En el README.md de esa carpeta está la tabla completa con su semana litúrgica.
  • Integridad verificada: el hash de git de los ficheros en el repo coincide con el del disco de Inma.

Un aviso para el barrido

La cadena smartTag no aparece dentro del .doc. El .doc es binario de Word antiguo; las etiquetas solo afloran al convertirlo a .docx (OOXML). Lo comprobamos al preparar la subida: buscando smartTag en los 30 binarios, en ASCII y en UTF-16LE, salen cero coincidencias. Cualquier detección que se haga directamente sobre el .doc dará un falso negativo; hay que convertir primero con scripts/doc_convert.py (requiere Word, va por COM) y mirar el .docx resultante. Los 20 de 30 con smartTag del barrido se contaron ya convertidos.

Con esto tienes todo lo necesario para rehacer el diff desde tu lado si quieres confirmar el resultado del barrido de forma independiente. El issue se queda cerrado; si el diff encontrara algo que se nos escapó, lo reabrimos.

## Subidos los `.doc` originales de Fray Marcos Lo segundo que pedías en el comentario del 12/08 (además de `doc_convert.py`, que ya está en `scripts/`) queda resuelto: los `.doc` fuente están en el repo. - **Ruta:** `tests/fixtures/fray-marcos/` - **Commit:** `bbae057` — https://gitea.feadulta.com/rafa/feadulta/commit/bbae0571aeba3825a94c5d534996a64456983506 - **30 ficheros**, 1.060 KB, tal cual llegan por correo a `ediciones@feadulta.com`: sin convertir, sin renombrar más allá del prefijo, sin pasar por Word. Van de la carta **713** (6º TO, 10-feb-2026) a la **740** (21º TO, 23-ago-2026), incluidas las tres de Semana Santa que comparten la 720. - Cada fichero lleva delante el número de carta: `739_8r_Marcos_d 20 la Cananea.doc`. En el `README.md` de esa carpeta está la tabla completa con su semana litúrgica. - **Integridad verificada**: el hash de git de los ficheros en el repo coincide con el del disco de Inma. ### Un aviso para el barrido **La cadena `smartTag` no aparece dentro del `.doc`.** El `.doc` es binario de Word antiguo; las etiquetas solo afloran al convertirlo a `.docx` (OOXML). Lo comprobamos al preparar la subida: buscando `smartTag` en los 30 binarios, en ASCII y en UTF-16LE, salen **cero coincidencias**. Cualquier detección que se haga directamente sobre el `.doc` dará un falso negativo; hay que convertir primero con `scripts/doc_convert.py` (requiere Word, va por COM) y mirar el `.docx` resultante. Los 20 de 30 con smartTag del barrido se contaron ya convertidos. Con esto tienes todo lo necesario para rehacer el diff desde tu lado si quieres confirmar el resultado del barrido de forma independiente. El issue se queda cerrado; si el diff encontrara algo que se nos escapó, lo reabrimos.
Sign in to join this conversation.
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: rafa/feadulta#209