# `Mnemosyne.NodeMetadata`
[🔗](https://github.com/edlontech/mnemosyne/blob/main/lib/mnemosyne/node_metadata.ex#L1)

Metadata tracked per node for value function scoring.

Captures access patterns, temporal information, and accumulated
rewards to enable recency, frequency, and reward-based scoring.

# `t`

```elixir
@type t() :: %Mnemosyne.NodeMetadata{
  access_count: non_neg_integer(),
  created_at: DateTime.t(),
  cumulative_reward: float(),
  last_accessed_at: DateTime.t() | nil,
  reward_count: non_neg_integer()
}
```

# `avg_reward`

```elixir
@spec avg_reward(t()) :: float()
```

Returns the average reward, or 0.0 if no rewards recorded.

# `new`

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

Creates a new metadata struct with the given options.

# `record_access`

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

Increments access count and updates last accessed timestamp.

# `update_reward`

```elixir
@spec update_reward(t(), float()) :: t()
```

Adds a reward observation to the metadata.

---

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