Ok, I finally had the time to recreate this case in a spec.
The reason this happened is because:
Discourse was unable to resolve a Conversation type for context.
The error thrown in 1 was too nested to properly roll back the relevant transactions.
This will address the immediate issue
@devnull I haven’t been keeping up with the latest on context / collections etc. Could you briefly explain the thinking behind using “Conversation” instead of “OrderedCollection” in context. Is it meant to be a type of collection…or?