using SVSim.BattleNode.Bridge; namespace SVSim.EmulatedEntrypoint.Matching; /// /// Picks a bot opponent for an incoming AI rank battle. Used by /// RankBattleController.AiStart to compose oppo_info. /// /// /// Backed by the BotRoster table (seeded from /// SVSim.Bootstrap/Data/seeds/bot-roster.json). Edit the seed + re-run /// SVSim.Bootstrap to change the pool without recompiling. /// public interface IBotRoster { /// /// Returns a bot profile for the calling viewer. Deterministic per /// — the same context value returns the same bot, so a /// mid-flight retry of /ai_<fmt>/start picks the same opponent. /// Task PickAsync(MatchContext selfCtx, CancellationToken ct = default); }