fix(skill-eval): match punctuated exact answers#900
Conversation
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Users Simulation automation review (2026-07-07): blocked on current head The intended skill-eval fix itself validated, but the branch is not merge-ready because a Daytona DinD regression is present on the same head. Evidence:
Moving to |
|
Daily scan follow-up (2026-07-08): resolved the stale Daytona DinD blocker by non-force updating the branch with current New head: Validation in isolated worktree
Moved labels back to |
|
Users Simulation automation review (2026-07-08): ready by simulation on head PR-specific user simulation validated the exact-answer judge boundary:
Checks/evidence:
Thermo-nuclear review: no structural blocker found; this is a small template/test diff and does not add broad branching or file-size debt. Metadata caveat: the GLM user-endpoint artifact has healthy token/timing metadata, but Labels: |
|
Users Simulation automation review (2026-07-10): ready by simulation on head Verified:
The requested Codex/OpenAI route was blocked in this workspace by unusable credentials/auth, and DeepSeek reported insufficient balance, so I used the cheapest working fallback path I could validate: Healthy artifact produced:
Thermo-nuclear review: no blocking structure issue. The judge template change is narrow and direct; the regression test is focused and below the file-size smell threshold. |
|
Users Simulation automation review (2026-07-11): ready by simulation on head Scope checked: skill-eval exact-match punctuation boundary and broad CLI/SDK regression risk. Evidence:
Artifact health:
Thermo review: no structural blocker. The PR is a small direct judge-template change with targeted regression coverage; no file crosses 1k lines, no ad-hoc branch growth, no wrong-layer logic, and no thin wrapper concern. |
Summary
Fixes #897 by changing skill-eval's exact-match fallback from fixed
\b...\bword-boundary matching to word-character lookaround delimiters. This keeps exact answers standalone without making code-like punctuation such as trailing)impossible to match.Context
The generated skill-eval judge template currently uses a fixed word-boundary regex around
ground_truth. That cannot match valid ground truths ending in non-word characters, including examples likegetPageCount()ormcp.run(transport="streamable_http"). A correct agent answer can therefore score0.0in no-rubric exact-match mode.Validation
uv run python -m pytest tests/test_skill_eval_sweep.py::TestExactMatchJudgeDelimitersuv run python -m pytest tests/test_skill_eval_sweep.pyuv run ruff check src/benchflow/templates/judge.py.tmpl tests/test_skill_eval_sweep.pyNotes
A follow-up commit will update the regression docstring with this PR number after GitHub assigns it.