Конфиденциальность
Что хранится, где, сколько и как это удалить. Без формулировок, за которыми нечего проверить.
Коротко
- Мы не продаём данные и не передаём их третьим лицам.
- В игре нет аналитики, трекеров и рекламных идентификаторов. Ни одного стороннего сервиса на странице.
- Учётных записей нет. Вас опознаёт секретный код игрока, а в базе лежит только его отпечаток.
- Хранится то, без чего партию нельзя посчитать и показать: ваши решения по годам и результат расчёта.
Кто ведёт проект
Проект ведёт частное лицо. Ни компании, ни команды, ни отдела поддержки за ним нет. Это стоит знать заранее: от этого зависит, как быстро ответят на ваш запрос.
Имя оператора не раскрывается. Связаться можно через форму на сайте — раздел «Как с нами связаться» в конце страницы.
Что вообще собирается
Только то, что вы сами вводите в игре, и то, что игра из этого считает. Мы ничего не подтягиваем о вас со стороны и никаких данных не покупаем.
Ни имени, ни фамилии, ни почты, ни телефона, ни адреса, ни даты рождения, ни платёжных данных: таких полей в проекте нет вовсе. Единственное место, куда можно вписать контакт, — необязательное поле в форме обратной связи, и заполняете его вы сами.
При создании партии вы вводите:
- Никнейм — придумываете вы, и он публичный.
- Название партии.
- Страну, где начинаете жить, и страну гражданства.
- Стартовый капитал и размер домохозяйства.
Это весь ввод при создании партии. Больше форма ничего не спрашивает и ничего не считывает.
Код игрока
Учётных записей в игре нет. При первой партии сервер выдаёт вам код вида XXI-XXXX-XXXX-… — 120 бит случайности. Он хранится в вашем браузере и является единственным доказательством, что партия ваша.
- Сам код мы не храним. В базе лежит только его SHA-256-отпечаток, из которого код обратно не получить.
- Поэтому потерянный код нельзя восстановить — ни вам, ни нам. Потерянный код означает потерянные партии, и лучше узнать об этом здесь, а не после чистки браузера.
- Код — не отпечаток устройства. Мы не считываем ни разрешение экрана, ни список шрифтов, ни версию браузера, ни что-либо ещё. Мы просто храним отпечаток секрета, который сами же и сгенерировали.
Отсюда же и отсутствие баннера о согласии: с вашего устройства нечего считывать, а значит, не на что и соглашаться.
Игровые данные
Всё, что вы решаете в партии, и всё, что игра из этого считает. Построчно, а не «данные, необходимые для работы сервиса»:
- Партия: название, режим, годы начала и конца, текущий год, стартовый и текущий капитал, страна старта, гражданство старта, размер домохозяйства, статус, зафиксированная версия данных и версия методологии, замороженные игровые допущения, дата создания и время, когда вы последний раз открывали экран года.
- Ход: год, статус, время фиксации решений, капитал на начало и конец, доходность за год.
- Позиции бизнеса: страна, отрасль, доля портфеля, суммы на начало и конец — и ровно тот текст, который вы напечатали в поле отрасли.
- Позиции сбережений: страна, валюта, тип инструмента, доля портфеля, суммы на начало и конец.
- Решения года: налоговое резидентство, страна проживания, цель и маршрут гражданства, политическая позиция, размер домохозяйства.
- Результат года: налоги, стоимость жизни, стоимость переезда, стоимость гражданства, эффект исторических событий, капитал на конец, доходность.
- Ledger: каждая строка изменения капитала — с формулой, ставкой и ссылкой на источник.
- История резидентства и заявок на гражданство внутри партии.
- Строка в таблице лидеров у завершённой партии: никнейм, стартовый и итоговый капитал, множитель, число сыгранных лет, версия данных.
Ничто из этого не связано с вашей личностью — только с кодом игрока и с придуманным вами никнеймом.
Кто может открыть вашу партию
Партия открывается по своему адресу: кто знает ссылку — тот может её посмотреть и продолжить. Паролей нет, и ссылка на партию — это и есть ключ к ней. Пересылая её, вы передаёте доступ.
Код игрока нужен для другого: он доказывает, что партия ваша, когда вы подтягиваете свои партии на новом устройстве или публикуете результат.
Страницы партий закрыты от поисковых роботов, но защита здесь одна — секретность самой ссылки.
Никнейм и таблица лидеров
Никнейм публичный: он виден в таблице лидеров и на опубликованной странице результата. Выбирайте его так, чтобы вам было спокойно видеть его на публичной странице. Настоящее имя, почта или что-то узнаваемое там не нужны.
- Никнейм в игре уникален: два игрока не могут взять один и тот же.
- В таблицу лидеров попадает только завершённая партия.
- Оператор может скрыть строку в таблице лидеров или заменить отображаемое имя — например, если никнейм оскорбительный. Причина записывается, решение обратимо.
Публикация результата
Завершённую партию можно опубликовать по адресу вида /result/… . Это отдельное действие, и само оно не происходит никогда.
- Опубликовать может только тот, у кого есть код игрока. Знать ссылку на партию для этого недостаточно — иначе показать партию другу означало бы выложить её в интернет.
- На публичной странице только итог: никнейм, стартовый и итоговый капитал, множитель, число лет, лучший и худший год, версия данных. Ни решений, ни портфеля, ни стран, ни ledger, ни идентификатора партии — по ней нельзя открыть саму партию.
- Публикацию можно отозвать в любой момент. Страница перестаёт открываться сразу.
- Если вы опубликуете результат снова, адрес будет новым. Старая ссылка остаётся мёртвой навсегда — иначе отзыв согласия можно было бы тихо отменить.
Сообщения об ошибках и обращения через форму
Кнопка «Заметил ошибку» и форма обратной связи пишут в одну и ту же таблицу — у оператора одна очередь, а не две забытые.
Сохраняется: ваш текст, категория обращения, идентификатор партии и версия данных (если вы писали из партии), ссылка на строку, которую вы смотрели, и значение, которое было на экране.
- Поле «контакт для ответа» необязательное. Это свободный текст: адрес, ник — что угодно. Мы его не проверяем и не используем ни для чего, кроме ответа на это самое сообщение.
- Текст обращения — единственное поле во всей игре, куда можно случайно вписать что-то личное. Пишите туда только суть.
Обращения не публикуются и видны только оператору.
Аналитика
Её нет. Ни Google Analytics, ни Яндекс.Метрики, ни Plausible, ни Matomo. Ни пикселей, ни рекламных идентификаторов, ни инструментов A/B-тестирования, ни записи сессий, ни карт кликов.
Во всём коде сайта единственный внешний адрес, который вообще упоминается, — адрес самого сайта. Страница не подгружает ни сторонних шрифтов, ни скриптов, ни картинок: ваш браузер, открыв игру, не обращается никуда, кроме replayhistory.app.
Ошибок в вашем браузере мы тоже не видим: системы сбора клиентских ошибок в проекте нет. Если что-то сломалось — единственный способ сообщить об этом — форма.
Единственный исходящий канал
Одно исключение назвать честнее, чем умолчать о нём. При сбое системной службы сервер может отправить оператору уведомление в Telegram: имя упавшей службы и последние строки её системного журнала.
Это техническая телеметрия сервера, а не игровые данные, и уходит она в личный чат оператора. Канал включается отдельным файлом настроек на сервере; без него скрипт молча не отправляет ничего.
Cookies и данные в вашем браузере
Игроку сайт не ставит ни одной cookie. Единственная cookie во всём проекте — сессия операторской панели, и она появляется только после входа оператора по паролю.
Зато игра пользуется localStorage вашего браузера. Всё перечисленное лежит на вашем устройстве; мы это не читаем и не получаем:
- xxi.playerToken — ваш код игрока.
- xxi.games — до двадцати последних партий, начатых в этом браузере: идентификатор, название, никнейм, дата.
- xxi.language — выбранный язык интерфейса.
- xxi.onboarding.firstTurn.v1 — отметка, что подсказку первого хода вы уже видели.
Очистка данных сайта в браузере стирает всё это разом — вместе с кодом игрока. Если код нигде не сохранён отдельно, партии станут недоступны.
IP-адреса и журналы
Ни в одной игровой таблице нет колонки с IP-адресом. Ни партия, ни ход, ни решение, ни результат адрес не хранят и никогда с ним не сопоставляются.
Адрес появляется ровно в трёх местах:
- Журнал доступа веб-сервера. Обычный access-log на сервере; он ротируется — пять файлов по 20 МБ, старое перезаписывается новым.
- Ограничитель частоты запросов. Он держит адреса и время запросов в оперативной памяти процесса: ничего не пишет на диск, вычищает неактивные записи раз в минуту и обнуляется при каждом перезапуске.
- Журнал неудачных попыток входа в операторскую панель — туда записывается то, что сервер видит как источник попытки. Игроков это не касается: панель доступна только оператору.
Больше нигде адрес не сохраняется.
Где данные лежат
Данные хранятся на арендованном сервере в Европе. Никуда за его пределы они не передаются: ни в облачные базы, ни в сторонние сервисы, ни партнёрам — их у проекта нет.
Сколько данные хранятся
- Игровые данные — бессрочно, пока проект жив. Автоматического удаления по сроку нет: партия остаётся в таблице лидеров и после того, как вы о ней забудете.
- Резервные копии базы снимаются раз в сутки и хранятся 14 дней. Значит, удалённые данные ещё до двух недель остаются в копиях, а затем исчезают вместе с ними.
- Журнал веб-сервера — пока его не вытеснит ротация: пять файлов по 20 МБ.
- Счётчики ограничителя частоты — минуты, и только в оперативной памяти.
Экспорт и удаление
Кнопок «выгрузить всё» и «удалить всё» в игре нет. Говорим прямо, а не прячем за формулировкой.
- Выгрузка. Всё, что хранится по партии, видно на её экранах, а API отдаёт то же самое в JSON: по ссылке на партию доступны её история и построчный ledger каждого года.
- Удаление. Напишите через форму. Оператор удаляет записи вручную. Удаление игрока убирает вместе с ним все его партии, ходы, решения, результаты, ledger и строку в таблице лидеров: они связаны каскадом и не остаются сиротами.
- Отозвать публикацию результата можно самостоятельно и мгновенно — на экране самой партии, своим кодом игрока. Ждать оператора не нужно.
Свой код игрока в форму отправлять не нужно: это действующий ключ к вашим партиям. Достаточно никнейма и ссылок на партии. Проверить, что партия действительно ваша, оператор может только по ним — проверка слабая, и мы предпочитаем сказать об этом, а не делать вид, что её нет.
Ваши права
Через форму можно попросить показать, что о вас хранится, исправить это, удалить, скрыть строку в таблице лидеров или сменить отображаемое имя.
Мы не перечисляем здесь статьи законов и не называем сроков, которые не сможем выдержать: проект ведёт один человек. Практика простая — запрос читается и выполняется, как только до него доходят руки.
Дети
Игра не предназначена для детей и не спрашивает возраст. Проверить его мы не можем и делать вид, что можем, не будем.
Никаких данных, специально относящихся к детям, проект не собирает — как, впрочем, и любых персональных данных вообще.
Искусственный интеллект
Игровые данные не отправляются ни в какие внешние AI- или LLM-сервисы. Ни для расчёта результата, ни для подсказок, ни для чего-либо ещё.
- Движок детерминированный: одинаковый ввод всегда даёт одинаковый результат.
- Отрасль по вашему тексту распознаёт обычный алгоритм, а не языковая модель. Описания событий собраны по шаблонам.
- Во время партии игра не обращается ни к одному внешнему источнику. Весь исторический датасет собран заранее, оффлайн.
Как с нами связаться
Через форму на сайте. Электронной почты для обращений мы не публикуем.
Ограничение, о котором честно предупредить: если сайт недоступен, форма недоступна вместе с ним — другого канала связи у проекта нет.