Skip to content

fix: surface real causes behind sandbox result errors (PRDENG-58)#68

Open
nojibe wants to merge 1 commit into
mainfrom
ken/prdeng-58-bug-report-model-response-evaluation-errors-on-weval-sandbox
Open

fix: surface real causes behind sandbox result errors (PRDENG-58)#68
nojibe wants to merge 1 commit into
mainfrom
ken/prdeng-58-bug-report-model-response-evaluation-errors-on-weval-sandbox

Conversation

@nojibe

@nojibe nojibe commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Summary

Addresses PRDENG-58 — a sandbox run showed three different generic errors and no way to tell what actually failed. This PR replaces each with a diagnostic that surfaces the real cause.

  • KeyPointCoverageTable — the empty-state card ("Error loading evaluation data for this model.") now diagnoses why there's no data: reports the actual coverageResult.error string(s) when present, and distinguishes generation failure vs. evaluation failure vs. missing coverage vs. empty assessments.
  • SharedEvaluationComponents — adds a dedicated Not Evaluated bucket for criteria whose coverageExtent is undefined/NaN. N/A criteria no longer render under the green Passed Criteria header (which was misleading when judges failed and every criterion was unscored).
  • llm-coverage-evaluator — when all judges fail in consensus mode, categorizes each judge's failure reason (rate-limited, auth, parse error, timeout, upstream gateway, etc.) and appends a summary to the assessment error. Also attaches the per-point judgeLog so operators can expand the existing Log section in the UI and see the full trace. Backup-judge failures are included in the summary.

Test plan

  • pnpm test:cli — 45 files / 521 tests pass
  • pnpm test:web — 49 files / 596 tests pass
  • Three existing test assertions in llm-coverage-evaluator.test.ts updated from equality-against-old-literal to regex match against the new richer prefix
  • Visual check in sandbox: rerun a failing config and confirm the empty-state card now displays the underlying Generation failed: ... / All N judge(s) failed... Reasons: ... messages
  • Visual check: on a run with N/A criteria, confirm they appear under Not Evaluated with the help-circle icon, not under Passed Criteria

🤖 Generated with Claude Code

Three related fixes so a failed sandbox run shows operators why it
failed instead of a wall of generic errors.

- KeyPointCoverageTable: replace the generic "Error loading evaluation
  data" empty state with a diagnosis that reports the actual
  coverageResult.error (generation failure vs. evaluation failure vs.
  missing/empty coverage).
- SharedEvaluationComponents: add a dedicated "Not Evaluated" bucket
  for criteria whose coverageExtent is undefined/NaN. N/A criteria no
  longer render under the green "Passed Criteria" header.
- llm-coverage-evaluator: when all judges fail, categorize each
  judge's failure reason (rate-limited, auth, parse, upstream 5xx,
  etc.) and include the summary in the assessment error, plus attach
  the full judgeLog so the existing per-point Log expander in the UI
  can show operators the trace.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Claude Code Review

This repository is configured for manual code reviews. Comment @claude review for a one-time review, or @claude review always to subscribe this PR to a review on every future push.

Tip: disable this comment in your organization's Code Review settings.

@railway-app

railway-app Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

🚅 Deployed to the app-pr-68 environment in weval

Service Status Web Updated (UTC)
weval-app ✅ Success (View Logs) Web Jul 22, 2026 at 12:23 am

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant