You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Crew is pinned to Buzz Desktop desktop-v0.5.10 (1fb49103002e898607a7f6fd554cb51e94d92e08) in docs/crew/upstream-buzz.json. Buzz published Desktop desktop-v0.5.11 (248b9d1b7666aacbcb1485b76e81de30a271ba0e) on 2026-08-12. The relay manifest remains 0.2.1, but this release still carries substantial relay/database behavior, including migrations 0029 and 0030 and the new buzz-deletion crate.
The tag range contains 18 commits and changes 185 files (+23,495/-3,405). A measured git merge-tree --write-tree --messages origin/main desktop-v0.5.11 against Crew origin/main (850d0f49d) reports 19 conflict paths.
The conflict count understates the risk. Git auto-merges both idle-pool implementations into crates/buzz-acp/src/lib.rs:
A conflict-free auto-merge can therefore compile both timers and both teardown paths. That would be a semantic regression even if all textual conflicts were resolved.
The sync must not assume that existing Crew code wins. Where Buzz now provides the same seam, compare the two implementations and adapt to upstream when its structure, race handling, tests, or maintenance boundary are better. Retain Crew code only for a demonstrated Crew product contract that upstream does not satisfy.
Invariant: after the sync there is one idle clock, one sleep-eligibility decision, one teardown owner, and one wake path; an exact persisted session is resumed before any context rebuild.
desktop-v0.5.10 is not a direct ancestor of desktop-v0.5.11; its exclusive commit is release/sync metadata rather than a competing product-code line. Merge the exact desktop-v0.5.11 tag into a Crew sync branch. Do not merge upstream/main and do not open a PR against block/buzz (D-020).
What 0.5.11 brings
Directly relevant to Crew
block/buzz#5682: woken lazy ACP pools re-sleep after an idle window.
block/buzz#4950: standard Claude Code/Codex ACP prompt-response usage enters NIP-AM metrics.
block/buzz#4552: channel about is delivered in the per-turn [Context] block with newline-spoof protection and a UTF-8-safe 500-character cap.
block/buzz#5680: observer relay envelopes publish one batched store update rather than one update per event.
block/buzz#5693: thread-activity persistence is coalesced instead of rewriting a large localStorage blob for every reply.
block/buzz#5696: foreground recovery runs after the interaction/paint boundary instead of blocking the first focus turn.
block/buzz#5662: live channel timelines no longer collapse to a single event when a pageless live window overlays populated cache.
block/buzz#5574: channel settings and human/agent profiles are split into shared, smaller presentation components.
Produce the overlap verdict table in the sync PR description before coding past the affected cluster.
Prove which idle predicate and state owner survive. A merged file containing both the upstream reaper and Crew idle transition is a failed spike result, not a starting implementation.
Check upstream tests against Crew tests. Preserve the stronger discriminating test even when its implementation is removed.
Slice 1 — merge and unify ACP lifecycle
Branch from fresh origin/main as sync/upstream-2026-08-13 and merge exact tag desktop-v0.5.11.
Reduce idle sleep to one config contract and one runtime policy. If backward compatibility needs both env names temporarily, they must alias one resolved value; they must not arm two timers.
Reuse upstream queue/wake/respawn race gates where they are stronger.
Preserve Crew's exact binding ledger, capability-gated session/load, post-load lineage validation, stale-lineage refusal, rebuild fallback, and Draining/re-wake semantics where the comparison proves they remain necessary.
Keep both ACP field sets that carry independent contracts: upstream standard usage plus Crew elicitation/rotation provenance. Do not choose one side wholesale.
Update docs/crew/UPSTREAM-SYNC.md to describe the resulting single idle-sleep seam; remove obsolete duplicate-key guidance.
Slice 2 — adopt upstream desktop seams
Fold Crew observer events/projections into upstream envelope batching.
Apply D-022/D-033: extract Crew-owned growth from upstream-heavy files; never raise a line limit to make the sync pass.
Slice 3 — take correctness, storage, and deletion work
Take channel snapshot v2, thread-activity coalescing, timeline reconciliation, mention separator, preview proxy, agent recovery defaults, and Databricks OAuth behavior from upstream.
Take buzz-deletion and migrations 0029/0030 without creating a Crew deletion subsystem.
Audit every Crew-owned database table/write path for community scope and add it to upstream's live fence/catalog contract where required. Missing coverage must fail closed.
Test migrations against a database clone with existing Crew data and real Postgres/Redis/MinIO services.
Slice 4 — pins, workflows, docs, and evidence
Update docs/crew/upstream-buzz.json to 0.5.11 / desktop-v0.5.11 / 248b9d1b7666aacbcb1485b76e81de30a271ba0e.
Update the release contract test and Crew state/changelog where required.
Run gh workflow list --all; no newly imported out-of-scope workflow may be enabled.
Record any changed maintenance boundary in docs/crew/DECISIONS.md and update the UPSTREAM-SYNC.md touched-file table.
Include before/after evidence for profile/settings and reconnect timeline behavior.
Verify
ACP and lifecycle
cargo test -p buzz-acp
A source/contract test proves only one idle reaper/timer is active.
One idle period invokes engine shutdown exactly once.
Work arriving during drain is not stranded and causes one re-wake.
In-flight turn, heartbeat, prompt task, retry-throttled queued work, wake/respawn, unflushed outbox, or cancel drain prevents teardown as appropriate.
Completed respawn tasks are reaped and cannot permanently block future sleep.
After sleep, an exact ledger match attempts session/load before rebuilding context.
A stale/mismatched engine or workspace lineage refuses load and rebuilds fail closed.
Channel snapshot falls back to a full fetch for v1, malformed, checksum-mismatched, relay-mismatched, or identity-mismatched data.
Thread-activity pending writes flush on hide/pagehide/unmount/scope switch.
Relay/deletion
Apply migrations 0029 and 0030 to a populated test database.
Run affected relay/database/deletion/admin tests with Postgres, Redis, and MinIO.
Crew-owned community-scoped tables are fenced or explicitly proven out of scope.
Cross-community isolation and fail-closed catalog drift tests pass.
Gates
just ci
NuncioCrew Gate green.
Manual NuncioCrew Upstream Sync run is green and its head SHA equals the sync branch HEAD.
Desktop Smoke E2E and Desktop E2E Integration are run and reported honestly; D-032/D-047 keep them advisory, so a green Gate alone is not sufficient evidence.
Mobile format/analyze/tests run for the inherited thread-detail change.
Exact tag desktop-v0.5.11 is merged through a reviewed PR into Nuncio-hq/crew.
docs/crew/upstream-buzz.json pins 0.5.11, the exact tag, and commit 248b9d1b....
The sync PR contains the measured overlap verdict table with evidence for every duplicated subsystem.
There is exactly one idle policy/timer, one sleep decision, one teardown path, and one wake owner.
No pair of Crew/upstream env keys can activate independent idle loops.
Upstream's stronger race predicates/tests are retained or adapted; weaker duplicate Crew code is removed.
Crew's exact-session resume, lineage validation, stale-lineage refusal, and rebuild fallback remain proven by tests.
Upstream standard ACP usage and channel-description behavior are integrated without regressing Crew compaction/role routing.
Upstream observer batching, foreground scheduling, profile component seams, storage fixes, and timeline fixes are adopted rather than copied into Crew parallels.
Community deletion migrations and engine are integrated; Crew-owned community-scoped data is covered or explicitly proven out of scope.
D-022/D-033 file-size rules pass without raising limits for Crew-owned growth.
Required and advisory test outcomes are recorded with exact run URLs/SHA; failures are not hidden behind a green Gate.
UPSTREAM-SYNC.md, Crew state/decision docs, and release contract tests describe the post-sync seams accurately.
Problem
Crew is pinned to Buzz Desktop
desktop-v0.5.10(1fb49103002e898607a7f6fd554cb51e94d92e08) indocs/crew/upstream-buzz.json. Buzz published Desktopdesktop-v0.5.11(248b9d1b7666aacbcb1485b76e81de30a271ba0e) on 2026-08-12. The relay manifest remains0.2.1, but this release still carries substantial relay/database behavior, including migrations0029and0030and the newbuzz-deletioncrate.The tag range contains 18 commits and changes 185 files (+23,495/-3,405). A measured
git merge-tree --write-tree --messages origin/main desktop-v0.5.11against Creworigin/main(850d0f49d) reports 19 conflict paths.The conflict count understates the risk. Git auto-merges both idle-pool implementations into
crates/buzz-acp/src/lib.rs:idle_pool_sleep_reaper/idle_pool_sleep_due,BUZZ_ACP_IDLE_POOL_SLEEP, synchronous return to the existingListeningstate;Ready -> Draining -> Listening,BUZZ_ACP_POOL_IDLE_TIMEOUT, asynchronous drain/re-wake, durable exact-session ledger, and resume-firstsession/load.A conflict-free auto-merge can therefore compile both timers and both teardown paths. That would be a semantic regression even if all textual conflicts were resolved.
The sync must not assume that existing Crew code wins. Where Buzz now provides the same seam, compare the two implementations and adapt to upstream when its structure, race handling, tests, or maintenance boundary are better. Retain Crew code only for a demonstrated Crew product contract that upstream does not satisfy.
Sync target
origin/mainat implementation startdesktop-v0.5.10/1fb49103002e898607a7f6fd554cb51e94d92e08desktop-v0.5.11/248b9d1b7666aacbcb1485b76e81de30a271ba0e0.5.10 -> 0.5.110.2.1 -> 0.2.1(schema/behavior still changes)origin/main850d0f49df35930104bcbdb1332ff13735214ecb9fce1fc7bdesktop-v0.5.10is not a direct ancestor ofdesktop-v0.5.11; its exclusive commit is release/sync metadata rather than a competing product-code line. Merge the exactdesktop-v0.5.11tag into a Crew sync branch. Do not mergeupstream/mainand do not open a PR againstblock/buzz(D-020).What 0.5.11 brings
Directly relevant to Crew
aboutis delivered in the per-turn[Context]block with newline-spoof protection and a UTF-8-safe 500-character cap.Additive product/operations work
buzz-admin deletions,buzz-deletion, migrations0029/0030, write fences, resumable execution, and independent Postgres/S3/Redis verification.{channels, hash}for immediate sidebar paint plus revalidation.32768 -> 65536, recovery allowance2 -> 3, and tool-first recovery guidance.webbrowser 1.2.1 -> 1.2.4addresses RUSTSEC-2026-0257.Solution: compare, adapt, and delete duplication
The sync PR must include a short decision table for every semantic overlap. Each verdict must be one of:
Do not score implementations by line count or by whether they are “ours.” Compare:
Expected overlap verdicts to validate in Spike 0
idle_pool_sleep_duehelper; complete gate matrix; authoritative respawn-in-flight signal; reaps completed JoinSet tasksDrainingstate; work-during-drain re-wake; outbox/cancel-drain gates; durable ledger; exactsession/load; stale-lineage refusal; Sleeping UIsession_aging,control_result, Crew observer projectionsThese are hypotheses, not permission to resolve mechanically. Spike 0 must confirm or change each verdict from actual merged source and tests.
Plan
Spike 0 — blocking implementation comparison
Before resolving the full merge:
desktop-v0.5.11onto the currentorigin/main.crates/buzz-acp/src/{acp,config,lib,pool,pool_lifecycle,queue,relay,usage}.rs;desktop/src-tauri/src/managed_agents/{runtime,reserved_env_keys}.rs;desktop/src/features/agents/observerRelayStore.ts;desktop/src/app/useAppShellLifecycleEffects.ts;desktop/src/features/profile/ui/{UserProfilePanel,UserProfileAgentActions}.tsx.Slice 1 — merge and unify ACP lifecycle
origin/mainassync/upstream-2026-08-13and merge exact tagdesktop-v0.5.11.session/load, post-load lineage validation, stale-lineage refusal, rebuild fallback, andDraining/re-wake semantics where the comparison proves they remain necessary.docs/crew/UPSTREAM-SYNC.mdto describe the resulting single idle-sleep seam; remove obsolete duplicate-key guidance.Slice 2 — adopt upstream desktop seams
Slice 3 — take correctness, storage, and deletion work
buzz-deletionand migrations0029/0030without creating a Crew deletion subsystem.Slice 4 — pins, workflows, docs, and evidence
docs/crew/upstream-buzz.jsonto0.5.11/desktop-v0.5.11/248b9d1b7666aacbcb1485b76e81de30a271ba0e.gh workflow list --all; no newly imported out-of-scope workflow may be enabled.docs/crew/DECISIONS.mdand update theUPSTREAM-SYNC.mdtouched-file table.Verify
ACP and lifecycle
cargo test -p buzz-acpsession/loadbefore rebuilding context.[Context]line and never appear in DM context.Desktop
session_aging,control_result, transcript, and active-turn projections.Relay/deletion
0029and0030to a populated test database.Gates
just ciNuncioCrew Gategreen.NuncioCrew Upstream Syncrun is green and its head SHA equals the sync branch HEAD.git merge-base --is-ancestor desktop-v0.5.11 <sync-head>succeeds.Definition of Done
desktop-v0.5.11is merged through a reviewed PR intoNuncio-hq/crew.docs/crew/upstream-buzz.jsonpins0.5.11, the exact tag, and commit248b9d1b....UPSTREAM-SYNC.md, Crew state/decision docs, and release contract tests describe the post-sync seams accurately.Non-goals
upstream/main, push toblock/buzz, or rewrite unrelated upstream code.