Broken rules:
There are some keys interfaces that drive everything, defining the formal structure, dependency and organization of the BHoM.
We need to push a reorganization of their arrangement, tweak some conventions and namings, and relocate appropriately certain Engine methods that use/depend on them.
Suggestions to restore compliance:
WIP diagram:

Engines
BHoM_Engine
Analytical_Engine-Graphics_Engine
Results_Engine
The Results engine should be deleted, as it currently depends on Structure_oM and Analytical_oM and Graphic_oM and its categorization is not meaningful.
Reflection_Engine
Any objects/methods left obviously is code that is needed as part of the Framework for Adapters, UIs etc. and is distinct from the already existing Programming namespace that is "Programming as a discipline". i.e. creating Programming representation of a concept much like a Structural or Acoustics representation say
Object models
Base_oM
Analytical_oM
Graphical_oM
Reflection_oM / Programming_oM / Data_oM
EDIT: Updated the diagram to latest WIP and point around Reflection namespace in light of updated diagram
Broken rules:
There are some keys interfaces that drive everything, defining the formal structure, dependency and organization of the BHoM.
We need to push a reorganization of their arrangement, tweak some conventions and namings, and relocate appropriately certain Engine methods that use/depend on them.
Suggestions to restore compliance:
WIP diagram:

Engines
BHoM_Engine
Analytical_Engine-Graphics_Engine
Results_Engine
The Results engine should be deleted, as it currently depends on Structure_oM and Analytical_oM and Graphic_oM and its categorization is not meaningful.
MapResults(to be renamedMappedResult).Reflection_Engine
Any objects/methods left obviously is code that is needed as part of the Framework for Adapters, UIs etc. and is distinct from the already existing Programming namespace that is "Programming as a discipline". i.e. creating Programming representation of a concept much like a Structural or Acoustics representation say
Object models
Base_oM
Analytical_oM
Graphical_oM
Reflection_oM / Programming_oM / Data_oM
Review / action the historic issue: Global: Try to remove the dependency between the BHoM engine and the Reflection Engine BHoM_Engine#1645. And see above
Consider grouping Programming_oM with "Disciplines namespaces"; consider renaming to something more discipline-y (e.g. Scripting_oM)
Create a Library_oM and move there the Data, source from the Data_oM
Move out as much stuff as possible from the Data_oM to appropriate oMs: Requests -> Analytical_oM, etc. (see if dependency chain can be respected)
EDIT: Updated the diagram to latest WIP and point around Reflection namespace in light of updated diagram