Альфа, якою атлас можна показати
Значок, що казав про перевірені джерела, перестав це казати, останній порожній рік наповнився, а головна сторінка припинила носити набір даних, якого не малює.
Значок казав маленьку неправду
Кожен запис мав статус verified, а картка писала «Джерела перевірено». Перевіркою за всіма 291 записом був автоматичний дослідницький прохід. Дані цього не приховували: ім’я перевіряльника про це й каже, а внутрішня примітка каже, що людське приймання ще попереду. Але читач не читає назви поля. Читач читає цей значок як «людина звірила це з джерелом».
Тепер значок бере формулювання з того, хто перевіряв, і пише «Джерела зібрано автоматично», доки запис не підпише людина, — і тоді він перемикається сам, бо читає запис, а не константу. Підвал несе те саме речення, сторінка події повторює його поруч із датою перевірки, а сторінка методології з нього починається. robots.txt просить пошукові системи триматися осторонь, доки записи не прочитає людина.
Посилання на сайт не мало картки попереднього перегляду. Тепер має: намальована як SVG у власній палітрі сайту й сфотографована тим самим браузером, що вже їздить у тестах, — щоб заради однієї картинки до проєкту не додався інструментарій для зображень.
Останні порожні роки
2024-й, потім 2025-й, потім 2026-й, який дістав голос, відмінний від власних анонсів вендорів. Тепер кожен рік від 1943 до 2026 тримає щонайменше один запис.
Наповнення 2025-го зламало тест — саме так, як хочеться: тестові порожнього періоду не лишилося куди вести глибоке посилання. Тепер він пробує спершу цілі роки, потім місяці й визначає порожнечу так само, як її визначає вісь. Вичерпний обхід, що відкриває кожну позначку на осі, скоротився з трьох хвилин до сорока секунд, а це різниця між перевіркою, яка виконується, і перевіркою, яку пропускають.
Дві слабкі місця того пакета записано, а не згладжено: одна модель має точність до місяця, бо джерела розходяться між 28 і 29 квітня, а один запис спирається на два повідомлення того самого дня, бо власної сторінки компанії за цю дату знайти не вдалося.
Головна сторінка перестала носити колекцію
Набір даних ріс усередині документа, а не всередині JavaScript, а бюджет швидкодії дивився тільки на JavaScript. Кожен запис додавав близько 32 стиснених байтів до сторінки, на яку приходить читач, і ніхто цього не стежив.
Пропси острівця тепер несуть лише те, що малює й називає вісь. Читацький текст кожного запису довантажується в час простою з окремого JSON-файла, який кешується окремо від документа.
/uk/ 53 995 -> 5 201 Б gzip вітрина, без острівця й даних
/uk/timeline/ -> 16 453 Б gzip вісь, сама геометрія
data.json -> 27 562 Б gzip відкладено, кешується окремо
Заголовок лишається в документі, бо доступна назва позначки — це те, що читають зчитувач екрана й клавіатура, а вісь, яку не можна назвати на першому кадрі, не є завершеною. Разом із розділенням кожен запис колекції отримав сторінку, зібрану на сервері й без жодного JavaScript, — замість списку в <noscript> на 41 КБ, якого читачі зі скриптами ніколи не бачили.
Перевірка, яку хостинг справді виконає
Хостинг публікує на кожен пуш, а GitHub Actions працює поруч із цим, а не перед цим: невдалий робочий процес ніколи не зупиняв розгортання. Звичайна відповідь — правило на гілку, і воно було недоступне: цей репозиторій приватний на безкоштовному тарифі, де і захист гілки, і набори правил відповідають 403 із пропозицією перейти на платний план.
Тож перевірка переїхала всередину збірки. Команда збірки — це сценарій верифікації: типи, модульні тести, валідація даних, сама збірка й межа публічного артефакту. Провал провалює збірку, а провалена збірка не публікує нічого, тож сайт лишається на останній версії, що пройшла. Без токена, без зміни тарифу й без перегонів, які можна програти.
Це свідомо не вся локальна перевірка. Форматування й лінтинг читають увесь робочий каталог, а під час розгортання цей каталог не тільки наш — хостинг пише туди власні файли. Вимагати від службових файлів хостингу відповідати нашому стилю коду — і неправильно, і гарантовано провально.
Запис зроблено 20 вересня 2026 р.
Коміти, про які цей запис
17437f9b9f67417a732fd92a4ed17717ebd15d63cb090313fb484788