Skip to content

fix: RC5 release readiness corrections - #918

Merged
ndizazzo merged 4 commits into
mainfrom
fix/rc5-finding-fixes
Jun 29, 2026
Merged

fix: RC5 release readiness corrections#918
ndizazzo merged 4 commits into
mainfrom
fix/rc5-finding-fixes

Conversation

@ndizazzo

@ndizazzo ndizazzo commented Jun 29, 2026

Copy link
Copy Markdown
Collaborator

Summary

This PR bundles the RC5 release-readiness fixes found across the open testing threads:

  • closes the native-runtime matrix gaps exposed by clean runtime install testing;
  • makes release packaging/signing metadata more explicit and verifiable;
  • hardens the RC smoke script around real published artifacts and native-runtime selection;
  • reshapes doctor --json GPU diagnostics so detailed /proc probe data remains available without being reported as fake GPU rows.

Findings From Testing Threads

mesh1 RC4 readiness thread

The earlier mesh1 audit showed that a published bundle could serve a model, but a clean mesh-llm runtime install path could still fail because release native-runtime artifacts were missing for the host. It also showed that doctor --json was not enough as a readiness gate when the selected runtime could be absent or wrong.

This PR carries that lesson into the release workflow by validating explicit native-runtime targets and making the smoke path check the runtime-install surface separately from bundle execution.

carrack RC5 release audit

Carrack detected cpu, cuda, vulkan, but RC5’s published native-runtimes.json only offered an x86_64 CPU runtime for that host. The CUDA runtimes present in the manifest were Linux aarch64 targets, so they were correctly rejected as arch_mismatch; the resolver then selected CPU.

This PR adds native-runtime jobs for the missing published-platform targets, including the carrack-critical Linux x86_64 CUDA 12/13 runtimes, plus Linux x86_64 ROCm/Vulkan and Windows x86_64 CPU/CUDA/ROCm/Vulkan runtimes.

release matrix / Actions artifact audit

The RC5 matrix published binary bundles for more platform/backend combinations than it published native-runtime artifacts for. The release validator did not require those runtime artifacts, so the gap reached the prerelease manifest.

This PR updates the workflow and matrix validation so native-runtimes.json generation is driven by the intended explicit target list rather than accidentally passing with only a subset of runtime artifacts.

carrack doctor GPU diagnostics thread

On carrack, doctor --json previously reported 25 host.gpus rows. Many of those rows were useful raw NVIDIA probe details such as DMA masks, IRQs, BIOS versions, bus locations, and device minors, but they were incorrectly shaped as separate GPUs with detected-* stable IDs.

