If you have what R6RS and SRFI 99 call ‘procedural’ and ‘inspection‘ layers, someone can go in through the back door and create a record constructor procedure or a field mutator procedure which doesn’t do the type check. So these two quite simple features – one very commonly provided by implementations, the other very commonly wished for by users – actually need to be baked into the core of the record type system, so new constructors and mutators also apply the type check.