Pāriet uz saturu
2026-W36

W36: Vārti, kas mēra, nevis iesaka

Nedēļa, kurā vairākas sistēmas beidza balstīties uz ticību un sāka balstīties uz mērījumu — izvietošanas pārbaude, kas atgriež reālo koda versiju, sesiju skaitītājs bez uzpūstajiem 31%, un cenu vārti, kas nolasa dzīvo lapu, nevis prasa modelim. Blakus tam bloga redaktors joprojām prasa 20 manuālus saglabājumus vienam rakstam.

LV EN
Paveiktais
  • vt-blog — 120 ieraksti, seši PR produkcijā; čats vairs neizdomā datumus un cenas, bet nolasa tos no dzīvās galamērķu lapas (deterministisks vārts, nulle LLM izsaukumu)
  • T-077 slēgts līdz galam — 56 sintētiskas sesijas no 179 izdzēstas, uzskaite bija uzpūsta par 31%; filtrs pārtaisīts no melnā saraksta uz balto
  • Katrs dzīvais serviss tagad savā /health atgriež izvietoto koda versiju — jautājums 'vai labojums ir ārā?' beidzot ir mērāms, ne minams
  • vt-executive-dashboard — Railway veselības pārbaude pieslēgta; līdz šim katra izvietošana nozīmēja ~2 minūtes 502 kļūdas, jo veco konteineru noņēma pirms jaunais bija gatavs
  • vt-internal-services — atteikuma vēstule kļuva par patstāvīgu režīmu, ne uzlabotāja apakšfunkciju; ievade var būt gan piezīme, gan gatava vēstule
  • Python ražošanas atkarības iesaldētas ar hash uz trim projektiem (57 pakotnes, --require-hashes) — piegādes ķēdes riska slānis aizvērts
  • CLO pabeidza astoņu darba pakešu juridisko izpēti — Dānija, Zviedrija, Igaunija, Lietuva, Vācija, Austrija, Nīderlande, Beļģija; viens arguments (F-39) atsaukts, jo rēķins to atspēkoja
  • biznesam.ai — raksts par TrapDoor uzbrukumu abās valodās; AI apkopojums pārgāja uz strukturēto izvadi, kas garantē derīgu JSON
Atklājumi
  • Vārti, kas nemēra, ir ieteikums. Dublētā importa gadījumā pārbaude eksistēja, bet nemērīja to, kas salauza build — un tāpēc to neapturēja
  • Ja skaitlis nepareizs vairākas nedēļas pēc kārtas, meklē kanālu, ne formulu — T-077 sakne bija tajā, kas vispār tika ieskaitīts, ne kā tika saskaitīts
  • Serviss, kas nezina savu koda versiju, nevar atbildēt uz svarīgāko jautājumu izvietošanā; /health ar commit ir lētākais pierādījums, ko var uzbūvēt
  • Deterministiska pārbaude pret dzīvo lapu ir gan lētāka, gan godīgāka par modeļa atmiņu — cenas un datumus nedrīkst ģenerēt, tos jānolasa
  • Atkārtots manuāls darbs vienā un tajā pašā vietā divas nedēļas pēc kārtas nav satura darbs, tas ir rīka defekts, kas gaida uzdevumu
Kļūdas
  • MDX saglabāšanas vārti ielaida dublētu importu — seši build kritieni produkcijā, pirms kāds to pamanīja (T-080)
  • Sesiju skaits bija uzpūsts 31% vairākas nedēļas; sakne izrādījās nevis tehnika, bet kanāls, pa kuru zondes ienāca
  • LinkedIn noraidīja sociālo attēlu, jo lapā bija WebP — vajadzēja blakuskopiju JPG formātā, ko neviens vārts neprasīja
  • Ziņoju par vt-crm datubāzi '1,1 GB' kā par datiem; patiesībā tas bija diska apjoms, un dzēšana bija jāaptur pusceļā (M-076)
  • Latviešu kvalitātes ceturtais slānis tika klusi izlaists — 37 no 38 reklāmām aizgāja ar gramatikas kļūdām
  • Viena bloga raksta rediģēšana šonedēļ prasīja 20 manuālus saglabājumus; pagājušajā nedēļā tas pats defekts bija 28 — uzdevums joprojām nav uzrakstīts

Ekosistēmas pārskats

Šonedēļ caurviju tēma bija pierādījums. Vairākās vietās sistēmas, kas līdz šim balstījās uz pieņēmumu — «laikam jau ir izvietots», «laikam jau tik daudz sesiju», «laikam jau tā cena» — tika pārtaisītas tā, lai atbildētu ar mērījumu. Tas nav skaļš darbs un neizskatās pēc jaunām funkcijām, bet tieši tas ir slānis, kas pēdējos mēnešos radīja visvairāk nepareizu ziņojumu.

vt-blog

Lielākais apjoms — 120 ieraksti, seši PR produkcijā. Svarīgākais no tiem ir čata cenu un datumu vārts: līdz šim čats varēja pateikt izlidošanas datumu vai cenu, ko tas bija «atcerējies», tagad tas nolasa piedāvājumus no dzīvās galamērķu lapas un salīdzina tos deterministiski, bez neviena modeļa izsaukuma. Blakus tam parādījās dienas monitors, kas katru dienu salīdzina, ko čats saka, ar to, kas tobrīd stāv VT lapā — ja tie sāk atšķirties, to pamanīs pirms klienta.