This PR preserves the useful probe information by nesting it under the matching real GPU entry. host.gpus now reports the two actual carrack devices, each with a probe object containing the /proc/driver/nvidia/gpus/*/information fields and raw lines.

What Changed

  • Added Linux x86_64 CUDA 12/13 native-runtime release jobs.
  • Added Linux x86_64 ROCm and Vulkan native-runtime release jobs.
  • Added Windows x86_64 CPU/CUDA/ROCm/Vulkan native-runtime release jobs.
  • Updated required native-runtime targets and validation tests so missing runtime artifacts fail release validation.
  • Updated native-runtime packaging verification and smoke scripts around manifest/runtime-install expectations.
  • Added signing/attestation release notes and packaging metadata support.
  • Added HostGpuProbe and nested NVIDIA /proc probe details under HostGpuProfile.
  • Added a carrack-shaped unit test proving NVIDIA proc details are nested under two real GPUs rather than emitted as 25 top-level GPU rows.

Validation

Local validation run before pushing:

cargo test -p mesh-llm-hardware-profile --lib
cargo test -p mesh-llm-native-runtime --lib
cargo check -p mesh-llm-native-runtime
cargo check -p mesh-llm-hardware-profile
cargo check -p mesh-llm
cargo clippy -p mesh-llm-native-runtime --all-targets -- -D warnings
cargo clippy -p mesh-llm-hardware-profile --all-targets -- -D warnings
cargo clippy -p mesh-llm --all-targets -- -D warnings
cargo fmt --all --check

Carrack validation after pulling this branch:

cd /home/ndizazzo/dev/mesh/mesh-llm
just build
cargo test -p mesh-llm-hardware-profile --lib nvidia_proc_details_are_nested_under_matching_gpus

Carrack doctor verification from target/debug/mesh-llm doctor --json:

gpu_count: 2
NVIDIA GeForce RTX 5090 -> CUDA0, probe source linux_nvidia_proc, IRQ 16, DMA Mask 0xfffffffffffff, Bus Location 0000:01:00.0
NVIDIA GeForce RTX 3080 -> CUDA1, probe source linux_nvidia_proc, IRQ 184, DMA Mask 0x7fffffffffff, Bus Location 0000:06:00.0
bad top-level DMA/IRQ/Bus Location/Video BIOS rows: none

Saved carrack artifacts:

/tmp/mesh-llm-doctor-gpu-fix-build.log
/tmp/mesh-llm-doctor-gpu-fix.json

Note: the carrack doctor run still reports healthy: false in this branch checkout because that local cache does not currently have a compatible native runtime selected. The GPU diagnostics shape is fixed independently and verified from the built binary.

Summary by CodeRabbit

  • New Features
    • Expanded native runtime release coverage with additional Linux x86_64 (CUDA/ROCm/Vulkan) and Windows x86_64 (CPU plus CUDA/ROCm/Vulkan) builds.
    • Added release attestation signing keys and conditional attestation stamping support for packaged executables.
  • Bug Fixes
    • Improved GPU hardware discovery by combining NVIDIA probe results with fallback GPU profiles without losing non-NVIDIA devices.
    • Added stricter, time-bounded release smoke cleanup/verification to ensure no lingering bundle processes remain.
  • Documentation
    • Documented how to generate, store, and verify attestation signing keys in RELEASE.md.
  • Chores / Tests
    • Hardened release workflow and packaging scripts (checkout credential handling, Python selection, manifest/architecture parsing, expanded matrix validation tests).

* Add missing runtimes
* Add signing attestation key
* Correct smoke script
* Fix `doctor --json` output
@coderabbitai

coderabbitai Bot commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

@ndizazzo, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 16 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 2967f4cc-074b-4ab2-92da-c01d325b5658

📥 Commits

Reviewing files that changed from the base of the PR and between a0c8c1b and 53d76fd.

📒 Files selected for processing (1)
  • crates/mesh-llm-hardware-profile/src/lib.rs
📝 Walkthrough

Walkthrough

Adds structured GPU probe capture, expands native runtime release coverage for Linux and Windows, hardens release tooling scripts, and documents release attestation signing keys.

Changes

Structured GPU probe detection

Layer / File(s) Summary
Probe data model
crates/mesh-llm-native-runtime/src/host.rs, crates/mesh-llm-native-runtime/src/lib.rs
Defines HostGpuProbe, extends HostGpuProfile with probe, and makes the native-runtime host module public.
NVIDIA detection pipeline
crates/mesh-llm-hardware-profile/src/lib.rs
detect_gpus() now merges NVIDIA-detected profiles with fallback labels, adds NVIDIA parsing and probe-matching helpers, and removes NVIDIA label collection from the generic fallback path.
GPU detection tests
crates/mesh-llm-hardware-profile/src/lib.rs
Updates the profile test helper to set probe: None and adds unit tests that check fallback merging and probe attachment for matched NVIDIA GPUs.

Release jobs and validation

Layer / File(s) Summary
Checkout hardening
.github/workflows/release.yml
Sets persist-credentials: false across release workflow checkout steps in build, bundle, publish, and crates jobs.
Linux x86_64 GPU jobs
.github/workflows/release.yml
Adds CUDA, ROCm, and Vulkan native runtime build jobs for Linux x86_64, including packaging, verification, and artifact upload.
Windows x86_64 jobs
.github/workflows/release.yml
Adds Windows x86_64 CPU and GPU native runtime build jobs with backend-specific toolchain setup, packaging, verification, and artifact upload.
Publish wiring and target validation
.github/workflows/release.yml
Updates attestation file handling for the Linux aarch64 CUDA bundle, extends publish dependencies for the new native runtime jobs, and broadens required native targets for manifest validation.
Matrix validation test
scripts/tests/test_validate_release_native_runtime_matrix.py
Renames and expands the release native runtime matrix test to cover the larger Linux and Windows target set.

Release tooling and documentation

Layer / File(s) Summary
Python selection and arch parsing
scripts/package-native-runtime.sh, scripts/verify-native-runtime-package.sh
Adds python_bin() helpers to the packaging and verification scripts, switches embedded Python calls to use them, and broadens GPU architecture parsing to accept comma- and semicolon-separated values.
Smoke cleanup and attestation docs
scripts/rc-release-smoke.sh, RELEASE.md
Changes smoke-test cleanup to terminate the full process tree and wait for bundle shutdown, adds failure diagnostics, and documents release attestation signing key generation and verification.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

  • Mesh-LLM/mesh-llm#912: Updates the same native-runtime release validation area by expanding matrix coverage and required-target expectations.
  • Mesh-LLM/mesh-llm#917: Changes the native-runtime matrix validator flow that this PR’s expanded target list relies on.

Suggested reviewers

  • i386
  • michaelneale
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 13.04% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title is broadly aligned with the PR’s RC5 release-readiness fixes, even though it is not very specific about the main changes.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/rc5-finding-fixes

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

This pull request is currently a draft. Reviews will not take place until the PR is marked as ready for review.

@ndizazzo
ndizazzo marked this pull request as ready for review June 29, 2026 07:44
@github-actions
github-actions Bot requested a review from michaelneale June 29, 2026 07:44
Comment thread RELEASE.md
```

Store the keypair in 1Password before adding or rotating GitHub secrets. The
production release-attestation keypair lives in the `mesh-llm` vault as

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

is that a shared vault?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

local on my machine for now, can share with you guys

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Or - if you want to create a shared vault, I can move the secret to it

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

depends if we need access to it - or just recreate it when needed?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Yeah, good callout. It's not really needed for referencing outside of the build process, it can just be recreated/replaced and the next RC / release builds get signed with that instead.

@michaelneale michaelneale left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

nice - just one question about 1password and shared vault

@coderabbitai coderabbitai Bot left a comment

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.

Actionable comments posted: 7

🧹 Nitpick comments (3)
RELEASE.md (2)

74-76: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Consider documenting the invalid status outcome.

The documentation mentions valid and missing statuses. If the attestation footer is present but signature verification fails (wrong key, tampered binary), the tool likely reports invalid. Documenting this third outcome helps users distinguish between "not signed" and "signed but untrustworthy."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@RELEASE.md` around lines 74 - 76, The release-attestation status
documentation needs to cover the third outcome reported by the verifier. Update
the section describing valid and missing statuses to also mention the invalid
status from the attestation verification flow, making clear that it applies when
a footer is present but signature verification fails. Use the existing status
wording in RELEASE.md so readers can distinguish missing from
signed-but-untrusted outcomes.

52-62: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Hardcoded repository name in generic documentation.

The gh secret set examples hardcode --repo Mesh-LLM/mesh-llm. Readers copying commands from a fork or different remote will fail silently or set secrets on the wrong repository. Remove --repo to default to the current authenticated repository, or add a comment that readers should substitute their own.

 gh secret set MESH_RELEASE_ATTESTATION_SIGNING_KEY_FILE \
-  --repo Mesh-LLM/mesh-llm \
   --app actions \
   < /tmp/mesh-release-attestation/mesh-release-attestation-private-key.json
 
 gh secret set MESH_RELEASE_ATTESTATION_PUBLIC_KEY_FILE \
-  --repo Mesh-LLM/mesh-llm \
   --app actions \
   < /tmp/mesh-release-attestation/mesh-release-attestation-public-key.json
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@RELEASE.md` around lines 52 - 62, The gh secret set examples in RELEASE.md
hardcode a specific repository name, which makes the commands unsafe for forks
or other remotes. Update the documented commands to avoid embedding
Mesh-LLM/mesh-llm in the gh secret set invocations, either by removing the
--repo flag so gh uses the current authenticated repository or by clearly
telling readers to replace it with their own repository; keep the examples tied
to the secret names MESH_RELEASE_ATTESTATION_SIGNING_KEY_FILE and
MESH_RELEASE_ATTESTATION_PUBLIC_KEY_FILE.
crates/mesh-llm-native-runtime/src/lib.rs (1)

19-20: 📐 Maintainability & Code Quality | 🔵 Trivial | 🏗️ Heavy lift

Avoid widening the crate root for HostGpuProbe.

This adds a new root-level re-export for a type owned by host, which grows the public API surface just to support internal plumbing. Prefer importing from the owning module directly, or treat this as a clearly temporary compatibility shim with a follow-up removal plan. As per coding guidelines, "crates/*/src/lib.rs: Minimize crate-root re-exports. Root re-exports are acceptable as temporary compatibility shims during refactors, but new code should prefer importing from the owning module directly."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@crates/mesh-llm-native-runtime/src/lib.rs` around lines 19 - 20, The crate
root is being widened by re-exporting HostGpuProbe, which unnecessarily expands
the public API. Remove the new root-level re-export from the lib.rs export list
and update any internal callers to import HostGpuProbe directly from its owning
host module; if a compatibility shim is truly needed, keep it explicitly
temporary and plan its removal.

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/release.yml:
- Line 1156: The Windows CUDA packaging and validation are too broad because the
release workflow still uses an unversioned windows/x86_64/cuda target, allowing
non-12 CUDA manifests to pass. Update the release workflow entries that set up
and validate this target so they explicitly use windows/x86_64/cuda12, keeping
the packaging major and validator contract aligned.
- Line 414: The checkout step is leaving persisted Git credentials enabled,
which is unnecessary for these artifact-only release jobs. Update the relevant
actions/checkout invocation in the release workflow to explicitly disable
persisted credentials, and apply the same hardening to any other checkout steps
in this workflow. Use the checkout step(s) themselves as the target for the
change so the GITHUB_TOKEN is not written into .git/config.
- Line 1054: The GPU release job is restoring the Windows SDK installer cache
through the sccache action, which can allow reuse of a cached HIP SDK installer
after only a minimal header check. Update the release workflow to avoid
restoring that cache on the GPU release path, or ensure the install flow in
scripts/install-windows-sdk.ps1 verifies the installer with a checksum or
signature before reusing it. Use the mozilla-actions/sccache-action step and the
install-windows-sdk.ps1 path as the key places to adjust.

