Skip to main content

Canary Promotion

Blueprint · ← Gateway task routing · Canary promotion

A new model revision does not become production by updating a URL. It enters the capability matrix as canary, passes eval, then earns stable.

THE CLAIM

Swap the endpoint the same way you promote a route table: version, eval, pin, rollback. Console-only model changes are not a release process.

Promotion sequence

  1. Register the new endpoint in the catalog (revision, region, data class)
  2. Attach it as canary on the target profile_id + task (bump matrix_version)
  3. Run the offline golden suite for that profile and task
  4. Split a small share of live traffic to canary (same filters as stable)
  5. Compare quality, latency, cost, and abstain rate against stable
  6. On pass: repoint stable, drop or keep canary for the next candidate
  7. On fail: remove canary from the matrix; stable is unchanged

Offline gate (before live split)

Align scoring with Eval Reasoning plane for plan/synthesize quality. Task routing correctness is a gateway test, not a judge score.

GateBar
Golden task setNo regression vs current stable (baseline − 1% max)
Safety / abstain fixtures100% expected abstain or block
Schema / tool-proposal well-formedness100% on structured tasks
Cost estimateAt or under profile max_cost_usd_per_1k_tokens

Attach eval_run_id to the change record that bumps matrix_version.

Online follow-up

SignalAction
Quality drop vs stableHalt split; keep stable
Latency or error rate over SLOHalt split
Cost per call over capHalt split even if quality is better
Abstain rate spikeCheck filter; do not widen data class to recover volume
Shadow disagreement (canary ≠ stable)Sample for human review before promote

Canary sees the same data class, region, and entitlements as stable. A canary that only runs on public traffic is not evidence for confidential.

Rollback

EventAction
Canary failingDelete canary pointer; no stable change
Bad stable after promoteRepoint stable to prior endpoint id; bump matrix_version
Provider yank / CVERemove endpoint from catalog; matrix publish; in-flight pins keep old id until session ends

In-flight sessions keep the matrix_version they pinned. New requests take active. Same rule as route table lifecycle.

Change record

Every matrix publish includes:

  • matrix_version
  • eval_run_id
  • Profile + task ids touched
  • stable and canary endpoint ids before and after
  • Approver (governance for model approval; platform for publish)

Failure classes

FailureSymptom
Swap model URL in app configNo eval, no rollback pointer
Canary on a weaker data classFalse confidence at promote
Promote on latency aloneQuality regression in production
No eval_run_id on the changeCannot prove the gate ran

Trace fields

matrix_version, model_route_id, canary, eval_run_id, stable_endpoint_id, canary_endpoint_id

G.A.I.N LLM → · Eval Reasoning plane · Agents overview