This part is a bit messy in roxygen. First the file is split on @, and all tags call their preref parsers. The initial part does not have a @ tag, so that is left out from this process, and passed along as introduction. Then, at a higher level, process_description is called, which splits this initial part into @title, @description and @details.
@details is especially tricky, because process_description merges the @details tag (if present) with the leftover of the intro, so the preref parser is sometimes only called on part of the real @details.
I think the splitting done in process_description should be done in parse.preref, conceptually. Instead of or in addition to just passing along introduction. As I see it, this is a clean change, process_description does not do anything else in addition to the splitting.