Release slime
Prepare a release without publishing, tagging, pushing images, or changing the
dependency baseline unless the user explicitly requests those external or
scope-expanding actions.
Establish the release baseline
- Inspect the worktree and preserve unrelated user changes.
- Compare the previous release tag and release commit to identify the current
repository conventions.
- Confirm the requested slime version and the current stable SGLang version
from
docker/Dockerfile and docker/README.md.
- Do not pull in an unmerged SGLang/Docker upgrade merely because a newer
branch exists. Treat that as a separate decision.
Update release versions
- Set the package version in
setup.py.
- Set the documentation version in
docs/conf.py.
- Bump
docker/version.txt to a unique image version following its existing
dated naming convention.
- Search the repository for the old slime version and review every remaining
occurrence instead of replacing unrelated dependency versions.
Freeze the stable Docker patches
- Treat
docker/patch/latest/ as the patch stack for the current Docker base.
- Snapshot it exactly into
docker/patch/<stable-sglang-version>/. At release
time, the two directories must contain the same patch filenames and bytes.
- Preserve older SGLang patch directories. Remove an obsolete file from the
current stable snapshot only after confirming it is absent from
latest.
- Verify the stable patch stack applies in Dockerfile order to clean checkouts
of the pinned SGLang and Megatron commits. Do not validate against a dirty
developer checkout.
Audit Docker and conda together
Compare build_conda.sh with docker/Dockerfile, docker/justfile, and the
stable patch snapshot. Check at least:
- SGLang version, commit, CUDA variant,
sglang-kernel, and sgl-deep-gemm;
- Megatron, torch-memory-saver, FlashQLA, and other shared source pins;
PATCH_VERSION, patch filenames, application order, optional patches, and
failure-on-conflict behavior;
- PyTorch, torchvision, torchaudio, CUDA Python, Transformer Engine, router,
NumPy, and SciPy pins;
- whether dependency resolution can undo a compatibility pin later in the
script; reassert and validate such pins after the resolving install;
- intentional differences such as conda being CUDA-12-only, omitting FA3, or
not rebuilding feature-specific DeepGEMM/DeepEP forks. Keep a difference
only when the release CI scope makes it intentional.
Prefer direct loops over duplicated patch-application blocks while preserving
required-versus-optional semantics and useful failure messages.
Validate before handoff
Run the checks that are available locally:
python .claude/skills/release/scripts/check_release.py --repo . --expected-version <version>;
python setup.py --version;
bash -n build_conda.sh;
- byte-for-byte comparison of
docker/patch/latest/ and the stable snapshot;
- patch parsing plus clean-checkout application against the pinned upstream
commits;
git diff --check and a final review of the complete release diff.
Run the release conda CI and relevant Docker builds when the environment and
requested scope permit. The conda workflow is selected by a PR title containing
[release]. Explicitly report any full build or GPU validation that was not run.
1---2name: release3description: Prepare and verify a slime release, including version bumps, stable Docker patch snapshots, Docker/conda dependency alignment, and release-specific validation. Use when cutting or auditing a slime release.4---56# Release slime78Prepare a release without publishing, tagging, pushing images, or changing the9dependency baseline unless the user explicitly requests those external or10scope-expanding actions.1112## Establish the release baseline1314- Inspect the worktree and preserve unrelated user changes.15- Compare the previous release tag and release commit to identify the current16 repository conventions.17- Confirm the requested slime version and the current stable SGLang version18 from `docker/Dockerfile` and `docker/README.md`.19- Do not pull in an unmerged SGLang/Docker upgrade merely because a newer20 branch exists. Treat that as a separate decision.2122## Update release versions2324- Set the package version in `setup.py`.25- Set the documentation version in `docs/conf.py`.26- Bump `docker/version.txt` to a unique image version following its existing27 dated naming convention.28- Search the repository for the old slime version and review every remaining29 occurrence instead of replacing unrelated dependency versions.3031## Freeze the stable Docker patches3233- Treat `docker/patch/latest/` as the patch stack for the current Docker base.34- Snapshot it exactly into `docker/patch/<stable-sglang-version>/`. At release35 time, the two directories must contain the same patch filenames and bytes.36- Preserve older SGLang patch directories. Remove an obsolete file from the37 current stable snapshot only after confirming it is absent from `latest`.38- Verify the stable patch stack applies in Dockerfile order to clean checkouts39 of the pinned SGLang and Megatron commits. Do not validate against a dirty40 developer checkout.4142## Audit Docker and conda together4344Compare `build_conda.sh` with `docker/Dockerfile`, `docker/justfile`, and the45stable patch snapshot. Check at least:4647- SGLang version, commit, CUDA variant, `sglang-kernel`, and `sgl-deep-gemm`;48- Megatron, torch-memory-saver, FlashQLA, and other shared source pins;49- `PATCH_VERSION`, patch filenames, application order, optional patches, and50 failure-on-conflict behavior;51- PyTorch, torchvision, torchaudio, CUDA Python, Transformer Engine, router,52 NumPy, and SciPy pins;53- whether dependency resolution can undo a compatibility pin later in the54 script; reassert and validate such pins after the resolving install;55- intentional differences such as conda being CUDA-12-only, omitting FA3, or56 not rebuilding feature-specific DeepGEMM/DeepEP forks. Keep a difference57 only when the release CI scope makes it intentional.5859Prefer direct loops over duplicated patch-application blocks while preserving60required-versus-optional semantics and useful failure messages.6162## Validate before handoff6364Run the checks that are available locally:6566- `python .claude/skills/release/scripts/check_release.py --repo .67 --expected-version <version>`;68- `python setup.py --version`;69- `bash -n build_conda.sh`;70- byte-for-byte comparison of `docker/patch/latest/` and the stable snapshot;71- patch parsing plus clean-checkout application against the pinned upstream72 commits;73- `git diff --check` and a final review of the complete release diff.7475Run the release conda CI and relevant Docker builds when the environment and76requested scope permit. The conda workflow is selected by a PR title containing77`[release]`. Explicitly report any full build or GPU validation that was not run.