Skip to content
docsv0.2.0

GraphResolver

The engine — a pure function from a materialized {@see ResolutionInput} to a {@see ResolutionReport}. It runs the algorithm of spec §11 pasos 2-5: resolve required contracts against the implementations declared by installed packages (semver-checked, legacy-aware), resolve required and suggested capabilities against the available providers (constraint-checked, honouring `oneOf` and detecting `exclusive` conflicts), resolve each active surface's requirements, and classify the whole graph as `valid`, `bootable_with_warnings`, `legacy_compatible`, or `blocked`. Error codes travel as plain strings on the report entries; milpa/resolver's learnable-error catalog is layered on top of them. Purity is a hard invariant: the engine reads only its input — no filesystem, no network, no clock, no randomness — so the same input always yields a byte-identical report. Every report list is sorted by a total key order for that determinism.

GraphResolver::resolve()

public function resolve(Milpa\Resolver\Input\ResolutionInput $input): Milpa\Resolver\Report\ResolutionReport

Resolve the architecture described by the input into a report.

Parameters

Parameters of resolve()
NameTypeDescription
$inputMilpa\Resolver\Input\ResolutionInput