# `NativeArtifact.Resolver`
[🔗](https://github.com/gsmlg-dev/native_artifact/blob/main/lib/native_artifact/resolver.ex#L1)

Pure, deterministic resolution from pinned metadata and explicit evidence.

`resolve/3` accepts a Manifest, decoded data, or JSON binary and an atom-keyed
evidence map. No path is read and no host information is inferred. Evidence
fields are `:target` (`Target`), `:nif` (`{major, minor}`), `:erts`,
`:os_version`, `:libc_version`, `:vm_variant`, `:system_libraries`, and
`:binding`. Missing values mean unknown evidence, never a compatible default.

All compatible baseline artifacts have equal priority. IDs sort diagnostics,
not preference; ties return `ambiguous_artifact`. The optional `:artifact_id`
selector narrows the candidates. `:manifest_limits` forwards Manifest limits.

# `resolve`

```elixir
@spec resolve(term(), map(), keyword()) ::
  {:ok, map()} | {:error, NativeArtifact.Error.t()}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
