# `Minga.Extension.Instance.Artifact`
[🔗](https://github.com/jsmestad/minga/blob/main/lib/minga/extension/instance/artifact.ex#L1)

Immutable current-generation artifact view and normalized runtime child policy.

# `restart`

```elixir
@type restart() :: :permanent | :transient | :temporary
```

# `t`

```elixir
@type t() :: %Minga.Extension.Instance.Artifact{
  child_spec: Supervisor.child_spec(),
  manifest: Minga.Extension.Manifest.t(),
  module: module(),
  owned_modules: [module()],
  restart: restart(),
  source: {:extension, atom()}
}
```

# `build`

```elixir
@spec build(atom(), module(), Minga.Extension.Manifest.t(), [module()], keyword()) ::
  {:ok, t()} | {:error, term()}
```

Builds an artifact while preserving the declaration's original restart policy.

# `crash?`

```elixir
@spec crash?(term()) :: boolean()
```

Returns whether an exit is a crash for public lifecycle projection.

# `restart?`

```elixir
@spec restart?(restart(), term()) :: boolean()
```

Returns whether a runtime exit should be replaced.

---

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