mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +00:00
infra(process): bundle and review index change only on the way to dev (#657)
Решения владельца: 1б — индекс ревью не пересобирается в ветке задачи, только коммитами, идущими в dev; 2б — бандл меняет только кандидат беты/релиза, стенд dev берёт его из артефакта Validate. - scripts/bundle-policy.mjs: коммит, трогающий dist/** или custom_components/houseplan/frontend/**, обязан нести Release: (хук commit-msg и история в CI через validate-commit-provenance; коммиты с датой автора до 2026-09-27 не судятся); --verify судит целостность свежей сборки всегда, побайтовую сверку с закоммиченной копией — только на коммите, меняющем бандл, или кандидате; --clean. - release-prerelease: публикация отказывает, если отпечаток исходников в закоммиченном манифесте не равен отпечатку дерева (хотфикс поверх кандидата без пересборки). - bundle-sync: по умолчанию только demo/srv/assets; --release (npm run bundle:release) — ещё и custom_components. - rebase-on-dev: конфликт в бандле берёт копию dev, без пересборки и amend. - validate.yml: job dev_build публикует card-bundle головы dev в сиротскую ветку dev-build (scripts/dev-build.mjs); стенд накладывает её demo/stand/update-dev-bundle.sh. - _process.yml: индекс ревью больше не пересобирается при приведении к dev и при публикации документа в ветку задачи. - golden-wsl-artifact/golden-container: сборка перед съёмкой не считается правкой источника, после — bundle:clean. - test/bundle-tree-committed: судит закоммиченный снимок, не диск. - 11 мутантов в реестре; PROCESS/AGENTS/DEVELOPMENT/AUTHOR/REVIEWER. Issue: #657 User-Visible: no
This commit is contained in:
@@ -446,11 +446,12 @@ jobs:
|
||||
printf 'конфликтуют:\n%s\n' "${files:-(git не назвал файлы)}"
|
||||
exit 0
|
||||
fi
|
||||
# #635 r2: ребейз мог принести в docs/reviews документы других задач,
|
||||
# а закоммиченный INDEX.md — снимок каталога — их не знает. Свежесть
|
||||
# держит тест «индекс свеж» в Validate, поэтому индекс пересобирается
|
||||
# здесь же, коммитом конвейера (класс C), до фиксации материала.
|
||||
node scripts/reviews-index.mjs --dir=docs/reviews --commit-if-stale --issue="$NUM"
|
||||
# #657 (1б): индекс ревью в ветке задачи не пересобирается — ни здесь,
|
||||
# ни при публикации документа. Он пересобирается только коммитами,
|
||||
# которые идут прямо в dev: слиянием кандидата (merge-candidate.mjs)
|
||||
# и публикацией документа ревью ТЗ. Коммит индекса в ветке конфликтовал
|
||||
# с документами соседей по построению (#643) и возвращал зелёные
|
||||
# задачи на повторное ревью; гейт «индекс свеж» судит только dev.
|
||||
# --force-with-lease с явным ожидаемым значением обязателен: между
|
||||
# fetch и push автор мог запушить коммит, и слепой --force потерял бы
|
||||
# его молча. Расхождение lease — падение прогона, а не предупреждение:
|
||||
@@ -1375,9 +1376,11 @@ jobs:
|
||||
# забрал бы всё, что там окажется, а после reset там не должно быть
|
||||
# ничего постороннего — но полагаться на «не должно» здесь нельзя.
|
||||
git add -- "$doc" 2>/dev/null || true
|
||||
# #635: индекс ревью пересобирается тем же коммитом, что и документ —
|
||||
# иначе он устаревает на первом же раунде. Генерируемый файл, класс C.
|
||||
if [ -f "$doc" ]; then
|
||||
# #635/#657 (1б): индекс пересобирается тем же коммитом, что и
|
||||
# документ, только когда документ идёт прямо в dev (ревью ТЗ). В ветку
|
||||
# задачи — один документ: индекс там конфликтовал бы с документами
|
||||
# соседей в dev по построению; его пересоберёт слияние кандидата.
|
||||
if [ -f "$doc" ] && [ "$target" = "dev" ]; then
|
||||
node scripts/reviews-index.mjs --dir=docs/reviews
|
||||
git add -- docs/reviews/INDEX.md
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user