In `@crates/mesh-llm-hardware-profile/src/lib.rs`:
- Around line 60-63: The GPU discovery flow in the hardware profile logic
short-circuits on NVIDIA results, which causes hybrid systems to lose non-NVIDIA
GPU labels. Update the discovery path around detect_nvidia_gpu_profiles so it
merges the NVIDIA rows into the existing fallback results instead of returning
early, preserving AMD/Apple/Vulkan-discovered entries while still including
NVIDIA GPUs. Ensure the final aggregate returned by the profile collection code
contains all detected sources rather than replacing them when NVIDIA is present.

In `@scripts/rc-release-smoke.sh`:
- Around line 113-118: The mesh_bundle_pids helper currently passes BINARY
directly to pgrep -f, which treats it as a regex and can match unrelated
processes. Update mesh_bundle_pids to use a fixed-string-safe lookup or escape
the BINARY value before calling pgrep, so the PID sweep and any later pgrep
diagnostics only target the intended bundle path.

In `@scripts/tests/test_validate_release_native_runtime_matrix.py`:
- Line 188: The Windows CUDA target assertion in
test_validate_release_native_runtime_matrix should match the fixture’s
configured CUDA major instead of using the generic target. Update the target
passed to validator.target_from_label in this test to the explicit
windows/x86_64/cuda12 label so it aligns with the release validation target and
the declared toolkit_major in the fixture.

