Я всё пропустил. Кого-то удивляет, что {a: Int} и {a:Int, b:String}, это разные типы, не зависящие друг от друга? Extensible Records, это же не "содержит те же ключи (кроме новых), значит потомок"
например, нельзя применить подход по хранению в модели просто таблиц данных в таком виде (в несвязанном с вьюхой виде), и джойном разных таблиц уже во вьюхе