# `MailglassAdmin.Inbound.RoutingTrace`
[🔗](https://github.com/szTheory/mailglass/blob/v1.2.0/lib/mailglass_admin/inbound/routing_trace.ex#L1)

Routing-trace card (IADM-04) — the one novel inbound surface.

Answers "why did this message not match any mailbox?" without an `iex` session,
by rendering a per-route clause diff for a `:no_match` record. This component is
NET-NEW, but reuses ONLY existing card/badge/marker chrome (no charts, no JS).

The verdicts are computed upstream by `MailglassInbound.Router.Matcher.explain/2`
(reached through the runtime gateway, D-48-06), so the rendered pass/fail equals
real matcher behavior — this view NEVER re-implements equality/regex/wildcard
semantics. The `trace` assign is a list (declared route order) of
`%{mailbox: String.t(), verdicts: [tuple()]}`; each verdict tuple's LAST element
is the clause `pass?` boolean (per `Matcher.clause_verdict`):

  - `{:recipient, matcher, actual, pass?}`
  - `{:subject, matcher, actual, pass?}`
  - `{:header, name, matcher, actual_list, pass?}`

Recipient actuals are masked via `Components.mask_recipient/1` (PII discipline,
T-48-13). A `nil` matcher renders the literal `any` (wildcard); a `%Regex{}`
renders `~r/.../`; an exact string renders verbatim — all in `.mono`.

# `routing_trace`

## Attributes

* `trace` (`:list`) (required)

---

*Consult [api-reference.md](api-reference.md) for complete listing*
