Решили: сторона участника — назначение в составе сеанса (ISessionRoster.Seat), а не вывод
из режима. Рассадка мероприятия (SplitBetweenSides) осталась, но стала УМОЛЧАНИЕМ для тех, кого
не сажали руками. Фолбэк «моя сторона из дев-ручки» снят целиком, поле
GameConfig.LocalPlayerTeam удалено.
Почему: сторона считалась от места входа и пересчитывалась при каждой пересадке — то есть поменять её было нечем в принципе, а посаженного затёр бы следующий подключившийся. Отвергли вариант «оставить ручку как начальное значение»: пока у ответа «за кого я играю» два источника, при пустом составе тихо побеждает второй — именно так это и сломалось.
Сказано: «Никакого фолбэка. Все явно. Я скажу больше. Мб в компаниях игрок сможет вставать на другую сторону. Или еще что. Это не должно быть прям ПРИВЯЗАНО к режиму или начальным параметром, это мы должны мочь легко менять. Поняла?» (08.08.2026, сессия eab27015).
Грабли: дев-ручка успела солгать дважды и оба раза не про себя. Сперва (07.08) при неразделённых сторонах она доставалась только месту ноль и разводила хозяина с гостем в кампании. Потом (08.08) подменила собой пустой состав у гостя: гость получил сторону хозяина, тащил его бойцов, а хозяин молча отбивал намерения — поломка ФОРМАТА выглядела как дефект ПРАВ, и искали её не там. Ноль вне сеанса при этом фолбэком не считается: сеанса нет, спрашивать «за кого я играю» некому и незачем. Ещё две мины сняты по дороге: смена рассадки сбрасывает ручные посадки (иначе посаженный в PvP на вторую сторону остался бы в кампании противником своей же группе), а уход участника уносит его назначение (номера пиров переиспользуются, и посадка досталась бы следующему как чужое наследство).
Владелец правды: ISessionRoster.cs, HostSessionRoster.cs, SessionPlayerRouter.cs,
тест SessionSeatingTests.