#8134·opik

Evaluation pipeline: failed metrics silently dropped from averages; SUT output unescaped in judge prompts; g_eval logprob scoring misparses digit tokens; error handler imports SDKs inside except block

Author: AUTHENSORCreated Sep 3, 2026Updated Sep 17, 2026

Summary

Four defects in opik's evaluation pipeline at pin c7ffd4e.

1. Failed metric scores silently dropped from experiment averages

Any metric exception produces ScoreResult(0.0, scoring_failed=True), those rows are never uploaded, and every aggregate excludes them. A crashing-judge run reports hallucination mean 0.0 over 5 survivors while an honest judge reports 0.5 over 10 on the same outputs.

2. System-under-test output interpolated unescaped into judge prompts

Judge templates interpolate SUT output verbatim; an output embedding a JSON object with score 0.0 is parsed as the judge response itself.

3. g_eval logprob scoring averages digit-string token candidates

Score 0 parses as 0.2999995; score 10 split into two tokens parses as 0.05. A hardcoded token index assumes single-digit scores.

4. Metric-error handler imports provider SDKs inside the except block

When openai/litellm are absent (the source-tree usage case), every tolerated metric error aborts the run instead of continuing.

All four verified with deterministic stubs. Harnesses available.