Skip to content

chore(mesh): upgrade MeshLLM to 0.76.0 - #7559

Draft
micspiral wants to merge 2 commits into
mainfrom
micspiral/mesh-0.76.0
Draft

chore(mesh): upgrade MeshLLM to 0.76.0#7559
micspiral wants to merge 2 commits into
mainfrom
micspiral/mesh-0.76.0

Conversation

@micspiral

Copy link
Copy Markdown
Collaborator

Summary

Upgrade Buzz from MeshLLM v0.76.0-rc9 to the stable v0.76.0 release, based on freshly fetched main 051c3a270be9c73da9ab06700bcab7d5552fceaa.

  • Update all eight Mesh git dependencies across desktop and relay smoke examples; both lockfiles resolve all 47 Mesh packages to 557630fd0a543aecd2f2b8ef5232ec1829865115.
  • Match Mesh's ed25519-dalek = 3.0.0 and rusqlite = 0.40 dependencies.
  • Explicitly enable rusqlite's fallible_uint feature, preserving Buzz's existing u64 SQL conversions when mesh is disabled. Mesh-enabled builds previously supplied this transitively, so testing both configurations matters.
  • Temporarily pin only the optional sqlx-sqlite package to the merged upstream compatibility fix transact-rs/sqlx#4402, revision 94aafe3a68884d923b0798a767c8d7f6cfda89d2. SQLx 0.9.0 caps libsqlite3-sys below 0.38, while Mesh 0.76 requires 0.38. Cargo resolves the conflict even with SQLite disabled. The fix raises that upper bound; remove the patch once released. Buzz's active PostgreSQL driver stays on crates.io SQLx 0.9.0. cargo tree --locked --workspace --target all -i sqlx-sqlite reports no active consumers.

Five manifest/lockfile changes only; no application-source, schema, admission-policy, model-selection, or UI changes. No running application was replaced.

Related issue

No open stable-0.76 upgrade issue/PR found in the title search. Follows the earlier RC integration in #6189.

Originating Buzz conversation: buzz://message?channel=dffbc117-845a-4c02-bc3f-eaeeefc4deaa&id=670f9c262e1ec0a4df5600b3173a0c5de2abe17e08ba9ccfdd8eff109fadf1a8

Testing

Local macOS ARM64, repository Hermit toolchain:

  • Passed: just ci on the final working-tree patch before commit, including workspace Clippy and both desktop cfg graphs with -D warnings, repository formatting/static checks, Rust/desktop/mobile unit tests, and desktop/web builds.
  • Passed at 5595d99dd0df0c9a36e08646b2372e32d886a3c6: cargo test --locked --manifest-path desktop/src-tauri/Cargo.toml --features mesh-llm --workspace — 3,279 desktop tests plus all terminal/integration suites; 21 tests ignored across the workspace.
  • Passed at that commit: normal pre-push hooks (branch skew, file size, Rust tests, desktop default and mesh Clippy, default desktop workspace tests).
  • Passed: both lockfiles' Mesh/Ed25519/SQLite pin consistency, locked dependency resolution, and git diff --check.
  • Not green: the additional full cargo test --locked -p buzz-relay run on the pre-commit upgrade tree compiled but had 1,034 passed / 6 failed / 89 ignored. All six failures were media-test setup at crates/buzz-relay/src/api/media.rs:1145, waiting to seed a PostgreSQL community (Sqlx(PoolTimedOut)). Docker is unavailable in this local session. This is disclosed separately from the repository's infra-free just ci gate; no tests were changed or suppressed.
  • Not run: PostgreSQL/Redis integration lane, live mesh inference/admission smoke, or installed-app UI exercise. CI lifecycle coverage is still needed; local unit/compile evidence does not establish live workflow behavior.

Pin the desktop and relay smoke dependencies to the stable release and regenerate both lockfiles. Match its Ed25519 and SQLite dependencies, retaining unsigned SQL conversions in non-mesh desktop builds.

Use the merged SQLx SQLite compatibility fix until a crates.io release includes transact-rs/sqlx#4402. The PostgreSQL driver remains on crates.io SQLx 0.9.0.

Signed-off-by: Thinker <75d8a808fa21bb8d1812e080cf471db601c6e8e6a62dcd516d37531e83a7bb77@meshllm.communities.buzz.xyz>
@micspiral
micspiral requested a review from a team as a code owner September 10, 2026 14:27
@github-actions

github-actions Bot commented Sep 10, 2026

Copy link
Copy Markdown

🔐 Codex Security Review

Status: review required for the current range.

