[review] Playlist bot: fallback keys off participant presence, not live audio
Local reference: R7
Status: Deferred; review finding only. Requires LiveKit-native integration
verification and is not safe to change without the rehearsal environment.
What was found
services/playlist-bot/src/index.ts fades the playlist out whenever identity
beacon01 is present, even if that participant has not published an audio
track or its track has ended.
- The app health check sees the bot's published track, but cannot tell that its
captured frames have faded to silence.
Why it matters
A connected-but-silent primary source can make both the live source and fallback
silent while health appears green.
Proposed change
Drive fallback state from the primary source's actual audio publication/mute
lifecycle, and expose a bot state signal that distinguishes publishing audio
frames from merely holding a LiveKit track.
Acceptance criteria
- The playlist remains audible when
beacon01 is connected without live audio.
- Track publish/unpublish/mute transitions crossfade exactly once.
- Reconnect reconstructs the correct state from current publications.
- Health turns red when neither source is producing audio.
- Behavior is verified against the deployed
@livekit/rtc-node version.
Filed by watchdog from fallback markdown. Deferred finding — see status above.
[review] Playlist bot: fallback keys off participant presence, not live audio
Local reference: R7
Status: Deferred; review finding only. Requires LiveKit-native integration
verification and is not safe to change without the rehearsal environment.
What was found
services/playlist-bot/src/index.tsfades the playlist out whenever identitybeacon01is present, even if that participant has not published an audiotrack or its track has ended.
captured frames have faded to silence.
Why it matters
A connected-but-silent primary source can make both the live source and fallback
silent while health appears green.
Proposed change
Drive fallback state from the primary source's actual audio publication/mute
lifecycle, and expose a bot state signal that distinguishes publishing audio
frames from merely holding a LiveKit track.
Acceptance criteria
beacon01is connected without live audio.@livekit/rtc-nodeversion.Filed by watchdog from fallback markdown. Deferred finding — see status above.