First of all, it's all about interpretation. MAME itself doesn't care about filenames, it simply takes an archive and looks by hash for the needed file. So to make it playable, you don't need an audit tool....simply put all garbage into a file and you're done
The interpretation for parent/clone relationships within cmpro is that clones can share a file with their parent but not with other clones.
The relationship is either based on identical names or on the "merge" atttribute in the datfile/-listxmloutput. By default, cmpro uses the merge attribute information (See profiler options "parse rom merge tags").
So yes...if you have Parent P with rom p1, Clone C1 with rom p1, c1 and Clone C2 with rom p1, c1, c2 and clone C3 with rom c3 only, you will end up in a merged set with:
p1
C1/c1
C2/c1 + C2/c2
C3/c3
That's the way it is, it won't change and hasn't changed since 1997 now..... :-)
There is no information that a version 3 is older or newer than a version 4 of a set. The relationship is defined in the datfile....if version is was designed to be the parent, version 4 and 3 could be clones...maybe a dev decides later on that 4 becomes parent....there is no real rule on that....one day it was "the most common version", then "the us or europe version", then the initial version .....there were lots of plans to set a rule on it...but actually I don't see one.
By the way, if they are identical (hash and name) you can get rid of the few extra bytes by simply NOT using subfolders for clones...then you only get them 1 time in the archive.....