The current range is 813bbd14121edacc6cb4733301a3af12131aa10e...23ab7ec76452ecc8fa5c62531427c8c49f540c9c.
A new review must complete for this exact range. When manual authorization
is required, a Block organization member must comment exactly
@buzz-security-review 23ab7ec76452ecc8fa5c62531427c8c49f540c9c to authorize a new review.
Any previous review applies only to its recorded range.

@micspiral
micspiral marked this pull request as draft September 11, 2026 01:21
@micspiral

Copy link
Copy Markdown
Collaborator Author

CI follow-up: not ready

Marking this PR draft until the GitHub CI failures are resolved. Local validation and PR creation were not sufficient completion evidence.

At head 5595d99dd0df0c9a36e08646b2372e32d886a3c6, CI attempt 1 has two originating failures:

  1. Desktop Core: managed_agents::discovery::bounded_command::tests::returns_when_escaped_descendant_retains_pipe read an empty PID file during compiled-flag verification (3,172 passed, one failed). It passed earlier in the same run, including the mesh-enabled suite. This establishes intermittency, not that the dependency upgrade is innocent. Source is unchanged; shared libc changed from 0.2.186 to 0.2.189, required through Mesh host-runtime → mdns-sd → socket-pktinfo. The directly used Linux x86_64 FFI declarations/constants compare unchanged, but that is not runtime exoneration.
  2. Relay artifact producer: GitHub annotation explicitly reports the 30-minute job limit exceeded. The exact base CI completed its build-artifacts step in 20m28s. PR attempt 1 took 8m49s for binaries and 17m59s for the backend archive, then expired while building the PostgreSQL test archive. Rust sccache misses were 25 on base versus 469 on the PR; dependency invalidation is a credible upgrade-induced CI cost. Cache modes differ (main push READ_WRITE, PR READ_ONLY), so these are observations, not a controlled cold-build benchmark. Downstream PostgreSQL and relay integration jobs did not run.

One same-head rerun is in progress. A retry passing will not alone establish that the original failures were unrelated. No tests, dependency pins, or CI limits have been changed to make this pass during follow-up.

Two follow-ups to the MeshLLM 0.76.0 upgrade, both consequences of the
same thing: Buzz was relying on Cargo feature/dependency unification with
mesh-llm rather than declaring what it needs.

1. Linux Secret Service sessions dropped to plaintext.

   Until 0.76, mesh-llm enabled `crypto-rust` on the *same* keyring 3 the
   desktop uses, so Buzz inherited it through feature unification. 0.76
   moves mesh-llm to keyring 4, and desktop's own declaration only asked
   for `sync-secret-service,vendored`.

   `keyring-3.6.3/src/secret_service.rs:140-143,333-336` selects
   `EncryptionType::Dh` only under a crypto feature and `Plain` otherwise,
   so Linux mesh-enabled builds lost Diffie-Hellman transit encryption for
   nsec reads/writes over the D-Bus session bus. Visible in the lockfile:
   `dbus-secret-service 4.1.0` lost aes/block-padding/cbc/hkdf/sha2/num/
   fastrand/once_cell.

   Fixed by requesting `crypto-rust` explicitly. It restores exactly the
   packages the pre-upgrade lock already had, so it costs nothing.

2. Desktop E2E Relay exceeded its 30 minute timeout.

   The mesh-llm SDK and native runtime were dev-dependencies of
   `buzz-relay`. A dev-dependency feeds *every* target of its package, so
   `cargo nextest archive -p buzz-relay` had to compile the whole
   mesh-llm + skippy + rmcp + hf-xet tree before a single relay unit test
   could build — and the mesh pin bump invalidated that cache wholesale.

   The six harnesses that need it are examples that drive the relay as an
   external process; none reference `buzz_relay::`. Moved them to a new
   examples-only crate `buzz-mesh-smoke` so the cost lands only on the
   Mesh Lifecycle workflow that actually runs them.

   buzz-relay's dev graph: 692 -> 453 packages, with zero mesh-llm,
   skippy, rmcp, hf-xet or keyring entries remaining.

Verified: `cargo clippy -p buzz-mesh-smoke -p buzz-relay --all-targets
-- -D warnings` clean; all six harnesses compile in the new crate;
`cargo test -p buzz-relay --lib` 1034 passed, with 6 pre-existing
`Sqlx(PoolTimedOut)` media tests that require Postgres (not run locally).
Not verified locally: Linux keyring runtime behaviour and the Mesh
Lifecycle smoke, both of which need CI.

Co-authored-by: Michael Neale <michael.neale@gmail.com>
Signed-off-by: Michael Neale <michael.neale@gmail.com>
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