Решили: Git LFS не заводить, а lfs: true из ci.yml снять (он стоял в двух job’ах и был no-op, потому что LFS не настроен).

Почему — замер, а не вкус. .git весит 645 МБ, и раздутость истории оказалась не там, где её ждали:

ТипВ историиСейчасМножительЛечится LFS?
.a208 МБ / 22 объекта208 МБ×1.0нет — статичен, лежит однократно
.wav196 МБ / 44644 МБ×4.5да, но см. ниже — это вендор
.asset149 МБ / 1049нельзя, YAML нужен diff/merge
.png135 МБ / 731566 МБ×2.0да
.dll, .so143 МБ93 МБ~×1.0нет
.unity, .meta, .md147 МБнельзя, текст

То есть половина веса — нативные библиотеки FMOD и Steamworks плюс YAML-ассеты, и LFS к ним неприменим: статичный бинарник и без LFS лежит в истории один раз, а текст в LFS гнать нельзя.

Убийственный аргумент — трафик. actions/checkout с lfs: true качает LFS-объекты на каждый прогон, и это списывается из квоты. Прогонов CI — 69 в месяц (замер gh run list: 100 запусков за 20 дней), чекаутов с LFS было бы два на прогон, объём текущих бинарников ~110 МБ. Итого ~15 ГБ против 1 ГБ бесплатной квоты — перерасход в пятнадцать раз, причём симптом («сборка не может скачать файлы») уводит искать причину в CI, а не в биллинге.

Грабли — две мои гипотезы, обе неверные, и обе стоило проверить:

  1. «.wav ×4.5 — это перенормализация нашего аудио, лечится .gitignore на производной папке». Неверно: FMOD Project/SourceAudio/ в истории — 2.5 МБ / 7 объектов. Папка производная (скрипт build_source_audio.py её rmtree и пересобирает из паков Kenney), но в историю почти не попадала. Экономия была бы 2.5 МБ.
  2. «Тогда это Assets/Feel — 155 МБ wav и ноль ссылок в коде, asmdef, сценах и префабах». Тоже неверно, и поймало правило «ноль ссылок ещё не мёртвое»: аудит Asset Audit - Feel & Shapes показывает, что из Feel живёт MMTools/…/MMCloudsNoise.png — он сэмплится четыре раза шейдером подложки карты акта, — а MMParticlesDust и MMVision/MMConeOfLight.shader заложены в план «пыль в луче света».

Настоящий источник веса — Assets/Feel/NiceVibrations (36.6 МБ сейчас, ~155 МБ в истории из-за переимпортов пакета, 617 файлов): haptic-сэмплы вибрации, на которые нет ни одной ссылки. Но это вендорный пакет Макса, и haptics могут понадобиться на Steam Deck, поэтому решение о его удалении — не моё; вес при этом снимается только текущий (36 МБ), историю лечит лишь filter-repo.

Вывод, который дал замер: делать не нужно ничего, кроме снятого флага. Вес, который LFS мог бы сэкономить, Макс явно назвал некритичным, а квота трафика — жёсткая.

Владелец правды: .github/workflows/ci.yml (комментарий на месте снятого флага), How-to - Adding Assets §1.