Module: Rigor::Analysis::DependencySourceInference
- Defined in:
- lib/rigor/analysis/dependency_source_inference.rb,
lib/rigor/analysis/dependency_source_inference/index.rb,
lib/rigor/analysis/dependency_source_inference/walker.rb,
lib/rigor/analysis/dependency_source_inference/builder.rb,
lib/rigor/analysis/dependency_source_inference/gem_resolver.rb
Overview
Implementation of [ADR-10 — Opt-in dependency-source inference](../../../docs/adr/10-dependency-source-inference.md).
The namespace coordinates three components:
-
GemResolver maps a ‘Configuration::Dependencies::Entry` to either a frozen `Resolved(gem_name, version, gem_dir, mode, roots)` or an `Unresolvable(gem_name, reason)` value.
-
Builder.build folds a ‘Configuration::Dependencies` into a frozen Index carrying the partitioned outcomes.
-
Index holds the per-run state the dispatcher tier consults via ‘#contribution_for`. Slice 2a ships the stub returning `nil`; slice 2b populates the method table by walking each resolved gem’s ‘roots:`.
Per the ADR’s “Implementation slicing” section, slice 2 is split internally:
-
Slice 2a (this commit): gem resolution, index plumbing, ‘Analysis::Runner` wiring, `dynamic.dependency-source.gem-not-found` diagnostic for unresolvable entries.
-
Slice 2b (next commit): walker, dispatcher tier integration, ‘Type::Dynamic`-wrapped returns.
Defined Under Namespace
Modules: Builder, GemResolver, Walker Classes: Index