From d624bd0b87077cf1a46d4ecca1afb86cd4335187 Mon Sep 17 00:00:00 2001 From: Dmitrii Vasilev Date: Sun, 23 Aug 2026 04:58:55 +0700 Subject: [PATCH] blog: correct the nine-gates post, one day later Two claims in it are wrong, and using the tool it introduces is what found them. - one survivor was invented by the tool: it ran the FIRST control flag a gate declares, not all of them, and the flag it picked does not reach that gate's main verdict at all - 'six of the nine share that exact shape' was classified by whether a gate keeps a baseline file, not by reading what each surviving site guards. Of 20 real sites, 7 are preconditions; 13 are ordinary verdict branches. Closing the precondition class does not fix those six gates, which the sentence implied Appended rather than edited in place: the post is live on the apex and the original claims were read by whoever read it. Refs gHashTag/t27#2468, gHashTag/t27#2469 --- .../bodies/the-control-that-could-not-fail.ts | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/apps/website/src/data/blog/bodies/the-control-that-could-not-fail.ts b/apps/website/src/data/blog/bodies/the-control-that-could-not-fail.ts index 1797f4329b..415ce37e86 100644 --- a/apps/website/src/data/blog/bodies/the-control-that-could-not-fail.ts +++ b/apps/website/src/data/blog/bodies/the-control-that-could-not-fail.ts @@ -117,6 +117,26 @@ export const body: Block[] = [ "kind": "p", "text": "Six of the nine share that exact shape, which means one control pattern closes the class rather than six bespoke cases." }, + { + "kind": "h", + "text": "Correction, one day later" + }, + { + "kind": "p", + "text": "Two things above are wrong, and using the tool is what found them." + }, + { + "kind": "p", + "text": "**One survivor was invented by the tool.** It ran the *first* control flag a gate declares, not all of them. One gate has two, and the one the tool picked does not reach that gate's main verdict at all — the other kills it in a line. So a report that said \"nine gates, twenty-one sites\" was overstated by one site, published before it was checked. That is the same error the post is about, committed by the instrument the post introduces." + }, + { + "kind": "p", + "text": "**\"Six of the nine share that exact shape\" was a heuristic, not a reading.** I classified by whether a gate keeps a baseline file, rather than by reading what each surviving site actually guards. Reading all twenty: seven are preconditions, across six gates. The other thirteen are ordinary verdict branches whose controls do not reach them — including one gate's *main* verdict. Closing the precondition class does not fix those six gates, which is what the original sentence implied." + }, + { + "kind": "p", + "text": "The shared control was still worth building, and it found a live defect on its first run: a gate that printed \"SKIP: iverilog or t27c missing\" and exited zero, greenlighting an unchecked tree while saying so out loud. Survivor sites are now thirteen, and the two remaining preconditions are named in a constant in the file rather than left to be inferred from a count." + }, { "kind": "h", "text": "The check worth running on your own repository" @@ -248,6 +268,26 @@ export const ruBody: Block[] = [ "kind": "p", "text": "Шесть из девяти имеют ровно эту форму — значит один образец контроля закрывает весь класс, а не шесть отдельных случаев." }, + { + "kind": "h", + "text": "Поправка, сутки спустя" + }, + { + "kind": "p", + "text": "Две вещи выше неверны, и нашлись они при использовании самого инструмента." + }, + { + "kind": "p", + "text": "**Одного выжившего инструмент выдумал.** Он запускал *первый* объявленный гейтом флаг контроля, а не все. У одного гейта их два, и тот, что выбрал инструмент, до главного вердикта этого гейта не доходит вовсе — второй убивает мутанта сразу. Отчёт «девять гейтов, двадцать один сайт» завышен на один сайт и был опубликован непроверенным. Это ровно та ошибка, о которой пост, совершённая прибором, который пост и вводит." + }, + { + "kind": "p", + "text": "**«Шесть из девяти одной формы» — эвристика, а не чтение.** Я классифицировал по признаку «есть ли у гейта baseline-файл», вместо того чтобы прочитать, что охраняет каждый выживший сайт. Прочитал все двадцать: предусловий среди них семь, на шести гейтах. Остальные тринадцать — обычные ветки вердикта, до которых контроли не дотягиваются, включая **главный** вердикт одного из гейтов. Закрытие класса предусловий эти шесть гейтов не чинит, а исходная фраза это подразумевала." + }, + { + "kind": "p", + "text": "Общий контроль всё равно стоило построить: на первом же прогоне он нашёл живой дефект — гейт, печатающий «SKIP: iverilog or t27c missing» и выходящий с нулём, то есть дающий зелёный непроверенному дереву и говорящий об этом вслух. Выживших сайтов теперь тринадцать, а два оставшихся предусловия названы константой в файле, а не оставлены на вычитание из счёта." + }, { "kind": "h", "text": "Проверка, которую стоит провести у себя"