It is not clear in my mind what it is that the family concept is used for so these are my thoughts
A family encapsulates the concept of groups of related OSes such as Debian and Ubunto and Centos and RedHat
This allows puppetclasses, which are currently associated with Operating systems to refer to a family.
Wrong. These are ratified on arch/os combination via the mux code
This allows operatingsystems to be associated with a family.
True. It is then not possible to write os.architectures, even using through:, unless the family is converted to an ActiveRecord.
This allows medias, which are currently associated with OSes to refer to a family. (You were right about the paths for fedora being the same structure.)
Examine these four paths
This allows architectures, which are currently associated with OSes, to refer to a family.
Wrong. The binding between an operating system and an architecture is used to enable or disable the selection of a puppetclass in the GUI. (Though this code has not been committed.)
This allows partition tables, which are currently associated with OSes, to refer to a family.
Wrong. The partition tables for a sol 8 and sol 10 host are very different. It may be possible to ask the family for a template into which it is possible to insert sizing information but this does not seem worth while to me.
It looks like the family concept is useful for dealing with the parsing of media paths and is handling the construction of the {kick,jump,etc}start files. In the current implementation the family only provides behavioral changes, if something is set per-family and needs to be tracked then the family needs to be converted to an ActiveRecord Table.
Maybe you could add your thoughts on this