## Summary
- [sink#125](https://github.com/plevion-dev/sink/pull/125)'s own new `composition_source_error` WS event fires when a bus-error isolation removes a source's branch from the running pipeline -- without this, the operator has no visible signal at all that a source silently stopped contributing to the composited output, or that fixing it means re-adding it rather than waiting for something that isn't coming back on its own.
- Shows a warning dialog naming the removed source (falling back to its type's own label when it has none) with the exact copy requested: it was auto-removed for safety, retry by re-adding it, and check the source is being added correctly if the error persists.
- On dismiss (button, Escape, or outside-click -- all funnel through one handler), bumps a `refreshToken` prop that makes `SourcePanel` refetch its sources, so the now soft-removed row (sink#125 sets `removed_at`, not just `attached_at`) actually disappears from the canvas instead of lingering there looking like an ordinary unpublished draft.
