Relatório de Bug do Discourse: Regressão do Evento :post_edited no latest-release
Afeta: Branch latest-release do Discourse (release +122)
Status: Regressão confirmada - reprodutível
Data: 15 de janeiro de 2026
Resumo
O DiscourseEvent :post_edited parou de ser publicado nas compilações recentes do latest-release. As edições de postagem são concluídas com sucesso e as revisões são criadas, mas o evento do qual os plugins dependem nunca é disparado. Isso quebra toda a automação de plugins que usam o gatilho post_created_edited e quaisquer outros plugins que escutam os eventos :post_edited.
Reprodução (Confirmada)
Confirmamos que esta é uma regressão testando em dois ambientes Azure AKS idênticos:
Antes da Atualização (Funcionando)
- Versão:
v2026.1.0-latest(compilação mais antiga) - Comportamento:
Eventos :post_editedsão disparados corretamente - Automação:
Funciona automaticamente
Após a Atualização (Quebrado)
- Versão:
latest-release +1221 hours ago, release +122 - Comportamento:
Eventos :post_editednunca são disparados - Automação:
Completamente quebrada
Descoberta Crítica: Ambos os ambientes funcionavam antes da atualização. Ambos quebraram após a atualização para latest-release +122. Isso prova definitivamente que uma regressão foi introduzida.
Detalhes do Ambiente
- Versão do Discourse:
latest-release(release +122) - Versão do Rails: 8.0.4
- Infraestrutura: Azure Kubernetes Service (AKS)
- Imagem Docker: discourse/base:2.0.20260109-0020
- Implantação: Instalação Docker padrão do Discourse
Procedimento de Teste
Teste 1: Listener de Evento (Prova que o Evento Nunca é Disparado)
# No console do Rails
File.open('/tmp/post_edited_test.log', 'w') { |f| f.write("Teste iniciado em #{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 disparado! Post #{post.id}\n")
end
end
Em seguida, edite qualquer postagem pela interface da web e verifique:
cat /tmp/post_edited_test.log
Resultado no latest-release +122: Mostra apenas “Teste iniciado” - o evento nunca é disparado
Resultado na compilação mais antiga: Mostra entradas de evento com carimbos de data/hora e IDs de postagem
Teste 2: Verificar Criação de Revisões
post = Post.find(POST_ID)
puts "Revisões da postagem: #{post.revisions.count}"
post.revisions.last(3).each { |rev| puts " Revisão #{rev.number}: #{rev.created_at}" }
Resultado: As revisões SÃO criadas corretamente com carimbos de data/hora apropriados
Conclusão: As edições são processadas com sucesso, mas post_process_post não está sendo chamado ou o evento não está sendo acionado
Teste 3: Disparo Manual do Evento (Prova que o Sistema de Eventos Funciona)
post = Post.find(POST_ID)
DiscourseEvent.trigger(:post_edited, post, false, PostRevisor.new(post))
Resultado: Os manipuladores de evento são executados corretamente
Conclusão: O sistema de eventos funciona, mas o disparo automático durante as edições está quebrado
Comportamento Esperado
Quando uma postagem é editada pela interface da web:
- Edição salva com sucesso

- Revisão da postagem criada

PostRevisor#post_process_posté chamado
- Evento
:post_editeddisparado
- Manipuladores de evento executados

Apenas as etapas 1-2 funcionam. As etapas 3-5 estão quebradas.
Comportamento Atual
Os logs de produção mostram a conclusão bem-sucedida da edição:
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
Sem erros, sem exceções, mas nenhum evento :post_edited publicado.
O evento deveria ser acionado em /var/www/discourse/lib/post_revisor.rb linha 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 é chamado a partir da linha 341, mas o evento não está sendo disparado.
Impacto
Recursos Oficiais Afetados
- Automação do Discourse: O gatilho
post_created_editedestá completamente quebrado - Quaisquer fluxos de trabalho de automação que dependem de edições de postagem falham silenciosamente
Plugins Afetados
Todos os plugins que escutam eventos :post_edited estão quebrados:
- discourse-automation - Gatilhos de automação oficiais
- discourse-ai - Moderação de IA em postagens editadas
- discourse-doc-categories - Atualizações de índice de documentação
- discourse-topic-voting - Fluxos de trabalho de recuperação de votos
- Quaisquer plugins personalizados que usam eventos de edição de postagem
Linha do Tempo da Regressão
- Compilação mais antiga:
v2026.1.0-latest- eventos:post_editedfuncionavam
- Atualizado para:
latest-release(release +122) - eventos:post_editedquebrados
- Confirmado em: Dois ambientes de produção independentes (ambos quebraram após a atualização)
Isso prova definitivamente que uma regressão foi introduzida nas compilações recentes do latest-release.
Solução Alternativa (Workaround)
O acionamento manual via console Rails funciona:
automation = DiscourseAutomation::Automation.find(AUTOMATION_ID)
post = Post.find(POST_ID)
automation.trigger!({"post" => post})
Isso confirma que o sistema de automação em si funciona - apenas o disparo automático de eventos está quebrado.
Notas de Configuração
- Configurações verificadas: Todas as configurações relacionadas à edição são padrão/padrão
- Período de carência: Testado com edições bem fora do período de carência (sem efeito)
- Plugins: 50 plugins instalados (plugins oficiais padrão)
- Sem modificações no core: Instalação limpa do Discourse
- Ambiente: Ambos os ambientes de teste são implantações idênticas no Azure AKS
Evidência Chave
Descoberta Mais Importante:
Tínhamos um ambiente DEV funcionando em uma compilação mais antiga. Após a atualização para
latest-release +122, a automação parou de funcionar. Isso prova com certeza que uma regressão foi introduzida em compilações recentes.
Ambos os ambientes agora exibem comportamento quebrado idêntico após estarem na mesma versão.
Reprodutibilidade
100% reprodutível - testado em dois ambientes independentes:
- Instalar o Discourse
latest-release(release +122) - Criar automação com o gatilho
post_created_edited - Editar uma postagem
- Observar que a automação nunca é acionada
- Confirmar que o evento
:post_editednunca é disparado usando o listener de teste
Resumo
Esta é uma regressão confirmada no latest-release (release +122). O evento :post_edited funcionava em versões anteriores e parou de funcionar após a atualização. Dois ambientes independentes confirmaram o mesmo comportamento. Isso quebra a funcionalidade principal de Automação do Discourse e todos os plugins que dependem de eventos de edição de postagem.