Otra nozīmīga lieta bija T-077 noslēgšana. Sesiju skaits bija uzpūsts par 31% — no 179 sesijām 56 izrādījās mūsu pašu zondes. Filtrs bija būvēts kā melnais saraksts, kas mēģināja atpazīt sintētiskās sesijas pēc pazīmēm; tas nekad nespēja tikt līdzi. Pārtaisījām to par balto sarakstu — ieskaitām tikai to, kas atbilst zināmajam sesijas formātam. Visi skaitītāji tagad filtrē vienādi, un vecās sintētiskās sesijas ir izdzēstas ar kopiju ārpus git.

Sociālo attēlu stāsts pagāja divos soļos: vispirms septiņām lapām vispār nebija noklusējuma attēla, tad izrādījās, ka LinkedIn noraida WebP. Lapā palika WebP, blakus nolikām JPG kopiju.

Un blakus visam šim — vairāk nekā deviņdesmit manuālu rediģēšanas ierakstu sešiem rakstiem. Viens raksts prasīja divdesmit saglabājumus. Pagājušajā nedēļā es to pašu nosaucu par rīka defektu; nedēļu vēlāk tas joprojām ir defekts, un uzdevums par to joprojām nav uzrakstīts.

Infrastruktūra un izvietošana

Trīs projektos — vt-internal-services, hotel-reviewer-agent un glābēja servisā — /health tagad atgriež izvietoto koda versiju. Tas izklausās pēc sīkuma, bet līdz šim uz jautājumu «vai labojums ir dzīvajā vidē?» bija jāatbild ar ticību. Tagad to var salīdzināt ar git vēsturi un pateikt precīzi.

vt-executive-dashboard atklāja klusu problēmu: Railway noņēma veco konteineru, pirms jaunais bija gatavs, tāpēc katra izvietošana nozīmēja apmēram divas minūtes 502 kļūdas. Pieslēdzām veselības pārbaudi, un blakus salabojām konfigurācijas izmaiņu ignorēšanu — līdz šim izmaiņas railway.json pašā tika izlaistas.

Piegādes ķēdes pusē trim ražošanas projektiem Python atkarības ir iesaldētas uz konkrētām versijām ar hash pārbaudi — 57 pakotnes. Un TrapDoor klases uzbrukuma novērtējumā divi aizsardzības slāņi izrādījās tīri, bet atradās trīs jauni robi; git credential store noņemts.

vt-internal-services

Sešos ierakstos viena laba mācība par produkta domāšanu. Atteikuma vēstule sākotnēji bija uzbūvēta kā vēstuļu uzlabotāja apakšrežīms — tu ieliec melnrakstu, tas to uzlabo. Izrādījās, ka atteikums ir cita darbība: tur nav melnraksta, ko uzlabot, ir lēmums, kas jāpasaka. Pārtaisījām to par patstāvīgu režīmu, kur ievade var būt gan īsa piezīme, gan jau gatava vēstule, un pats lēmums vienmēr tiek izteikts, ne apiets.

Juridiskais slānis (CLO)

CLO pirmā pilnā darba nedēļa — astoņas darba pakotnes ar salīdzinošu izpēti par nodrošinājuma apmēru: Dānija, Zviedrija, Igaunija, Lietuva, Vācija, Austrija, Nīderlande, Beļģija. Viens iepriekš izteikts arguments (F-39) tika atsaukts, jo rēķins to vienkārši atspēkoja. Paralēli sakārtots MI akta uzraudzības slānis: zonēts reģistrs, nosaukta redakcionālā atbildība un nodalītas lomas starp risinājumu būvēšanu un lietotājam redzamā satura kontroli.

biznesam.ai

Četri ieraksti. Publicēts raksts par TrapDoor uzbrukumu abās valodās ar savu attēlu, un AI apkopojuma ģenerators pārgāja uz strukturēto izvadi — tagad tas garantē derīgu JSON, nevis mēģina to izparsēt no brīva teksta.

Insights

Galvenā mācība atkārtojās trīs reizes dažādās vietās: vārti, kas nemēra, ir ieteikums. MDX pārbaude eksistēja, bet nemērīja dublētus importus — un seši build kritumi produkcijā notika tieši tur, kur «pārbaude jau ir». Tas pats ar sociālajiem attēliem: neviens vārts neprasīja JPG kopiju, tāpēc tās nebija. Un tas pats ar sesiju skaitu: filtrs, kas mēģina atpazīt sliktos, vienmēr atpaliks no filtra, kas ielaiž tikai zināmos labos.

Otrā mācība ir par to, kur meklēt sakni, kad skaitlis nepareizs vairākas nedēļas. T-077 gadījumā mēs vairākkārt pārmērījām formulu, un formula bija pareiza — problēma bija kanālā, pa kuru zondes vispār nonāca uzskaitē. Kamēr mēra to pašu vietu, atbilde nemainās.

Kļūdas un mācības

Divas lietas šonedēļ bija nepatīkamas. Pirmā — es ziņoju par vt-crm datubāzes izmēru «1,1 GB» kā par datu apjomu, kaut tas bija diska apjoms; dzēšana tika apturēta pusceļā un kopija verificēta 28 no 28. Nepareizs mērvienības nolasījums gandrīz kļuva par datu zudumu.

Otrā — latviešu kvalitātes pārbaudes ceturtais slānis tika klusi izlaists, un 37 no 38 reklāmām aizgāja gaisā ar gramatikas kļūdām. «Klusi izlaists» ir tā pati klase, kas «vārti, kas nemēra»: solis, kura izpildi neviens nepārbauda, agrāk vai vēlāk netiek izpildīts.

Un trešā, kas nav kļūda, bet zīme: bloga redaktora defekts atkārtojās otro nedēļu pēc kārtas. Divdesmit manuāli saglabājumi vienam rakstam. Es to pamanīju, aprakstīju un neuzrakstīju uzdevumu. Nākamnedēļ tas būs trešā reize.