Three kinds of version, three jobs
A platform ends up with three things called “version”. They do not overlap:
Canary and rollback live at the deployment revision layer; the registry does not duplicate them —
two places able to express “which one is running” would fork immediately.
Using it
Deployments follow the registry
Pick “model registry” as a deployment’s source and leave the version empty to follow production:sf model promote — the deployment never needs to know which training
run is behind it. Pin a specific one with "version": 3.
Relationship to the evaluation gate
Registering a version requires that the training run passed its evaluation gate (when one was declared). The registry is an asset catalogue; entering a run that explicitly fell short makes the gate’s verdict pointless. Admins can override (audited). Every version on the line carries the verdict from its training run — a number on a version line without an evaluation behind it is just a path.Versions are immutable: a version pins a run id and a weight path. To change weights, register a
new version. If a version already referenced by a deployment could change content, “which version is
live” would stop being an answerable question.Exactly one production version at a time: promoting a new one archives the previous. With two
marked production, the reason this table exists is gone.