Skip to content

Publish release-pinned sandbox base image refs #4052

@jyaunches

Description

@jyaunches

Problem

NemoClaw release tags pin the source checkout, but the sandbox base image is effectively floating.

Today .github/workflows/base-image.yaml publishes:

  • ghcr.io/nvidia/nemoclaw/sandbox-base:latest from main
  • short-SHA tags

It does not publish release/version tags such as v0.0.49, and release installers do not record a release-specific base digest.

That means installing an older release tag after main has moved can build the tagged Dockerfile on top of a newer sandbox-base:latest. This can break old installers when their Dockerfile patch logic assumes the OpenClaw/base shape that existed when the release was cut.

Recent example: openshell-gateway-upgrade-e2e attempted to create a v0.0.36 install as the old side of a v0.0.36 -> v0.0.49 upgrade test. The old installer resolved the current sandbox base containing OpenClaw 2026.5.18, then failed in rcf_patch.py because the compiled OpenClaw replaceConfigFile shape had drifted.

Proposal

Add release-stable base-image resolution so release installs are reproducible. Possible designs:

  1. Publish versioned base-image tags from .github/workflows/base-image.yaml, e.g.
    • ghcr.io/nvidia/nemoclaw/sandbox-base:v0.0.49
    • ghcr.io/nvidia/nemoclaw/hermes-sandbox-base:v0.0.49
  2. Or record the base image digest used for each release and make installers prefer that digest when installing a release tag.
  3. Or both: publish version tags and record the digest in release metadata/artifacts for auditability.

Acceptance criteria

  • Installing a release tag uses a deterministic sandbox base ref/digest associated with that release.
  • The base-image workflow supports release/version tagging or an equivalent release digest artifact.
  • Upgrade E2Es can explicitly model historical release installs without depending on the mutable current sandbox-base:latest.
  • Documentation explains how release tags, short-SHA base tags, and latest interact.

Context

Current behavior is source-version pinned but base-image floating. That is useful for freshness, but it makes old-release upgrade tests and user installs sensitive to unrelated future base changes.

Metadata

Metadata

Assignees

Labels

area: ciCI workflows, checks, release automation, or GitHub Actionsarea: e2eEnd-to-end tests, nightly failures, or validation infrastructure

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions