---
name: Prepare Code Freeze
slug: prepare-code-freeze
category: DevOps
description: Prepare Code Freeze creates a NeMo Relay release branch, updates nightly alpha branch config, bumps main to the next version, and opens the required PR. Use it when starting or automating a code freeze.
github: "https://github.com/NVIDIA/NeMo-Relay/tree/main/.agents/skills/prepare-code-freeze"
language: Rust
stars: 165
forks: 67
install: "npx degit https://github.com/NVIDIA/NeMo-Relay/tree/main/.agents/skills/prepare-code-freeze ~/.claude/skills/prepare-code-freeze"
installs_to: ~/.claude/skills/prepare-code-freeze
source_path: .agents/skills/prepare-code-freeze/SKILL.md
collection_size: 25
category_size: 1075
collection_url: "https://dirskills.com/collections/NVIDIA/NeMo-Relay"
added: 2026-09-08T05:35:20.894Z
last_synced: 2026-09-08T05:35:20.894Z
canonical_url: "https://dirskills.com/skills/prepare-code-freeze"
---

# Prepare Code Freeze

Prepare Code Freeze creates a NeMo Relay release branch, updates nightly alpha branch config, bumps main to the next version, and opens the required PR. Use it when starting or automating a code freeze.

**Install:**

```bash
npx degit https://github.com/NVIDIA/NeMo-Relay/tree/main/.agents/skills/prepare-code-freeze ~/.claude/skills/prepare-code-freeze
```

## README

# Prepare Code Freeze

Use this skill when the user asks to start, prepare, or automate a NeMo Relay
code freeze.

## Companion Guidance

Use `update-project-version` for version bump semantics and `prepare-pr` before
opening the PR.

## Workflow

This workflow assumes `upstream` is the NVIDIA repository remote
(`NVIDIA/NeMo-Relay`). The `origin` remote can be a maintainer's personal fork.

1. Confirm or infer the target release version from `upstream/main:Cargo.toml`.
   Derive the release branch as `release/<major>.<minor>`.
2. Prompt for `<next-version>` if the user did not provide it. This is the
   version that `main` moves to after the release branch is cut.
3. Fetch the latest `main` and create the release branch from `upstream/main`:

   ```bash
   git fetch upstream main
   git branch release/<major>.<minor> upstream/main
   git push upstream release/<major>.<minor>
   ```

   If the remote release branch already exists, verify it points where expected
   before continuing.
4. Create a PR branch from latest `upstream/main`, for example
   `docs/code-freeze-<major>.<minor>`.
5. Update `.github/nightly-alpha-branches.yaml` to include the new release
   branch.
6. Run `just set-version <next-version>` to bump all release-versioned package
   surfaces on `main`.
   Regenerate the dynamic worker-plugin fixture lockfile so its path
   dependencies use the new workspace version:

   ```bash
   cargo generate-lockfile --manifest-path crates/core/tests/fixtures/worker_plugin/Cargo.toml
   ```
7. Search documentation source for references to the old version and update
   current-version install commands, package examples, and configuration
   examples to `<next-version>` where appropriate:

   ```bash
   rg -n '<old-version>' README.md docs fern --glob '!docs/_build/**' || true
   ```

   Review matches before changing them. Leave intentional historical references
   alone, such as release notes, changelogs, generated build output, and
   third-party dependency attribution entries.
8. Validate with targeted checks:

   ```bash
   ruby -e 'require "yaml"; YAML.load_file(".github/nightly-alpha-branches.yaml"); YAML.load_file(".github/workflows/nightly-alpha-tag.yaml")'
   just set-version <next-version>
   cargo generate-lockfile --manifest-path crates/core/tests/fixtures/worker_plugin/Cargo.toml
   cargo build --locked --manifest-path crates/core/tests/fixtures/worker_plugin/Cargo.toml
   rg -n '<old-version>' README.md docs fern --glob '!docs/_build/**' || true
   git diff --check
   ```

   Any remaining documentation matches for `<old-version>` should be intentional
   and called out in the PR description.
9. Open a PR targeting `main` using `.github/pull_request_template.md`. The PR
   must mention:
   - the new release branch
   - the nightly alpha branch config update
   - the `just set-version <next-version>` bump
   - documentation old-version reference updates or intentional leftovers
   - that release-bound PRs now target the new `release/*` branch

## Guardrails

- Do not create release tags. Code freeze only creates the branch and the main
  PR.
- Do not target the code-freeze PR at the release branch. It targets `main`.
- Do not leave uncommitted user changes mixed into the code-freeze PR branch.
