Skip to content

[Phase 1] Pin the llm-judge to Haiku 4.5 so the triage chain swap cannot move every skill's eval score #2104

Closed

Description

@github-actions

Story

As a maintainer watching weekly skill-eval scores,
I want the eval judge held on Haiku 4.5 regardless of what heads the claude:triage chain,
so that the Haiku 5.5 swap changes the generator only, and skill score trends do not all shift on swap day for reasons unrelated to the skills.

Acceptance Criteria

  1. When EVAL_JUDGE_CMD is not overridden, scripts/evals/run-eval.sh invokes the judge with the triage chain pinned to claude-haiku-4-5-20251001, independent of CLAUDE_TRIAGE_MODEL_CHAIN and the engine-models.sh default. The pin carries a # model-pin-ok: justification so scripts/check-model-pins.sh passes.
  2. The generator path (EVAL_ENGINE_CMD) is unchanged and still follows the skill's declared tier.
  3. A bats test shows that changing the triage chain head (for example CLAUDE_TRIAGE_MODEL_CHAIN=claude-haiku-5-5) leaves the judge model at Haiku 4.5, while an explicit EVAL_JUDGE_CMD override is still honoured.
  4. scripts/evals/model-ab.sh's own AB_JUDGE_MODEL shim keeps working unchanged (its existing tests pass).

Tasks / Subtasks

Dev Notes

  • Today run-eval.sh sets EVAL_JUDGE_CMD="${EVAL_JUDGE_CMD:-run_triage}", and 10 of 13 evals/*/scorer.json use llm-judge. So swapping the triage head would swap the judge too (research pass, gap 2).
  • Maintainer guardrail (discussion Enable Haiku 5.5 #2095): fixed anchors stay fixed. The judge changes only through its own deliberate process (a later calibration run), never as a side effect of a default change.
  • Must merge before or together with the chain-swap story.

Project Structure Notes

Changes stay inside scripts/evals/ and its tests. No workflow change is needed if the default is pinned in run-eval.sh.

References

  • scripts/evals/run-eval.sh
  • scripts/evals/model-ab.sh
  • scripts/check-model-pins.sh
  • tests/test_model_ab.bats
  • .github/workflows/skill-eval-report.yml
  • evals/triage/holdout/cases.jsonl

Likely target surface

  • scripts/evals/run-eval.sh

Story prepared by the BMAD Scrum Master (Bob) for epic #2101. Status: ready-for-dev.

Metadata

Metadata

Assignees

No one assigned

    Labels

    initiativeEpic / initiative tracking issue

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions