Repository navigation
test(planning): add plan-reviewer-cut before/after eval cases - #15465
Conversation
Twelve seeded plan drafts (six designed LOW, six MEDIUM), each with two defects from what the plan-reviewer checks, a must-not-flag guard, and reviewer-dispatch and blast-radius indicators. They measured #15398's reviewer cut on LOW plans; fixtures/plan-reviewer-cut builds one arm per plugin version (prepare-arm.sh) and sets up each case repo (init-repo.sh). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VQb9Q4F46UumaUgXeUdpYZ
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VQb9Q4F46UumaUgXeUdpYZ
Codex Review Summary: ✅ CompletedThis 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, 9b9b09e to 5aa784a (PR #15465)No security issues in this push. This lane already reviewed an earlier head, so this review was blocking only: it reports only CRITICAL and IMPORTANT findings. It found neither. What I read. Every hunk of all 4 files in
What changed:
What I checked:
Prior findings. This lane's earlier summary (#15465 (comment)) reported 0 findings, so nothing carries over. critical-findings: 0 |
|
claude-review reviewed claude-review: incremental, blocking-only review of Findings: 0. What changed. Both graders replace the broad exclusion What I checked. I traced each regex against every sample by hand. I did not run
Context.
Spend (not a finding): running these eval cases uses only prepaid API or subscription usage. |
|
Held while the five grader findings from the code-review lane are fixed: four graders can pass a plan that still carries its seeded defect, and one can fail a correct fix. The label comes off once the fixes are pushed and reviewed. |
The code-review lane showed four graders passing a plan that still carried its seeded defect and one failing a correct fix. Each pattern now counts only bullets under a `### Phase` heading and stops at the next heading; the regression-test graders require a test word and the defect on one bullet; the temperature out-of-scope grader excuses only a bullet that starts or ends with a cut verb. Each reviewer counterexample is a new labeled sample. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VQb9Q4F46UumaUgXeUdpYZ
Pre-registration: low-risk re-run with fixed graders (owner decision Q308)Written before any run. Cases at d4e2c5a (this PR), graders fixed per the five resolved review threads. Why. #15398 merged on a LOW result of -0.03 (interval -0.08 to +0.03) graded by patterns that could pass a plan still carrying its seed, which inflates both arms and hides differences. The old runs cannot be re-graded. Arms. Same flags, each case's two arms launched together,
Cases. The six Exclusions. As in #15398's pre-registration: wrong reviewer behaviour for the arm, no LOW Blast-radius line, an error or partial result, or an own-copy search denial. A case with fewer than 2 conforming runs in either arm is dropped. Decision rule. |
Result: low-risk re-run with fixed graders (Q308)Ran per the pre-registration above: 6 LOW cases x 3 runs x 2 arms,
Decision rule. B loses only on a case drop of 1/3 or more or a mean fall of 0.15 or more; neither occurred, so the Q307 waiver for #15398's LOW cut stands. The fixed graders now catch misses in both arms (A scores 0.50-0.67 on two cases with the reviewer running). The grader-fix hold is lifted: the five findings are fixed and resolved. |
Re-grading the kept re-run plans found graders failing plans that had fixed their seed: - 11 bullet graders counted only - and * items; they now also count numbered work items (1. or 1)). - The retry regression-test grader accepted the wrong MAX_DELAY and not the real MAX_BACKOFF_SECONDS; it accepts both now. - Both regression-test graders now also count items under a Test strategy heading, where the plan template puts tests. - Both sanity-check graders matched a summary quoting the old vague check; they now match only Sanity Check lines. Each false fail is a new labeled pass sample. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VQb9Q4F46UumaUgXeUdpYZ
Correction: re-run re-graded with corrected gradersA further review thread showed the retry grader rejecting the real constant. Re-grading the re-run's kept plans offline (sandboxes kept with
The re-graded change is +0.03 (B over A), with no case drop. Under the pre-registered rule B does not lose, so the Q307 waiver for #15398's LOW cut stands. The one remaining B miss names AC2 ceiling tests without calling them a regression test; it is counted as a miss. |
Counting Test strategy items let a line that names the bug but declines the regression test pass both regression-test graders. A bullet carrying no, none, not, without, skip or carve-out no longer counts. The review's three counterexamples are fail samples, and overnight-shifts gains a Test strategy pass sample. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VQb9Q4F46UumaUgXeUdpYZ
The any-negation exclusion failed correct tests phrased as negatives
("does not exceed", "is not rejected"). Both regression-test graders now
reject only an actual decline: "no (new) regression/test", "none",
"without a test", skip, or carve-out. The review's negative phrasings
are pass samples; every earlier fail sample still fails.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VQb9Q4F46UumaUgXeUdpYZ
Pre-registration: fresh low-risk run on frozen graders (Q308)Written before any run. Graders frozen at 5aa784a (the head the code-review lane read with 0 findings). No grader changes after this run's scores are read. Why a fresh run. The earlier re-run was re-scored after its scores were read, with graders changed in between, and the last tightening was never applied to it. That breaks the pre-registered sequence, so it does not settle Q307's waiver. This run does. Arms. Same flags, each case's two arms launched together,
Cases. The six Exclusions. Wrong reviewer behaviour for the arm, no LOW Blast-radius line, an error or partial result, or an own-copy search denial. A case with fewer than 2 conforming runs in either arm is dropped. Decision rule. |
Result: fresh low-risk run on frozen graders (Q308)Ran per the pre-registration above, graders frozen at 5aa784a; no grader changed after scores were read. 6 LOW cases x 3 runs x 2 arms,
Decision rule: B loses only on a case drop of 1/3 or more or a mean fall of 0.15 or more. Neither occurred, so the Q307 waiver for #15398's LOW cut stands on this run. Spot-read: the B retry miss adds ceiling tests ( |
|
Arm isolation check. Arm B (cc4acc0) includes main merged into #15398's branch, so it differs from A (6df2738) by more than the reviewer cut. The paths |
No related issue: eval cases for the measurement behind #15398, split out so that PR stays within one review's read budget.
Summary
Twelve
plan-reviewer-cut-*eval cases for/planning:plan, plus the fixtures that build each plugin-version arm. They measured #15398's plan-reviewer cut before and after, and stay as that measurement's outcome cases (skill-criteria "Measurement" step 7).Fix
.work/<slug>/PLAN.mdholding two defects that theplan-reviewerchecks and the main thread's scripts do not, a must-not-flag guard, and two indicators at weight 0.001: reviewer dispatch (tool_usedon Agent) and the Blast-radius tier.fixtures/plan-reviewer-cut/init-repo.shcommits each case repo with a local origin;prepare-arm.sh <ref> <dest>builds one arm, a copy ofplugins/planningat a commit, outside any repository.tool_used); no judge calls.Verification
validate-cases.py plugins/planning/evals: no FAIL; each defect grader fails its seeded sample and passes a fixed one.typos, comment-hygiene, vocabulary and orphaned-fixtures pass after the fixes recorded on feat(planning): run the plan reviewer only for risky plans #15398.Related
Follow-ups
plan-reviewer-cut-medium-reorder-points/graders/out-of-scope-cut.mdstill excuses a phase bullet with an incidental "no"/"not" (the shape fixed in the temperature grader); narrow it the same way before that case decides anything. The low-risk re-run (Q308) does not use it.🤖 Generated with Claude Code
https://claude.ai/code/session_01VQb9Q4F46UumaUgXeUdpYZ