Skip to content

deepeval:g_eval reads evaluation_params and rubric as a suite writes them - #12

Merged
dittops merged 5 commits into
masterfrom
evals/g-eval-settings-as-written
Nov 12, 2026
Merged

dittops merged 5 commits into
masterfrom
evals/g-eval-settings-as-written

Conversation

@jithinAB

Copy link
Copy Markdown
Contributor

Part of UP-7 (eval and selection fixes) from Bud Meta Harness's PACT v97 plan.

What

deepeval:g_eval now reads the settings a suite writes. G-Eval takes SingleTurnParams members and Rubric objects, and YAML writes neither. Before this change, evaluation_params: [input, actual_output] reached G-Eval as strings, and every case was reported absent ("'str' object has no attribute 'value'", measured on DeepEval 4.3.3). Leaving the field out does not help: G-Eval then grades a trace, and a case answer carries none.

providers._as_deepeval_reads reads evaluation_params by DeepEval's spelling (actual_output) or the member's (ACTUAL_OUTPUT), and each rubric: mapping by score-range (or score_range) and expected-outcome. Every other score's settings pass through untouched, and a name that is no test-case field still gets G-Eval's own refusal.

Evidence

  • tests/test_g_eval_is_measured_as_its_page_writes_it.py has 5 tests. Without the change, 4 fail. With it, all pass (scripted offline judge, DeepEval 4.3.3).
  • tests/test_metrics_an_expert_brings.py and tests/test_the_metric_coverage_is_published.py pass, except test_a_deepeval_score_is_never_answered_by_a_hosted_model_the_author_did_not_name. That test fails on master too, with DeepEval 4.3.3 installed, so it is not caused by this change.
  • Bud Meta Harness had to read these names itself (its sidecar runs evaluate_metric for every deepeval: score). It reports the reading as diverges-from-the-reference until this lands. A PAR conformance run on 5 metrics agrees with evaluate_metric within 5 points.

Draft: opened by the Bud Meta Harness model-finder lane for review.

jithinAB and others added 5 commits November 12, 2026 07:41
…holder kept across a park

A lease (`claim-lasts:`) frees a key a crashed worker held, but cannot stop a
call still running when the lease ends. Every grant of a key is now numbered
one higher than the key's grant before it (`Taken.fence`); a renewal keeps the
number, and expiry and release keep the count, so the system a call writes to
can refuse a writer whose number is stale. `SqliteClaims` keeps expired and
released rows for their count and gains the column on files written before it.
The ledger records the token of each claim it took (`Ledger.fences`).

`the-workspace` claims are namespaced by the workspace id a host names
(`claims_workspace=`), so two workspaces sharing one store do not refuse each
other; without one the key is as before.

A parked run comes back as the holder of the claims it took
(`Suspension.claim_holder`, carried by `_park_state`, `escalate` and the JSON
form): under a new name it could neither renew nor release them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…them

G-Eval takes SingleTurnParams members and Rubric objects, which YAML cannot
write. A suite that wrote `evaluation_params: [input, actual_output]` was
reported absent on every case (DeepEval 4.3.3: "'str' object has no
attribute 'value'"), and leaving the field out makes G-Eval grade a trace a
case answer does not have, so the one DeepEval score an author defines in
their own words could not be written. evaluate_metric now reads the names
by DeepEval's spelling or the member's, and each rubric mapping by
score-range and expected-outcome; every other score's settings pass through.

Found by Bud Meta Harness's DeepEval metric runner, which calls
evaluate_metric for every deepeval: score and had to read the names itself.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s the claim's holder AND the reactions; counts recomputed (4822)

Both code conflicts were two additions at the same place: Suspension's
escalate copy and harness._park_state each gained a line from this
branch (claim_holder) and a line from master (reactions). Both are kept.
The counts were recomputed by scripts/sync-counts.sh: 1623 Rust + 3199
adapter.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
…sts (1623 Rust + 3204 adapter)

scripts/sync-counts.sh, on this branch with 907f292 (#14–#16) and the
updated claims branch merged into it. The merge itself had no conflict.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
@dittops
dittops marked this pull request as ready for review November 12, 2026 10:38
@dittops
dittops merged commit 3aa8846 into master Nov 12, 2026
1 of 2 checks passed
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.

2 participants