Repository navigation
fix(evals): judge invocation-probe runs by their measured rate in run-validity - #11639
Conversation
…-validity In a case tagged invocation-probe, a should-trigger miss is reported as the measured trigger rate (WARN), and a max-turns run error in a run whose trace holds a Skill call is a WARN. Other errors, a max-turns error with no Skill call, and every non-probe case still FAIL. Refs: #11618 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5ea905e43c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Review on #11639: trace_error_text joined a trace's errors into one string, so a turn cap beside another error (an API error) passed the max-turns match and the whole trace was waived. Read each error and exempt only when all of them are the turn-cap error. Add a test with both errors, which fails on the previous code. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
claude-security-review reviewed No security findings in the incremental change since ea154fa. I read The change tightens an eval-validity check, so it narrows what the check lets through:
Nothing here touches a trust control, token scope, kill switch, merge hold, plugin manifest or instruction surface. It adds no code execution, no injection surface and no secrets handling. The regex is anchored and has no nested quantifiers, so there is no ReDoS risk. No file in this increment matches a trusted path. Spend: none. The change adds no eval or lane runs. manifest fields: none touched. |
|
claude-review reviewed Incremental review of What changed. The turn-cap exemption now requires that the case's own Skill grader show the call was made ( Checked:
Not worth a comment:
Manifests: the incremental diff touches none, so there are no |
Review on #11639: the waiver accepted any Skill call in the trace and matched the turn-cap text anywhere in the error. It now reads the run's own Skill grader results (a requiring grader passed, or a max-0 grader failed) and matches the whole error text. Two tests, a call to another skill and a turn cap inside another error, fail on the previous code. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Closes #11618
Summary
run-validity.pyjudged every trigger-measurement run INVALID, because it treated a should-trigger miss, the quantity such a run measures, as a validity failure. It did the same with a turn cap hit after the graded Skill call. This PR teaches it to recognize invocation-probe cases (theinvocation-probetagmeasure-invocation.sh emit-plugin-evalwrites) and judge them by the rate they measure.Fix
skill fired: in an invocation-probe case, a miss is reported as the measured rate per case and overall, as a WARN, never a FAIL. Other cases are unchanged.run errors: in an invocation-probe case, a "Reached maximum number of turns" error in a run whose trace holds a Skill call is a WARN detail. Any other error, a cap with no Skill call, and every non-probe case still FAIL.prompt_fieldshelper is shared withis_control.evalspatch changelog fragment.Verification
python3 test_run_validity.py: 76 tests OK, 6 of them new. Against the base script, 3 of the new tests fail; the other 3 guard the exemption from widening and pass on both.scripts/run-ruff.sh check: all checks passed.run errorsis now WARN on all 8, andskill firedis WARN (PASS on the one run where every probe fired). Each run's verdict is still INVALID onpermission denials, a separate cause filed as fix(skill-quality): stop invocation-probe runs failing validity on denied searches outside the workspace #11624.scripts/check-affected.sh --testslocally. CI's test lanes run it on this PR.Related
🤖 Generated with Claude Code