The rule is that stanzas must be delivered in order for a given source/destination JID pair. However, a MUC service sends stanzas from many different JIDs if you consider the varying resources, and therefore it cannot have any expectation that its sent stanzas will maintain order. This means that when a client joins a room, the room history might be received before the presence ack of the join attempt, and individual messages within the room history itself might get reordered.
I haven't yet thought about how to solve this problem in MUC. At the very least, I wanted to be sure we are aware of the problem in general so it doesn't happen again when designing new XEPs. -Justin
