Repository navigation
fix(evals): run invocation probes without subagents and name the run line in run-validity - #11901
Conversation
…line in run-validity Emitted probe runs now remove Agent beside Read, Glob and Grep: after the skill loaded, the agent handed the task to a subagent that outlived the 300-second timeout, and every timed-out probe run in the #11895 round had dispatched one. run-validity.py gains a probe tools check that warns when a probe run could still call those tools and names the run line. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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. |
|
claude-security-review reviewed Security review: incremental (b4ee1c0 → b976686)No security issues found. What changed in this increment. The
The rest of the increment is:
Why there's nothing to report:
critical-findings: 0 |
|
claude-review reviewed Code review (incremental, b4ee1c0 → b976686)No findings. I read every hunk of the incremental diff in all 5 in-scope files and found nothing to block or flag. What changed
Notes
|
… tools check_probe_tools passed when it had read nothing: a probe run with no trace, or an init line with no tools list, added nothing. Such a run is now a warning naming it, and none readable is UNCHECKED, so the run is INVALID. The traces line names probe tools among the checks an unresolved trace leaves unchecked. The clean fixture's init line and the tests' inline init lines now carry a tools list, as real init lines do. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Post-merge mutation testingKilled 1, survived 2, timeout 0, no coverage 0, invalid 0, not run 0.
Surviving mutants
The run's summary has the full report. |
No related issue: probe suites are judged INVALID by construction, blocking #11895
Summary
Every side of #11895's round-4 probe comparison came out INVALID under
run-validity.py. On currentmaintwo causes remain, and both come from the run setup, not the skill:Agent. The remaining one read the skill's spokes with Read and Glob, then ran out the clock.--disallow-tools Read Glob Grep(fix(skill-quality): run emitted invocation probes without the read-only search tools #11755), so every probe session's init line still listedTask, Glob, Grep, Read.The third reason the round reported,
skill firedfailing should-fire probes that missed, is already fixed onmainby #11639: a case taggedinvocation-probe, whichemit-plugin-evalwrites, reports misses as the measured rate (WARN). The round read the gate from a checkout older than #11639. On currentmainthat check is WARN on all four sides.Fix
measure-invocation.sh emit-plugin-evalREADME: the run line now reads--disallow-tools Read Glob Grep Agent, and it says why. A case'sallowed_toolsonly grants tools; the plugin-evals page has no per-case field that removes one, so the run line is the only place this can be set.run-validity.pygains aprobe toolscheck. It warns when an invocation-probe run's session could call Read, Glob, Grep or Agent (Taskon the init line), and names the run line. It only warns: the error and denial checks still judge those runs at full force. The mode marker stays the existinginvocation-probetag the emitter writes in the suite, not a caller flag.reading-results.mdstates how the gate reads invocation probes; theplugin-evalskill points there;invocation-probes.mdgives the new run line, with an updated pointer record;rewrite-a-plugin.mdpoints at the README's run line instead of a copy of it that had gone stale.Verification
run-validity.test.sh: 96 tests pass. The three newprobe toolstests fail againstorigin/main'srun-validity.py(93 pass, 3 fail), and every other test passes there.measure-invocation.test.sh: all pass. Its README assertion now requiresAgent, andorigin/main's emitter has no such line.scripts/check-affected.sh: 15 passed.check probe tools: WARN (297 runs ... could call Read/Glob/Grep/Agent/Task ...).claude -p --disallowed-tools Agent Read Glob Grep(Claude Code 2.1.316): the init line listsBash, Skill, TaskStop, ToolSearch, with neitherAgentnorTask, soAgentis the name that removes the subagent tool.claude plugin evalprobe run with the new line. The fix(user-interface): trigger design on single visual-value questions #11895 re-measure will use it, and itsprobe toolsline confirms whether the flag took effect.Related
🤖 Generated with Claude Code