I see quite a few flexible sub-assemblies in your feature tree. From my experience, these can be very frustrating to set up and to keep set up in a way that they will rebuild. As a start, take a look at the mates in your "THE REAL FINAL ASSEMBLY" and suppress them all and try to rebuild. If it works, then the mating scheme is causing your headache. However, if that doesn't solve it then the issue is likely in the parent file itself and how it relates to the flexible file. When this happens, I've just deleted or replaced the problem assembly and things seem to work.
These issues come up when a file is edited while the upper level assembly is open from what I can tell. I've started working on only one open file at a time and that seems to help a lot.
Take all of this with a grain of salt since it's only speculation. If you want more people to respond, please attach your assembly as a Pack & Go zip file so we can take a close look.
I would venture a guess that they are fine if you bring them into the top level and let them float(not mated). I think Alex hit the nail on the head with the flexible assemblies being the issue. You can try going to the sub-assemblies and suppressing mates there, thus adding more "flexibility" to your subs. Flexible assemblies can be incredibly frustrating and it just multiplies as you add more, so use them sparingly. It is often much easier to dissolve them in the top level and remate if you require motion.
I had the same issue a couple of times. I tried re-mate on the large assembly and after closing everything and re-open the sub-assembly, mates were then broken on the the sub-assembly.
After running around mates for a couple of days I got to the bottom of it.
In my case the issue was: parts having same file name but located in different folders. In that case SW doesn't open the a part (or assembly) file that has the same filename of a document already open. It uses the open one instead, then the mates don't match.
It's difficult to explain .... I hope I've been clear!