Dockerfile и .dockerignore: панель — один процесс и один образ, express
отдаёт и API, и собранный фронт. Контекст сборки — каталог панели, ядро
приезжает в образ закоммиченным, поэтому образ собирается из чистого
checkout'а без ma7engine рядом.
Скаффолдер больше не кладёт панели update.sh и хуки predev/prebuild: ядро
в продукт приходит через git subtree, а копирование затёрло бы поддерево.
Печатает готовые команды subtree add.
Доктор различает два уклада ядра — subtree в продукте и копию в шаблоне —
и проверяет каждый по своим правилам.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019LeBkZLiQrvdECf5nfgiMz
git subtree split -b отказывается двигать существующую ветку, если новый
коммит ей не потомок — после reset в ядре ветка молча оставалась старой,
и продукт тянул устаревшую половину. Ветки производные, поэтому branch -f.
Поймано doctor'ом: сверка поддерева с ядром показала расхождение серверной
половины при совпадающей браузерной.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019LeBkZLiQrvdECf5nfgiMz
Первый коммит существующего состояния. Ядро кладётся под git ради того,
чтобы половины разъезжались в продуктовые репозитории через git subtree,
а не копированием: subtree делает настоящий merge, хранит историю и умеет
отдавать правки обратно.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019LeBkZLiQrvdECf5nfgiMz