In `@scripts/verify-native-runtime-package.sh`:
- Around line 32-41: Update python_bin() to verify that the selected interpreter
is Python 3.9 or newer before returning it, since the verifier uses newer typing
syntax and may fail under older versions. Keep the same gating logic in the
matching python_bin() helper in scripts/package-native-runtime.sh so both
scripts choose a compatible interpreter consistently, and preserve the existing
error path if no suitable Python is available.

---

Nitpick comments:
In `@crates/mesh-llm-native-runtime/src/lib.rs`:
- Around line 19-20: The crate root is being widened by re-exporting
HostGpuProbe, which unnecessarily expands the public API. Remove the new
root-level re-export from the lib.rs export list and update any internal callers
to import HostGpuProbe directly from its owning host module; if a compatibility
shim is truly needed, keep it explicitly temporary and plan its removal.

In `@RELEASE.md`:
- Around line 74-76: The release-attestation status documentation needs to cover
the third outcome reported by the verifier. Update the section describing valid
and missing statuses to also mention the invalid status from the attestation
verification flow, making clear that it applies when a footer is present but
signature verification fails. Use the existing status wording in RELEASE.md so
readers can distinguish missing from signed-but-untrusted outcomes.
- Around line 52-62: The gh secret set examples in RELEASE.md hardcode a
specific repository name, which makes the commands unsafe for forks or other
remotes. Update the documented commands to avoid embedding Mesh-LLM/mesh-llm in
the gh secret set invocations, either by removing the --repo flag so gh uses the
current authenticated repository or by clearly telling readers to replace it
with their own repository; keep the examples tied to the secret names
MESH_RELEASE_ATTESTATION_SIGNING_KEY_FILE and
MESH_RELEASE_ATTESTATION_PUBLIC_KEY_FILE.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: be13bd4b-f81b-4ac0-9a1a-f082de78cd9e

