Live-verify shared-pool cross-channel re-promotion under concurrent STEAL load #24
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
dark/nether-voicebridge#24
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The cross-channel overflow re-promotion fix is merged to master (
258eef7) and deployed live, but its real-world path has only been unit-verified (incl. a negative control) — it still needs a concurrent multi-channel STEAL scenario with several real speakers to confirm end-to-end.The fix (background). When a channel activates and the pool is full, it steals a bot from a donor channel, demoting one of the donor's dedicated speakers into the overflow mix. Previously, when the stealing channel later freed that bot, the donor's demoted speaker was stranded in overflow forever (the "single overflow bot" symptom).
258eef7addspromote_overflow_into_free_bots/rebalanceincrates/discord/src/puppet.rs: whenever a bot returns to the pool, any already-anchored channel with overflow speakers and a guild-capable free bot gets its oldest overflow speaker promoted back to a dedicated puppet (FCFS, guild-scoped).Live test to run (needs ~4+ speakers across 2 channels):
promoted overflow speaker into freed pool bot (cross-channel)— instead of lingering in overflow.Also confirm guild isolation: a freed bot is only used for channels in a guild it's a member of.
Note: during the steal hop you may still see ~2 min of
channel DEGRADED— that is the separate quarantine issue #23, not a regression of this fix.Stop the bridge with SIGINT/Ctrl-C only (zombie-voice gotcha).
Still pending live confirmation — and the target moved with #46 (v0.3.0-alpha.5): allocation is now per-
(bot, guild)and steals are same-guild-only, so the concurrent-STEAL scenario specifically needs two active bridged channels in the same guild (cross-guild pressure can no longer steal, by design). The overflow/re-promotion logic survived the #46 refactor with its unit coverage grown (the 34-test allocator suite exercises steal + re-promotion paths).The multi-guild live session being set up for #46 could double as this test if two same-guild channels go active with real speakers.
Live-verified and merged to master (
6fb61f5).The e2e suite now has the live variant of this scenario:
steal_release_repromotion(catalogue #6), composing #7's phantom pattern with #15's two-tenant setup on a restricted 2-bot pool. E2E run #194 (compressed profile) passed first try in 26.5s, hitting exactly the sequence this issue asked for:The scenario also asserts Discord voice presence per-channel at every step (2 → 1 → 2 bots in the donor channel, 0 → 1 → 0 in the thief channel) via the read-only gateway probe, and that the demoted/promoted participant is the donor's newest non-anchor speaker (FCFS). Regression run #195 confirmed
overflow_fcfs_promotionandmulti_bridge_isolationstill pass alongside it. It runs in the nightly--allsweep from now on.The guild-isolation half (a freed bot only serves guilds it is a member of) stays hermetic-only — the live env has a single test guild — covered by
puppet.rs::freed_bot_only_repromotes_guild_capable_channel.(The
channel DEGRADEDquarantine noise mentioned in the description did not occur; the steal hop completed cleanly.)