Yeah, my first thought was "why not just allow adding a <replace /> in each RTT update?" but that can add a lot of overhead, even though it makes the intent very explicit.
I think the inclusion of the id attribute with event="reset" has strong enough semantics to make this work. You're resetting a previous message for amendment via RTT, and the final <replace /> gives the result of editing. A few things that will need to be considered: I can see already that the description of the reset event will need to be updated to cover the new semantics. For example, the current XEP-0301 text does not sound like this method would be acceptable if one attempted to replace a message sent before RTT was enabled. Does this handle the case where a user begins a replacement, but then decides to not commit to the replacement? Or is that simply not a case that makes sense in a RTT session? +1 on the direction of this. -- Lance