I have a old 8.x solution that I am upgrading to version 9.1 and also converting from a non helix methodology to a helix methodology (unraveling the spaghetti code has been a huge challenge and it will probably never be a pure helix based solution, but it should be close).
I use TDS for code generation. In which layer should base types be in?
For example let's say I have a "Video" type. I have an ItemManager Feature which can return a list of content items based on type. Rendering parameters are used to determine the type that is returned in the result set. if the rendering parameter is "video", ItemManager will fire a search method to get the videos based on the datasource.
Then, I have a "video" feature which is just a view that displays the video (Video, Title, Caption, length, etc).
Since both features reference the Video type should "video" be in the foundation layer since the data template won't be changing, hence is should be stable and referenced in the features layer?