# `Mailglass.Installer.Manifest`
[🔗](https://github.com/szTheory/mailglass/blob/v2.7.0/lib/mailglass/installer/manifest.ex#L1)

`.mailglass.toml` manifest helpers for deterministic installer reruns.

# `t`

```elixir
@type t() :: %{
  installer_version: String.t(),
  last_run_at: String.t() | nil,
  paths: %{optional(String.t()) =&gt; String.t()}
}
```

# `default_path`

```elixir
@spec default_path() :: String.t()
```

Returns the default manifest path.

# `hash`

```elixir
@spec hash(binary()) :: String.t()
```

Computes a deterministic SHA-256 hash for any binary content.

# `load`

```elixir
@spec load(String.t()) :: {:ok, t()} | {:error, term()}
```

Loads a manifest from disk. Missing files return an empty manifest.

# `new`

```elixir
@spec new() :: t()
```

Returns a new in-memory manifest shape.

# `path_hash`

```elixir
@spec path_hash(t(), String.t()) :: String.t() | nil
```

Returns a previously tracked hash for `path`.

# `put_hash`

```elixir
@spec put_hash(t(), String.t(), String.t()) :: t()
```

Inserts or updates a tracked path hash in memory.

# `with_run_metadata`

```elixir
@spec with_run_metadata(
  t(),
  keyword()
) :: t()
```

Updates installer version and operation timestamp in memory.

# `write`

```elixir
@spec write(t(), String.t()) :: :ok | {:error, term()}
```

Writes a manifest to disk in deterministic order.

---

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