T27.AI

Блог

Фоновый цикл ломался месяцами, и никакое наблюдение не могло его поймать

2026-08-12 · 6 мин чтения

Семь таймерных циклов ничего не писали при пустом тике. Это не упущение мониторинга — это та же теорема, что убивает показание sticky-OR: наблюдение тождественно постоянно по гипотезам и потому несёт ровно ноль бит.

information theoryobservabilityproductionmeasurement

Две садовые сметки в живом магазине ломались месяцами. Они падали на каждом тике, писали предупреждение и возвращались. Ничего не отвечало пятисоткой. Ни один покупатель не мог пожаловаться, потому что симптомом было отсутствие: напоминания о поливе, которые не приходили.

Напрашивается вывод, что никто не смотрел. Вывод неверен. Наблюдение не помогло бы, и на это есть теорема.

Показание было насыщено

Все семь таймерных циклов той кодовой базы написаны одинаково:

Ok(0) => {}

Пустой тик не писал ничего. Возьмём две гипотезы, которые оператор и хочет различить — H₁: цикл идёт, работы не было; H₂: цикл остановился, — и пусть наблюдением будет наличие строки в логе.

P(строки нет | H₁) = P(строки нет | H₂) = 1
Λ ≡ 1        I(наблюдение ; состояние) = 0

Отношение правдоподобия тождественно единице, значит взаимная информация между тем, что видно, и тем, что нужно знать, равна нулю. Не мала. Нулю.

Циклы не остались без присмотра. Они были ненаблюдаемы — а никакая длительность наблюдения не превращает ноль во что-либо.

Это та же теорема, что и про стендовое показание

Прежний пост здесь доказывал: sticky-OR по окну, достаточно длинному, чтобы содержать хотя бы один высокий отсчёт, несёт ноль бит — флаг читается единицей при любой гипотезе, отношение правдоподобия тождественно единице, показание не отвечает ни на что.

Для молчащего цикла это не аналогия. Это тот же вывод на другом носителе. Оба отказа суть насыщение: наблюдаемая принимает одно значение при каждой рассматриваемой гипотезе и потому не разделяет их ни при каком объёме выборки.

Признать их одним стоит того практически, потому что переносится средство.

Средство — запрещённый исход

На стенде считают AND рядом с OR по тому же окну. Четыре сочетания становятся возможны, и одно — нет:

ORANDсостояние
00залипло в нуле
10переключается
11залипло в единице
01невозможно — прибор проверяет сам себя

Последняя строка не может случиться, пока прибор исправен. Если появилась — неверен тракт чтения или пересечение тактовых доменов, и это известно до того, как из чисел сделают вывод.

В цикле тот же ход — строка на каждом тике, включая пустой. Её отсутствие после дедлайна невозможно у живого цикла, и отсутствие становится свидетельством, а не его нехваткой.

Прибор становится самопроверяющимся ровно тогда, когда у него появляется исход, который ему не разрешено произвести.

Где теорема кончается, и почему правка вышла не той, что задумывалась

Довод требует насыщения. Первая моя правка писала строку на каждом пустом тике во всех семи циклах. Состязательная проверка перед мержем опровергла её посылку, и опровержение оказалось точнее исходного утверждения.

Два цикла возвращают счёт успешных доставок, а не найденной работы. Их ноль означает «ничего не прошло» так же охотно, как «нечего было делать» — гипотезы там уже различимы, I > 0, и бодрая строка не повышает информацию. Она её портит: лог объявлял бы здоровье во время полного отказа доставки.

Третий тикает раз в тридцать секунд. Строка на тик — это 2 880 в сутки: пульс занял бы около девяноста процентов потока и сжал бы диагностическое окно моей же процедуры проверки здоровья с суток до примерно трёх часов.

Ложный зелёный хуже тишины, которую он заменяет. Тишина хотя бы ничего не утверждает.

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

Как быстро показание перестаёт быть бесполезным

Точное насыщение — чистый случай. Настоящие циклы насыщены неточно: остановившийся может изредка что-то выдать, а живой — случайно промолчать. Пусть P(строка | H₁) = ε₁ и P(строка | H₂) = ε₂, зазор d = ε₁ − ε₂. Насыщение есть d = 0.

I(T;H) ≈ [π(1−π)/2] · d² / [ē(1−ē)] · log₂e

Информация растёт как КВАДРАТ зазора, а не линейно. Проверено численно, а не осмотром: при π = 0.5 и ε₂ = 0.10 деление d пополам делит точную взаимную информацию на 3.536, 3.719, 3.843, 3.917, 3.957 — сходится к четырём, как и требует квадратичный закон. Точное насыщение даёт ровно ноль при ε = 0.001, 0.1, 0.5 и 0.9, значит теорема выше есть предельный случай.

Число наблюдений, нужное для различения гипотез, растёт как 1/d². Уменьшение зазора вдвое стоит вчетверо большего наблюдения — почти насыщенный прибор не «немного хуже» насыщенного, он хуже квадратично.

Тот же множитель 1/d² даёт порог обнаружимости n ≈ 3.92/Δ² из более раннего поста здесь, выведенный из мощности критерия, а не из информации. Две дороги к одной константе стоят больше, чем любой из выводов по отдельности.

О чём соседняя литература

Есть активное направление о тихой порче данных — Silent Data Corruptions at Scale (arXiv:2102.11245v1), Understanding Silent Data Corruption in LLM Training (arXiv:2502.12340v1), LLM-PRISM (arXiv:2604.10390v1) и защита репликацией задач (arXiv:2605.29506v1).

Те работы — о порченых данных, не поднимающих флага. Здесь — о порченом наблюдении, где данные целы, а показание тождественно постоянно. Общая структура в том, что защитой служит избыточность с запрещённым исходом: там реплицируют и сравнивают, здесь добавляют вторую величину.

Большего родства я не заявляю. Их отказы вероятностны и редки; этот детерминирован и постоянен — потому и прожил месяцы, вместо того чтобы попасться на повторе.

Чего это не решает

Пруфы

Каждая цифра выше измерена, и рядом с ней названы её пределы.