Решили: «Начать заново» и «Во двор гильдии» на экране исхода забега — ОДНО общее решение
(run.after) с двумя вариантами, а не два решения. «В главное меню» общим решением не является
вовсе: кнопка личная и зовёт IRunControl — тот же путь, что «В главное меню» из паузы.
Почему: механизм согласия держит один заказ за раз (_key + _action), и второй Bind гасит
голоса первого. На экране с двумя общими кнопками это читалось бы как «нажал, а счёт пропал».
Форма с вариантами вдобавок честнее: один выбрал «заново», другой «во двор» — голоса не сходятся,
и обоим видно, кто что выбрал, ровно как с витриной награды.
Личную кнопку не стали делать третьим вариантом решения: тогда уход к себе требовал бы согласия напарника. Ожидание общего выбора висит на токене забега, и отмена (та же, что из паузы) его снимает.
Сказано: «Кнока “Главное меню” - личная. Кнопка “Начать забег заново” (фаст рестарт) - общая. Кнопка “вернуться к гильдию” - общая.» (08.08.2026, сессия eab27015).
Грабли: счёт на общих кнопках считается ПО ВАРИАНТУ, а не по решению. Общий Voted на обеих
кнопках означал бы, что напарник согласился с тобой, когда он выбрал соседнюю. Это не видно ни в
соло, ни в одном тесте формата — только глазами вдвоём.
Второе: гейт UiLocalizationCoverageTests ловит ключи, объявленные в коде и отсутствующие в
таблице. Новые ключи заводятся ТОЛЬКО через API редактора (col.SharedData.AddKey +
table.AddEntry + точечный SaveAssetIfDirty), правка YAML руками рвёт таблицу.
Владелец правды: DecisionKeys.cs (RunAfter, RunAfterOptions), OutcomePresenter.cs,
MenuRouter.ApplyReadyCount, OutcomeScreenView.SetSharedCount.