class Rigor::ModuleGraph::ZeitwerkResolver

Converts a Ruby source path into the fully-qualified constant the Zeitwerk convention says it should define.

Pure function, no I/O. The plugin instantiates one per run from .rigor.yml config and asks for resolve(path) per file. Two configuration knobs:

The resolver is order-sensitive: longer / more specific roots MUST be tried before their parents so app/models/concerns/foo.rb picks up the concern root, not app/models. We sort by length descending at construction time, so config order does not matter.