Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
ebe718f
chore(deps): update Mooncake to v0.3.9
staryxchen Feb 12, 2026
a336b12
fix(ci): correct git ls-remote tag sort key
staryxchen Feb 18, 2026
fa7d185
Merge branch 'ai-dynamo:main' into update-mooncake-version
staryxchen Feb 19, 2026
b12a1f5
Merge branch 'main' into update-mooncake-version
staryxchen Feb 24, 2026
ac45c95
Merge branch 'main' into update-mooncake-version
ovidiusm Feb 26, 2026
5c00046
meson.build: ucx_gpu_device_api_v2_available fixed (#1316)
anton-nayshtut Feb 26, 2026
e5e7c41
feat: dlopen-based nixl-sys stubs for runtime library resolution (#1358)
nv-anants Feb 26, 2026
218132a
NIXL OBJ Plugin functional test (#1284)
jgoldsch12 Feb 26, 2026
3632a9d
Add connection string support to AZURE_BLOB plugin (#1351)
kyleknap Feb 26, 2026
205ac88
[TESTS/NIXLBENCH] Reduce the number of CLI arg combinations (#1363)
ovidiusm Feb 26, 2026
4845274
TELEMETRY: Optimize nixlTelemetry::addXferTime. (#1365)
ColinNV Feb 27, 2026
f7b0da0
TELEMETRY: Remove backend telemetry export. (#1364)
ColinNV Feb 27, 2026
95ac294
INFRA: Refactor memory section details. (#1370)
ColinNV Feb 27, 2026
c27c6ff
TEST/UCX: fix ucx_worker_test on USE_VRAM case (#1373)
tomerg-nvidia Feb 27, 2026
3e690b1
Do not fail silently on metadata listener socket setup (#1371)
ovidiusm Feb 27, 2026
528fd80
Handle all error message cases in metadata test (#1372)
ovidiusm Feb 27, 2026
05ce339
API: Device API v2. Removed old API. (#1342)
rakhmets Feb 27, 2026
db5bbb7
libfabric(tcp prov): fix tcp provider (#1348)
fengjica Feb 28, 2026
0d0725c
UCCL: Simplify and Optimize for batch transfers (#1271)
praveingk Mar 1, 2026
7b1ecf4
CONFIG: Part 2 (use). (#1346)
ColinNV Mar 3, 2026
aaa1080
Dockerfiles: Update S3 SDK version (#1387)
aranadive Mar 3, 2026
b8ece8b
Raise error if ucx detects VRAM mem as host mem (#1385)
x41lakazam Mar 3, 2026
ccfc84b
libfabric: remove control rail (#1386)
yexiangd Mar 3, 2026
2638df7
NUMA-aware rail selection policy for DRAM_SEG memory type (libfabric …
oa-aws Mar 4, 2026
9a9155b
fix: plugins/obj/s3_crt: align CRT partSize and MPU threshold with cr…
aranadive Mar 4, 2026
a516216
chore: Update release version for NIXL (#1380) (#1381)
nv-nmailhot Mar 4, 2026
daf5623
API V1: cleanups (#1376)
ovidiusm Mar 4, 2026
611365c
libfabric: Fix regression in unit tests and update README/comments (#…
oa-aws Mar 5, 2026
b5cefa9
chore: Update release version for NIXL (#1395)
nv-nmailhot Mar 5, 2026
8e7ed4b
UTILS: Remove strEqual. (#1391)
ColinNV Mar 5, 2026
7618f74
Upgrade hwloc in wheel build env (#1396)
ovidiusm Mar 5, 2026
ef9b3b1
Update Dockerfile.manylinux to disable nvlm (#1403)
nv-nmailhot Mar 5, 2026
f96447f
nixl_worker: file_offset calculation fixed (#1399)
anton-nayshtut Mar 5, 2026
b8b8c59
Raise error if ucx detects VRAM mem as host mem (#1393)
x41lakazam Mar 6, 2026
c5f187e
TEST/PYTHON: Remove printing binary data. (#1409)
ColinNV Mar 6, 2026
eb8b2c3
ci: bump CI_IMAGE_TAG to 20260303-2
staryxchen Mar 7, 2026
88ea288
Merge branch 'main' into update-mooncake-version
staryxchen Mar 7, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .ci/jenkins/lib/build-matrix.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ env:
TEST_TIMEOUT: 30
UCX_TLS: "^shm"
STORAGE_DRIVER: 'overlay'
CI_IMAGE_TAG: "20260303-1"
CI_IMAGE_TAG: "20260303-2"


runs_on_dockers:
Expand Down
2 changes: 1 addition & 1 deletion .ci/jenkins/lib/test-matrix.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ env:
SLURM_JOB_TIMEOUT: '02:20:00'
SLURM_IMMEDIATE_TIMEOUT: "3600"
STORAGE_DRIVER: overlay
CI_IMAGE_TAG: "20260303-1"
CI_IMAGE_TAG: "20260303-2"

empty_volumes:
- {mountPath: /var/lib/containers/storage, memory: false}
Expand Down
4 changes: 3 additions & 1 deletion .gitlab/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,9 @@ else

( \
cd ${TMPDIR} && \
git clone --depth 1 https://github.com/kvcache-ai/Mooncake.git && \
MOONCAKE_VERSION=$(git ls-remote --tags --sort=-v:refname https://github.com/kvcache-ai/Mooncake.git 'v*' | head -1 | sed 's/.*refs\/tags\///') && \
echo "MOONCAKE_VERSION: ${MOONCAKE_VERSION}" && \
git clone --depth 1 --branch ${MOONCAKE_VERSION} https://github.com/kvcache-ai/Mooncake.git && \
Comment on lines +222 to +224

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash

# Find and display the ATTRIBUTIONS-CPP.md file with Mooncake mentions
echo "=== ATTRIBUTIONS-CPP.md content (Mooncake entries) ==="
fd -a 'ATTRIBUTIONS-CPP.md' -x cat {} | grep -A 5 -B 5 -i "mooncake\|kvcache-ai"

echo ""
echo "=== Current Mooncake build.sh lines context ==="
# Get more context around lines 221-223
sed -n '210,230p' .gitlab/build.sh

echo ""
echo "=== Latest Mooncake tag from GitHub ==="
# Get the latest tag
git ls-remote --refs --tags --sort=-v:refname https://github.com/kvcache-ai/Mooncake.git 'v*' | head -3

Repository: ai-dynamo/nixl

Length of output: 1537


Dynamic "latest" tag creates future drift risk from ATTRIBUTIONS version (license compliance).

Lines 221–223 dynamically resolve the newest Mooncake tag at build time. ATTRIBUTIONS-CPP.md currently pins v0.3.9, matching the latest tag; however, when a newer tag is released, the build will silently use it without corresponding attribution updates. This creates a license compliance gap. Fix by pinning the version via an env var (set by CI from ATTRIBUTIONS) or persisting the resolved version into a file that drives attribution updates.

🧰 Tools
🪛 Shellcheck (0.11.0)

[info] 223-223: Double quote to prevent globbing and word splitting.

(SC2086)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.gitlab/build.sh around lines 221 - 223, The build currently resolves
MOONCAKE_VERSION at build time using git ls-remote and then git clone (see
MOONCAKE_VERSION and the git clone command), which can drift past the pinned
ATTRIBUTIONS-CPP.md version; change this so the build first respects an explicit
environment variable (e.g., MOONCAKE_VERSION_ENV set by CI from
ATTRIBUTIONS-CPP.md) and only falls back to resolving the latest tag if that env
var is unset, and whenever the script resolves a tag automatically, persist that
resolved value to a file (e.g., write the resolved MOONCAKE_VERSION into a small
stamp file checked into the build artifacts) so downstream attribution updates
can consume it instead of silently using a newer tag.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash

echo "=== 1. Raw git ls-remote output (with deref entries) ==="
git ls-remote --tags https://github.com/kvcache-ai/Mooncake.git 'v*' | head -20

echo ""
echo "=== 2. With --refs flag (excluding deref entries) ==="
git ls-remote --refs --tags --sort=-v:refname https://github.com/kvcache-ai/Mooncake.git 'v*' | head -3

echo ""
echo "=== 3. What head -1 would select from raw output ==="
git ls-remote --tags --sort=-v:refname https://github.com/kvcache-ai/Mooncake.git 'v*' | head -1

echo ""
echo "=== 4. What head -1 would select with --refs ==="
git ls-remote --refs --tags --sort=-v:refname https://github.com/kvcache-ai/Mooncake.git 'v*' | head -1

Repository: ai-dynamo/nixl

Length of output: 1791


🏁 Script executed:

#!/bin/bash

echo "=== Searching for ATTRIBUTIONS files ==="
find . -iname "*attribution*" -type f 2>/dev/null | head -20

echo ""
echo "=== Checking .gitlab/build.sh line 223 for SC2086 risk ==="
sed -n '223p' .gitlab/build.sh

echo ""
echo "=== Testing unquoted variable in git clone command ==="
# Simulate what happens if MOONCAKE_VERSION contains spaces (hypothetically)
TEST_VERSION="v0.3.9 malicious"
echo "If MOONCAKE_VERSION='$TEST_VERSION', command would expand to:"
echo "git clone --depth 1 --branch $TEST_VERSION https://github.com/kvcache-ai/Mooncake.git"
echo "(Notice branch splits into two arguments: --branch v0.3.9 malicious)"

Repository: ai-dynamo/nixl

Length of output: 610


Harden Mooncake tag resolution (annotated tags + empty version) and quote the branch name.

Raw git ls-remote --tags output includes deref entries like refs/tags/v0.2.0^{}; while --sort=-v:refname currently selects the correct tag, using --refs makes this explicit and defensive. Additionally, if no tag matches the pattern, MOONCAKE_VERSION becomes empty and should be validated. Line 223 must quote the branch variable to prevent word-splitting if the version ever contains spaces (SC2086).

🔧 Proposed fix
-      MOONCAKE_VERSION=$(git ls-remote --tags --sort=-v:refname https://github.com/kvcache-ai/Mooncake.git 'v*' | head -1 | sed 's/.*refs\/tags\///') && \
+      MOONCAKE_VERSION=$(git ls-remote --refs --tags --sort=-v:refname https://github.com/kvcache-ai/Mooncake.git 'v*' | head -1 | sed 's/.*refs\/tags\///') && \
+      if [ -z "${MOONCAKE_VERSION}" ]; then \
+        echo "Failed to resolve Mooncake release tag." >&2; exit 1; \
+      fi && \
       echo "MOONCAKE_VERSION: ${MOONCAKE_VERSION}" && \
-      git clone --depth 1 --branch ${MOONCAKE_VERSION} https://github.com/kvcache-ai/Mooncake.git && \
+      git clone --depth 1 --branch "${MOONCAKE_VERSION}" https://github.com/kvcache-ai/Mooncake.git && \
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
MOONCAKE_VERSION=$(git ls-remote --tags --sort=-v:refname https://github.com/kvcache-ai/Mooncake.git 'v*' | head -1 | sed 's/.*refs\/tags\///') && \
echo "MOONCAKE_VERSION: ${MOONCAKE_VERSION}" && \
git clone --depth 1 --branch ${MOONCAKE_VERSION} https://github.com/kvcache-ai/Mooncake.git && \
MOONCAKE_VERSION=$(git ls-remote --refs --tags --sort=-v:refname https://github.com/kvcache-ai/Mooncake.git 'v*' | head -1 | sed 's/.*refs\/tags\///') && \
if [ -z "${MOONCAKE_VERSION}" ]; then \
echo "Failed to resolve Mooncake release tag." >&2; exit 1; \
fi && \
echo "MOONCAKE_VERSION: ${MOONCAKE_VERSION}" && \
git clone --depth 1 --branch "${MOONCAKE_VERSION}" https://github.com/kvcache-ai/Mooncake.git && \
🧰 Tools
🪛 Shellcheck (0.11.0)

[info] 223-223: Double quote to prevent globbing and word splitting.

(SC2086)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.gitlab/build.sh around lines 221 - 223, The tag resolution for
MOONCAKE_VERSION is brittle: update the git lookup (the git ls-remote invocation
that sets MOONCAKE_VERSION) to use --refs so deref entries (refs/tags/*^{}) are
excluded and ensure the sed/grep extracts only the tag name; then validate that
MOONCAKE_VERSION is non-empty and fail early (exit 1) with a clear error if no
tag matched; finally, quote ${MOONCAKE_VERSION} in the git clone command to
avoid word-splitting (the clone --branch ${MOONCAKE_VERSION} invocation).

cd Mooncake && \
$SUDO bash dependencies.sh -y && \
mkdir build && cd build && \
Expand Down
2 changes: 1 addition & 1 deletion ATTRIBUTIONS-CPP.md
Original file line number Diff line number Diff line change
Expand Up @@ -5241,7 +5241,7 @@ Random Hacker.
That's all there is to it!
```

## Mooncake - v0.3.2.post1
## Mooncake - v0.3.9

- **Repository URL**: https://github.com/kvcache-ai/Mooncake
- **License URL**: https://github.com/kvcache-ai/Mooncake/blob/main/LICENSE
Expand Down