flang компилятор доказывает, что программа не зациклится 0.6.2 GitHub

Номера строк и числа в задании — это дешёвая проверка того, на той ли ветке заведено рабочее дерево

Задание на перенос называло две опорные точки: функция «Одинаковы» «около строки 422» и «Свёртка не быстрее списка» «около строки 2616», а мерная проверка «сейчас печатает совпало ПОБАЙТОВО 309, расхождений 15». В выданном рабочем дереве файл был длиной 1902 строки, «Одинаковы» стояла на 370-й, «Свёртки не быстрее списка» не было вовсе, а проверка печатала совпало ПОБАЙТОВО 236, расхождений 16. Ни одно число не сошлось — потому что дерево было заведено от ветки work/adr-pakety, а задание писалось против work/zelenyy-stvol.

Проверять это надо ПЕРВЫМ действием, до чтения кода. Стоит одну команду и снимает целый класс потерянного дня: перенос «догоняющей» правки на ветку, где догонять нечего, выглядит как работа и не даёт ничего.

grep -n 'функция «<имя из задания>»' <файл из задания>

Не сошлось — искать ветку, где сходится, а не подстраивать задание под дерево:

git log --all --oneline -S'<имя функции>' -- <файл>
git branch -a --contains <найденный коммит>

На work/zelenyy-stvol обе опорные точки легли ровно на 422 и 2616, и мерная проверка дала ровно 309 / 15. После этого работа стала возможна.

Побочная ловушка того же дня. Часть проверок ствола красна СВОИМ красным, и принять его за свой легко. flang/test/proof-kernel.test.mjs даёт 151 из 153 и до правки, и после — те же две проверки; СНИМОК в flang/test/self-proofterm.test.mjs красен потому, что записанный снимок знает 319 программ, а корпус вырос до 324 (пять программ добавлены после последней пересъёмки: setoid-oracle, sets-oracle, base64, sha256, utf8). Проверяется это тем же приёмом, что описан в a-red-inherited-from-the-trunk-must-be-measured-on-the-trunk: вернуть свой файл из истории, прогнать, вернуть обратно.

Чем подтверждено. 19 августа 2026, рабочее дерево agent-a4a52cae59b85cac7. Прогоны node --test на обоих основаниях, числа выше сняты ими, а не по памяти.

Чем ограничено. Приём ловит несовпадение основания, а не устаревшее задание на верной ветке. Если числа не сошлись, а ветка одна-единственная — значит, изменилось дерево, и мерить надо заново.

Связано: a-red-inherited-from-the-trunk-must-be-measured-on-the-trunk, porting-a-rule-means-porting-its-refusal-text, a-side-may-already-exist-check-before-writing