The main-only #413/#416 workflow mirrors are already byte-identical to dev; merge ancestry without changing the tested stable tree.
Issue: #416
Release: v1.70.0
User-Visible: no
Promote the published v1.70.0 beta line without new product behaviour: stable version fields, synchronized generated bundles, bilingual changelogs, release notes and status metadata only.
Issue: #415
Release: v1.70.0
User-Visible: yes
Канон требовал назвать SHA предыдущего раунда и считал ненайденный SHA
находкой. Механика теперь даёт больше: конвейер дописывает в документ дерево
материала и блоб каждого ТЗ — их ребейз не меняет, потому что git адресует их
содержимым (issue #416).
Отсюда правка по существу: неразрешимый SHA сам по себе перестаёт быть
находкой. Ветку задачи между раундами перебазируют, сквошат или удаляют — по
корпусу ревью таких объявлений 98 из 804, и объявлять это дефектом значит
объявлять дефектом обычную работу. Материал в таком случае берётся по якорям,
и команды приведены прямо в пункте.
Находкой осталось то, чем #413 и был: SHA, мёртвый уже в момент публикации.
Он означает, что значение сняли до amend или rebase и не сверили перед выводом
отчёта, как требует §7.2. Такую публикацию конвейер теперь останавливает сам.
Issue: #416
User-Visible: no
Конвейер исполняет process.yml из ветки по умолчанию, поэтому файл обязан
совпадать в main и dev — это проверяет предполётный шаг. Здесь ровно тот же
файл, что в dev, байт в байт.
Issue: #416
User-Visible: no
#413 закрыл класс «SHA мёртв уже в момент публикации». Остаётся более частый:
SHA был жив, а умер потом — по корпусу таких объявлений 98 из 804, потому что
ветку задачи после ревью перебазируют, сквошат или удаляют.
SHA коммита — свойство истории, а история переписывается. Содержимое не
переписывается: git адресует деревья и блобы их хешем. На #403 спец-коммит
переехал из 83005c3c в 94502d3d, а блоб ТЗ у обоих один — 56a92e12; по нему
материал находится одной командой независимо от ребейза.
Конвейер снимает якоря там, где читает материал — в шаге перехода на ветку
задачи, пока рабочая копия равна тому, что прочтёт ревьюер. В шаге публикации
спрашивать поздно: дерево уже сброшено на целевую ветку. При публикации якоря
дописываются машинным блоком: дерево материала и блоб каждого ТЗ, каждый со
своей исполнимой командой поиска.
Блок машинный и помечен как машинный. Ревьюер его не заполняет: дисциплина
ручного переписывания SHA здесь уже подвела, и заменять её другой ручной
дисциплиной смысла нет.
Гейт #413 смягчён ровно там, где обязан: осиротевший SHA при живых якорях —
предупреждение, а не отказ. Ронять раунд, который воспроизводим, было бы той
же ошибкой в другую сторону. Отказ остаётся, когда не работает ни один
объявленный способ найти материал.
Проверено на настоящем осиротевшем случае: блок, собранный для 94502d3d,
находит и дерево, и блоб ТЗ; тот же документ с якорями даёт предупреждение
вместо отказа, без якорей — отказ.
Issue: #416
User-Visible: no
Конвейер исполняет process.yml из ветки по умолчанию, поэтому файл обязан
совпадать в main и dev — это проверяет предполётный шаг «Процесс: process.yml
идентичен в main и dev». Здесь ровно тот же файл, что уехал в dev коммитом
206732e9, байт в байт.
Issue: #413
User-Visible: no