Não tenho certeza se é um bug em si. Entendo sua confusão.
Para evitar que tags e atributos/nomes de classe HTML sejam filtrados, isso precisa ser explicitamente permitido no núcleo do Discourse ou em um plugin.
Por exemplo, uma lista padrão pode ser encontrada aqui:
Também é possível permitir uma tag apenas para a pré-visualização. Por exemplo, os controles de imagem têm várias combinações de tags/nomes de classe/atributos.
Você vê o botão na pré-visualização porque é um efeito colateral da tag que é permitida aqui.
No entanto, o atributo disabled é ignorado porque não está definido.
Não verifiquei como a lista permitida é analisada; me pergunto se é o comportamento esperado. . Atualmente, parece que a tag é permitida independentemente dos atributos. Eu esperaria que o botão não fosse renderizado se você não estivesse usando exatamente, por exemplo, <button class="alt-text-edit-ok btn btn-primary">.
Você pode criar um plugin para permitir <button> após a renderização. Me avise se precisar de ajuda.