Repository navigation
Conversation
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
…tore Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
Initial browser journey supplied by Dario; tighten render and browser-only assertions and remove shared screenshot output. Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
…ompt" This reverts commit 8b6260e. Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
…fixture lifetime Shorten advertised ids by characters, not bytes. Remove the speculative cold local-inventory scan; keep the running-node mapping and the honest fallback. Keep the probe test fixture alive until explicit shutdown after the awaited probe. Signed-off-by: Dario <0c30d6330cb88c7b0519e2630b057ef0c584ad3f0be0157d9d2fdf0c913780bd@meshllm.communities.buzz.xyz>
Publish a stopped status immediately after Share Off, as legacy mesh_stop_node did, instead of waiting for the next heartbeat. Treat the 660 s LLM timeout as a default so an explicit agent value is preserved, matching legacy relay_mesh. Signed-off-by: Dario <0c30d6330cb88c7b0519e2630b057ef0c584ad3f0be0157d9d2fdf0c913780bd@meshllm.communities.buzz.xyz>
Follow the donor's registered Compute page: the sharing controls sit in one bordered card, the community section shows contributor, shared-memory and model counts, and the page has a single status line and a single Refresh (which also rereads the community list). The share status line now also reports the consumer node (connecting/connected) so the separate global status and node-running notes are removed. Signed-off-by: Dario <0c30d6330cb88c7b0519e2630b057ef0c584ad3f0be0157d9d2fdf0c913780bd@meshllm.communities.buzz.xyz>
…emory total After a confirmed Share Off, start the single slot as a client when running Mesh agents need it (legacy coordinator re-arm), keeping saved sharing Off. Serialize periodic publication and the immediate stopped note so an in-flight serving snapshot cannot be signed after the withdrawal. Count shared memory once per member device and omit the total when any device identity or capacity is unknown. Add opaque, timestamped mesh-startup stage logs (no prompts, keys, config or addresses). Signed-off-by: Dario <0c30d6330cb88c7b0519e2630b057ef0c584ad3f0be0157d9d2fdf0c913780bd@meshllm.communities.buzz.xyz>
… startup logs Stamp each status note strictly newer than the last (same-second ties would otherwise let a serving note win the replaceable address). Extract the confirmed-Off plan (withdraw, then re-arm one client only for running Mesh consumers and a current lease) with tests, plus a held-serving-publication ordering test. Startup stage logs now share an opaque attempt id with wall-clock timestamps from restore/agent/share entry through discovery, SDK start and first probe, including failure exits. Signed-off-by: Dario <0c30d6330cb88c7b0519e2630b057ef0c584ad3f0be0157d9d2fdf0c913780bd@meshllm.communities.buzz.xyz>
Share Off now runs through one finish_off(OffEffects) path: confirmed stop, withdraw, then one client start for running Mesh consumers. Tests drive it with a recording fake (consumers, none, failed stop, retired lease, re-arm failure). A re-arm failure keeps Off successful but is reported on the existing settings-error surface instead of only being logged. Status notes now wait for a later real second instead of future-dating, so a restarted process is never outranked. Startup logs drop the global attempt correlation and record per-stage timestamps and durations. Signed-off-by: Dario <0c30d6330cb88c7b0519e2630b057ef0c584ad3f0be0157d9d2fdf0c913780bd@meshllm.communities.buzz.xyz>
Validate the captured lease inside the acquired preparing guard before stopping, so a delayed Off cannot stop a replacement community's node; a retired Off then withdraws, restarts and reports nothing. Fence the re-arm error write to the original lease. Narrow the created_at comment: no future-dating, but same-second restarts can still tie. Signed-off-by: Dario <0c30d6330cb88c7b0519e2630b057ef0c584ad3f0be0157d9d2fdf0c913780bd@meshllm.communities.buzz.xyz>
Checkpoint a255373 (pushed; still draft)Accepted live by Mic on the packaged a255373 build: consuming remote compute (sharing Off → client node → agent reply on a peer's model); Share On → 27B UD-Q4_K_M serving; an agent pinned to the local 27B served locally. Review findings → repairs: P1 community isolation (navigation keeps the bound node; explicit replacement stops consumers first; delayed Off is fenced to its lease). P1 revocation (verified removals apply independently of status; stale lists rejected). P1 dead peer (join errors keep the node Ready). P2 startup recovery (pre-node failures can retry; unknown failures fenced; Off can clear consent without a lease). P2 standalone config (isolated config). P2 heartbeat starvation (B first; immediate stopped note, serialized, never future-dated). P2 unsupported builds (availability checked first). Browser assertions updated. Also: legacy readiness (a chat request decides, no catalog/context gate); legacy 4096 output and 660 s timeout defaults with user values winning; legacy enrollment-on-use; consumer re-arm after Share Off; readable names for hash-only adverts; compact sharing card and community summary. Known limitations: no dead-ingress watchdog re-arm (classic has one); same-second restart ties for status notes; relay acceptance of the serving advert unverified; Off→consumer re-arm: fake orchestration tests plus a live observation of the node returning to client mode; an agent turn afterwards was not verified. |
|
@wesbillman addressed feedback: won't be touching things which are the same as the baseline block/buzz settings app if not already done, shooting for parity as a plugin (but a bit nicer) - so ensure agents don't relitigate legacy questions. (and most likely they will bring things up that I would have told mine not to do). |
The page no longer invokes mesh_compute_start (Disconnect removed); it now invokes mesh_compute_disarm, which is declared and allowed. Signed-off-by: Dario <0c30d6330cb88c7b0519e2630b057ef0c584ad3f0be0157d9d2fdf0c913780bd@meshllm.communities.buzz.xyz>
Signed-off-by: Alessandro Joabar <sandro@squareup.com>
Resolve conflicts with pairing plugin (workspace member, deps, commands, bundled registry), new harness icons, and preset agent settings (preset first, then shared compute picker, then default model picker). Signed-off-by: Dario <0c30d6330cb88c7b0519e2630b057ef0c584ad3f0be0157d9d2fdf0c913780bd@meshllm.communities.buzz.xyz>
There was a problem hiding this comment.
Changes needed: six P2 findings inline cover revocation teardown, membership-change recovery, saved-agent restore, duplicate peer joins, editor validation and unsupported-build UI. One keyboard-focus follow-up is marked optional. Scope follows Mic’s parity decision: unchanged classic behavior is out of scope. These findings concern the port’s new lifecycle/restore wiring, join queue and plugin/editor integration—not legacy consent, artifact trust, readiness, accepted SDK latency or documented recovery limitations.
Public-material cleanup: remove the internal originating-channel identifier from this public PR description.
Star Lord’s automated source review via Wes’s account. Head def6be269d29cae731cf1b81208de6315c13a075; base 5aeeda7ecd723eef84212c4578611f59412d6af8. Source-only; no builds, tests, app runs or live-node probing. Hosted snapshot: 21 checks passed, Windows skipped. Earlier packaged acceptance predates this integrated head. This COMMENT is not approval.
| host.lease.revoke(&lease)?; | ||
| app.state::<crate::agents::AgentHost>() | ||
| .stop_mesh_consumers() | ||
| .await?; |
There was a problem hiding this comment.
[P2] Stop compute even when consumer cleanup returns an error. Revoking the lease here and then propagating stop_mesh_consumers() failure skips node shutdown. Later reconciliation returns immediately because there is no lease (lines 52–54), leaving the old runtime/admission alive. This does not require an unkillable process: Controller::stop can return a private-directory cleanup error after confirmed process exit (runtime.rs:1105–1112). Signal node stop before fallible consumer cleanup, then always reconcile shutdown and clear admission while preserving the error/uncertain-shutdown fence. Add native orchestration coverage for membership removal with a consumer-cleanup error.
| .await | ||
| .map_err(|e| e.to_string())?; | ||
| // Restart only with retained admission; failed status discovery cannot widen it. | ||
| let targets = availability_from_events(retained_records.clone()).serve_targets; |
There was a problem hiding this comment.
[P2] Refresh routing evidence when rebuilding retained admission. retained_records contains admission-time advertisements, not the fresh heartbeats read on later ticks. Once those notes are over 120 seconds old, availability_from_events removes all their targets. On a consumer-only node, removing any admitted member therefore stops the healthy runtime and makes start_with_evidence reject the empty target set—even when retained servers are still advertising. The coordinator then skips Stopped, leaving existing agents without an endpoint. Keep the retained-owner admission restriction, but obtain fresh verified routing evidence for retained owners after stopping; surface restart failure with retry guidance. Cover an aged admission snapshot with a still-live retained server.
| host.lease.clear(); | ||
| let stopped = async { | ||
| app.state::<crate::agents::AgentHost>() | ||
| .stop_mesh_consumers() |
There was a problem hiding this comment.
[P2] Preserve queued startup restores on the first community selection. With no existing lease, changing is true and this call removes every Mesh agent from host.queued and inserts it into host.acted (agents.rs:818–838). The later restore_mesh consequently has nothing to resume. If selection reaches initialization first, the FIFO admission lock makes the cancellation run before restore, whose acted filter also skips these agents. This breaks the documented start-on-launch contract. Distinguish first binding from retirement of an existing binding: preserve not-yet-started restores while retaining cancellation/consumer-stop fences on actual replacement. Test the real select → restore path; the existing regression calls restore_mesh directly.
| && !target_is_visible(target.endpoint_id.as_deref(), &peers) | ||
| }) { | ||
| host.lease.community(&lease)?; | ||
| if let Err(error) = host.lifecycle.dial(&target.endpoint_addr) { |
There was a problem hiding this comment.
[P2] Deduplicate pending and in-flight peer joins. Each successful reconciliation tick queues every advertised-but-not-visible target again. The 64-entry lifecycle queue has no token/endpoint deduplication, while one join runs serially; a disconnected peer can remain advertised during several ticks and accumulate repeated attempts. At the pinned SDK, each slow failed attempt can consume roughly 105 seconds, so stale copies can delay a newly available healthy peer for minutes after the original advertisement expires. Coalesce pending/in-flight joins by endpoint and avoid replaying stale duplicate work. Cover repeated reconciliation during a held join and verify that only one attempt per endpoint is queued, without delaying a distinct healthy target behind duplicate retries.
Parity scope: classic at pre-port comparator 5fdb2e53659ee29002545f1022c138fe0b8282f9 awaits one target per reconciliation and deduplicates startup joins. This finding targets the duplicate backlog in the port’s new asynchronous queue, not the accepted duration of an individual SDK join or shutdown. The latency impact above is source-derived, not a measured runtime result.
| const request = JSON.stringify({ | ||
| id, | ||
| expectedRevision: id ? draft.revision : undefined, | ||
| edit: agentEdit({ ...draft, model: "" }, true), |
There was a problem hiding this comment.
[P2] Keep draft validation out of render. agentEdit synchronously parses the editable Arguments JSON and throws on incomplete/invalid input (agent-edit.ts:84–95). Because this call happens during render, ordinary argument editing in a shared-compute create/edit dialog throws into its enclosing error boundary instead of preserving the form and showing validation feedback; the promise rejection handler below cannot catch it. Build/validate the request inside a guarded effect or handler and retain the draft on validation failure. Also key discovery on model-context fields rather than the complete edit: name/instructions changes currently cancel and refetch inventory on every keystroke. Cover invalid intermediate arguments and instruction edits.
| refreshDisabled={busy || !isTauri()} | ||
| refresh={() => void refresh()} | ||
| > | ||
| {otherCommunity && ( |
There was a problem hiding this comment.
[P2] Gate connected/switch UI on actual native support. scope is retained even when availability probing returns false or the app is browser-only, and boundCommunity falls back to that scope. Navigating from A to B then renders “Compute connected in A” and a stop/switch action alongside the unavailable notice, although no node or lease exists. Default native builds also mount CommunityMesh, whose inventory command necessarily fails. Gate this section and unsupported native inventory requests on the support result; preserve the fallback only for supported native selection. Extend the unsupported-build test to render the page and navigate communities—it currently checks activation calls only.
| {status?.sharing ? "Sharing" : "Compute connected"} in{" "} | ||
| {boundCommunity}. Navigation does not move it. | ||
| </p> | ||
| {replaceConfirmed ? ( |
There was a problem hiding this comment.
[P3, optional follow-up] Preserve focus through community-switch confirmation. Opening this confirmation, cancelling it, and completing replacement remove the focused button without a focus destination; the destructive question also has no dialog announcement. Reuse the existing shared AlertDialog contract (including an explicit post-success focus target) rather than swapping inline button trees. Add keyboard coverage for confirm, cancel and failure/retry. This is source-inferred; I did not run a keyboard or screen-reader session.
0983f7e to
def6be2
Compare
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
… absent Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz>
|
Implemented the six P2 fixes and integrated main 98bc195. Dario independently reviewed the implementation and the small app-owned-host cleanup. The changed frontend contract passes all 8 representative Chromium/WebKit journeys; full frontend 8,332 tests, Mesh 56 tests, and native Mesh-enabled 377 tests pass (native with 2 test threads; default-parallel host_command timing failures are disclosed in the description). Final test-only Clippy cleanup is being pushed; final-head CI is pending. Preview is built but deliberately not launched unattended because its real-identity Keychain path can prompt. Keeping this draft until the current acceptance/review gates are satisfied. |
wesbillman
left a comment
There was a problem hiding this comment.
Carl, an automated reviewer, commenting via Wes’s GitHub account.
Changes needed: one P2 regression introduced by the picker fix, detailed inline. The prior native lifecycle/restore/join and unsupported-host fixes hold in source; the picker crash/refetch repair now breaks saved-agent model browsing at native validation. Preserve a valid discovery edit and cover the saved-id/revision path before merge. This follow-up respects the accepted classic-parity scope.
Reviewed head 7de6dcdd8bcd091ed0a27f7dc80b9133b4e2f0c2 against base 98bc1951878265d5e5df347400b7ab0bbc6bcce6, concentrating on fixes since def6be269d29cae731cf1b81208de6315c13a075. Source/call-chain and regression-test review, including the pinned SDK where recovery required it; no new builds, tests, app launch or live inference. Hosted snapshot: 21 checks passed, Windows skipped. Hosted Rust runs use default features, so the PR’s reported local Mesh-enabled results remain separate evidence. Current-head packaged/multi-device acceptance is still outstanding; the PR remains draft. GitHub also reports merge conflicts, separately from the code finding.
Non-blocking public-material follow-up: the internal originating-channel identifier previously noted is still in the PR description; remove it.
| edit = agentEdit( | ||
| { | ||
| ...context.draft, | ||
| name: "", | ||
| systemPrompt: "", | ||
| sessionPolicy: null, | ||
| model: "", |
There was a problem hiding this comment.
[P2] Keep a valid name in saved-agent model-discovery edits
Open Edit for an existing Buzz shared-compute agent, or press Retry models. This constructs every discovery request with name: "", even though AgentSettingsFields supplies the saved agent’s id and revision. Native dispatch therefore takes AgentHost::model_context → Controller::model_context → edited_agent → Agent::apply, which replaces the name and rejects it in Agent::validate with “Agent name is required” (config.rs:280,314–315). Discovery never reaches Mesh inventory. The saved model remains selectable, but no alternative community models can be loaded.
Keep a valid name in the request without making name/instruction keystrokes discovery dependencies, or narrowly resolve discovery-only fields in the native owner. Add a saved-id/revision regression through the actual native/controller validation boundary; the new picker test omits id and its fake host accepts any edit. This is a source-traced regression from the current fix, not legacy Mesh behavior.
Mesh shared compute plugin
Ports community-scoped Mesh shared compute from classic block/buzz into the new Buzz app as an opt-in bundled plugin (native
meshfeature, Mesh SDK v0.78.1). Behaviour targets the classic block/buzz baseline; deliberate differences are listed below.Build:
bin/just desktop --features mesh(default builds leave Mesh disabled). Enable Shared compute in Settings → Plugins, pick a community, open Shared compute.What it does
/api/models.Matches classic block/buzz
Model ladder; chat-decides readiness; 4096 output / 660 s timeout defaults (user values win); enrollment published only while Mesh runs (first use); immediate stopped advert on Share Off; consumers re-armed after Share Off; checksum-only native artifact trust (unchanged port).
Deliberate differences
Included from #689
8 October review fixes / main integration
98bc1951without dropping its harness configuration policy.eb9bddd2) and the host-argument cleanup (c3bcf380), no remaining source blockers. Final validation sign-off is pending the final head hosted checks.host_commandfailures (aborting descendants, aborting CLI process, env shebang, exact args, large output). Two-thread full runs pass without altered assertions/timeouts; inherited-flake attribution is NOT established.-D warningsat7de6dcdd; native package also passes there (377 / 8 ignored). Agent-controller full suite passes: 163 unit + 5 lifecycle + 11 dotenv tests, 2 ignored. Final head7de6dcddis pushed and remote-verified. DCO passes; final-head CI is pending. Mandatory push hooks passed. Earlier green CI does not certify this new integration. Keep draft until acceptance/review gates hold. Nobuzz-review-completedattestation.Earlier verification at
6208236-D warnings(default and mesh), Playwright mesh-share + agent-models (Chromium/WebKit).Known limitations / follow-ups
buzz-review-completedattestation is made.Originating Buzz channel:
53a55c4d-2b96-40b1-a6d4-8de855b2a328(buzz-mesh-plugin).