Решили: горячий цикл живёт на dev — правки коммитятся туда напрямую, без фичевых веток, а билд для теста собирается локально (steam-publish.ps1, ~3 минуты) и заливается в Steam оттуда же. master выпадает из цикла: он остаётся витриной, куда вливаем перед показом. Проверки CI на dev ОСТАЮТСЯ.

Почему: стадия сейчас — «нашли баг в коопе, починили, снова играем», и Макс просил убрать из неё всё лишнее. Разбор показал, что лишнее — не то, что кажется:

  • CI на пуше не стоит ни минуты его времени. Он асинхронный: пушнул и работаешь дальше. Отмена проверок экономит ноль.
  • Стоит времени маршрут: dev → PR → master → тег → облачная сборка. Четверть часа на каждую итерацию, и это при тёплом кэше; вхолодную было четырнадцать минут только на плеер.
  • Локальная сборка — три минуты, потому что теневой проект уже прогрет и импортировать нечего.

То есть скорость берётся из смены маршрута, а не из отказа от проверки. Отказ дал бы только тишину, в которой «забыл закоммитить файл» всплывает не на прогоне, а у друга на второй машине посреди забега — 03.08.2026 таких файлов нашлось три.

Сказано: «Щас стадия “ААА, БАГ В МП, ЧИНИМ И БЫСТРО НА ДЕПЛОЙ”. И нам проверки тут вообще не к месту. … Нашли баги, написали. поправили, сразу деплой в стим и сразу забег с друзьями.» (03.08.2026, сессия 272cfad5). Согласились по master, разошлись по проверкам — и он принял довод.

Почему фичевых веток больше нет. Ветка изолирует параллельную работу. Параллельность есть — Макс ведёт несколько чатов сразу, — но рабочее дерево одно на все сессии, и все они пишут в одну ветку. Изоляции ветка не давала ни разу; feat/slice-feel-and-content прожила три недели и набрала 789 коммитов, то есть стала вторым main под другим именем. Ветку берём только под заход, который не жалко бросить.

Грабли:

  • Squash дважды за день схлопнул историю (PR #22 — 789 коммитов, PR #23 — релиз), и оба раза чинилось одинаково: commit-tree с двумя родителями и ТЕМ ЖЕ деревом. Файлы не меняются, восстанав- ливается только родство.
  • «Не забыть выбрать merge commit» не работает — проиграно с первого раза. Squash и rebase выключены в настройках репозитория: кнопка их больше не предлагает. Тот же приём, что с версией в теге — механика вместо памяти.
  • Июльский squash аукнулся через две недели: master и dev перестали быть родственниками, и релизный PR открылся с конфликтом на 419 файлах, которых никто не трогал.
  • Локальная дорога была опасна утром и безопасна вечером. Она берёт файлы с диска, а там лежали чужие незакоммиченные правки; после разбора дерева этой причины нет.

Владелец правды: .cursor/rules/git-conventions.mdc, docs/steam-deploy-setup.md, настройки репозитория (allow_squash_merge: false).