This is a misintepretation of the backcompat portion of the spec.
Everything in the compat rules means “look for”.
In this case, “author - including compat root vcard in the absence of h-card” means to look for an “author” class name, *including* looking for a “vcard” class name on the same element, only if there is no “h-card” class name on the same element.
Thus yes, according to the spec, the code snippet:
<span class="author">Tom Morris</span>
Inside an hentry as noted above must be treated like:
<span class="p-author">Tom Morris</span>
And thus in the parsed JSON it becomes a simple "author": ["Tom Morris"] as noted as a “preferable result”.
If you can suggest wording that would help clarify this in the spec, I would be happy to make an editorial change to make this more explicitly clear (as well as similar for h-event location).