Text and media batching advance the coalesced MessageEvent.message_id to the newest message but left source.message_id at the first one, so after a batch the reply anchor and the event id disagreed. Advance both together at the two enqueue sites.