# ADR-002: Асинхронный событийный индексатор поверх GitHub Releases Дата: 2026-09-06 Статус: Принято ## Контекст Нужен дешёвый и устойчивый к лимитам GitHub способ индексировать моды. Хранить `.jar` у себя дорого, проксировать трафик - упрёмся в bandwidth и rate limits. ## Решение Бэкенд не хранит артефакты. GitHub Releases CDN - источник правды для файлов. Мы только: - принимаем webhook `release.published` (HMAC + queue + 202), - воркер читает zip central directory через Range Request, - парсит манифест (`fabric.mod.json` и т.д.), - пишет метаданные в Postgres, - отдаёт прямые `download_url` на `objects.githubusercontent.com`. Подробнее в `docs/architecture.md`. ## Последствия - Плюс: минимальный storage, нет egress costs, +5k–12.5k RPH через GitHub App. - Минус: зависимость от доступности GitHub CDN (приемлемо - моды и так там). - Вынесен malware-скан и SHA-256 сверка как обязательные. ## Альтернативы - Хранить файлы у себя (S3) - отклонено: дорого, дублирование. - Полный pull `.jar` на каждый релиз - отклонено: трафик, медленно.