The steps
1
Build the execution artifact
Build the training image for the new version (K8s/Docker: OCI digest-pinned) or SIF/SQSH (Slurm), publish it to the runtime registry, and assign a
runtime_id.2
Declare the version variant
Add a new version entry under
runtime.versions in the recipe YAML: runtime_id, dependencies, and the version-bound differences — entrypoint override (entrypoint), parameter path overrides (path_overrides), and certified observer patch versions (observer_versions).3
Run adaptation tests
SDK unit tests cover the version matrix (entrypoint / parameter paths / observers asserted per version); full regression via
tests/.4
Canary release
Do not make the new version
default_version at first: early adopters opt in explicitly with tp new --framework-version X / tp recipe upgrade --framework-version X. Switch the default once it is stable.5
User upgrade
After the catalog is published, existing experiment locks show drift hints; users upgrade explicitly with
tp recipe upgrade — there is no silent switching.Framework-specific notes
What not to do
Three things that look like shortcuts and are not:Check it worked
RUNNING and reports its first metric means the image, the entrypoint and the
observer all line up.