Repository navigation
Keep client-only nodes out of model election - #1074
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughClient nodes now bypass model assignment during automatic model selection. A role-aware helper preserves existing assignment behavior for non-client roles, and an async test verifies client and worker outcomes. ChangesClient model assignment
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related issues
Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
crates/mesh-llm-host-runtime/src/runtime/tests/auto_join.rs (1)
60-72: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick winMake the regression test validate role-derived behavior.
The test creates a
NodeRole::Clientnode but passestrueexplicitly, so it would pass even if the role were ignored. Exercise the production selection path, or otherwise verify the role-to-is_clientwiring; add a non-client case to confirm delegation still works.🤖 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-host-runtime/src/runtime/tests/auto_join.rs` around lines 60 - 72, The regression test currently passes is_client=true explicitly, so it does not verify NodeRole::Client wiring. Update client_role_never_receives_model_assignment to exercise the production selection path or derive is_client from the node role, and add a non-client test case confirming model delegation still succeeds.
🤖 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.
Nitpick comments:
In `@crates/mesh-llm-host-runtime/src/runtime/tests/auto_join.rs`:
- Around line 60-72: The regression test currently passes is_client=true
explicitly, so it does not verify NodeRole::Client wiring. Update
client_role_never_receives_model_assignment to exercise the production selection
path or derive is_client from the node role, and add a non-client test case
confirming model delegation still succeeds.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 50bfe559-1a60-40dc-92fe-d1f46007da4a
📒 Files selected for processing (2)
crates/mesh-llm-host-runtime/src/runtime/auto_join.rscrates/mesh-llm-host-runtime/src/runtime/tests/auto_join.rs
i386
left a comment
There was a problem hiding this comment.
Reviewed current head 806e8f5. No blocking findings.
The role gate now runs before demand-based assignment, the existing ctx.is_client fallback guard still keeps clients out of the auto-pack path, and the regression test verifies both client rejection and normal worker delegation. The green client-auto boot job also reaches passive_mode / Client ready without electing or downloading a model.
Non-blocking follow-up: #1072 also documents that parse_size_str("36 layers") returns 0. This PR makes that unable to elect a client, but unknown catalog sizes can still be treated as fitting worker capacity. Please keep that fail-closed size parsing fix tracked separately if it is intentionally outside this focused PR.
Uses MeshLLM built-in `mesh` collective intelligence / Mixture of Agents when Buzz Auto sees two or more distinct physical models. With zero or one model, Auto remains ordinary `auto`. This is an alternative way to improve tool responses, accuracy, and resistance to hallucination when a high-latency distributed mesh contains diverse models. Models and members may come and go: collective routing enables only after stable capacity, drops on confirmed contraction, and can recover later. Mesh-specific failures retry once through ordinary Auto. This update also pins MeshLLM to a v0.73.1-compatible backport of [MeshLLM #1074](Mesh-LLM/mesh-llm#1074), so client-only Buzz nodes cannot enter model election or download a remote provider model. Buzz preserves the selected local sharing model and switches an existing client to sharing across a controlled app restart, retaining one runtime and one `:9337` / `:3131` pair per machine. Validation: - Full local `just ci` passes on the cleaned branch. - MeshLLM host-runtime suite: 1,568 passed, 0 failed; strict Clippy passes. - Buzz desktop Tauri suite with `mesh-llm`: 1,721 passed, 0 failed; strict feature Clippy passes. - Playwright covers client-to-share using the saved local model and no destructive stop. - Packaged two-machine testing proved single-model routing, dual-model collective routing, tool-markup fallback, and runtime reuse. - Packaged client-only recheck routed a real Mini Buzz turn through M5 while Mini stayed `is_client=true`, `is_host=false`, hosted no models, and created no Gemma cache. Builds on the recovery work merged in #2823; this PR does not duplicate it. --------- Signed-off-by: Michael Neale <[email protected]> Signed-off-by: Tyler Longwell <[email protected]> Co-authored-by: Michael Neale <[email protected]> Co-authored-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@buzz.block.builderlab.xyz> Co-authored-by: Tyler Longwell <[email protected]>
* origin/main: Fix Metal small-batch matmul parity for GLM verification (#1078) Handle K-only transposed KV page import and export (#1084) Refresh llama.cpp upstream patch queue (#1085) chore: improve embedded native-runtime compatibility guidance (#1043) fix(console-ui): chat transcript snapping during live status updates (#1083) ci: bump Linux CUDA slim container to gha-convention base runner image fix: record activation cache prefix identities (#1041) fix: read-only model download caches (#1042) ci: disable sccache for Windows ROCm native runtime build (#1087) ci: fix v0.74 release GPU builds (sccache disk-only + force_hosted_runners) (#1086) Make release sccache failures non-fatal (#1079) Keep client-only nodes out of model election (#1074) # Conflicts: # crates/mesh-llm-host-runtime/src/runtime/auto_join.rs # crates/mesh-llm-host-runtime/src/runtime/tests/auto_join.rs # third_party/llama.cpp/patches/0004-Add-lanes-external-media-and-chat-grammar-support.patch
Uses MeshLLM built-in `mesh` collective intelligence / Mixture of Agents when Buzz Auto sees two or more distinct physical models. With zero or one model, Auto remains ordinary `auto`. This is an alternative way to improve tool responses, accuracy, and resistance to hallucination when a high-latency distributed mesh contains diverse models. Models and members may come and go: collective routing enables only after stable capacity, drops on confirmed contraction, and can recover later. Mesh-specific failures retry once through ordinary Auto. This update also pins MeshLLM to a v0.73.1-compatible backport of [MeshLLM block#1074](Mesh-LLM/mesh-llm#1074), so client-only Buzz nodes cannot enter model election or download a remote provider model. Buzz preserves the selected local sharing model and switches an existing client to sharing across a controlled app restart, retaining one runtime and one `:9337` / `:3131` pair per machine. Validation: - Full local `just ci` passes on the cleaned branch. - MeshLLM host-runtime suite: 1,568 passed, 0 failed; strict Clippy passes. - Buzz desktop Tauri suite with `mesh-llm`: 1,721 passed, 0 failed; strict feature Clippy passes. - Playwright covers client-to-share using the saved local model and no destructive stop. - Packaged two-machine testing proved single-model routing, dual-model collective routing, tool-markup fallback, and runtime reuse. - Packaged client-only recheck routed a real Mini Buzz turn through M5 while Mini stayed `is_client=true`, `is_host=false`, hosted no models, and created no Gemma cache. Builds on the recovery work merged in block#2823; this PR does not duplicate it. --------- Signed-off-by: Michael Neale <[email protected]> Signed-off-by: Tyler Longwell <[email protected]> Co-authored-by: Michael Neale <[email protected]> Co-authored-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@buzz.block.builderlab.xyz> Co-authored-by: Tyler Longwell <[email protected]>
Client-only nodes now remain proxy-only after joining a mesh, even when active demand includes an unserved model. This prevents zero-capacity clients from electing themselves, downloading a large model, and delaying management API startup.
Validation:
Summary by CodeRabbit
Bug Fixes
Tests