I always liked idea of richly defined application models, which helps to develop less error prone, more flexible, easier to read and develop code, and it's lowering bareer between developers and artists. It gives better chances to automate optimizations too. Not a long time ago, Frostbite 3 probably went this way (more or less), which gave them quite an advantage.
There are downsides of course, which are of course performance related issues, and higher amount of work necessary to build up proper architecture. Downsides of that, might be probably eliminated by more-metaprogramming.
Few weeks ago, i found in net this dissertation, with code attached.
Explanation contained there, sketches architecture of render-man like shader architecture for realtime engines (it doesn't add new concepts though). This kind of architecture would have benefits mentioned in first paragraph. It describes model, which is closest to my vision of future engines.
http://h3.gd/code/nucleus/Do you think horde could go this way? It's close already (i think). Or maybe you think this is a wrong way to go, and if - why?