You can of course go and find the loader inside Zeitwerk's Registry, but its .loaders is considered private and I know Xavier very much wants to keep it that way.
So in this way, it feels like a convenience with little downside, apart from, as you say, being slightly less "front and centre." But I think we do our best still by making it the very first method that appears inside the gem's main module.
In fact, looking at the output above, I think we actually need to change our setup code a bit. This is wrong:
The @version_file should be dry/system/version.rb, not dry-system/version.rb. So I think we need to initialise the GemInflector like so: Zeitwerk::GemInflector.new("#{root}/dry/system.rb").
Overview
Add a Zeitwerk custom loader as found in the Dry Monads implementation. This is based on this conversation.
Steps to Recreate
Notes from Tim: