Files
buzz/desktop
Duncan 552fcdde7b fix(acp): close P2-1/P2-2/P2-3 and P3 B5 effort state-machine findings
P2-1 — invalid_value ack echoes nonce (lib.rs)
The early-return rejection branch built its own ack before the common
nonce-attaching builder ran. The parsed nonce was in scope but never
added. Desktop's awaitEffortOutcome nonce guard rejects a nonce-less
invalid_value ack, causing an 8 s timeout instead of an immediate
rejection. Fix: attach nonce in the early-return branch when present.
New test: test_b5_invalid_value_ack_echoes_nonce.

P2-2 — committed_effort seeded on startup application (pool.rs)
try_claim hands out desired_effort_gen = None for startup agents, so
return_agent's generation-matched commit block never fires. A later
rejected live pick rolled back to None instead of the confirmed startup
value. Fix: when the V-1 startup propagation block runs and the result
is Applied, seed committed_effort alongside desired_effort. Regression
test: test_startup_success_seeds_committed_effort_for_rollback.

P2-3 — same-generation resolution order-independent (pool.rs)
With parallelism > 1, multiple workers carry the same generation.
Applied wrote only committed_effort; Failed rolled back only
desired_effort; each emitted a terminal ack. Pool state and the ack
stream both depended on return order. Fix: first terminal result for a
generation emits the ack and marks the gen resolved
(last_acked_effort_gen); subsequent same-gen returns update pool state
(commit/rollback) but emit no ack. Semantics documented at the
resolution site. Two-worker tests: test_p2_3_fail_then_success and
test_p2_3_success_then_fail.

P3 fold-in — stale capability cache cleared on model swap (pool.rs)
When a returning agent had populated capabilities but no thought_level
configId (model swapped to a non-effort model), the pool-level
effort_capabilities cache retained stale valid_values. Fix: clear the
cache in the else-if branch; capabilities_ever_discovered stays true
so case C (workers busy) remains active.
New test: test_p3_capability_cache_cleared_on_non_effort_model_return.

P3 fold-in — dead case-C branch resolved (lib.rs)
After the model-swap clear, capabilities_ever_discovered = true AND
effort_capabilities.config_id = None is now a reachable state (all
workers checked out after a model swap), making all_busy_with_known_caps
genuine. No code change — the earlier capability-cache clear made this
case reachable; updated comment confirms it.

P3 fold-in — nonce-gate bypass closed (observerRelayStore.ts)
A nonce-less ok/cleared ack bypassed the stale-result guard when a
nonce had previously been registered. Fix: once a nonce is registered
for an agent, only acks with a matching nonce pass; a missing ack-nonce
is treated as non-matching. Pre-any-pick startup path preserved: when no
nonce has ever been registered, a nonce-less ack still passes through.
Also: resetAgentObserverStore now clears currentEffortNonce so test
isolation is not broken by residual nonce state.
New test file: observerRelayNonceGate.test.mjs (7 cases: startup path,
registered path, mismatch, bypass fix, per-agent isolation, reset).

Co-authored-by: Will Pfleger <pfleger.will@gmail.com>
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
2026-08-06 18:02:39 -04:00
..
2026-08-03 21:51:17 -04:00
2026-03-09 13:02:11 -07:00
2026-06-11 15:06:24 +00:00
2026-03-09 13:02:11 -07:00

Buzz

Desktop chat shell with:

  • Tauri + React + TypeScript + Vite
  • Tailwind CSS
  • shadcn/ui-ready shared components
  • Biome (lint/format/check)
  • Feature-driven frontend structure

Scripts

  • pnpm dev - run the web frontend
  • pnpm tauri dev - run the desktop app
  • pnpm build - typecheck and build frontend
  • pnpm typecheck - TypeScript checks
  • pnpm lint - Biome lint
  • pnpm format - Biome format (write)
  • pnpm check - Biome check

Structure

  • src/shared - reusable app-wide code (ui, lib, styles)
  • src/features - feature modules (vertical slices)
  • src/app - top-level app composition