The other issue is that we have no clue yet, or at least I have no clue, how assemblies will look like. For example, whether they will operate on part containers or not. This could make what today is just seen as useless very valuable.

First, I think it's very important to have 2 different containers, in a hierarchical level, one for bodies and one for parts. IMHO the FreeCAD developers have done it mostly right. The names might not be well chosen — easy confusion between Part and PartDesign — but the principle holds. A physical part can hold different bodies, either because the single part is made of different materials — look at your toothbrush — or because it's made with booleans, meaning that temporarily there are several bodies. So the higher level container will contain all those lower level containers, which in turn will contain atomic functions. Historically, calling them "Part" and "Body" seems like a good choice. If PartDesign was renamed BodyDesign, for example, it would lift some of the confusion.

But the most important part comes from the assemblies.

I have played with realthunder's App::Link implementation, and we managed to come up with a working solution for assemblies. I think it's a very practical and elegant solution, but it's not 100% what people imagine how assemblies should work in a traditional CAD system. You can see results here and here. It's very manual at the moment, a proper GUI would be necessary. This is not realthunder's Assembly3 workbench, it doesn't use it at all, but it uses realthunder's App::Link stuff. From what I understood, the Assembly3 is a demonstrator on top of App::Link. I think that merging the App::Link, with or without Asm3, should be a priority for v0.19

With trial-and-error, I think we have come a long way and can propose a well working assembly architecture. What I propose is that the App::Part be indeed the assembly container, that can contain either directly a PartDesign::Body, or several ones, to form a physical part, or App::Link links to other App::Parts and then it's an assembly. Can also hold Datum objects, Sketches, ... This is quite exactly how Siemens NX works, and quite unlike Catia V5. FreeCAD would be in the top-of-the best league. Additionally, each App::Part should contain a "Constraints" group to store constraints if it is used as assembly. Here is how the hierarchy would look like:

Files are attached for testing. They include my macros (they're only 1-liners mostly). I've put those macros in the toolbar to automate the process. This only works with realthunder's LinkStage3, there is a freshly released AppImage. All comments are welcome.

Well, please hold back your enthusiasm, after the storm of silence following my initial proposal, I've still gone through with the idea, and you can now download some scripts from my GitHub account and try this out, and you can even have the luxury to read some explanations.

I like the way you do assembies with LCS. It's the same concept as mate's on onshape.
Iit's a pity that there's not so much interest here. Assemblies are one of the major topics. Maybe it's the wrong subforum? Partdesign development has stopped and the audience here is small.

Just to add my thoughts, since I had a bit of a play with Assembly 3 the other day.

What I propose is that the App::Part be indeed the assembly container, that can contain either directly a PartDesign::Body, or several ones, to form a physical part, or App::Link links to other App::Parts and then it's an assembly.

From my playing around, this seems exactly right, and would feel quite intuitive I think.

I like the way you do assembies with LCS. It's the same concept as mate's on onshape.
Iit's a pity that there's not so much interest here. Assemblies are one of the major topics. Maybe it's the wrong subforum? Partdesign development has stopped and the audience here is small.

Wrong subforum indeed. I browse the freeCAD forums daily but almost never look in Part Design. Just happened upon this because I had a bit of extra idle time to explore subforums not on my usual reading list. If this topic had been posted in Assembly I would have seen it immediately. I encourage the OP to move it or have it moved.