Обзор
Проверено 2 октября 2026 для этого сайта документации · у продукта нет инфраструктуры: ничего из него не развёрнуто
Сегодня развёрнут только этот сайт документации, и его публикует каждый пуш в основную ветку: промежуточной среды нет, инфраструктуры продукта тоже пока нет.
Пуш в основную ветку — это публикация. Всё, что до него, происходит в отдельной ветке.
Что есть сегодня
| Что | Состояние на 2 октября 2026 |
|---|---|
| Исходный код | Один закрытый репозиторий на GitHub, в котором лежат этот сайт и инструменты вокруг него |
| Сайт документации | Статический сайт на DigitalOcean App Platform, собранный с помощью VitePress |
| Публикация | Автоматически при каждом пуше в основную ветку |
| Языки | Английский, русский и украинский, собираются и публикуются вместе |
| Приложение и API | Вход, роли, магазины, люди и приглашения созданы (6 и 11 октября 2026), не развёрнуты; см. Что создано |
| Мобильное приложение | Не создано, не развёрнуто |
| Админ-приложение | Настройки для администраторов платформы, отдельное приложение (18 октября 2026), не развёрнуто; его адрес в продакшене подготовлен, не применён |
Как изменение попадает на сайт
- Работа идёт в отдельной ветке, в собственной рабочей копии.
- Проверка. Сайт собирается, затем проверяется то, чего успешная сборка не ловит: страница, которой нет на одном из трёх языков, мёртвая ссылка или якорь, страница, на которую ничто не ссылается. Затем сборка запускается, и каждая страница должна ответить.
- Ревью делает владелец. Агента-ревьюера нет: изменение читает и запущенный сайт смотрит человек, которому принадлежит проект.
- Слияние в основную ветку публикует.
- Кто-то открывает изменённую страницу на публичном сайте. Успешный деплой — ещё не видимая страница.
Так процесс был настроен 2 октября 2026. Через все пять шагов ещё не прошло ни одно изменение: коммиты, сделанные до этой даты, пушились прямо в основную ветку.
Рабочие копии и агенты
Одна задача получает одну рабочую копию, одну ветку и одного агента; этим управляет Orca. У каждой копии свои порты, поэтому несколько копий могут работать рядом, не задевая ни друг друга, ни основную копию. Агент доводит задачу до состояния «готово к ревью» и на этом останавливается; сам он изменения не сливает.
Скрипты, на которых это держится, — подготовка, запуск, проверка, уборка — 2 октября 2026 были пройдены от начала до конца в настоящей рабочей копии. Создавать копию через саму Orca ещё не пробовали.
Локальный запуск
Из корня репозитория make dev запускает сайт в режиме отслеживания изменений и открывает небольшую локальную панель: ссылки на локальный и опубликованный сайт на каждом языке, рабочие копии и то, что в них запущено, и живые логи. make check запускает проверку. И то и другое описано в README-файлах репозитория.
Отслеживание ошибок (GlitchTip)
Сделано и проверено локально 8 ноября 2026 года, нигде в развёрнутом не включено (SHIF-42, SHIF-43, приведено к общему стандарту в SHIF-44). API, приложение, приложение администратора и сайт умеют отправлять свои ошибки в наш собственный сборщик ошибок — GlitchTip на errors.dreamvention.com (он понимает протокол Sentry; организация dreamvention, по проекту на каждого: shiffty-api, shiffty-app, shiffty-admin, shiffty-website). Ничего развёрнутого ничего не отправляет, пока владелец не задаст переменные ниже. Браузерная часть подробно: Ошибки в браузере.
| Переменная | Кто читает | Когда | Что |
|---|---|---|---|
SENTRY_DSN | API | запуск (App Platform: RUN_TIME, секрет) | Ключ проекта API. |
APP_SENTRY_DSN, ADMIN_SENTRY_DSN, WEBSITE_SENTRY_DSN | приложение, приложение администратора, сайт | сборка (BUILD_TIME); приложение и сайт читают свой ещё и при запуске | Свой ключ каждого фронтенда. |
SENTRY_ENVIRONMENT | все четыре | сборка и запуск (RUN_AND_BUILD_TIME) | Ровно prod, dev или local. |
SENTRY_RELEASE | все четыре | сборка и запуск | Git-коммит сборки. |
SENTRY_AUTH_TOKEN | сборки фронтендов | сборка, только BuildKit secret | Загружает source maps; никогда не build argument и никогда не в образе. С ним: SENTRY_URL (по умолчанию https://errors.dreamvention.com), SENTRY_ORG=dreamvention и APP_/ADMIN_/WEBSITE_SENTRY_PROJECT. |
- Выключено по умолчанию. Без ключа библиотека не запускается и не делает ни одного запроса: в тестах, в CI, локально. Пустое окружение или любое, кроме
prod,devиlocal, тоже выключает (GlitchTip хранит каждое имя окружения вечно, поэтому ничего не угадывается). Локальный запуск (make dev,./orca/run.sh) всегда ставитlocalи отправляет, только если ключ задан в этой оболочке. - Что отправляется: ответы 5xx, необработанные ошибки и отклонения промисов, сбои загрузки части приложения, ошибки роутера и старта, упавшие фоновые задачи (с тегом
job). Никогда — отказ, который человеку уже показан (любой 4xx), запрос без ответа, отменённый запрос, сетевая ошибка самого браузера и ошибка из расширения браузера. - Что вычищается до отправки: тела запросов, cookie, все заголовки, кроме user agent браузера, query string и фрагменты адресов, email, токены, ключи и пароли в любом тексте, вывод консоли, введённое с клавиатуры, текст чатов и страниц, локальные переменные, имя машины. Человек — только его id. Нет сессий, трассировки (
tracesSampleRate: 0), записи экрана и профилирования. - Релиз и source maps: релиз — git-коммит; source maps фронтендов
hidden, делаются и загружаются, только если у сборки есть токен, и файл.mapникогда не отдаётся. - Как проверить: с окружением
localи тегомtask=<задача>вызвать в каждом рантайме одну необработанную ошибку и одно необработанное отклонение; сборщик отвечает 200, события появляются в проекте этого приложения. 4xx, отменённый запрос и сетевая ошибка появиться не должны, как и?token=…из адреса и строка из консоли. Сделано для SHIF-44 8 ноября 2026 года (события с тегомtask=SHIF-44).
Имена переменных — в api/.env.example и в .env.example каждого фронтенда; их значений в репозитории нет.
Чего нет
- Нет непрерывной интеграции. Проверка запускается на машине разработчика. На сервере ничто не остановит пуш, который её пропустил.
- Нет промежуточной или предварительной среды. Публичный сайт — единственная развёрнутая копия.
- Нет мониторинга. Опубликованный сайт проверяется, только пока у кого-то открыта локальная панель. Отслеживание ошибок есть в коде с 8 ноября 2026, но нигде не включено; см. Отслеживание ошибок (GlitchTip).
- Трекер задач не подключён. Задача — это то, с чем создана рабочая копия.
- Нет инфраструктуры для продукта. Хостинг, база данных, секреты, резервные копии и выпуск мобильного приложения не определены; см. Архитектуру. Единственное высказанное намерение — что более поздний сервис солвера будет работать в Kubernetes рядом с API; см. Агент и солвер.
Что читать дальше
- Архитектура: что придётся развернуть, когда это будет создано.
- Открытые вопросы: что решено, а что нет.