daily-fix: llm-judging — rule-23 point, tally split, rubric
kind: infra#wf-fix#wf-fix-fp:2b526e83d4c5#daily-auto-filed
track:Highlight text on any card (body, plan, or an event) to anchor a comment, or leave a whole-task comment here. Mention @claude to summon a reply.
No comments yet.
Overview / Motivation
Auto-filed by the /daily 2026-07-28 problem sweep (transcript miners over the day's 55 session transcripts). Sources: group-A P4 + P11, group-J P2.
Goal
Fold three measured 2026-07-28 judge-instrument lessons into the llm-judging rule + the batch-judge driver log.
Workflow gap
- Bug observed: (a) #1739: at max_tokens=400 (above rule 23's ~300 floor) 5.4% of sycophancy draws were still truncation-censored, costing a recovery re-judge pass (~10k items). (b) A healthy judge wave was killed and relaunched (~6 min) on a misread 28.9% 'drop rate' — mostly instructed-REFUSAL tokens the rubric itself requested, folded into one undifferentiated tally in the driver's log line even though
judge_talliesalready splits the category. (c) #1482: the judgedpersona_relatedaxis shipped a rubric artifact — 20/40 top 'persona' features were bare language-ID features; the user caught it ~2h later and rubric amendments were posted in-flight (the durable instrument is #1773). (Percentages are session tallies — verify at plan time.) - Why it is a workflow gap: rule 23's floor is rubric-dependent and the rule lacks the newly measured point; the driver log hides an existing tally split; section C's rubric guidance has no name-your-confusable-neighbors rule for judged CATEGORY axes.
- Confidence (emitter): medium
- verified-at-filing:
grep -n 'give any reasoning rubric' .claude/rules/llm-judging.md→ line 197 (~300 floor present, no 400-token measured point);grep -n 'judge_tallies' src/explore_persona_space/eval/batch_judge.py→ present (split exists, unsurfaced in the driver line) (2026-07-29 UTC).
Proposed change (candidate diff sketch — refine in planning)
Three small edits: rule-23 sentence + measured citation; one driver log-line change surfacing REFUSAL as its own category; one section-C guideline sentence with the #1482 example.
Scope / surfaces
- Primary targets:
.claude/rules/llm-judging.md,src/explore_persona_space/eval/batch_judge.py(log line only)
Constraints / invariants
- Workflow-surface only — never experiment code,
configs/, ortasks/. scripts/workflow_lint.py --check-askspasses; ruff on touched files passes.- The spawned session runs under a
workflow_fix_target:Provenance line — recursion guard applies (it parks, never auto-routes, its own subagents' workflow-fix candidates).
Provenance
-
fingerprint: 2b526e83d4c5
-
workflow_fix_target: .claude/rules/llm-judging.md
Activity