When Are Error End Events Legal?

I had good luck with my previous BPMN "request for information" posting, so here is another one. Is it valid to end a top-level process in BPMN with an error end event? In my training I say that it is not, but it is a gray area. An error end event in a subprocess throws a signal that is caught by an error intermediate event attached to the boundary of that subprocess, i.e. at a parent level in the model. That is the only purpose of error event in BPMN, to propagate exception handling from child to parent levels in a hierarchical model. In a top-level process there is no parent level - it's already the top - so nothing to catch the error signal. The error end event thus has no purpose.

Nevertheless I frequently see it in the wild, most recently during a technical review of some BPMN questions on OMG's forthcoming certification exam. The example looks something like this:

Is this valid? I say no, or at least it's bad practice. You could argue, I suppose, that throwing a signal that is not caught does no harm, and the error symbol signifies a failed outcome. Fair enough, but I think a misuse of the error symbol. Antoine Lonjon proposed some new end event symbol for this purpose - a downward arrow I think - in the BPDM version of BPMN 2.0, and I think that's fine; it's not a thrown error signal.

The other argument that this diagram is valid holds that this process could possibly be called as a reusable subprocess by some other (unknown) process. The catcher of the error signal would be the calling activity in that parent process.

OK, but normally Receive Order instantiates a process; it is not something that happens in the middle. Well, maybe in a Quote-to-Cash process, the order happens after the quote, so there it could be in the middle.

And here's another murky area of BPMN. The spec says a subprocess must start with a None start event, not a triggered start like Message. What if it's indeterminate whether it's top-level or subprocess? If the process could be used either as a top-level process or a reusable subprocess, BPMN 1.1 says it should be drawn like this:

Yes, really. Section, check it out if you don't believe me. And no, I have never seen this in the wild, either. But it is consistent with the notion that a subprocess must start with a None start.

So on either count, I would say that the first diagram here is invalid.

But I'm still (somewhat) open to persuasion. Any BPMS Watch readers have something to contribute?