📥 Commits

Reviewing files that changed from the base of the PR and between 4d34b97 and 4cf5dcb.

📒 Files selected for processing (9)
  • .github/workflows/release.yml
  • RELEASE.md
  • crates/mesh-llm-hardware-profile/src/lib.rs
  • crates/mesh-llm-native-runtime/src/host.rs
  • crates/mesh-llm-native-runtime/src/lib.rs
  • scripts/package-native-runtime.sh
  • scripts/rc-release-smoke.sh
  • scripts/tests/test_validate_release_native_runtime_matrix.py
  • scripts/verify-native-runtime-package.sh

Comment thread .github/workflows/release.yml
Comment thread .github/workflows/release.yml
Comment thread .github/workflows/release.yml
Comment thread crates/mesh-llm-hardware-profile/src/lib.rs Outdated
Comment thread scripts/rc-release-smoke.sh Outdated
Comment thread scripts/tests/test_validate_release_native_runtime_matrix.py Outdated
Comment thread scripts/verify-native-runtime-package.sh
@ndizazzo
ndizazzo force-pushed the fix/rc5-finding-fixes branch from 897904b to a0c8c1b Compare June 29, 2026 08:10

@coderabbitai coderabbitai Bot left a comment

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.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
crates/mesh-llm-hardware-profile/src/lib.rs (1)

77-113: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Avoid assigning backend ordinals from sorted fallback labels.

