LatentEval

TOOL | Evaluation design

Model upgrade checklist

Track sixteen steps for a model or vendor switch. Eight block the switch: snapshots pinned, retirement date known, baseline captured, a paired frozen-set comparison, output contract, judge re-validated, safety set, and a canary plan with rollback. Mark each step OK, problem found or not applicable. When every blocking step clears, the checklist reads ready. The no-regression verdict answers whether the new model is worse. Export a model upgrade checklist for the launch review.

A single open blocking step holds the verdict at Not ready; open steps outside the blocking group give the verdict Ready, with open steps.
The change

The dated snapshot or fixed version in production today.

Check this value.

The dated snapshot or fixed version you plan to switch to.

Check this value.

What started this change.

Check this value.

Where the model runs: the provider's own API, a cloud partner, or both.

Check this value.

The person who owns this change and signs off when the checklist reads ready.

Check this value.

The provider's announced retirement date for the current model. Enter it as YYYY-MM-DD. Days are counted from today's date in this browser. Leave blank if none is announced.

Check this value.

The date the team plans to complete the switch. Enter it as YYYY-MM-DD. Days are counted from today's date in this browser.

Check this value.

Blocking steps

Pin both snapshots

Blocks the switch

Are the current and candidate models pinned to dated snapshots at every call site?

Check this value.

A floating alias can change the model under you without a code change. Pinning both snapshots means any shift is visible and paired results compare the same two versions.

A dated snapshot id or fixed version recorded at every call site.

Check the model lifecycle reference

Record the evidence or what was found.

Check this value.

Know the retirement date

Blocks the switch

Is the old model's retirement date known, and does the team have its own deadline?

Check this value.

Without a deadline the team discovers the shutdown when calls start failing. A known date, or the fact that none is announced, sets the pace for every other step.

The provider's announced date, or a record that none has been announced, and the team's own deadline.

Check the model lifecycle reference

Record the evidence or what was found.

Check this value.

Capture the old baseline

Blocks the switch

Is the old model's per-case baseline captured before shutdown: outputs, verdicts, configuration, tokens, latency and date?

Check this value.

After the old model stops answering, its outputs cannot be regenerated from the provider. A per-case baseline captured before shutdown is the only paired comparator left. Our practice is to keep it until the next change replaces it, and at least until the old model's shutdown plus the rollback window.

A file of per-case outputs, verdicts, configuration, tokens, latency and the date the baseline was captured.

Keep the baseline as per-case rows with the results importer

Record the evidence or what was found.

Check this value.

Run a paired frozen-set comparison

Blocks the switch

Has the same frozen set been compared paired, with any harness change separated from the model change?

Check this value.

Running both models on the same frozen set, paired by case, keeps differences between cases out of the comparison. Any harness change mixed in makes the comparison answer two questions at once.

A paired comparison report from the same frozen set, with the harness version recorded.

Run the comparison in the eval A/B comparator's "Same items, joined on id" mode; check the no-regression verdict; separate a harness change on the harness migration page; choose which suites on the change impact worksheet

Record the evidence or what was found.

Check this value.

Check the output contract

Blocks the switch

Have structured output and tool calls been measured separately: schema-valid rate, parse failures and tool-call correctness?

Check this value.

The candidate model may produce valid structured output less often than the current one. Measuring the schema-valid rate, parse failures and tool-call correctness separately shows failures that a coarser pass rate hides.

A measurement of schema-valid rate, parse failures and tool-call correctness, each on its own denominator.

Measure on the structured output failure rate page

Record the evidence or what was found.

Check this value.

Re-validate the judge

Blocks the switch

Has the judge been re-validated when the judge or its model changed, or when the judge now shares a model family with the model being evaluated?

Check this value.

A judge whose own model changed may shift its standard. A judge that shares a model family with the model it evaluates can favor that model's style.

A judge validation report run after the change, or a record that the judge and its model are unchanged and share no family with the evaluated model.

Run the judge validation checklist; read catch rates on the judge scorecard

Record the evidence or what was found.

Check this value.

Re-run the safety set

Blocks the switch

Has the safety set been re-run?

Check this value.

The safety set covers the behaviors the team cares most about. Re-running it shows whether the new model holds the same line.

A re-run of the safety set with its verdicts.

Record the evidence or what was found.

Check this value.

Plan a canary with rollback

Blocks the switch

Is there a shadow or canary plan with a rollback path?

Check this value.

A canary catches a regression before full production traffic sees it. Without a rollback path, a regression discovered in production stays until a fix is ready.

A canary or shadow plan with a named rollback path.

Size the canary on the canary release page; record rollback fields on the change impact worksheet

Record the evidence or what was found.

Check this value.

Other steps

Read the changelog
Has the changelog been read for tokenizer, context window, max output, default and removed parameters?

Check this value.

A new tokenizer changes token counts and prices. A different context window or default parameter can change the output of an identical prompt.

A dated note of the parameters reviewed and any that changed.

Check the model lifecycle reference

Record the evidence or what was found.

Check this value.

Compare slices
Have slices been compared separately?

Check this value.

An overall pass rate can stay flat while a slice drops. Comparing slices shows where the new model gained and where it lost.

A slice-level comparison, or a record that only one slice exists.

Read per-slice flips in the eval A/B comparator's "Same items, joined on id" mode; check each slice of the new run on the slice explorer

Record the evidence or what was found.

Check this value.

Measure over-refusal
Has over-refusal been measured on a benign set?

Check this value.

A newer model may refuse benign requests the old model answered. Measuring over-refusal on a benign set shows whether the new model opens a gap in coverage.

A measurement of over-refusal on a benign set, or a record that over-refusal is not applicable.

Record the evidence or what was found.

Check this value.

Test the prompt untouched first
Was the change measured first with the prompt untouched, and any re-tuning done on dev cases only and judged on held-out cases?

Check this value.

Measuring the change with the prompt untouched isolates the model from the prompt. Re-tuning on the same cases the eval judges leaks the test set into the prompt. Dev cases for re-tuning and held-out cases for judging keep the two apart.

A measurement with the original prompt, plus, if re-tuning was done, a record that dev and held-out cases are separate.

Record the evidence or what was found.

Check this value.

Check latency and rate limits
Have p50 and p95 latency and time to first token been measured under real concurrency, and do rate limits and quotas leave headroom at peak?

Check this value.

A faster model on a benchmark may be slower under real concurrency. Rate limits and quotas set for the old model may not cover the same traffic on the new one.

A latency measurement under real concurrency and a record that rate limits leave headroom at peak.

Budget latency on the latency budget calculator; plan backoff on the rate limit planner

Record the evidence or what was found.

Check this value.

Recount and reprice tokens
Have tokens been recounted and prices recomputed on the new tokenizer?

Check this value.

A different tokenizer changes token counts even when the text is the same. Repricing on the new tokenizer shows the real cost change before the bill arrives.

Token counts and prices on the new tokenizer.

Count on the token counter

Record the evidence or what was found.

Check this value.

Compare cost per successful task
Has cost per successful task been compared separately from price per token?

Check this value.

A model that costs less per token may cost more per successful task if its pass rate is lower. Comparing cost per successful task shows whether the saving is real.

A cost-per-successful-task comparison.

Compare on the cost per successful task page

Record the evidence or what was found.

Check this value.

Check each host
Has the same model been checked on each host used, given that versions, defaults and retirement dates can differ by host?

Check this value.

A host can serve a cheaper or compressed model under the same id, and output-only checks detect the swap unreliably (Cai et al., 2025). Versions, defaults and retirement dates can also differ by host.

A check of each host used, with its version, defaults and retirement date, or a record that only one host is used.

Record the evidence or what was found.

Check this value.

Mark each step as you go. The verdict appears when at least one step has a status.

Load a checklist you saved from this page as JSON, version 1.x. The page restores the form.

Your file is processed in this browser tab, and you can check by going offline after the page loads. This page never uploads it.

How this is calculated

The gate rule Every step is either applicable or not applicable. Among the applicable steps, the blocking steps must all be OK for the checklist to read ready. A blocking step that is blank or that records a problem holds the checklist at not ready. When every blocking step is OK or marked not applicable and a non-blocking step is still open, the verdict reads ready, with open steps. Not applicable requires a reason; without one, the step counts as not done.

Date arithmetic Days to retirement and days to switch are whole calendar days from today. A past date shows no count; the line says the date has passed. The retirement date is the provider's announced date; the target switch date is the team's plan. When the switch date falls after the retirement date, the page warns that the plan switches after the old model stops answering.

The host check API providers can serve a different model under the same id, and checks that read only outputs detect the swap unreliably (Cai et al., 2025). Versions, defaults and retirement dates can also differ by host. The host check compares the same model on each host the team uses.

What "problem" means A step marked "Problem found" means the check was done and found something the team should resolve. It blocks the switch on the eight blocking steps and stays visible on the rest. A problem on a non-blocking step stays in the exported record and holds the verdict below ready: with every blocking step clear, it reads ready, with open steps. Record what was found in the note field. A team that switches with a found problem records that in its release decision, and the step stays a problem here.

Questions

What does "ready" mean?

Ready means every blocking step is OK or marked not applicable. Whether the new model is worse than the old by more than your margin is the no-regression verdict's question. Non-blocking steps that are still open appear in the verdict as open steps.

Why do these eight steps block?

Each one guards against a failure that is hard to recover from after the switch. Unpinned snapshots let a model change silently. A missed retirement date leaves no time for the other steps. A baseline not captured before shutdown leaves nothing to compare against. A comparison without a frozen set or with a harness change mixed in answers two questions at once. An unchecked output contract lets parse failures into production. An unvalidated judge shifts the bar. A skipped safety set leaves the hardest requirements untested. A switch with no rollback path has no exit.

The old model is already gone. What now?

If the old model's retirement date has passed and the baseline has not been captured, the page warns that the old outputs cannot be regenerated from the provider. Capture what remains from logs or cached outputs, mark the baseline step not applicable with the reason, and the comparison runs against recorded history only. Every other step still applies.

How does this page relate to the rerun list on the change impact worksheet?

The change impact worksheet lists which eval suites to re-run for a model or provider swap and keeps a change record with rollback fields. This checklist tracks whether each step has been done, including the steps that sit outside a rerun: pinning snapshots, the retirement date, the baseline, the changelog, repricing tokens and checking each host. Use both together.

Why separate a harness change from a model change?

Running the old and new models through the same harness version, paired by case, isolates the model change. A harness change mixed in (a new grader, a changed prompt template, a different retry policy) makes the comparison answer two questions at once. If both changed, the harness migration page measures the harness offset separately.

When does the judge need re-validation?

Re-validate the judge when its prompt, criteria or model changed, or when its model now shares a family with the model it evaluates. A shared family means the judge may favor the evaluated model's style. If the judge and its model are unchanged and share no family, the step can be marked not applicable with a reason.

Why check each host?

A host can serve a cheaper or compressed model under the same id, and output-only checks detect the swap unreliably. Versions, defaults and retirement dates can also differ by host. If only one host is used, mark the step not applicable with that reason.

Where are answers kept?

Answers are kept in this browser on this device, for this page only, until you clear the data or press Start over. Export the checklist as JSON for a dated record, and import it on another device or after clearing your browser data. The file carries the form state; the page recomputes the verdict and dates.

Why compare cost per successful task?

A model with a lower price per token may cost more per successful task if its pass rate is lower or if it uses more tokens per output. Comparing cost per successful task shows whether the saving is real after accounting for retries and failures. The cost per successful task page computes it.

Export

Sources

  1. Are You Getting What You Pay For? Auditing Model Substitution in LLM APIsarXiv (Cai, Shi, Zhao and Song, 2025) Retrieved