Змусила шість збирачів звітів повідомляти ту частину свого входу, яку вони так і не прочитали, — файли, що лишилися закритими, невстановлені зонди, нерозпізнані рядки журналу, — і підігнала пороги до 116 виміряних зразків, з'ясувавши, що сліпий збір і справний хост дають однакову сторінку.
Роботу виконано: вересень 2026
116 виміряних зразків за кожним порогом
Ситуація. Шість збирачів, що працюють лише на читання, перетворювали стан робочого хоста на Markdown, і жоден із них не фіксував ні власного часу роботи, ні файлів, які не зміг відкрити, ні вхідних даних, які пропустив. У кількох збирачах обробка помилок просто поглинала збій, а це дає особливий і небезпечний тип звіту: сторінку з числами, яка здається повною і свідчить про справність незалежно від того, чи взагалі щось було прочитано. Журнал після ротації, що надходить обрізаним, вилучає весь свій проміжок часу з кожного показника на сторінці, і тиждень, за який немає даних про трафік, має точнісінько такий вигляд, як тихий тиждень. Дзеркало, демон якого змінив формат журналу, дає той самий нуль, що й дзеркало, якого ніхто не відвідував. Кожен зонд у звіті безпеки виконується лише за наявності відповідного інструмента, тож хост без інструментів для фаєрвола, сокетів і блокування не показував ні правил, ні сокетів, ні jail — зовні це ознака захищеного хоста, а насправді він просто сліпий.
Завдання. Дві речі треба було зробити такими, щоб їх неможливо було сплутати зі справністю. Звіт мав сам указувати, що вважається поганим, а не залишати це на розсуд людини, а кожен збирач — повідомляти, чого коштував його власний збір і яку частину вхідних даних він не зміг використати.
Дія. Пороги підібрали за 116 вимірюваннями, які вже зробив звіт про метрики, а не навмання, і поряд із межами записали спостережені діапазони. Оцінювання знаходить кожен стовпець за назвою, а не за позицією, і не оцінює рядок, у якому кількість значень не збігається з кількістю міток, — саме це захищає його від зміни формату часу, яка зсуває кожну мітку на одну позицію. Далі звіт розрізняє три результати, а не два: порушення, відсутність порушення і «не оцінено», бо цього ніщо не вимірювало. Що стосується збору, кожен збирач тепер повідомляє свій час роботи і свої сліпі зони — скільки файлів прочитано і скільки прочитати не вдалося, скільки рядків журналу прочитано і скільки з них розпізнано, скільки репозиторіїв git відмовився читати (їх підраховують, а не показують нулем), скільки джерел опитано і скільки з них відповіло, скільки зондів запитано і скільки з них не встановлено, — і кожен такий рядок виводиться навіть тоді, коли значення нульове, бо рядок, який зникає, коли він порожній, — це та сама тиша, тільки в іншій формі. Кожен шаблон отримав окрему гілку для виводу, який записав збирач, старіший за сам шаблон.
Результат. Сторінка з числами цієї платформи тепер показує власні сліпі зони поряд із результатами. Самовимірювання не працює як гейт, і це сказано прямо, а не лише мається на увазі: для часу роботи збирача не задано жодної межі, тож збір, тривалість якого подвоїлася, буде видно, але він нікого не зупинить, а щоб задати таку межу, потрібен базовий рівень із реального хоста, якого ця робота свідомо не вигадувала. Наявні межі — це середні добові значення, тож хост, який на хвилину досягає граничного значення, тут нічого не перевищує. Це виявляє п’ятнадцятихвилинний dead man’s switch; жоден із механізмів не замінює іншого, і обидва звіти прямо зазначають це на сторінці.
Попередня робота: Побудувала сім ролей звітності лише для читання, які описують робочий хост у Markdown — факти, доступ, git, метрики, трафік, безпека та інвентар провайдера, — за правилом: не виводиться жодне число, якого запуск не виміряв. Або перегляньте повне портфоліо.
Одна частина довшого переліку — і він увесь на цьому сайті.
Кожен запис написано однаково: ситуація, завдання, що ми зробили і що змінилося.