EvalShift
blog

Notes on shipping model changes

Field notes on migrating LLM models safely: golden suites, paired evaluation, regression gates in CI, and when to trust an LLM judge.

migration
This one passed: 71% cheaper, and the agent still does the same thing

An EvalShift migration report that said PASS: a 71% cheaper model inside every policy budget. Where each threshold came from, and what PASS does not claim.

Sep 16, 20268 min read
migration
The new model was 59% cheaper and 75% faster. I still wouldn't ship it.

A candidate model cut cost 59% and latency 75% with zero failed calls. The migration report still said FAIL, because the agent's behavior changed.

Sep 12, 20264 min read
migration
What actually breaks when you switch LLMs

A model swap is a behavior change with no diff to review. What moves besides the answer text, and why the worst regressions read as correct.

Aug 20, 20267 min read
prompts
Prompt edits deserve the same gate as a model swap

A prompt edit changes behavior the way a model swap does. Where the prompt text lives decides whether CI diffs it or passes on silence.

Aug 13, 20266 min read
statistics
How many eval cases do you need?

Suite size is the wrong question: n is counted per prompt, evaluator and slice. What the analysis drops, and how many pairs a verdict needs.

Aug 12, 20267 min read
agents
Evaluating agent tool calls: what text evals can't see

Agent behavior drifts in the trace, not the prose. The four tool-call evaluators, the modes worth changing, and the expectations not worth pinning.

Aug 11, 20268 min read
suites
Build a golden eval suite from production traffic

Record real agent runs with the capture SDK, promote them into a golden JSONL suite, and understand every capture the pipeline drops on purpose.

Aug 7, 20268 min read
migration
How to test an LLM model migration before you ship it

A repeatable method for proving a model swap is safe: freeze a golden suite, run both models paired, and read the diff before your users do.

Jul 31, 20267 min read
ci
LLM regression testing in CI: gate pull requests on eval diffs

Wire a golden suite into GitHub Actions so every pull request gets a paired eval run, a base-branch diff, and a check that fails on real regressions.

Jul 24, 20266 min read
evaluators
When to trust an LLM judge

LLM judges are useful and easy to fool. Where pairwise judging holds up, where it breaks, and how to stop a judge from silently deciding your migration.

Jul 17, 20266 min read