Files
buzz/desktop/src
Max Lampert 116b73bd5e fix(desktop): gate roster attribution on abort; warn on dead sink; drop starved frames
Blind-review round 9 (Opus high) findings:

- P2: the members queryFn attributed unconditionally, so a roster fetch
  superseded by a live join/leave invalidation could claim the trace's
  one-shot membersFetch slot with a stale count and duration. It now
  checks signal.throwIfAborted() before attributing — same rule as the
  window fetch's reconcile abort gate.
- P2: a permanently dead sink (unwritable log dir, stale directory at
  the log path) was indistinguishable from no traced switches: console
  lines kept flowing while every append failed into .catch(() => {}).
  The first persistence failure now warns once.
- P3: during a suspension that fires no visibilitychange, the deferred
  render-pending marker stays latched, so the settle wait recorded a
  truncated measure inflated by the whole stall (bounded only by the
  35s age guard). A single inter-frame gap beyond 3s — beyond any real
  main-thread stall — now drops the sample.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Max Lampert <maxwell@squareup.com>
2026-08-26 12:34:09 -07:00
..