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

Число, у которого нет ключа подстановки, расходится не с другой страницей, а со своим же отчётом

Подстановка {{корпус.функций}} отменила расхождение между двумя страницами сайта — про это typed-numbers-drift-substituted-ones-cannot. Но она отменила его только для тех чисел, под которые ЗАВЕДЁН КЛЮЧ. Число, ключа не имеющее, остаётся прозой и расходится по-другому: не с соседней страницей, а с тем самым отчётом, из которого его когда-то переписали, — притом что оба текста лежат в одном дереве и едут в одну сборку.

Класс ловится по признаку: число в прозе, у которого рядом нет ни ключа подстановки, ни названного прогона, — это цитата, а цитата стареет вместе с источником и молча.

Чем подтверждено. 20 августа 2026, ветка vypusk/sayt-dlya-novichka от cb3b7a18. Главная страница сайта (docs/site/index.ru.md) говорила: «язык медленнее Python в 1,4 раза, Node в 3,3, а написанный руками C быстрее нас в 8,6». Отчёт docs/benchmark-speed.md в том же дереве, строки 3–4, говорит: «быстрее Python в 1,28 раза, медленнее Node в 1,81, медленнее написанного руками C в 4,52». Числа главной — это столбец «было» из таблицы того же отчёта (строки 126–129): 1,37 / 3,11 / 7,97. То есть главная цитировала предыдущее поколение замера, а сайт при этом собирался зелёным: node docs/site/build.mjs --check проверяет ссылки, английские пары и подстановки, а node docs/site/site-numbers.mjs --check сверяет с деревом 33 ключа, среди которых скорости нет.

Разница не косметическая: знак сравнения перевернулся. Читатель видел «мы медленнее Python» там, где замер говорит «быстрее».

Ещё два места того же класса, найденные тем же проходом. Страница «Первая программа» называла размер печати в C — 264 365 байт в русской половине и 266 373 в английской, прогон сегодня даёт 268 639: три разных числа об одном действии. Роадмап называл размер пакета 13 161 байт, а страница пакетов на том же сайте объясняла, что это число протухло и пакет весит 105 937.

Чем ограничено. Завести ключ на каждое число отчёта нельзя: ключ обязан считаться прогоном при ./ярлык числа, а замер скорости — это часы работы, не секунды. Значит, класс не закрывается подстановкой целиком, и остаётся выбор из двух: либо число живёт ТОЛЬКО в отчёте, а страница ссылается на отчёт, не повторяя его, — либо ключ всё-таки заводится. Первое дешевле и честнее, но слабее: читатель уходит со страницы за числом.

Признак для следующего. Прежде чем набрать число в прозе, спросить: откуда я его взял? Если ответ «из другого файла этого же дерева» — это не число, это копия, и жить она будет ровно до следующего прогона источника.

Связано: typed-numbers-drift-substituted-ones-cannot, a-number-without-a-named-measure, a-hand-written-list-outlives-the-tree, a-declared-and-never-called-list-is-a-promise-with-no-executor