Skip to content

feat(evals): selector-judge cut precision, inconclusive by the registered rule (#1579) - #1593

Merged
jasonssdev merged 4 commits into
mainfrom
feat/1579-judge-cut-precision
Oct 21, 2026
Merged

jasonssdev merged 4 commits into
mainfrom
feat/1579-judge-cut-precision

Conversation

@jasonssdev

Copy link
Copy Markdown
Owner

Refs #1579

Step 1 of #1579: measure what the selector judge's cut buys before changing it. Measurement only. No default changes.

What

evals/concept_model_screen/cut_precision.py (with --self-test) runs #1557's G1 source-grounded precision (judge gpt-oss:20b, the same prompt and parser) on the objects the judge cuts and on those it keeps, over the cached #1571 replays. No candidate model was called.

  • Pre-registration (committed before any model call): CUT_PRECISION_PREREGISTRATION.md.
  • Results: CUT_PRECISION_RESULTS.md.
  • Run: 216 of 216 window calls, about 36 min of Ollama.
judge arm kept cut kept minus cut [95% CI]
self 153 of 165 (0.927) 128 of 138 (0.928) -0.0003 [-0.0681, +0.0689]
fixed 147 of 160 (0.919) 134 of 143 (0.937) -0.0183 [-0.0963, +0.0510]

Verdict: inconclusive under the registered rule

Cut objects are about as well supported as kept ones, so the cut does not buy source-grounded precision at this n.

  • "The cut buys precision" fails clearly.
  • "The cut is too strict" misses narrowly: the upper bound is +0.051 against the registered +0.05.

Deviation from the pre-registration (disclosed in RESULTS)

After labelling, gemma4:26b-a4b's self arm was changed to read its fixed records, because for that extractor the self judge and the fixed judge are the same model. A sensitivity check without gemma4, from stored labels and with no model call, gives:

  • self: -0.0170 [-0.0964, +0.0618], still inconclusive.
  • fixed: -0.0395 [-0.1336, +0.0334], which on its own reads "too strict".

The overall verdict stays inconclusive. The fixed arm's label depends on whether gemma4 is pooled, and RESULTS says so.

Checks

ruff check, ruff format --check, mypy, evals/run_self_tests.py (66 of 66), and tests/unit/test_eval_self_test_runner.py.

…the pre-registration (#1579)

The change was made after the labels existed. The pooled verdict is unchanged without that extractor (mixed or inconclusive), though the fixed arm alone reads rule 2.

Refs #1579.
@jasonssdev
jasonssdev force-pushed the feat/1579-judge-cut-precision branch from 6414025 to 552974b Compare October 21, 2026 01:08
@jasonssdev
jasonssdev merged commit 32a0966 into main Oct 21, 2026
10 checks passed
@jasonssdev
jasonssdev deleted the feat/1579-judge-cut-precision branch October 21, 2026 01:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant