dca9a54427
`ProfileRoute.matches()` compared `chat_id` as an exact string, so a WhatsApp route written as a phone number never matched the JID (`…@s.whatsapp.net`) or LID (`…@lid`) the bridge actually delivers, and the inbound fell through to the default profile. Allowlists and session keys already canonicalize these via `gateway.whatsapp_identity`. Exact compare still wins first; only whatsapp / whatsapp_cloud *user* chats get the alias intersection fallback (applied to both `chat_id` and `parent_chat_id`). Groups, broadcasts and every other platform stay exact. Salvaged from #85081 (Kong); parent_chat_id fallback added on top.