We have MRRs, e.g. ServerEnvironmentResourceDescription, where the resources are runtime-only but the MRR.isRuntimeOnly() is not stating that.
3 possible aspects to this:
1) Audit uses of Resource.Factory.create(true[,...]) and check that those are also setting up the ResourceDefinition correctly so the MRR reports runtime-only.
2) Change the ConcreteResourceRegistration stuff such that it ignores the ResourceDefinition if the parent is runtime-only. IOW, runtime-only parents can't have non-runtime-only children. This would wipe out a category of possilbe errors in the setup of the children.
3) Have ExtensionRegistry/SubsystemRegistrationImpl ensure that the registrations for deployment resource children are runtime-only.