Решили: гейт готовности обобщён до общего решения с вариантами. Участник заявляет не «готов», а «я за вариант N»; кнопка «Начать» и «Продолжить» — решение с ОДНИМ вариантом. Голоса едут поимённо; расхождение не разрешается само.

Почему: совместных экранов у нас будет много (награда 1-из-3, узел карты, улучшение «Сосуда»), и всем им нужен один и тот же ответ — высказались ли все и сошлись ли. Отвергнут второй механизм рядом с гейтом: это ровно та ошибка, ради исправления которой гейт и сводили в один механизм 03.08.2026, — два похожих счётчика расходятся, а расхождение читается игроком как зависшая кнопка. Отвергнуто «побеждает большинство»: спор у нас — контент, а не сбой; игра не диагностирует его и не подсовывает арбитра, ритуал зовут руками (канон gdd/50-modes-ux/coop/arbiters, вердикт Макса 30.07.2026).

Сказано: «У нас мини-игры при не согласии есть (бросок d20), изучи. Должны тыкнуть все обязательно. С выбором ноды на карте. к слову, надо сделать аналогично» и «Это должно быть расширяемо и меняемо. Просто учитывай, что много что еще может добавить и надо сделать хороший механизм, что будет хорошо поддерживать идеи в будущем» (Макс, 07.08.2026, сессия 9c0cf5ea). Расширяемость выражена так: новый совместный экран стоит ключа и списка вариантов, а не своего протокола; ритуал цепляется к решению один раз и работает для всех ключей сразу.

Грабли: стороны на канале различались по ДЛИНЕ сообщения («один байт — голос гостя»). Держалось это до первого изменения формата и сломалось бы на нём: голос стал строкой варианта, длины сравнялись, и хост принял бы собственное эхо за чужой голос. Признак отправителя теперь первым байтом (ReadyWire). Свой голос гость берёт из объявления хоста, а не помнит рядом: вторая память расходится при сбросе, и кнопка остаётся нажатой у того, кого в проголосовавших уже не числят. Список вариантов в Bind НЕ передаётся: варианты рождаются вместе с экраном, и второй их список разъехался бы с первым при смене содержимого. Решение сравнивает голоса между собой, а не со справочником.

Не сделано намеренно: тип всё ещё зовётся IReadyGate, хотя решает уже не только готовность. Переименование поедет первым шагом следующей фазы — вместе с первым реальным многовариантным экраном, на котором его можно проверить.

Владелец правды: Core/Net/IReadyGate.cs, Core/Net/ReadyKeys.cs (DecisionOptions), Net/ReadyWire.cs, Game/Session/Net/HostReadyGate.cs; тесты SharedDecisionTests, ReadyGateTests.