Claude models are versioned, and pinning an exact model version string (rather than a loose, always-latest alias that can shift under you without a code change on your part) is what keeps a production feature's behaviour stable between deploys. Model output quality and even format habits — how strictly it follows a requested output schema, how verbose its default explanations are, how it handles an edge case in your prompt — can shift meaningfully between versions, even when the shift is an overall improvement in the aggregate. Treat a version bump the same way you'd treat upgrading any other dependency that materially changes behaviour: test against your own eval set (Domain 8) before rolling it out, not after discovering a regression in production.
Deprecation windows
Pinned model versions are eventually deprecated and retired on a published timeline, not removed without notice — which means pinning trades the risk of an unannounced behaviour shift for the responsibility of actively tracking deprecation announcements and migrating before a retirement date, rather than being silently auto-upgraded. A production system with no process for watching deprecation notices can end up scrambling at the last minute to requalify a new version under deadline pressure, which is a worse position than a planned, tested migration on your own schedule.
Rolling out gradually
For a feature with real usage volume, a staged rollout — a small percentage of traffic routed to the new model version, compared against the old version on real outcomes, before a full cutover — catches regressions a small offline eval set might miss, particularly ones that only show up on the long tail of real user inputs rather than the curated cases in your eval set. This is config-management discipline (Lesson 1.9) applied specifically to the model-version axis: the version string lives in config, which is what makes a percentage-based routing split between two versions straightforward to implement in the first place.
Key concept
"Latest" is convenient in development and risky in production. A feature that matters should know exactly which model version it's running, on purpose, and should have a deliberate, tested process for ever changing that.
What an eval set needs to catch before rollout
A pre-rollout eval set for a version change should specifically include the edge cases and format-sensitive prompts your feature depends on — not just a general sample of typical traffic. A feature that parses a strict JSON schema from Claude's output needs eval cases that check schema conformance under the new version specifically, since format adherence is exactly the kind of subtle behaviour that can shift between versions even when general answer quality improves. An eval set built only around "is the answer roughly right" can pass cleanly on a version bump that silently breaks a downstream parser expecting a specific structure.
Model aliases and dated version strings
Model identifiers typically come in two forms: a dated, immutable version string that always refers to exactly the same model behaviour indefinitely, and a rolling alias that Anthropic points at a newer underlying model over time without you changing anything in your own configuration. Aliases are convenient for local development and prototyping, where you want to pick up improvements automatically and don't yet have a production feature whose behaviour depends on staying fixed. The moment a feature is live and something downstream depends on its current behaviour, the dated version string is the correct choice specifically because it removes the possibility of an unannounced, un-opted-into change reaching production through the alias.
Communicating a version change beyond the engineering team
A model version rollout that changes user-visible behaviour — response tone, typical length, how it handles a known edge case — is a product change, not just an infrastructure change, even though nothing in the application's own code moved. Treating it purely as a backend deploy and skipping the usual change-communication a product change would get (a heads-up to support teams who field user complaints, a note in release communications, a rollback plan if user sentiment shifts) is a common gap: the eval set can look perfectly clean while the change still surprises people downstream of engineering who had no visibility into it happening.
Common exam distractor
An answer that frames a model version upgrade as purely a technical/backend concern, with no need for staged rollout or eval validation because "newer is presumably better," is a trap. Aggregate improvement across a general benchmark does not guarantee no regression on your specific feature's requirements.