With 29 separate modules on CAN I've quickly realized that programming the entire vehicle logic would be a nightmare without very detailed forethought. Below is the current architecture layout with 10 separate CAN buses, 29 modules, and 3 EVCU's (Electric Vehicle Control Unit).
The one downside, or rather just an added analysis point, of using only OEM CAN components in the build is that I'll have to make sure that everything plays well together. Each component has CAN ID's that it uses for status messages and ones it listens to for commands. The complicated issue here is that these modules were designed for use on different vehicles, and different OEMs all together. If I threw everything on a single CAN bus two modules could use the same ID for status messages, or even worse, a status message from one module could be a command ID for another.