Informe de error de Discourse: Regresión del evento :post_edited en latest-release
Afecta a: Rama latest-release de Discourse (release +122)
Estado: Regresión confirmada - reproducible
Fecha: 15 de enero de 2026
Resumen
El DiscourseEvent :post_edited dejó de publicarse en las compilaciones recientes de latest-release. Las ediciones de publicaciones se completan con éxito y se crean revisiones, pero el evento del que dependen los complementos nunca se activa. Esto rompe todos los complementos que utilizan el disparador de automatización post_created_edited y cualquier otro complemento que escuche los eventos :post_edited.
Reproducción (Confirmada)
Confirmamos que se trata de una regresión probando en dos entornos Azure AKS idénticos:
Antes de la actualización (Funcionando)
- Versión:
v2026.1.0-latest(compilación anterior) - Comportamiento:
Los eventos :post_editedse activan correctamente - Automatización:
Funciona automáticamente
Después de la actualización (Roto)
- Versión:
latest-release +1221 hours ago, release +122 - Comportamiento:
Los eventos :post_editednunca se activan - Automatización:
Completamente rota
Hallazgo crítico: Ambos entornos funcionaban antes de la actualización. Ambos se rompieron después de actualizar a latest-release +122. Esto demuestra de manera concluyente que se introdujo una regresión.
Detalles del entorno
- Versión de Discourse:
latest-release(release +122) - Versión de Rails: 8.0.4
- Infraestructura: Azure Kubernetes Service (AKS)
- Imagen de Docker: discourse/base:2.0.20260109-0020
- Despliegue: Instalación estándar de Docker de Discourse
Procedimiento de prueba
Prueba 1: Escuchador de eventos (Demuestra que el evento nunca se activa)
# En la consola de Rails
File.open('/tmp/post_edited_test.log', 'w') { |f| f.write("Test started at #{Time.now}\n") }
DiscourseEvent.on(:post_edited) do |post, topic_changed, revisor|
File.open('/tmp/post_edited_test.log', 'a') do |f|
f.write("[#{Time.now}] :post_edited fired! Post #{post.id}\n")
end
end
Luego edite cualquier publicación a través de la interfaz web y verifique:
cat /tmp/post_edited_test.log
Resultado en latest-release +122: Solo muestra “Test started” - el evento nunca se activa
Resultado en la compilación anterior: Muestra entradas de eventos con marcas de tiempo e IDs de publicación
Prueba 2: Verificar que se crean revisiones
post = Post.find(POST_ID)
puts "Post revisions: #{post.revisions.count}"
post.revisions.last(3).each { |rev| puts " Revision #{rev.number}: #{rev.created_at}" }
Resultado: Las revisiones SÍ se crean correctamente con las marcas de tiempo adecuadas
Conclusión: Las ediciones se procesan correctamente, pero post_process_post no se llama o el evento no se activa
Prueba 3: Activación manual del evento (Demuestra que el sistema de eventos funciona)
post = Post.find(POST_ID)
DiscourseEvent.trigger(:post_edited, post, false, PostRevisor.new(post))
Resultado: Los controladores de eventos se ejecutan correctamente
Conclusión: El sistema de eventos funciona, pero la activación automática durante las ediciones está rota
Comportamiento esperado
Cuando se edita una publicación a través de la interfaz web:
- La edición se guarda correctamente

- Se crea una revisión de la publicación

- Se llama a
PostRevisor#post_process_post
- Se activa el evento
:post_edited
- Los controladores de eventos se ejecutan

Solo funcionan los pasos 1-2. Los pasos 3-5 están rotos.
Comportamiento real
Los registros de producción muestran una finalización de edición exitosa:
Started PUT "/posts/3631" for 88.97.179.124 at 2026-01-15 13:06:19 +0000
Processing by PostsController#update as JSON
Completed 200 OK in 676ms
Sin errores, sin excepciones, pero sin publicar ningún evento :post_edited.
El evento debería activarse en /var/www/discourse/lib/post_revisor.rb línea 759:
def post_process_post
@post.invalidate_oneboxes = true
@post.trigger_post_process
DiscourseEvent.trigger(:post_edited, @post, self.topic_changed?, self)
end
Este método se llama desde la línea 341, pero el evento no se está disparando.
Impacto
Funciones oficiales afectadas
- Automatización de Discourse: El disparador
post_created_editedestá completamente roto - Cualquier flujo de trabajo de automatización que dependa de las ediciones de publicaciones falla silenciosamente
Complementos afectados
Todos los complementos que escuchan los eventos :post_edited están rotos:
- discourse-automation - Disparadores de automatización oficiales
- discourse-ai - Moderación de IA en publicaciones editadas
- discourse-doc-categories - Actualizaciones de índices de documentación
- discourse-topic-voting - Flujos de trabajo de recuperación de votos
- Cualquier complemento personalizado que utilice eventos de edición de publicaciones
Cronología de la regresión
- Compilación anterior:
v2026.1.0-latest- Los eventos:post_editedfuncionaban
- Actualizado a:
latest-release(release +122) - Los eventos:post_editedestán rotos
- Confirmado en: Dos entornos de producción independientes (ambos se rompieron después de la actualización)
Esto demuestra de manera concluyente que se introdujo una regresión en las compilaciones recientes de latest-release.
Solución alternativa
La activación manual a través de la consola de Rails funciona:
automation = DiscourseAutomation::Automation.find(AUTOMATION_ID)
post = Post.find(POST_ID)
automation.trigger!({"post" => post})
Esto confirma que el sistema de automatización en sí funciona; solo la activación automática de eventos está rota.
Notas de configuración
- Configuración verificada: Todas las configuraciones relacionadas con la edición son estándar/predeterminadas
- Período de gracia: Probado con ediciones bien fuera del período de gracia (sin efecto)
- Complementos: 50 complementos instalados (complementos oficiales estándar)
- Sin modificaciones del núcleo: Instalación limpia de Discourse
- Entorno: Ambos entornos de prueba son implementaciones idénticas de Azure AKS
Evidencia clave
Hallazgo más importante:
Teníamos un entorno de DESARROLLO funcional en una compilación anterior. Después de actualizar a
latest-release +122, la automatización dejó de funcionar. Esto demuestra con certeza que se introdujo una regresión en las compilaciones recientes.
Ambos entornos ahora exhiben un comportamiento roto idéntico después de estar en la misma versión.
Reproducibilidad
100% reproducible - probado en dos entornos independientes:
- Instalar Discourse
latest-release(release +122) - Crear automatización con el disparador
post_created_edited - Editar una publicación
- Observar que la automatización nunca se activa
- Confirmar que el evento
:post_editednunca se activa utilizando el escuchador de prueba
Resumen
Este es una regresión confirmada en latest-release (release +122). El evento :post_edited funcionaba en versiones anteriores y dejó de funcionar después de la actualización. Dos entornos independientes confirmaron el mismo comportamiento. Esto rompe la funcionalidad principal de Automatización de Discourse y todos los complementos que dependen de los eventos de edición de publicaciones.

