From b144623744fe9d0c10378e5fbcb7d7b88f41e605 Mon Sep 17 00:00:00 2001 From: Jason McCartney Date: Mon, 12 Oct 2026 15:36:48 -0700 Subject: [PATCH 1/2] atlas-sparkglm: pin SparkGLM 93d220b0 (engine sparkglm/atlas-20261012-rc4.2-layered; image 246a3a948ab9): a repeat notice instead of masking tool calls Digest ghcr.io/enntity/atlas-sparkglm@sha256:e4d313b5e32c47545eab0059eea65a38e65d03fc8e0d5b8c2cfb497c39f0372a, install tree 246a3a948ab98d19e085bfd39797e554f0ee9261, engine dfb9c26a (tree 89e392a3) = RC4.1 + d8a55e0f. Co-Authored-By: Claude Opus 5.5 --- THIRD_PARTY_NOTICES.md | 4 ++-- backends/atlas-sparkglm/README.md | 10 +++++----- backends/atlas-sparkglm/pins.json | 8 ++++---- docs/recipes.md | 8 ++++---- recipes/linux-nvidia-dgx-spark-2x-glm53-atlas.json | 8 ++++---- test/atlas-sparkglm-recipe.test.mjs | 12 ++++++------ 6 files changed, 25 insertions(+), 25 deletions(-) diff --git a/THIRD_PARTY_NOTICES.md b/THIRD_PARTY_NOTICES.md index 2672cf7..d78d2df 100644 --- a/THIRD_PARTY_NOTICES.md +++ b/THIRD_PARTY_NOTICES.md @@ -158,14 +158,14 @@ The optional Atlas SparkGLM lane in `backends/atlas-sparkglm` and `recipes/linux-nvidia-dgx-spark-2x-glm53-atlas.json` pulls or builds the container image `ghcr.io/enntity/atlas-sparkglm` from [Enntity/sparkglm](https://github.com/Enntity/sparkglm) at -`401a5c272648ea78dc8b4cab9039301c41bb9c41`. LLooM starts that image as a +`93d220b058921f83c253a3a5544c44f141490989`. LLooM starts that image as a separate program; no engine source or binary is included in the LLooM npm package, and LLooM's files for the lane remain MIT. - Engine: [Atlas](https://github.com/Atlas-Inf/atlas) (Atlas-Inf) with SparkGLM's GLM-5.3 Flash work on the [Enntity/atlas](https://github.com/Enntity/atlas) fork, at - [`301479a20612c91243266a3fc7eea3100b99ad59`](https://github.com/Enntity/atlas/tree/301479a20612c91243266a3fc7eea3100b99ad59) + [`dfb9c26a95c96faa9f94c44e23343b0f2b4f9db6`](https://github.com/Enntity/atlas/tree/dfb9c26a95c96faa9f94c44e23343b0f2b4f9db6) (recorded in the image's `/opt/atlas/source-manifest.json`) - License: AGPL-3.0-only. The corresponding source is Enntity/sparkglm at the revision above plus that Enntity/atlas commit; SparkGLM's `NOTICE` and diff --git a/backends/atlas-sparkglm/README.md b/backends/atlas-sparkglm/README.md index a8e6b4b..2e40bdf 100644 --- a/backends/atlas-sparkglm/README.md +++ b/backends/atlas-sparkglm/README.md @@ -3,7 +3,7 @@ LLooM-managed two-node Atlas SparkGLM candidate for a directly connected pair of NVIDIA DGX Spark systems. This directory is **MIT orchestration only**: no Atlas engine source is committed here. The engine image is built from immutable -revision `401a5c272648ea78dc8b4cab9039301c41bb9c41` of `Enntity/sparkglm` by +revision `93d220b058921f83c253a3a5544c44f141490989` of `Enntity/sparkglm` by that repository's `install/build.sh`. The engine inside the image is AGPL-3.0-only; see [Credits and licenses](#credits-and-licenses). Live hardware and full serving qualification remain pending. @@ -26,7 +26,7 @@ and full serving qualification remain pending. install-tree label is a contents check, not an artifact identity. - `install.sh` — prepares the image. The normal path reuses an already verified local image, otherwise pulls the immutable manifest digest - `ghcr.io/enntity/atlas-sparkglm@sha256:0ddea7cdb372e4407db63dc4f2b5b1a08b4576b8223ded6a4fca3463439ccfb2` + `ghcr.io/enntity/atlas-sparkglm@sha256:e4d313b5e32c47545eab0059eea65a38e65d03fc8e0d5b8c2cfb497c39f0372a` from GHCR. It never pulls the mutable tag, and a failed pinned digest pull is a hard failure with no silent source build. The explicit `--source-build` option instead clones `Enntity/sparkglm` at the pinned revision, checks that @@ -122,7 +122,7 @@ Inside the image: share one physical FP8-latent KV pool, split between the nodes by `SPARKGLM_KV_SHARD=1` (about 2.38M tokens at the recipe's 0.91 GPU memory utilization with the display carveout and the disk prefix cache, up to 1,048,576 per request with `SPARKGLM_PROFILE=4x1m`; it also holds the prefix cache, with 16 recurrent-state snapshot slots); it does not reserve four full windows. `disable-tool-grammar` is deliberately **not** set, so structured output and tool grammar stay functional. The engine is built from - Enntity/atlas `sparkglm/atlas-20261012-rc4.1-layered` @ `301479a2` (recorded in the + Enntity/atlas `sparkglm/atlas-20261012-rc4.2-layered` @ `dfb9c26a` (recorded in the image's `/opt/atlas/source-manifest.json`); measured results are in Enntity/sparkglm `results/2026-09-30-decode-step/` (this engine) and `results/2026-09-30-nvme-tier/` (this image). @@ -235,9 +235,9 @@ is not part of LLooM: `ghcr.io/enntity/atlas-sparkglm`, alongside LLooM (an aggregate); no engine source or binary is included in LLooM. - **Corresponding source.** [Enntity/sparkglm](https://github.com/Enntity/sparkglm) - at the pinned revision (`401a5c27`) plus the Enntity/atlas commit recorded + at the pinned revision (`93d220b0`) plus the Enntity/atlas commit recorded in the image's `/opt/atlas/source-manifest.json` - ([`301479a2`](https://github.com/Enntity/atlas/tree/301479a20612c91243266a3fc7eea3100b99ad59)). + ([`dfb9c26a`](https://github.com/Enntity/atlas/tree/dfb9c26a95c96faa9f94c44e23343b0f2b4f9db6)). SparkGLM's `NOTICE` and `docs/LICENSING.md` list everything else it fetches. - **Third-party notices in the image.** FlashKDA (MoonshotAI, MIT), FlashInfer including NVIDIA's sparse-MLA prefill source (Apache-2.0) and CUTLASS diff --git a/backends/atlas-sparkglm/pins.json b/backends/atlas-sparkglm/pins.json index 0584520..ee9fcae 100644 --- a/backends/atlas-sparkglm/pins.json +++ b/backends/atlas-sparkglm/pins.json @@ -4,14 +4,14 @@ "note": "Single pin manifest for the Atlas SparkGLM candidate. Portable source, image, model and converter identities are final for this candidate; live hardware and serving qualification remains pending. The normal install path addresses image.reference, the immutable GHCR manifest digest. The tag is retained as source-build metadata (it derives from the git tree of install/ at the pinned revision) and as the local tag produced by an explicit --source-build; the install-tree label is a contents check. A tag or label alone is never the artifact identity.", "source": { "repo": "Enntity/sparkglm", - "revision": "401a5c272648ea78dc8b4cab9039301c41bb9c41", - "installTree": "cfb463a952b517b87baf302b5b3b279a115c5626", + "revision": "93d220b058921f83c253a3a5544c44f141490989", + "installTree": "246a3a948ab98d19e085bfd39797e554f0ee9261", "cloneUrl": "https://github.com/Enntity/sparkglm.git", "buildScript": "install/build.sh" }, "image": { - "reference": "ghcr.io/enntity/atlas-sparkglm@sha256:0ddea7cdb372e4407db63dc4f2b5b1a08b4576b8223ded6a4fca3463439ccfb2", - "tag": "ghcr.io/enntity/atlas-sparkglm:cfb463a952b5", + "reference": "ghcr.io/enntity/atlas-sparkglm@sha256:e4d313b5e32c47545eab0059eea65a38e65d03fc8e0d5b8c2cfb497c39f0372a", + "tag": "ghcr.io/enntity/atlas-sparkglm:246a3a948ab9", "label": "io.enntity.sparkglm.install-tree", "entrypoint": "/opt/atlas/serve.py", "profilePath": "/opt/atlas/profiles/4x1m.json", diff --git a/docs/recipes.md b/docs/recipes.md index bd17b3c..b44d18c 100644 --- a/docs/recipes.md +++ b/docs/recipes.md @@ -374,11 +374,11 @@ the git tree of its `install/` directory, the immutable image manifest reference (`image.reference`) with the tag kept as source-build metadata and the install-tree contents label, the `nvidia/GLM-5.3-Flash-NVFP4` and drafter revisions, and the conversion marker contract. The current source pin is product revision -`401a5c272648ea78dc8b4cab9039301c41bb9c41` with install tree -`cfb463a952b517b87baf302b5b3b279a115c5626`, so the normal install path +`93d220b058921f83c253a3a5544c44f141490989` with install tree +`246a3a948ab98d19e085bfd39797e554f0ee9261`, so the normal install path addresses the immutable digest -`ghcr.io/enntity/atlas-sparkglm@sha256:0ddea7cdb372e4407db63dc4f2b5b1a08b4576b8223ded6a4fca3463439ccfb2`. -The tag `ghcr.io/enntity/atlas-sparkglm:cfb463a952b5` is source-build metadata +`ghcr.io/enntity/atlas-sparkglm@sha256:e4d313b5e32c47545eab0059eea65a38e65d03fc8e0d5b8c2cfb497c39f0372a`. +The tag `ghcr.io/enntity/atlas-sparkglm:246a3a948ab9` is source-build metadata (first 12 characters of the install tree) and is never pulled; a tag alone is not an immutable artifact identity. A later product revision is adopted by changing the revision, the install tree, the derived tag and the pinned digest. diff --git a/recipes/linux-nvidia-dgx-spark-2x-glm53-atlas.json b/recipes/linux-nvidia-dgx-spark-2x-glm53-atlas.json index 5fa52d6..118cd9d 100644 --- a/recipes/linux-nvidia-dgx-spark-2x-glm53-atlas.json +++ b/recipes/linux-nvidia-dgx-spark-2x-glm53-atlas.json @@ -14,7 +14,7 @@ "provenance": { "createdBy": "lloom", "generatedBy": "manual-curated", - "source": "Atlas SparkGLM candidate at product revision 401a5c272648ea78dc8b4cab9039301c41bb9c41 (engine Enntity/atlas sparkglm/atlas-20261012-rc4.1-layered @ 301479a2, AGPL-3.0-only, recorded in the image's /opt/atlas/source-manifest.json; corresponding source is Enntity/sparkglm at that revision plus that Enntity/atlas commit). The normal install path pulls the immutable GHCR manifest digest ghcr.io/enntity/atlas-sparkglm@sha256:0ddea7cdb372e4407db63dc4f2b5b1a08b4576b8223ded6a4fca3463439ccfb2; the tag ghcr.io/enntity/atlas-sparkglm:cfb463a952b5 is source-build metadata and is never pulled. Each host verifies the pulled image's io.enntity.sparkglm.install-tree contents label equals install tree cfb463a952b517b87baf302b5b3b279a115c5626 and the image is arm64; the label is a contents check, not an artifact identity. An explicit --source-build builds from Enntity/sparkglm install/ at that revision and produces a LOCAL tag for an explicitly overridden local recipe only, and does not satisfy the normal immutable recipe. Model nvidia/GLM-5.3-Flash-NVFP4 revision 423acf37583782c51c142d145aef733d72943d93 requires a once-per-node overlay conversion gated on conversion.complete.json plus verification; the DFlash2 drafter incoai/GLM-5.3-Flash-DFlash2 revision 7d74cdd881ed7e32c31175984a67823127b66cfe (CC BY-NC-ND 4.0, non-commercial) is served from its checkpoint. The engine argument vector ships inside the image as /opt/atlas/profiles/4x1m.json, selected with SPARKGLM_PROFILE=4x1m, not in this recipe. The profile carries 1048576-token contexts, four sequences sharing one physical KV pool (GLM latent in FP8 with per-128 scales, split between the two nodes by SPARKGLM_KV_SHARD=1, qualified at about 2.38M tokens at the recipe's 0.91 GPU memory utilization with the display carveout, which overrides the profile default of 0.88, and shared with the disk prefix cache; the 48 GiB disk prefix-cache tier is enabled beside the shard, split into 24 GiB KV and 24 GiB SSM tiers per node), FP32 SSM state with KDA record rollback, and DFlash2 (gamma 8) on the head rank; disable-tool-grammar is deliberately not set so structured output and tools stay functional." + "source": "Atlas SparkGLM candidate at product revision 93d220b058921f83c253a3a5544c44f141490989 (engine Enntity/atlas sparkglm/atlas-20261012-rc4.2-layered @ dfb9c26a, AGPL-3.0-only, recorded in the image's /opt/atlas/source-manifest.json; corresponding source is Enntity/sparkglm at that revision plus that Enntity/atlas commit). The normal install path pulls the immutable GHCR manifest digest ghcr.io/enntity/atlas-sparkglm@sha256:e4d313b5e32c47545eab0059eea65a38e65d03fc8e0d5b8c2cfb497c39f0372a; the tag ghcr.io/enntity/atlas-sparkglm:246a3a948ab9 is source-build metadata and is never pulled. Each host verifies the pulled image's io.enntity.sparkglm.install-tree contents label equals install tree 246a3a948ab98d19e085bfd39797e554f0ee9261 and the image is arm64; the label is a contents check, not an artifact identity. An explicit --source-build builds from Enntity/sparkglm install/ at that revision and produces a LOCAL tag for an explicitly overridden local recipe only, and does not satisfy the normal immutable recipe. Model nvidia/GLM-5.3-Flash-NVFP4 revision 423acf37583782c51c142d145aef733d72943d93 requires a once-per-node overlay conversion gated on conversion.complete.json plus verification; the DFlash2 drafter incoai/GLM-5.3-Flash-DFlash2 revision 7d74cdd881ed7e32c31175984a67823127b66cfe (CC BY-NC-ND 4.0, non-commercial) is served from its checkpoint. The engine argument vector ships inside the image as /opt/atlas/profiles/4x1m.json, selected with SPARKGLM_PROFILE=4x1m, not in this recipe. The profile carries 1048576-token contexts, four sequences sharing one physical KV pool (GLM latent in FP8 with per-128 scales, split between the two nodes by SPARKGLM_KV_SHARD=1, qualified at about 2.38M tokens at the recipe's 0.91 GPU memory utilization with the display carveout, which overrides the profile default of 0.88, and shared with the disk prefix cache; the 48 GiB disk prefix-cache tier is enabled beside the shard, split into 24 GiB KV and 24 GiB SSM tiers per node), FP32 SSM state with KDA record rollback, and DFlash2 (gamma 8) on the head rank; disable-tool-grammar is deliberately not set so structured output and tools stay functional." }, "links": [ { @@ -23,7 +23,7 @@ }, { "rel": "engine", - "href": "https://github.com/Enntity/atlas/tree/301479a20612c91243266a3fc7eea3100b99ad59" + "href": "https://github.com/Enntity/atlas/tree/dfb9c26a95c96faa9f94c44e23343b0f2b4f9db6" }, { "rel": "engine-upstream", @@ -284,7 +284,7 @@ "warmup": false, "bootstrap": { "adapter": "docker", - "image": "ghcr.io/enntity/atlas-sparkglm@sha256:0ddea7cdb372e4407db63dc4f2b5b1a08b4576b8223ded6a4fca3463439ccfb2", + "image": "ghcr.io/enntity/atlas-sparkglm@sha256:e4d313b5e32c47545eab0059eea65a38e65d03fc8e0d5b8c2cfb497c39f0372a", "pull": false, "pullTimeoutMs": 3600000, "createArgs": [ @@ -441,7 +441,7 @@ }, "bootstrap": { "adapter": "docker", - "image": "ghcr.io/enntity/atlas-sparkglm@sha256:0ddea7cdb372e4407db63dc4f2b5b1a08b4576b8223ded6a4fca3463439ccfb2", + "image": "ghcr.io/enntity/atlas-sparkglm@sha256:e4d313b5e32c47545eab0059eea65a38e65d03fc8e0d5b8c2cfb497c39f0372a", "pull": false, "pullTimeoutMs": 3600000, "createArgs": [ diff --git a/test/atlas-sparkglm-recipe.test.mjs b/test/atlas-sparkglm-recipe.test.mjs index a2306eb..f247f75 100644 --- a/test/atlas-sparkglm-recipe.test.mjs +++ b/test/atlas-sparkglm-recipe.test.mjs @@ -469,18 +469,18 @@ assert.equal(pins.model.revision, '423acf37583782c51c142d145aef733d72943d93'); assert.equal(pins.model.repo, 'nvidia/GLM-5.3-Flash-NVFP4'); assert.equal(pins.source.repo, 'Enntity/sparkglm'); assert.equal(pins.status, 'final'); -assert.equal(pins.source.revision, '401a5c272648ea78dc8b4cab9039301c41bb9c41'); -assert.equal(pins.source.installTree, 'cfb463a952b517b87baf302b5b3b279a115c5626'); +assert.equal(pins.source.revision, '93d220b058921f83c253a3a5544c44f141490989'); +assert.equal(pins.source.installTree, '246a3a948ab98d19e085bfd39797e554f0ee9261'); assert.equal(pins.source.buildScript, 'install/build.sh'); // The normal install path addresses the immutable registry digest, not the // mutable tag. The tag stays as source-build metadata only. assert.equal( pins.image.reference, - 'ghcr.io/enntity/atlas-sparkglm@sha256:0ddea7cdb372e4407db63dc4f2b5b1a08b4576b8223ded6a4fca3463439ccfb2' + 'ghcr.io/enntity/atlas-sparkglm@sha256:e4d313b5e32c47545eab0059eea65a38e65d03fc8e0d5b8c2cfb497c39f0372a' ); assert.match(pins.image.reference, IMAGE_REFERENCE_PATTERN); assert.equal(pins.image.reference.split('@')[0], IMAGE_REPOSITORY); -assert.equal(pins.image.tag, 'ghcr.io/enntity/atlas-sparkglm:cfb463a952b5'); +assert.equal(pins.image.tag, 'ghcr.io/enntity/atlas-sparkglm:246a3a948ab9'); assert.equal(pins.image.label, 'io.enntity.sparkglm.install-tree'); assert.equal(pins.image.architecture, 'arm64'); assert.equal(pins.image.entrypoint, '/opt/atlas/serve.py'); @@ -488,7 +488,7 @@ assert.equal(pins.image.entrypoint, '/opt/atlas/serve.py'); assert(!Object.hasOwn(pins, 'installer')); assert(!Object.hasOwn(pins.image, 'tagPrefix')); assert.notEqual(pins.image.reference, pins.image.tag, 'the digest must not be the mutable tag'); -assert(!pins.image.reference.includes(':cfb463a952b5'), 'the tag must never appear as the pulled reference'); +assert(!pins.image.reference.includes(':246a3a948ab9'), 'the tag must never appear as the pulled reference'); assert(pins.overlay.marker.includes('conversion.complete.json')); assert.deepEqual(verifyPins(pins), []); @@ -780,7 +780,7 @@ assert.match(missingImageContract.stderr, /missing the Atlas entrypoint\/profile for (const identity of [`arm64 ${'f'.repeat(40)}`, `amd64 ${pins.source.installTree}`, 'arm64 ']) { const mismatched = runInstaller({ ...fakeEnv, ATLAS_TEST_IDENTITY: identity }, ['--check-only']); assert.notEqual(mismatched.status, 0, `--check-only must reject image identity ${identity}`); - assert.match(mismatched.stderr, /expected 'arm64 cfb463a952b517b87baf302b5b3b279a115c5626'/); + assert.match(mismatched.stderr, /expected 'arm64 246a3a948ab98d19e085bfd39797e554f0ee9261'/); } const noImageDir = fs.mkdtempSync(path.join(converterRoot, 'no-image-')); const checkedMissingImage = runInstaller({ ...fakeEnv, ATLAS_TEST_IMAGE_DIR: noImageDir }, ['--check-only']); From 94b6e74691e379e7cd4d2e1ecc8acd6ea16bd350 Mon Sep 17 00:00:00 2001 From: Jason McCartney Date: Mon, 12 Oct 2026 16:09:55 -0700 Subject: [PATCH 2/2] atlas-sparkglm: repin the SparkGLM source revision to its merge commit 3c7d6714 Enntity/sparkglm#47 merged as 3c7d6714; its install tree is unchanged (246a3a948ab9), so the image, tag and digest stay the same. Co-Authored-By: Claude Opus 5.5 --- THIRD_PARTY_NOTICES.md | 2 +- backends/atlas-sparkglm/README.md | 4 ++-- backends/atlas-sparkglm/pins.json | 2 +- docs/recipes.md | 2 +- recipes/linux-nvidia-dgx-spark-2x-glm53-atlas.json | 2 +- test/atlas-sparkglm-recipe.test.mjs | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/THIRD_PARTY_NOTICES.md b/THIRD_PARTY_NOTICES.md index d78d2df..778c0ba 100644 --- a/THIRD_PARTY_NOTICES.md +++ b/THIRD_PARTY_NOTICES.md @@ -158,7 +158,7 @@ The optional Atlas SparkGLM lane in `backends/atlas-sparkglm` and `recipes/linux-nvidia-dgx-spark-2x-glm53-atlas.json` pulls or builds the container image `ghcr.io/enntity/atlas-sparkglm` from [Enntity/sparkglm](https://github.com/Enntity/sparkglm) at -`93d220b058921f83c253a3a5544c44f141490989`. LLooM starts that image as a +`3c7d67146929f350ed75fcdfd5e5349db843b483`. LLooM starts that image as a separate program; no engine source or binary is included in the LLooM npm package, and LLooM's files for the lane remain MIT. diff --git a/backends/atlas-sparkglm/README.md b/backends/atlas-sparkglm/README.md index 2e40bdf..6953e4a 100644 --- a/backends/atlas-sparkglm/README.md +++ b/backends/atlas-sparkglm/README.md @@ -3,7 +3,7 @@ LLooM-managed two-node Atlas SparkGLM candidate for a directly connected pair of NVIDIA DGX Spark systems. This directory is **MIT orchestration only**: no Atlas engine source is committed here. The engine image is built from immutable -revision `93d220b058921f83c253a3a5544c44f141490989` of `Enntity/sparkglm` by +revision `3c7d67146929f350ed75fcdfd5e5349db843b483` of `Enntity/sparkglm` by that repository's `install/build.sh`. The engine inside the image is AGPL-3.0-only; see [Credits and licenses](#credits-and-licenses). Live hardware and full serving qualification remain pending. @@ -235,7 +235,7 @@ is not part of LLooM: `ghcr.io/enntity/atlas-sparkglm`, alongside LLooM (an aggregate); no engine source or binary is included in LLooM. - **Corresponding source.** [Enntity/sparkglm](https://github.com/Enntity/sparkglm) - at the pinned revision (`93d220b0`) plus the Enntity/atlas commit recorded + at the pinned revision (`3c7d6714`) plus the Enntity/atlas commit recorded in the image's `/opt/atlas/source-manifest.json` ([`dfb9c26a`](https://github.com/Enntity/atlas/tree/dfb9c26a95c96faa9f94c44e23343b0f2b4f9db6)). SparkGLM's `NOTICE` and `docs/LICENSING.md` list everything else it fetches. diff --git a/backends/atlas-sparkglm/pins.json b/backends/atlas-sparkglm/pins.json index ee9fcae..5ff1c95 100644 --- a/backends/atlas-sparkglm/pins.json +++ b/backends/atlas-sparkglm/pins.json @@ -4,7 +4,7 @@ "note": "Single pin manifest for the Atlas SparkGLM candidate. Portable source, image, model and converter identities are final for this candidate; live hardware and serving qualification remains pending. The normal install path addresses image.reference, the immutable GHCR manifest digest. The tag is retained as source-build metadata (it derives from the git tree of install/ at the pinned revision) and as the local tag produced by an explicit --source-build; the install-tree label is a contents check. A tag or label alone is never the artifact identity.", "source": { "repo": "Enntity/sparkglm", - "revision": "93d220b058921f83c253a3a5544c44f141490989", + "revision": "3c7d67146929f350ed75fcdfd5e5349db843b483", "installTree": "246a3a948ab98d19e085bfd39797e554f0ee9261", "cloneUrl": "https://github.com/Enntity/sparkglm.git", "buildScript": "install/build.sh" diff --git a/docs/recipes.md b/docs/recipes.md index b44d18c..5477980 100644 --- a/docs/recipes.md +++ b/docs/recipes.md @@ -374,7 +374,7 @@ the git tree of its `install/` directory, the immutable image manifest reference (`image.reference`) with the tag kept as source-build metadata and the install-tree contents label, the `nvidia/GLM-5.3-Flash-NVFP4` and drafter revisions, and the conversion marker contract. The current source pin is product revision -`93d220b058921f83c253a3a5544c44f141490989` with install tree +`3c7d67146929f350ed75fcdfd5e5349db843b483` with install tree `246a3a948ab98d19e085bfd39797e554f0ee9261`, so the normal install path addresses the immutable digest `ghcr.io/enntity/atlas-sparkglm@sha256:e4d313b5e32c47545eab0059eea65a38e65d03fc8e0d5b8c2cfb497c39f0372a`. diff --git a/recipes/linux-nvidia-dgx-spark-2x-glm53-atlas.json b/recipes/linux-nvidia-dgx-spark-2x-glm53-atlas.json index 118cd9d..7220002 100644 --- a/recipes/linux-nvidia-dgx-spark-2x-glm53-atlas.json +++ b/recipes/linux-nvidia-dgx-spark-2x-glm53-atlas.json @@ -14,7 +14,7 @@ "provenance": { "createdBy": "lloom", "generatedBy": "manual-curated", - "source": "Atlas SparkGLM candidate at product revision 93d220b058921f83c253a3a5544c44f141490989 (engine Enntity/atlas sparkglm/atlas-20261012-rc4.2-layered @ dfb9c26a, AGPL-3.0-only, recorded in the image's /opt/atlas/source-manifest.json; corresponding source is Enntity/sparkglm at that revision plus that Enntity/atlas commit). The normal install path pulls the immutable GHCR manifest digest ghcr.io/enntity/atlas-sparkglm@sha256:e4d313b5e32c47545eab0059eea65a38e65d03fc8e0d5b8c2cfb497c39f0372a; the tag ghcr.io/enntity/atlas-sparkglm:246a3a948ab9 is source-build metadata and is never pulled. Each host verifies the pulled image's io.enntity.sparkglm.install-tree contents label equals install tree 246a3a948ab98d19e085bfd39797e554f0ee9261 and the image is arm64; the label is a contents check, not an artifact identity. An explicit --source-build builds from Enntity/sparkglm install/ at that revision and produces a LOCAL tag for an explicitly overridden local recipe only, and does not satisfy the normal immutable recipe. Model nvidia/GLM-5.3-Flash-NVFP4 revision 423acf37583782c51c142d145aef733d72943d93 requires a once-per-node overlay conversion gated on conversion.complete.json plus verification; the DFlash2 drafter incoai/GLM-5.3-Flash-DFlash2 revision 7d74cdd881ed7e32c31175984a67823127b66cfe (CC BY-NC-ND 4.0, non-commercial) is served from its checkpoint. The engine argument vector ships inside the image as /opt/atlas/profiles/4x1m.json, selected with SPARKGLM_PROFILE=4x1m, not in this recipe. The profile carries 1048576-token contexts, four sequences sharing one physical KV pool (GLM latent in FP8 with per-128 scales, split between the two nodes by SPARKGLM_KV_SHARD=1, qualified at about 2.38M tokens at the recipe's 0.91 GPU memory utilization with the display carveout, which overrides the profile default of 0.88, and shared with the disk prefix cache; the 48 GiB disk prefix-cache tier is enabled beside the shard, split into 24 GiB KV and 24 GiB SSM tiers per node), FP32 SSM state with KDA record rollback, and DFlash2 (gamma 8) on the head rank; disable-tool-grammar is deliberately not set so structured output and tools stay functional." + "source": "Atlas SparkGLM candidate at product revision 3c7d67146929f350ed75fcdfd5e5349db843b483 (engine Enntity/atlas sparkglm/atlas-20261012-rc4.2-layered @ dfb9c26a, AGPL-3.0-only, recorded in the image's /opt/atlas/source-manifest.json; corresponding source is Enntity/sparkglm at that revision plus that Enntity/atlas commit). The normal install path pulls the immutable GHCR manifest digest ghcr.io/enntity/atlas-sparkglm@sha256:e4d313b5e32c47545eab0059eea65a38e65d03fc8e0d5b8c2cfb497c39f0372a; the tag ghcr.io/enntity/atlas-sparkglm:246a3a948ab9 is source-build metadata and is never pulled. Each host verifies the pulled image's io.enntity.sparkglm.install-tree contents label equals install tree 246a3a948ab98d19e085bfd39797e554f0ee9261 and the image is arm64; the label is a contents check, not an artifact identity. An explicit --source-build builds from Enntity/sparkglm install/ at that revision and produces a LOCAL tag for an explicitly overridden local recipe only, and does not satisfy the normal immutable recipe. Model nvidia/GLM-5.3-Flash-NVFP4 revision 423acf37583782c51c142d145aef733d72943d93 requires a once-per-node overlay conversion gated on conversion.complete.json plus verification; the DFlash2 drafter incoai/GLM-5.3-Flash-DFlash2 revision 7d74cdd881ed7e32c31175984a67823127b66cfe (CC BY-NC-ND 4.0, non-commercial) is served from its checkpoint. The engine argument vector ships inside the image as /opt/atlas/profiles/4x1m.json, selected with SPARKGLM_PROFILE=4x1m, not in this recipe. The profile carries 1048576-token contexts, four sequences sharing one physical KV pool (GLM latent in FP8 with per-128 scales, split between the two nodes by SPARKGLM_KV_SHARD=1, qualified at about 2.38M tokens at the recipe's 0.91 GPU memory utilization with the display carveout, which overrides the profile default of 0.88, and shared with the disk prefix cache; the 48 GiB disk prefix-cache tier is enabled beside the shard, split into 24 GiB KV and 24 GiB SSM tiers per node), FP32 SSM state with KDA record rollback, and DFlash2 (gamma 8) on the head rank; disable-tool-grammar is deliberately not set so structured output and tools stay functional." }, "links": [ { diff --git a/test/atlas-sparkglm-recipe.test.mjs b/test/atlas-sparkglm-recipe.test.mjs index f247f75..5a63f95 100644 --- a/test/atlas-sparkglm-recipe.test.mjs +++ b/test/atlas-sparkglm-recipe.test.mjs @@ -469,7 +469,7 @@ assert.equal(pins.model.revision, '423acf37583782c51c142d145aef733d72943d93'); assert.equal(pins.model.repo, 'nvidia/GLM-5.3-Flash-NVFP4'); assert.equal(pins.source.repo, 'Enntity/sparkglm'); assert.equal(pins.status, 'final'); -assert.equal(pins.source.revision, '93d220b058921f83c253a3a5544c44f141490989'); +assert.equal(pins.source.revision, '3c7d67146929f350ed75fcdfd5e5349db843b483'); assert.equal(pins.source.installTree, '246a3a948ab98d19e085bfd39797e554f0ee9261'); assert.equal(pins.source.buildScript, 'install/build.sh'); // The normal install path addresses the immutable registry digest, not the