Решили: награду берёт группа. Клик по карточке — голос в общем решении (reward.pick), экран
закрывается признаком срабатывания, а не своим нажатием. Обмен при полном инвентаре едет одним
вариантом (взять>выбросить), пропуск — такой же вариант.
Почему: пока выбор был локальным, первый нажавший забирал реликвию за группу, а остальные узнавали об этом по исчезнувшему экрану. Отвергнуты два решения подряд («что взять», затем «что выбросить»): между ними появилось бы состояние «награду взяли, место не освободили», а имущество у нас общее целиком, и согласиться группа обязана на обе половины сразу. Место считает хозяин — правило вместимости живёт у него; гостю показывается витрина, а не приговор. Второе мнение о вместимости разошлось бы ровно в день, когда правило поменяют.
Сказано: «Ладно, давай все же при взятии, когда много - выбрать + взять. Тоже голосование. Голосовать можно и за “отменить”» (Макс, 07.08.2026, сессия 9c0cf5ea).
Грабли — главные за день: в проекте было ДВА интерфейса с именем IReadyGate —
Core.Net.IReadyGate (сетевое согласие) и Game.Flow.IReadyGate (шов «дождаться всех» из плана 11 с
единственным WhenAllReady). Механическое переименование по имени типа переименовало оба, и код
продолжил компилироваться: разные пространства имён. Обнаружилось случайно — при чтении регистрации в
мероприятии, где соло-заглушка вдруг оказалась реализацией сетевого интерфейса. Урок конкретный:
переименование по строке обязано сверяться с namespace, а «компилируется» ничего не доказывает,
когда имена дублируются.
Рядом: замена \bReady\b задела DiagChannel.Ready и Ready() в CombatVfx — оба к решению
отношения не имеют. И скрипт на utf-8-sig добавил BOM двадцати файлам, у которых его не было;
выровнено по версии из HEAD.
Инвариант, который сработал сам: PlayerCapabilityRegistryTests поймал оба новых канала —
Decision и NodeStage не были описаны в реестре возможностей. Ровно то, ради чего тест писался.
Владелец правды: Data/Definitions/RewardMessages.cs (RewardOptions),
Game/Flow/RewardPresenter.cs, Game/Session/Net/GuestNodeStage.cs, UI/MenuRouter.cs;
тесты SharedDecisionTests, NodeStageTests, PlayerCapabilityRegistryTests.