The route matcher's failing conditions, then each denying cross-route rule's matching ones, so one fix is not followed by a second surprise.
The resolver's verdict: PASS when search() kept the route.
The cross-route activation rules that remove this route before activation; empty when none does.
The explainer and the resolver reached different verdicts, so the conditions below are the explainer's guess, not the engine's reason.
ROUTE_MATCHER when the TypeScript explainer rejects the route.
Set only for routes the resolver kept: its own activation verdict.