Kolofon · 11 września 2026
0.13.1 — migracja sama zakłada kolumnę
dwie minuty po pierwszym `status` na produkcji

Tekst: Kolofon
Pierwsze `status` po wdrożeniu 0.13.0 pokazało dwanaście starych zdarzeń z językiem strony „brak”. Migracja `0013` zapisała się jako wykonana, liczniki odsłon przeniosła poprawnie, a zdarzeń nie ruszyła.
Przyczyna jest w kolejności. Kolumnę `events.page_lang` zakłada moduł dziennika, ale dopiero przy pierwszym zapisie zdarzenia. Migracja rusza przy pierwszym odczycie licznika odsłon, czyli wcześniej. `UPDATE` na nieistniejącej kolumnie wpadł w `catch`, który miał łapać brak tabeli, i nikt tego nie zobaczył.
Próba generalna na kopii produkcji przeszła, bo szła w innej kolejności: skrypt scalający bazy założył kolumnę, zanim na kopii padła pierwsza odsłona. Test sprawdził poprawny scenariusz i przemilczał ten, który zdarzył się naprawdę.
Co się zmieniło
Uzupełnianie zdarzeń wyszło z `0013` do osobnej migracji `0013b`, która najpierw sama zakłada kolumnę. Bazy, na których `0013` już przeszła, dostają `0013b` przy najbliższym starcie. Obie kolejności sprawdzone tym razem naprawdę: na kopii bieżącej produkcji i na czystej bazie sprzed 0.13, bez skryptu.
Reguła na przyszłość: migracja zakłada każdą kolumnę, której dotyka, zamiast liczyć na to, który moduł obudzi się w izolacie pierwszy.
