Hierarquia tradicional multinível versus hierarquia de discurso plana

Tudo é possível em princípio.

Por exemplo, já criei anteriormente uma hierarquia de categorias de 3 níveis que também suporta interseções múltiplas de tags no nível da categoria.

Estrutura de rotas de hierarquia de categorias de 3 níveis com interseções de múltiplas tags
scope "/multi" do
  constraints(tag_id: /[^\/]+?/, format: /json|rss/) do
     get '/c/:category/t/:tag_id/*tags' => 'tags#show', as: 'tags_category_show'
     get '/c/:parent_category/:category/t/:tag_id/*tags' => 'tags#show', as: 'tags_parent_category_category_show'
     get '/c/:grandparent_category/:parent_category/:category/t/:tag_id/*tags' => 'tags#show', as: 'tags_grandparent_category_category_show'

     Discourse.filters.each do |filter|
       get "/c/:category/t/:tag_id/*tags/l/#{filter}" => "tags#show_#{filter}", as: "tags_category_show_#{filter}"
       get "/c/:parent_category/:category/t/:tag_id/*tags/l/#{filter}" => "tags#show_#{filter}", as: "tags_parent_category_category_show_#{filter}"
       get "/c/:grandparent_category/:parent_category/:category/t/:tag_id/*tags/l/#{filter}" => "tags#show_#{filter}", as: "tags_grandparent_category_category_show_#{filter}"
     end
   end
end

Isso é mais complexo do que acredito que você queira fazer, mas não é sustentável a menos que você esteja disposto a investir muito tempo ou recursos para mantê-lo. É provável que quebre em algum momento quando o Discourse padrão sofrer alterações.

Com esse contexto, há duas coisas a entender sobre a estrutura de rotas de categoria/tag no Discourse padrão:

  1. Interseções de múltiplas tags só são possíveis em todo o site; não no nível da categoria, ou seja, não há rotas no Discourse padrão para mostrar uma lista de tópicos com tópicos de uma categoria específica e com mais de uma tag específica. Se você quisesse isso, teria que adicionar a rota.

  2. Interseções de categorias não são possíveis. Ou seja, não há uma rota no Discourse para mostrar tópicos de duas categorias no mesmo nível (ou seja, duas categorias pai ou duas categorias filho).

Você ainda pode alcançar um sistema de quatro níveis (que parece ser seu objetivo) sem fazer adições significativas no lado do servidor.

Por exemplo, você poderia usar exclusivamente tags para representar os quatro níveis. https://thepavilion.io/tags/intersection/events/bug/to-do/high representa a interseção entre as tags events, bug, to-do e high no Pavilion. Você poderia ter 4 menus suspensos, um para cada grupo de tags do qual essas tags são extraídas, por exemplo:

[plugin] [type] [status] [importance]

Depois de definir como deseja estruturar sua hierarquia dentro da estrutura de rotas existente do Discourse, o restante do que você listou são apenas modificações no lado do cliente e são (relativamente) diretas.