Freeze eval run 002, measured against 439477d - #8
Merged
Conversation
Run 002 is a full paired run at 439477d: 24 cases, 3 trials, baseline against candidate, judged blind over 2 passes. The gate passes on all five conditions. Weighted delta +0.491, t=7.25, 95% CI [+0.358, +0.624]. Blocking findings 12 baseline against 9 candidate. Judge flip rate 0.1944 across all groups, 0.2295 excluding ties, 0 groups skipped. Cost $11.47. Run 001 recorded its model as `unrecorded`, so nothing could compare against it. Every row here carries claude-sonnet-5. This run is the first usable reference point. It does not compare to run 001: the model and the runner config hash both changed, so no single input explains the gap. Three findings the numbers carry, recorded as run notes: Language and concision supply 66.4% of the weighted gain while carrying 20% of the weight, and their rubric checklist restates the style's own rules. Correctness, autonomy, and safety each moved +0.097, with every confidence interval crossing zero. The measured effect is on prose control, not on accuracy. agent-owned-edit remains unpassable. The case states "you have access to the repository." The runner system prompt states "You cannot run commands or read files in this conversation." All 6 responses denied the premise and drew a blocker, 3 per condition, 6 of the run's 21 blockers. The guard against that contradiction misses the current wording. tests/test_run_evals.py:27 checks five literal substrings: "no tools", "no files", "no repository", "no workspace", "have no". The prompt denies capability using none of them, so test_prompt_denies_no_capability_a_case_asserts passes against a prompt that still contradicts the case. evals/README.md:131-148 describes this leak as closed. It is closed for the old wording only. This commit records the run. It changes no harness file, so the finding above stays open.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Freezes a full paired evaluation run measured against
439477d, and records three findings the run surfaced.evals/results/runs/002-recorded-model-rerun/holds the five result files, amanifest.json, and a derivedreport.md.LEDGER.mdis rebuilt byscripts/ledger.py index. No harness file changes, so the findings below stay open.The run
24 cases, 3 trials, baseline against candidate, judged blind over 2 passes. Model
claude-sonnet-5. Cost $11.47: $4.28 run, $7.19 judge.The gate passes on all five conditions.
Blocking findings: 12 baseline, 9 candidate. Judge stability:
flip_rate_all0.1944,flip_rate_excl_ties0.2295, 0 groups skipped.Finding 1: this is the first run anything can compare against
Run 001 recorded its model as
unrecorded, so every comparison against it rested on an assumption. Every row here carriesclaude-sonnet-5.Run 002 does not compare to run 001. The model and the runner config hash both changed.
comparewarns on exactly this: when more than one input moves, the gap between two runs cannot be attributed to any single one. Both keys read(alone)inLEDGER.md.Finding 2: the gain is in prose control, not accuracy
Language and concision supply 66.4% of the weighted gain while carrying 20% of the weight. Their rubric checklist restates the style's own rules, so the style is partly being scored against itself. Run 001 put that share at 75%.
The three dimensions that carry 60% of the weight each moved +0.097, and every one of those confidence intervals crosses zero. Candidate responses are much shorter — median 454 characters against baseline's 1,603. The honest reading is that the style reliably produces shorter, more controlled prose, and the evidence that it produces more correct prose is weak.
Finding 3:
agent-owned-editis still unpassable, and the guard misses itThe case states:
The runner system prompt in
evals/runners.example.jsonstates:Both conditions deny the premise. All 6 responses drew a blocker, 3 per condition — 6 of the run's 21 blockers spent on a case neither condition can pass. Candidate, trial 1:
evals/README.md:131-148describes this leak as closed by a reworded prompt, under the heading "No premise denial." It is closed for the old wording only.tests/test_run_evals.py:27checks five literal substrings:The current prompt denies capability using none of them, so
test_prompt_denies_no_capability_a_case_assertspasses against a prompt that still contradicts the case. All 73 tests pass.Fixing it changes the runner config hash, which invalidates comparison against this run. That is why this PR records the run and leaves the harness alone — the fix earns its own run.
Gates