Alternatively, the user request to reserve a seat could be split into two events: first a tentative reservation, and then a separate confirmation event once the reservation has been validated
When using event sourcing intents should not be stored as facts until they re confirmed. If a check must be made before something is considered a fact it should be constructed as more than one event. One to ask for something to e validated and another that indicates if tht request was granted or not.