Line 82 passes the post-gpu_labels() enumerate index into backend_device_from_label, but gpu_labels() sorts/dedups labels before this path, so the index is alphabetical/global rather than a CUDA/ROCm/Metal device ordinal. On mixed hosts this can synthesize the wrong ROCm{index}/MTL{index} device for downstream runtime selection. Leave fallback backend_device unset unless the source carries a real ordinal.

Suggested fix
 fn fallback_gpu_profiles() -> Vec<HostGpuProfile> {
     gpu_labels()
         .into_iter()
         .enumerate()
         .map(|(index, label)| {
-            let backend_device = backend_device_from_label(&label, index);
             HostGpuProfile {
                 display_name: label,
-                backend_device,
+                backend_device: None,
                 stable_id: Some(format!("detected-{index}")),
                 vram_bytes: None,
                 unified_memory: cfg!(target_os = "macos"),
                 probe: None,
                 cuda_sm: None,
@@
-fn backend_device_from_label(label: &str, index: usize) -> Option<String> {
-    let label = label.to_ascii_lowercase();
-    if looks_like_nvidia_gpu_label(&label) {
-        Some(format!("CUDA{index}"))
-    } else if label.contains("amd") || label.contains("radeon") || label.contains("rocm") {
-        Some(format!("ROCm{index}"))
-    } else if cfg!(target_os = "macos") && label.contains("apple") {
-        Some(format!("MTL{index}"))
-    } else {
-        None
-    }
-}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@crates/mesh-llm-hardware-profile/src/lib.rs` around lines 77 - 113, The
fallback GPU profile path is incorrectly synthesizing backend ordinals from the
sorted gpu_labels() index, which can produce wrong CUDA/ROCm/MTL device names on
mixed systems. Update fallback_gpu_profiles() so it no longer passes the
enumerate index into backend_device_from_label for ordinal assignment, and
instead leaves HostGpuProfile.backend_device unset unless you have a real source
ordinal to preserve. Keep the fix localized to fallback_gpu_profiles(),
backend_device_from_label(), and the HostGpuProfile construction logic.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@crates/mesh-llm-hardware-profile/src/lib.rs`:
- Around line 77-113: The fallback GPU profile path is incorrectly synthesizing
backend ordinals from the sorted gpu_labels() index, which can produce wrong
CUDA/ROCm/MTL device names on mixed systems. Update fallback_gpu_profiles() so
it no longer passes the enumerate index into backend_device_from_label for
ordinal assignment, and instead leaves HostGpuProfile.backend_device unset
unless you have a real source ordinal to preserve. Keep the fix localized to
fallback_gpu_profiles(), backend_device_from_label(), and the HostGpuProfile
construction logic.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: cc018c58-476b-4d7d-82f9-2b0f3db5613c

📥 Commits

Reviewing files that changed from the base of the PR and between ccc8639 and 897904b.

📒 Files selected for processing (8)
  • .github/workflows/release.yml
  • RELEASE.md
  • crates/mesh-llm-hardware-profile/src/lib.rs
  • crates/mesh-llm-native-runtime/src/lib.rs
  • scripts/package-native-runtime.sh
  • scripts/rc-release-smoke.sh
  • scripts/tests/test_validate_release_native_runtime_matrix.py
  • scripts/verify-native-runtime-package.sh
✅ Files skipped from review due to trivial changes (1)
  • RELEASE.md
🚧 Files skipped from review as they are similar to previous changes (5)
  • scripts/verify-native-runtime-package.sh
  • scripts/package-native-runtime.sh
  • scripts/tests/test_validate_release_native_runtime_matrix.py
  • scripts/rc-release-smoke.sh
  • .github/workflows/release.yml

@ndizazzo
ndizazzo merged commit d798eb6 into main Jun 29, 2026
25 checks passed
@ndizazzo
ndizazzo deleted the fix/rc5-finding-fixes branch June 29, 2026 09:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants