namespace SVSim.BattleNode.Bridge; /// One player slot for a pending battle. Carries the viewer's identity and /// the per-battle MatchContext snapshot built at do_matching time. /// FOOTGUN: this is a record, but transitively holds an /// IReadOnlyList<long> (the deck), so the synthesized value-equality is REFERENCE-based /// on that list — two BattlePlayers with equal deck *contents* compare unequal. Don't use /// BattlePlayer / as dictionary keys or Distinct() / HashSet /// operands without first giving them content equality. Not exercised today. public sealed record BattlePlayer(long ViewerId, MatchContext Context);