In processCreateEvent, branch on event.federatedId: group DM messages now look up the pre-bootstrapped local channel by federatedId instead of computing a pair hash from two participants. In queueDmRelay, fetch the channel's federatedId and ownerId and include federatedId in the outgoing relay payload for group DMs so receiving instances can route correctly.