OK, one more opinion. It seems to me, you put too much care for stability of assembly. Sure, it's annoying when things break. But the ultimate important thing is to minimize the time it takes to arrive to the result (or the amount of frustration). And repairing an assembly might not be that big of a deal, depending on situation (probably, on the number of parts in the assembly). While defining all potential "surfaces" for every piece of design, and giving them names might take a lot of time and thinking.
Sometimes, for example, I spent too much time on making my model incredibly parametric.. in the end to realize it doesn't work, and as a result, most of the time and effort I spent on making sure my model was robust and parametric was essentially wasted. (it was 3d-printed ion wind speaker model
, for example)
Another example, when I want to reproduce a part that I have in my hands, I absolutely don't care about it being parametric. Then I just use old-workflow partdesign, with its horrible breaking links and vertical dependency structure. Because all I need is to print out a copy of that broken piece, ASAP, and old-workflow PartDesign is excellent because it's quick and easy!
Example here: https://forum.freecadweb.org/viewtopic.php?f=24&t=9974
So I think, it's best to provide maximum freedom, and let the user choose, what he/she wants, a super-robust model generator program, or a one-off hard-to-modify design.