I see the mechanism you want to implement, but I cannot think of the practical problem(s) which it solves. Could you provide a concrete, real life design issue, which is solved in a smarter way by your framework?
Besides, beware that subtyping in records is a very tricky issue, easily leading to unsound programs:
You might also be interested into looking at Scala, which gives users a fine control on subtyping: http://scala.epfl.ch
. It illustrates how tricky class variance is, when you want to do it soundly.