Repository navigation
feat(grader): a CHECKER breaks ties against the simulated user (0.8.9) - #3
Merged
Merged
Conversation
When the reader or the judge is sure the simulated user misread a turn, the CHECKER answers the same question; if it is sure the user read the turn right, the user's reading stands. Otherwise the dispute goes to a person as before. Without a CHECKER nothing changes. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The causality question's context embeds each disputed question, so the new field changed its key and saved causality answers stopped matching. Questions are now recorded without it, in that context and in the annotation queue. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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.
Summary
When the reader or the judge is sure the simulated user misread an assistant turn, the run waits for a person. Those confident disputes are usually wrong. On the published records, the published adjudications sided with the simulated user in 32 of 45 such disputes. With this change a CHECKER breaks the tie: it answers the same question, and if it is sure the user read the turn right, the user's reading stands, two readings to one. If it agrees with the reader or judge, or is unsure, the dispute goes to a person as before. Without a CHECKER nothing changes. Grader version 0.8.9.
Changes
Question.user_answer: the answer a simulated-user decision implies. It is set by_read_checksand is not part of the key, so saved answers still match.Question.recorded()leaves it out of every recorded question (the causality context, which is part of that question's key, and the annotation queue), so saved causality answers still match and verdict JSON keeps its format.Ladder._upholds_user: a sure reader or judge answer againstuser_answergoes to the checker. The checker's answer is saved under its own rung, like any other, so--offlinereproduces it.GRADER_VERSION0.8.9; README role table,endpoints.pyand the grader README describe the tie-break.Testing
Measured on the 918 published trial 3–5 records, re-graded offline from their published saved answers, with the checker (Gemini 3.1 Pro) live:
test_a_checker_breaks_a_tie_against_the_simulated_users_readingcovers the reader- and judge-decided cases, a checker that agrees with the model or is unsure, and no checker.test_a_tie_break_keeps_question_keysis also new. Both fail onmain.test_a_causality_answer_saved_before_the_tie_break_still_replayspins a 0.8.8 causality key.uv run pytest -qgives 671 passed, and the parity goldens are unchanged.ruff format --checkis clean.Size
+98 / −9. CC:
Ladder.decide_one10 → 12, the direct cost of the tie-break; the tie-break itself is_upholds_user, 5.Risks
🤖 Generated with Claude Code

Confidence Score: 5/5
The PR appears safe to merge; the follow-up fixes the saved causality-answer mismatch without changing the annotation queue's format.Summary
Adds a CHECKER tie-break for confident disagreements with the simulated user in grader 0.8.9.
Diagram
%%{init: {'theme': 'neutral'}}%% flowchart TD A[Reader or judge gives a confident answer] --> B{Agrees with simulated user?} B -->|Yes| C[Keep the reading] B -->|No| D[Ask CHECKER or use its saved answer] D --> E{Confidently supports the user?} E -->|Yes| F[Keep the user's reading] E -->|No or unavailable| G[Send disagreement to a person]Reviews (2) · Last reviewed commit: "fix(grader): keep user_answer out of rec..." · Reviewed by Greptile