# `MimirAnalytics.Row.EvalOutcome.Case`
[🔗](https://github.com/cash-mckeeman/mimir/blob/mimir_analytics-v0.8.1/mimir_analytics/lib/mimir_analytics/row/eval_outcome/case.ex#L1)

One typed, named case record: an eval report's `results[]` entry joined
with its matching `judge_results[]` entry (by `case_id`) — replaces the
untyped positional `c`/judge-map digs that used to feed `eval_row/4`
directly at the `MimirAnalytics.Mappers.EvalReport` call site.

# `t`

```elixir
@type t() :: %MimirAnalytics.Row.EvalOutcome.Case{
  case_id: String.t(),
  elapsed_ms: integer() | nil,
  judge_elapsed_ms: integer() | nil,
  judge_passed: boolean() | nil,
  judge_reasoning: String.t() | nil,
  passed: boolean() | nil,
  reason: String.t() | nil,
  session_id: String.t() | nil
}
```

# `new`

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

Join a decoded `results[]` case with its (possibly absent — mechanical
mode runs carry no judge) matching `judge_results[]` entry.

---

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