Jak długo przeżywa błędne zdanie
14 sierpnia na stronę „o nas" trafiło zdanie mówiące, że celowo nie mierzymy ani współczynnika odrzuceń, ani czasu na stronie, bo jedno i drugie wymagałoby sesji śledzonej przez kilka odsłon, a więc banera zgody na stronie, która licznik nosi.
27 sierpnia wydaliśmy czas na stronie. Zdanie zostało.
Trzynaście dni prawdy, dwadzieścia osiem godzin fałszu
Daty są dokładne, bo repozytorium je zna. Zdanie pojawia się 14 sierpnia o 22:41. Czas na stronie w sześciu przedziałach pojawia się 27 sierpnia o 17:53 — i od tej minuty druga połowa zdania jest fałszem. Poprawione zostaje 28 sierpnia o 21:57.
Było więc prawdziwe przez trzynaście dni i fałszywe przez dwadzieścia osiem godzin, co brzmi jak dobra proporcja, dopóki nie zauważy się, że w tych dwudziestu ośmiu godzinach nic nie mogło ich zakończyć. Żaden test nie padł. Żadna kontrola się nie odezwała. Strona się złożyła, funkcja działała, a te dwie rzeczy cicho zaprzeczały sobie w jedenastu językach.
Dlaczego żadna kontrola nie mogła tego złapać
Każda automatyczna kontrola w tym projekcie porównuje dwie rzeczy, które obie są w systemie: liczbę wierszy z jedenastką, szerokość podpisu z jego miejscem, listę tabel ze schematem. Twierdzenie na stronie nie ma z czym być porównane. To proza o świecie, a światem była w tym wypadku tabela powstała w zupełnie innej części kodu.
Można sobie wyobrazić kontrolę przeszukującą tekst „o nas" pod kątem nazw funkcji i sprawdzającą je. Byłaby długa, krucha i i tak minęłaby ciekawe przypadki, bo zdanie nie wymieniało tabeli. Wymieniało powód: a to wymagałoby banera zgody. Ten powód po cichu przestał obowiązywać.
Co to zakończyło
Pytanie. Ktoś chciał wiedzieć, czy pokazujemy współczynnik odrzuceń, a uczciwa odpowiedź wymagała przeczytania zdania obok, po czym się ono przewróciło.
To ten sam mechanizm, który na początku miesiąca zdjął z tej strony cztery inne twierdzenia, i to nie jest mechanizm, tylko szczęście. Jedyne, co poprawia szanse, to pisać twierdzenie na tyle wąsko, żeby dało się je sprawdzić: nie „nie mierzymy X, bo Y", tylko „X nie ma na tej stronie" — zdanie opisujące stronę, na której stoi, a nie powody za nią.
Co się uogólnia
Kod gnije głośno. Proza o kodzie gnije cicho i zwykle gnije w chwili, gdy kod staje się lepszy.
Trzynaście miejsc trzeba było zmienić, żeby poprawić jedno zdanie: jedenaście wersji językowych jednego napisu interfejsu i dwa akapity ręcznie pisanego HTML-a. Warto znać tę liczbę przed napisaniem kolejnego wyjaśnienia, bo jest ceną każdego twierdzenia sięgającego poza stronę, na której je wydrukowano.