Решение владельца: в партии все выбывшие проиграли и одинаково слабы, миров у них
нет, поэтому пара двух выбывших в сумму не входит — ни S − E, ни множитель отрыва.
Пары с невыбывшими считаются как прежде, нормировка на N − 1 тоже: при равных
рейтингах результат не меняется. Слабый выбывший больше не получает рейтинг за счёт
сильных выбывших.
Эталон — флаг skip_eliminated_pairs у предложенной системы; документ: 4.3, 4.4,
4.9, пример 5, итоги 7.3 пересчитаны (сдвиг в третьем знаке), решение 8 в разделе 9;
справка. #91
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LqSoRj99iwVEH5U5fnZgsd
Справка и краткое изложение документа обещали, что победитель не теряет рейтинг,
а последнее место его не приносит. Внутри общего места (ничья за 1-е, несколько
выбывших) это не так — раздел 4.9 уже говорил «без ничьей». #87
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LqSoRj99iwVEH5U5fnZgsd
Групповая цепочка убрана: рейтинг у игрока один, по всем партиям приложения
(решение владельца). load_history всегда грузит всю историю, одно
проигрывание на запрос. Страница группы: игры, победы, винрейт и среднее
место — по партиям группы, рейтинг — общий; «Новичок» тоже по общему числу
партий (новое поле rating_confirmed), поэтому опытный игрок в новой группе
ранжирован. Участники, не игравшие в группе, показывают общий рейтинг.
Главная и профиль — общие показатели; в блоке активной группы игры по
группе, рейтинг общий. У profile_stats убран неиспользуемый group_id.
Фронт: цвет рейтинга в списках берётся из rating_confirmed; справка —
«Один рейтинг на всё приложение». Документ рейтинга: раздел 8 и решение 7
в разделе 9.
Тесты: рейтинг в группах равен общему при групповых играх и победах,
главная и блок активной группы, ветеран в новой группе ранжирован,
«Ещё не играли» с общим рейтингом. #80
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LqSoRj99iwVEH5U5fnZgsd
Общий топ: столбец «Поб» и сортировка по победам убраны, чтобы четырёхзначный
рейтинг помещался в строку; «Очки» → «Рейтинг» (и в карточке профиля).
Справка переписана под Elo: шкала 1500/400, ожидание и формула ΔR, K новичка,
вес стола, множитель отрыва и близость по типу победы, необязательность
раунда, целей и миров, «последний выживший», лимит 8/9 раундов, примеры
из документа, общий и групповой рейтинг, лучшая партия по приросту.
В документе рейтинга статус — утверждено и реализовано. #23
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LqSoRj99iwVEH5U5fnZgsd
Поле дуэли 2×3 в таблице правил и примерах; шкала 1500 в формулах, примерах
и пределах изменений; таблицы 7.3 и 7.4 — из новых прогонов simulate.py.
Раздел 8 для #23: правило last_standing (автоматически при одном невыбывшем,
проверка на сервере, бэкфилл истории), рейтинг целым числом, столбцы общего
топа; устаревший абзац про CLAUDE.md заменён отсылкой к HelpPage.tsx.
Раздел 9 «Открытые вопросы» стал «Решениями владельца». #22
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LqSoRj99iwVEH5U5fnZgsd
Решения владельца по #22: у дуэли поле 2×3 (6 тайлов, 6.6 мира на игрока),
шкала — классический Elo (R0 = 1500, D = 400, K 64 → 16; чистый Elo — 96 → 16).
Примеры и assert переведены в новую шкалу, сетки K в --grid умножены на 10,
|ΔR| League Points в сравнении приводится к шкале 1500. Добавлена проверка,
что шкала не влияет на точность, Brier и ρ. #22
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LqSoRj99iwVEH5U5fnZgsd
docs/rating/rating-system.md:
- проблемы текущего League Points;
- правила игры как исходные данные: тай-брейки, хоумрул 9 раундов, миры;
- выбор модели среди альтернатив, формулы и коэффициенты;
- трассировка требований 1–5 и пошаговые примеры;
- результаты симуляции и анализ чувствительности;
- последствия для реализации: поля, миграция, пересчёт истории, что
ломается;
- открытые вопросы. #22
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XfTsytzT6TojfmprRDKiV6
docs/rating/simulate.py — только stdlib, фиксированные seed. Содержит
многопользовательский Elo с множителем отрыва (темп, цели, миры, тип победы,
размер стола, K новичка) и пошаговые примеры документа с assert. Синтетическая
лига в сценариях «сигнал», «шум», «клубы» и «рост» сравнивает текущий League
Points, чистый Elo и предложенную систему. Флаг --grid перебирает K и веса
на отдельных сезонах. #22
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XfTsytzT6TojfmprRDKiV6