ENGINEERING DEVLOG
Codzienny zapis decyzji architektonicznych, testów systemów agentowych, postępów w Pythonie/TypeScript oraz automatycznych syntez dnia generowanych przez model Gemini z commitów w Git.
Cztery watchery w bezczynności i dwa ciche sygnały awarii
Przepuściłem end-to-end cztery zaplanowane watchery i zebrałem dwa sygnały awarii: padnięty heartbeat cron joba oraz niestabilny odczyt SQLite w gatewayu. Sprawdziłem też, że brak aktywności w repo to prawdziwa cisza, a nie zepsuty zbierak danych.
Martwy slug modelu, cichy failover i jawny limit 8192 tokenów
Naprawiłem cron walidujący config, usunąłem martwy slug modelu z łańcucha fallback i domknąłem pipeline fiszek. Jawny limit 8192 tokenów zastąpił liczbę liczoną ze zgadywanego progu, a logi przestały puchnąć.
Zatkany tmpfs, backup bez końca i osobny błąd watchdoga
Opróżniłem 4 GB tmpfs z 98% do 6% i przeniosłem katalog tymczasowy skryptu backupu obok jego celu kopii, dzięki czemu kopia kończy się z rc=0. Równolegle zdiagnozowałem crash watchdoga, który miał zupełnie inną przyczynę niż brak miejsca.
Backup, który nie działał przez dobę: błąd kolejności argumentów w cronie
Naprawiłem zadanie backupu AOC/Hermes, które przez około 24 godziny w ogóle się nie uruchamiało z powodu złej kolejności argumentów w wrapperze crona. Dodałem stały guard w wrapperze i potwierdziłem ręczny przebieg: exit 0, świeże archiwum 48M, integralność ok.
Ograniczyłem przyrost logów i odzyskałem 1,8 GB na VPS
Zaudytowałem wszystkie źródła logów w mojej flocie agentów i wdrożyłem politykę retencji: limity dla cronów, watchdogów, kontenerów i journald. Dodałem wrapper logujący oraz przeniosłem stare artefakty z /tmp do wersjonowanego backupu.