diff --git a/docs/get-started/dgx-station-preparation.mdx b/docs/get-started/dgx-station-preparation.mdx index fb96a758e68..2613f6cca07 100644 --- a/docs/get-started/dgx-station-preparation.mdx +++ b/docs/get-started/dgx-station-preparation.mdx @@ -35,7 +35,7 @@ NemoClaw also recognizes these exact no-OTA factory profiles for bounded qualifi Each profile requires `DGX_PLATFORM=DGX Server for GALAXY-GB300`, requires every `DGX_OTA_*` field to be absent, and requires every profile-specific field below: - April 2026 NVIDIA Colossus BaseOS with `DGX_PRETTY_NAME=NVIDIA DGX Server`, `DGX_SWBUILD_VERSION=7.5.0-GB300ws-GB200ws`, and `DGX_SWBUILD_DATE=2026-04-02-08-20-16`. -- June 2026 NVIDIA AI Developer Tools with `DGX_PRETTY_NAME=NVIDIA DGX GB300WS`, `DGX_SWBUILD_VERSION=7.5.0`, and `DGX_SWBUILD_DATE=2026-06-16-11-48-10`. +- May and June 2026 NVIDIA AI Developer Tools with `DGX_PRETTY_NAME=NVIDIA DGX GB300WS`, `DGX_SWBUILD_VERSION=7.5.0`, and `DGX_SWBUILD_DATE` set to `2026-05-13-18-42-38` or `2026-06-16-11-48-10`. By default, an unknown version, malformed or unsafe marker, unmatched no-OTA factory image, or other Station generation stops before host preparation. On an unqualified system, set `NEMOCLAW_PROVIDER` or `NEMOCLAW_NO_EXPRESS=1` explicitly to continue without Station host automation. @@ -154,7 +154,8 @@ The Colossus BaseOS path still blocks on `packagekitd`, while generic Ubuntu qui When that CDI device is missing, the AI Developer Tools path first confirms that no workloads are active, then enables the packaged `nvidia-cdi-refresh.path` and `nvidia-cdi-refresh.service` units, starts the path unit, restarts the refresh service, and checks the device again. It stops with service diagnostics if packaged refresh fails or omits the device. It never generates CDI directly, rewrites the Docker runtime, or restarts Docker or containerd. -This compatibility repair is owned by the June 2026 AI Developer Tools factory-image boundary, which can leave its packaged CDI units disabled; it can be removed after repeat clean-host qualification shows that the qualified image consistently advertises `nvidia.com/gpu=all` at boot. +The qualified May and June 2026 AI Developer Tools factory-image boundary defines this compatibility repair because those images can leave their packaged CDI units disabled. +NemoClaw maintainers can remove the repair after repeated clean-host qualification confirms that the qualified images consistently advertise `nvidia.com/gpu=all` at boot. The Colossus BaseOS path requires the exact reviewed package and failed-service fingerprints, preserves the factory kernel, driver, DKMS, Docker, and NVIDIA Container Toolkit packages, and prepares only Docker access and packaged CDI. Only the Colossus BaseOS path registers the NVIDIA Docker runtime when the launch probe proves that the runtime is missing, and it restores the prior daemon configuration if registration fails. The preparation helper writes a private audit log under `~/station-bootstrap-logs`. diff --git a/scripts/prepare-dgx-station-host.sh b/scripts/prepare-dgx-station-host.sh index a9ec9d506e5..146f62ab6eb 100755 --- a/scripts/prepare-dgx-station-host.sh +++ b/scripts/prepare-dgx-station-host.sh @@ -277,7 +277,8 @@ dgx_station_release_profile() { "NVIDIA DGX Server|7.5.0-GB300ws-GB200ws|2026-04-02-08-20-16") printf '%s' supported-colossus-baseos ;; - "NVIDIA DGX GB300WS|7.5.0|2026-06-16-11-48-10") + "NVIDIA DGX GB300WS|7.5.0|2026-05-13-18-42-38" | \ + "NVIDIA DGX GB300WS|7.5.0|2026-06-16-11-48-10") printf '%s' supported-ai-developer-tools ;; *) return 1 ;; @@ -2415,10 +2416,10 @@ verify_dgx_os_runtime_sudo() { || fatal "The local Docker daemon is not reachable with sudo on the Station factory image" station_sudo_local_default_docker buildx version >/dev/null 2>&1 \ || fatal "Docker Buildx is unavailable on the Station factory image" - # The June 2026 AI Developer Tools factory image can leave its packaged CDI - # refresh units disabled. Image production owns that source state; remove - # this repair after clean-host qualification consistently supplies the CDI - # device at boot. + # The qualified May and June 2026 AI Developer Tools factory images can leave + # their packaged CDI refresh units disabled. Image production owns that + # source state; remove this repair after clean-host qualification consistently + # supplies the CDI device at boot. if [[ "$STATION_HOST_PROFILE" == "ai-developer-tools" ]]; then if sudo nvidia-ctk cdi list | grep -Fxq 'nvidia.com/gpu=all'; then info "cdi=nvidia.com/gpu=all source=factory_runtime" diff --git a/src/lib/readiness/platform-qualification.test.ts b/src/lib/readiness/platform-qualification.test.ts index 4745409bb81..a784af587ce 100644 --- a/src/lib/readiness/platform-qualification.test.ts +++ b/src/lib/readiness/platform-qualification.test.ts @@ -388,6 +388,17 @@ describe("platform readiness qualification (#7410)", () => { }); }); + it("classifies the exact GB300WS 7.5.0 build 2026-05-13-18-42-38 as supported-ai-developer-tools (#7979)", () => { + expect( + collectStationIdentity( + noOtaStationRelease({ version: "7.5.0", buildDate: "2026-05-13-18-42-38" }), + ), + ).toMatchObject({ + stationProfile: "supported-ai-developer-tools", + stationGb300PciGpu: true, + }); + }); + it.each([ ["different lineage", { prettyName: "NVIDIA DGX Server" }], ["older no-OTA version", { version: "7.5.0" }], diff --git a/src/lib/readiness/platform-qualification.ts b/src/lib/readiness/platform-qualification.ts index 0c20163a430..5f297e7d93a 100644 --- a/src/lib/readiness/platform-qualification.ts +++ b/src/lib/readiness/platform-qualification.ts @@ -187,6 +187,9 @@ function parseStationRelease(contents: string): StationProfile { if (identity === "NVIDIA DGX GB300WS|7.5.0|2026-06-16-11-48-10") { return "supported-ai-developer-tools"; } + if (identity === "NVIDIA DGX GB300WS|7.5.0|2026-05-13-18-42-38") { + return "supported-ai-developer-tools"; + } return "unsupported-dgx-os"; } diff --git a/test/install-express-prompt.test.ts b/test/install-express-prompt.test.ts index d4f79c87f56..e48b9ed7c2a 100644 --- a/test/install-express-prompt.test.ts +++ b/test/install-express-prompt.test.ts @@ -1189,6 +1189,17 @@ detect_express_platform expect(result.stdout).toBe("DGX Station"); }); + it("classifies the exact GB300WS 7.5.0 build 2026-05-13-18-42-38 as Station Express (#7979)", () => { + const release = noOtaFactoryRelease("ai-developer-tools").replace( + "2026-06-16-11-48-10", + "2026-05-13-18-42-38", + ); + const result = detectExpressPlatformForStockDgxRelease("DGX Station GB300", release); + + expect(result.status, `${result.stdout}${result.stderr}`).toBe(0); + expect(result.stdout).toBe("DGX Station"); + }); + it("requires explicit intent before treating unrecognized metadata as Station Express", () => { const releasePath = path.join( fs.mkdtempSync(path.join(os.tmpdir(), "nemoclaw-dgx-release-force-")), diff --git a/test/install-station-dgx-os.test.ts b/test/install-station-dgx-os.test.ts index a7358c5e0cd..9393bd29a14 100644 --- a/test/install-station-dgx-os.test.ts +++ b/test/install-station-dgx-os.test.ts @@ -198,9 +198,24 @@ describe("DGX Station stock DGX OS classification", () => { }); it.each([ - ["supported-colossus-baseos", writeNoOtaFactoryRelease("colossus-baseos")], - ["supported-ai-developer-tools", writeNoOtaFactoryRelease("ai-developer-tools")], - ])("accepts the exact no-OTA factory profile as %s", (expected, release) => { + [ + "April 2026 Colossus BaseOS", + "supported-colossus-baseos", + writeNoOtaFactoryRelease("colossus-baseos"), + ], + [ + "June 2026 AI Developer Tools", + "supported-ai-developer-tools", + writeNoOtaFactoryRelease("ai-developer-tools"), + ], + [ + "May 2026 AI Developer Tools build 2026-05-13-18-42-38", + "supported-ai-developer-tools", + writeNoOtaFactoryRelease("ai-developer-tools", { + buildDate: "2026-05-13-18-42-38", + }), + ], + ])("accepts the exact no-OTA %s profile as %s", (_scenario, expected, release) => { const { result, output } = runSourced( STATION_PREPARE, `