Re-cut the prose-register eval keys the subject disagrees with every run - #69
nonreagent wants to merge 7 commits into
Conversation
Five CI runs of the prose-register suite at the tip of the eval fixes branch, recomputed from the latest.json artifacts, with every failing subject output and judge reason read. The memo attributes the failure mass to eval-side defects (contested keys, non-minimal pairs, grader substring bugs, notes the judge reads as requirements), separates the judge noise from subject variance, and records what the suite does not measure. The fixture pass that follows cites it case by case. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
First CI run of the new shape: 15 of 22 (run 35495133404), against the memo's predicted 16 to 19. The deterministic side is clean. Choice 12 of 12, including all four edited pairs (disc-04, disc-09, disc-11, disc-12), and detection 3 of 3. Before this PR those stood at 8 or 9 of 12 and 0 or 1 of 3. Every remaining failure is a judged row: rule 8 of 12 (disc-08, 09, 10, 11) and rubric 4 of 7 (trans-02, 03, 04). Same model as every prior run (
Reading. The memo's thesis holds for the deterministic asserts: they went to 12 of 12 and 3 of 3 with no model or prompt change. The total is one row short of the band because the rule judge on the taste cases still fails, in the way the memo's Question 4 predicts. On each of the four rows the subject named a different SKILL.md rule than the key, and each is a defensible reading of the passage: disc-08 the "Not X, but Y" move, disc-09 the breath rule, disc-10 "No flex" (the fifth-run shape the self-review had already flagged), disc-11 the reversal rule. On the rubric side, trans-04 failed for the first time in six runs (the judge read "scraped a knee" and "ran a meter" as verb phrases, not the noun pair the task asks for), trans-03 failed on a partial reframe, and trans-02 failed voice_match again, this time for scrubbing the discomfort entirely rather than for a missing word. What it argues for. The free-text RULE judgment on the discrimination rows is now the main noise source. The memo's next lever for it is numbered-rule selection against If you want this run recorded under decision 12, I will fold it into the spec commit together with any review feedback in one push, since each push spends another run of both suites. |
a10aa7f to
69a5c45
Compare
|
Second run, after decision 13 (run 35528316122): prose-register 18 of 22 for the floor (16 strict), code-comment-register 16 of 16 (14 strict). Gate lines as printed by CI: Components on prose-register: choice 11 of 12, rule 9 of 12, rubric 5 of 7, detection 2 of 3. The four rows that count against the floor: disc-04 (chose det-03 is a grader gap the second run exposed. The subject flagged the em-dash for the em-dash rule, as on every prior run, but this time quoted the text on its left, "Same company, same invoice, same artifact —". That overlaps the key quote by 15 characters, under the matcher's 20-character floor, so it scored a miss. A one-character violation can be quoted from either side and no span heuristic knows that. The fix is the memo's original suggestion: an optional per-violation Two runs of the new shape now exist for calibration; the floor stays at 0.4 until five do. |
The detection grader required the first 60 characters of each key quote to appear verbatim in the subject's output. det-03's subject found the em-dash on all five CI runs and was scored a miss on two of them because it dropped the key's first word. Both strings are verbatim runs of the same document, so the grader now counts a subject quote that contains the key, sits inside it, or overlaps one of its ends by at least 20 characters. One subject quote is one finding: it is credited to every key it holds whole, or else to the one key it overlaps most, so a quote that runs from one violation into the opening of the next is not a find of both (seen on one CI run of det-02). Traps use the same rule, and a fixture test keeps any violation quote from overlapping a trap. Overlap matching needs every key quote to appear in the document verbatim; the validator now enforces that, and det-01's one trap that ended in an ellipsis is quoted in full. A detection case may set min_recall in [0, 1]. Below 1 the case passes at that recall and records recall as its score, for lists the author says are not exhaustive (prose-register's det-01 and det-02 failed every run by construction). A flagged trap still fails at any floor. The default of 1 keeps every existing case's behaviour. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The rule rubric passed each case's grading_note to the judge as the source of accepted alternatives. disc-07's note asks for a precise answer that cites both the "just" prohibition and the hedge rule; across five CI runs the judge passed the RULE lines that cited one rule and failed the ones that cited both, reading a human-facing note as a requirement. A discrimination case now lists its alternatives in accepted_rules, a non-empty array of rule strings, and the rubric shows the judge only the reference rule, the skill's rule text and that list. grading_note is human-facing again and never reaches the rule judge. The transformation rubric keeps its note: those notes are written as grading guidance and none of the five runs showed the judge misreading one. code-comment-register shares the rubric. Its ten discrimination notes explain the key rather than list alternatives, so none migrates, and its rule judge loses that context; the CI run on this branch measures the effect against its 7 to 10 of 10 across the five prior runs. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Five CI runs at the tip of the fixes branch failed the same seven prose-register cases with the same reasoning each time. A key the model disagrees with consistently is a fixture defect, not sampling noise, and each one here is fixed at the fixture with zero model sessions. - disc-09 becomes a two-way pick, original over over_tight. The subject ranked the hand-edited 'restored' stage last on all five CI runs because it is five declaratives of similar pressure, which SKILL.md's own Lint fails, and ranked original above over_tight on every one of them. 'restored' survives as trans-06's reference. The pair has not run yet, so it stays arguable until CI shows the choice holds. - disc-11 keeps 'as you assume' in both variants, and disc-12's 'after' drops 'These are hard won lessons, and' while both variants share the shipped closing sentence, so each pair differs in one place. Both are hand edits from the shipped text, recorded in the grading notes and the provenance block, as disc-01's was. - disc-04's variants open with the paragraph that precedes them in c8fa24c, so the connective has something to join. - disc-02, disc-07, disc-08, disc-10 and disc-11 list their accepted alternative rules in accepted_rules. disc-08 and disc-10 accept the breath rule, which the subject cited on every disc-08 run and four of five disc-10 runs; disc-07's note no longer asks the judge for a two-rule answer. - trans-06's task states the mechanism and duration the reference uses, in other words than the reference's, instead of asking for facts only the author knows; trans-02's voice rubric stops naming the reference's words as required. - det-01 and det-02 set min_recall 0: their violation lists are not exhaustive, so recall is recorded as the score and only a trap hit fails them. The floor stays at 0.4 until five CI runs of the new shape exist. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
accepted_rules, min_recall and the overlap matcher join the Phase 2 revisions as decision 12, with the review memo as their evidence. The grading section describes what the rule judge and the detection assert see now, and the After Phase 2 paragraph drops the two keys the pass settled and names the measurement the suite still does not make: no row samples a draft written under the skill. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
On the first run after the fixture pass every deterministic assert passed (choice 12 of 12, detection 3 of 3) and four of the seven remaining failures were the rule judge rejecting a rule the subject named that is true of the passage: the "Not X, but Y" move on disc-08, the breath rule on disc-09, "No flex" on disc-10, the reversal rule on disc-11. A passage usually breaks more than one rule, the skill's master rule absorbs cases keyed to others, and widening accepted_rules run by run ends with any true rule passing. The judge still runs and its verdict is recorded per case, and the gate prints the rule count on its summary line, but a row whose only failed asserts are the rule judgment now counts as passed for the floor. The choice still gates hard, and an arguable case whose choice is wrong still counts against the floor whatever its rule verdict. Decision 13 in the spec records this and names rule identifiers as the follow-on that makes the check deterministic. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
On the second CI run after the fixture pass det-03's subject flagged the em-dash for the em-dash rule, as on every prior run, and quoted the text on its left: "Same company, same invoice, same artifact —". That shares 15 characters with the key quote, under the overlap matcher's 20-character floor, so the row scored a miss. A violation one character wide can be quoted from either side, and no span heuristic knows which. A violation (or trap) may now name an anchor inside its quote; any subject quote containing the anchor counts as a find of that violation whatever else it covers. The validator requires the anchor to be a non-empty substring of its quote. det-03 anchors on "artifact —". Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
69a5c45 to
1a162da
Compare
|
Third run, with the det-03 anchor (run 35539965533): prose-register 18 of 22 for the floor (15 strict), code-comment-register 16 of 16 (15 strict). Components on prose-register: choice 10 of 12, rule 8 of 12, rubric 5 of 7, detection 3 of 3. Counting against the floor: disc-04 and disc-11 (both arguable, both chose Three runs of the new shape, per edited case.
Floor calibration now has three runs at 19, 18, 18 for the floor. Two more before the 0.4 floor is revisited, per decision 11. |
Stacked on #68.
Problem
The
run (prose-register)check has scored 10 to 12 of 22 on five CI runs, and the same seven cases fail on every run with the same reasoning. A review of those runs (docs/superpowers/specs/2026-09-20-register-eval-review.md, committed here) attributes 11 of the tip run's 12 failures to the eval side: four contested or wrong keys, two cases built without the context or the single difference they need, three grader defects (both detection cases fail by construction, and det-03's matcher missed a quote that dropped the key's first word), and two notes the judge applied as requirements. One failure is the subject producing a different rewrite that the judge fairly rejected.Motivation
A 40% floor and five
arguableflags were #68's way of living with those failures. That keeps the job green without making the suite say anything: a key the model disagrees with on every run cannot detect a regression, and a floor calibrated on it cannot either. The memo's first recommendation is a zero-session fixture pass and one CI run, to settle whether the failure mass is noise or keys before spending sessions on anything else.Proposed Solution
Seven commits, each green on
make preflight(103 offline tests):min_recall(default 1) lets det-01 and det-02, whose violation lists are not exhaustive, record recall as a score instead of failing on it; a flagged trap still fails at any floor.accepted_rulesreplaces the grading note in the rule rubric. disc-07's note asked for a two-rule answer and the judge read it as a requirement, passing the one-rule answers and failing the two-rule ones. The judge now sees the reference rule, the skill's rule text and a per-case list of accepted alternatives;grading_noteis human-facing again. The transformation rubric keeps its note.min_recall: 0. The four edited cases stayarguableuntil CI runs on the edited pairs show the choices hold. Every departure from source is recorded in the case's note and the provenance block.anchor. The second run had det-03's subject quote the text on the left of the em-dash, 15 characters of overlap with the key, under the matcher's floor. A one-character violation can be quoted from either side, so a violation may now name a short anchor inside its quote ("artifact —") that counts as a find when any subject quote contains it. Validator-checked.The floor stays at 0.4 until five CI runs of the new shape exist. det-01 and det-02 now pass on every run and rule-only failures no longer count, so that floor is looser than when it was calibrated; the spec says so and defers recalibration to those runs.
Feedback
afterkeeps "as you assume"; disc-12'safterdrops "These are hard won lessons, and" andbeforetakes the shipped closing sentence so the pair differs only by the recap; disc-04's variants open with the c8fa24c paragraph. disc-09 losingrestoredis the largest change to what a case tests;restoredstill serves as trans-06's reference.