‘Oops, okay’, you think. ‘Well, I know I‘m never going to expose the record-type descriptor for this type, so I’ll just declare it (opaque #t). Then nobody outside my module can access the procedural record features and break the type check.’
Hang on, though – record type opacity is another feature! Have you thought about what you’re making harder by including that feature in your record type system?