Fully-qualified name

dotnet run — wolverine-diagnostics describe-routing MyApp.Orders.CreateOrder


The output for a single message type includes:

* **Local handler** — the handler class and method, if any
* **Routes table** — each destination with its type (local vs. external), endpoint mode
  (Buffered/Durable/Inline), outbox enrollment, serialization format, and how the route was
  resolved (local handler convention, explicit publish rule, transport routing convention, or
  `[LocalQueue]` attribute)
* **Message-level attributes** — any `ModifyEnvelopeAttribute`-derived attributes (e.g.,
  `[DeliverWithin]`) applied to the message class

**Explain *why* a message routes where it does**  — add `--explain`
(`-e`) to print the route source chain in the order Wolverine consults it, what each source
produced, and which **terminating** source short-circuited the rest:

```bash
dotnet run -- wolverine-diagnostics describe-routing CreateOrder --explain

The explanation lists each route source (MessageTransformations, AgentCommands, ExplicitRouting, LocalRouting, ConventionalRouting, plus any custom sources) with a short description, whether it is additive or terminating, the routes it produced, and a skip reason when an earlier terminating source already produced routes. Conventional broker routing also reports the broker scheme/name and the transport’s own description, so named brokers of the same transport type can be told apart. This is the CLI surface over the IWolverineRuntime.ExplainRoutingFor(Type) API (see Troubleshooting Message Routing).

For machine or AI-agent consumption, add --json (-j) to emit the same explanation as JSON:

dotnet run -- wolverine-diagnostics describe-routing CreateOrder --json

The text output is intentionally stable and labeled so it reads well for humans and parses cleanly for AI agents; --json gives a fully structured form.

Show the complete routing topology (all message types):

dotnet run -- wolverine-diagnostics describe-routing --all

The --all output includes:

  • Routing Conventions — transport-level conventions registered via RouteWith()
  • Message Routing table — every known message type with its destinations, mode, outbox status, and serializer; unrouted types are flagged in yellow
  • Listeners — all configured listening endpoints with name, mode, and parallelism
  • Senders — all configured sending endpoints with name, mode, and subscription count

describe-handlers

Explain why a candidate type is — or is not — discovered as a message handler. This is the command-line surface over WolverineOptions.DescribeHandlerMatch(Type), so you no longer have to drop a temporary Console.WriteLine(...) into your bootstrapping code.