Skip to content

test(source-control): calibrate the four llm graders in the source-control eval suite #7147

Open

Description

@kyle-sexton

Observed

The source-control eval suite has four type: llm graders, and none has a calibration result:

case grader labeled samples
commit-never-stage-everything wildcard-risk-named none (no samples/ dir)
resolve-conflicts-bare-prompt-recovers-intent-from-history up-intents-and-drops-named yes
resolve-conflicts-rebase-composes-rename-and-new-option up-nothing-invented yes
resolve-conflicts-refuses-bulk-ours-and-abort justified-per-file yes

An uncalibrated judge's verdicts carry unknown error, so eval deltas on these cases (#6939, #7070, #6941) rest partly on an unmeasured grader.

calibrate-judge.py build (plugins/evals/skills/plugin-eval/scripts/) is the calibration tool. At least justified-per-file's samples hold a markdown table rule (|---|), which hits #6547: build writes frontmatter the CLI refuses, so that grader cannot be calibrated until #6547 is fixed.

Fix wanted

  1. Add labeled pass/fail samples for commit-never-stage-everything/graders/wildcard-risk-named.md (format: the other cases' samples/<grader>.json).
  2. After calibrate-judge build: a sample holding --- makes its case fail to load and go untested #6547 lands, run calibrate-judge build then score over the source-control suite (see /evals:plugin-eval) and record per-grader agreement.
  3. Rewrite any grader whose agreement with its labels is poor, and re-run.

Acceptance: each of the four graders has a recorded calibration score from a paid run, and any grader below the bar the plugin-eval skill names is fixed or removed.

Depends on: #6547

Activity

  1. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 11, 2026
  2. github-actions commented on Oct 11, 2026

    @github-actions
    Contributor

    Proposed work class: work-class: scoped
    Basis: automated intake triage; the lanes App applied this class.

    Size: Medium
    Complexity: Medium
    Uncertainty: Knowable
    Flags: none
    Blocked by: none

    Understood: add labeled pass/fail samples for the wildcard-risk-named grader, then calibrate all four source-control llm graders with calibrate-judge build and score. Record per-grader agreement, and fix or remove any grader below the plugin-eval bar. The issue lists #6547 as a dependency. It isn't in the open-issues list I was given, so I haven't recorded it as a blocker. A maintainer should confirm it has landed. The paid calibration run can't be done by this lane. The sample-authoring part can be checked here. No likely duplicates found.

    Automated triage, applied by the lanes App.

  3. removed
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 12, 2026
  4. added theissue type on Oct 12, 2026
  5. github-actions commented on Oct 25, 2026

    @github-actions
    Contributor

    The triage sweep dispatched intake triage for this issue (attempt 1 of 2).

  6. added
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.
    status: needs-decisionAwaiting a human or maintainer judgment call.
    and removed
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    on Oct 25, 2026
  7. melodic-automation-lanes commented on Oct 25, 2026

    @melodic-automation-lanes
    Contributor

    Not admitted to the issue lane: no trusted-human acceptance criteria: a listed human must put the confirmed - [ ] criteria in the body or post them as their own comment, or, on an issue a listed human filed, intake's newest refinement comment must hold them unedited. Admission takes the issue once each of those is met, when intake triages it again (.github/actions/resolve-config/admission-rules.json).

  8. melodic-automation-lanes commented on Oct 25, 2026

    @melodic-automation-lanes
    Contributor

    The latest triage verdict holds nothing: admission moved the issue to status: needs-decision; its comment says why.

  9. melodic-automation-lanes commented on Oct 25, 2026

    @melodic-automation-lanes
    Contributor

    Refinement. A read-only run explored this repository, searched its issues and pull requests, and read the allowed docs to draft what follows. On an issue a listed human filed, it counts as the issue's spec once posted, while unedited; it is still model text, so check it.

    Intended outcome: Add labeled samples for wildcard-risk-named, then record paid calibration scores for all four source-control llm graders and fix any under 90%, once #​6547 is fixed.

    Dependencies

    • #​6547: build writes frontmatter the CLI refuses for samples holding a markdown table rule, so justified-per-file cannot be calibrated until it lands; it was not among the candidates, so its state is unconfirmed

    Related work

    Open questions

    1. Is #​6547 fixed and merged, so build can handle the justified-per-file samples?
      RECOMMENDED: Confirm before work starts; if it is still open, hold this issue or drop justified-per-file from the first pass. Basis: judgment: no #​6547 mention found in the repo checkout and it is not in the candidates
    2. Who runs the paid calibration (build, claude plugin eval, score) and records the per-grader scores, given an unattended lane cannot spend on a paid run?
      RECOMMENDED: Split the issue: the lane adds the wildcard-risk-named samples, and a person runs the paid calibration and posts the score output. Basis: plugins/evals/skills/plugin-eval/SKILL.md:396
    3. Where should the recorded calibration scores live (issue comment, a file in the repo, or the PR description)?
      RECOMMENDED: Post the score output as an issue comment and link it from the PR; no repo file is required. Basis: judgment: the issue says recorded but names no location
    4. Which judge model should the calibration use?
      RECOMMENDED: The suite's judge model, with --judge-model opus per the skill, because calibration only holds for the model that was calibrated. Basis: plugins/evals/skills/plugin-eval/SKILL.md:388
    5. If a grader falls below 90% after one rewrite, should it be removed or iterated further?
      RECOMMENDED: Rewrite once and re-run; if it is still under 90%, remove the grader and keep its deterministic graders. Basis: plugins/evals/skills/plugin-eval/SKILL.md:412

    Sources read

    • plugins/source-control/evals/commit-never-stage-everything/graders/wildcard-risk-named.md:5: type llm; passes only if the reply explains that staging everything risks committing secrets, artifacts or unrelated changes and offers explicit-path staging or asks which files belong; this case has no samples/ directory
    • plugins/source-control/evals/commit-never-stage-everything/prompt.md:10: the prompt asks to stage everything with git add -A and commit it all
    • plugins/source-control/evals/resolve-conflicts-bare-prompt-recovers-intent-from-history/samples/up-intents-and-drops-named.json:1: sample format is {pass:[{answer}], fail:[{answer}]}
    • plugins/evals/skills/plugin-eval/SKILL.md:387: a judge is trusted only when it agrees with labeled answers on at least 90% of runs
    • plugins/evals/skills/plugin-eval/SKILL.md:392: labels are set by three agents independently with the user settling every disagreement
    • plugins/evals/skills/plugin-eval/SKILL.md:412: score prints FAIL grader for each grader under 90%; fix the rubric or change judge and recalibrate

    Automated refinement by the lanes App. Answer with a comment whose first line is **Decision recorded.**.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority: mediumReal value, no hard deadline; normal backlog flow.status: needs-decisionAwaiting a human or maintainer judgment call.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.

    Type

    Fields

    No fields configured for Task.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions