using Unity.Entities; namespace ProjectM.Simulation { /// /// SERVER-ONLY roster tag for the players conscripted into the CURRENT run — stamped on every connected /// player at the launch edge (Launching → room 0), removed on the Returning edge. Room advances teleport /// ONLY participants: a dead-respawned member (back at base) is re-conscripted on the next advance (the /// operator-locked default), while a mid-run late JOINER — who never readied — stays safely at base until /// the next Staging (spec §2.2 closed-party rule; post-impl review, confirmed medium). NOT a [GhostField]; /// disconnect cleanup is free (the tag dies with the player ghost's LinkedEntityGroup despawn). /// public struct RunParticipant : IComponentData { } }