Having a kernel with managed code is not necessarily idiotic (although I think in most cases smart pointers do the job better).
However having chosen C# is in my opinion not optimal. C# is very limited when it comes to generic and meta-programming. I think "modern-styled" C++ (ie template intensive) and a functional oriented language would have been a better choice for a secure OS built from the ground up.

