Úrovne vynucovania: Napísať pravidlo neznamená ho presadiť
Štyri úrovne vynucovania, od vety v promptu až po bránu, ktorá zastaví build, a ako medzi nimi voliť.
Pravidlo možno vynucovať štyrmi spôsobmi: ako text v prompte, ako kontrolný zoznam vo vnútri skillu, ako automatizovanú kontrolu alebo ako tvrdú bránu. Busy týždeň prežijú len posledné dve. Nezáleží na tom, koľko pravidiel existuje, ale koľko z nich má vynucovanie nad najslabšou úrovňou.
Problém
Niečo sa pokazí. Napíše sa pravidlo. To isté sa pokazí znova.
Bežnou reakciou je napísať pravidlo jasnejšie, presunúť ho vyššie v súbore alebo ho zvýrazniť. Niekedy to zaberie. Často počet výskytov naďalej stúpa a dôvodom je, že pravidlo nikdy nebolo mechanizmom — bolo len popisom želaného mechanizmu, pričom nič sa reálne nepostavilo.
Systém aktuálne obsahuje 237 napísaných pravidiel. Poctivá otázka nie je, koľko ich existuje, ale koľko z nich má za sebou skutočnú oporu.
Návrh
Štyri úrovne vynucovania, priraďované explicitne vo chvíli, keď pravidlo dosiahne v evidencii opakovaní tretí výskyt.
| Úroveň | Mechanizmus | Prežije busy týždeň |
|---|---|---|
| L0 | veta vo vždy načítanom prompte | niekedy |
| L1 | kontrolný zoznam vo vnútri skillu, ktorý sa spúšťa pri danej úlohe | zvyčajne |
| L2 | automatizovaná kontrola, ktorá hlási výsledok | áno |
| L3 | tvrdá brána, ktorá zlyhá a zablokuje | vždy |
Rozhodujúci rozdiel je medzi čítaním a spustením. L0 a L1 závisia od toho, či si niekto niečo v správnej chvíli prečíta, čo závisí od kontextu, pozície a záťaže. L2 a L3 na pozornosti vôbec nezávisia.
Výber úrovne je nákladové rozhodnutie, nie otázka závažnosti. L3 je nákladné postaviť a nákladné pomýliť sa v ňom — falošný poplach, ktorý zablokuje prácu, vedie k tomu, že bránu do týždňa niekto vypne, čo je horšie, než keby nikdy nevznikla. L0 je takmer zadarmo a takmer bezcenné pri všetkom, čo sa opakuje pod tlakom.
Pracovná heuristika: čokoľvek, čo sa zopakovalo 3-krát, dostane aspoň L2. Opakovanie je dôkazom, že samotné čítanie nestačí.
Kompromisy
Brány L3 sa musia doladiť skôr, než sa im dá dôverovať. Brána, ktorá sa spustí pri prvom behu na reálnom obsahu a pomýli sa, sa vypne. Jedna kontrola tu pri prvom behu nahlásila 36 nefunkčných odkazov — všetky boli fragmenty vloženého JavaScriptu, nie skutočné odkazy. Opraviť to skôr, než si to niekto iný všimol, bolo rovnako dôležité ako kontrolu napísať.
L2 produkuje šum, ktorý sa časom zmení na tapetu. Kontrola, ktorá hlási varovanie, na ktoré nikto nereaguje, je L0 s dodatočnými krokmi navyše. Buď sa eskaluje na L3, alebo je jej prah nastavený zle.
Nie všetko sa dá skontrolovať. Tón, úsudok, kedy eskalovať — to všetko trvalo zostáva na úrovni L0 alebo L1, a predstierať opak vytvára bránu, ktorá meria náhradný ukazovateľ. Brána postavená na náhradnom ukazovateli je horšia než pravidlo v prompte, pretože vytvára falošnú istotu.
Vynucovanie má náklady na údržbu, ktoré prežijú svojho autora. Kontrola naviazaná na formát súboru, ktorý nevlastní, sa od neho ticho odviaže, keď sa daný súbor refaktoruje. Jeden parser tu čítal tabuľku podľa pozície stĺpca; vložili sa dva nové stĺpce a on 21 dní hlásil prázdny front bez akejkoľvek chyby.
Voľba úrovne bez zbytočného predimenzovania
Pri rebríčku je pokušením považovať vyššiu úroveň automaticky za lepšiu a smerovať k L3 všade. Výsledkom je systém s väčším počtom brán, než dokáže ktokoľvek udržiavať, a neudržiavané brány zlyhávajú tým najhorším smerom — naďalej prepúšťajú.
O úrovni rozhodujú štyri otázky, kladené v tomto poradí.
Dá sa pravidlo vôbec vyhodnotiť mechanicky? Ak je potrebný úsudok — tón, či eskalovať, či je tvrdenie strategické — stropom je L1. Stavať L2 kontrolu na niečo, čo sa nedá zmerať, vytvára náhradný ukazovateľ, a brána postavená na náhradnom ukazovateli vytvára falošnú istotu, čo je horšie než pôvodný problém.
Ako často k danej situácii dochádza? Pravidlo, ktoré sa spúšťa raz mesačne, neospravedlňuje vybudovanie kontroly. Pravidlo, ktoré sa spúšťa pri každom artefakte, áno — pri takej frekvencii sa náklady vrátia v priebehu dní.
Koľko stojí falošný poplach? Toto je otázka, ktorá rozhoduje medzi L2 a L3. Brána, ktorá nesprávne zablokuje prácu, sa do týždňa vypne alebo obíde, a keď sa raz obíde, v systéme sa naďalej javí, akoby fungovala. Tam, kde sú falošné poplachy pravdepodobné, je L2 s viditeľným hlásením jednoznačne lepšia ako L3 s obchádzkou.
Kto ju udržiava, keď sa zmení to, čo kontroluje? Každá kontrola je naviazaná na formát, cestu alebo schému, ktorú nevlastní. Táto väzba je trvalým rizikom a poctivá verzia otázky znie, či si niekto všimne, keď sa táto väzba ticho pretrhne.
V praxi sa väčšina pravidiel usadí na L1 alebo L2. L3 je vyhradená pre malú množinu prípadov, kde je zlyhanie nezvratné — anonymita, externé odoslania, zmazania — a kde falošný poplach stojí hádku, nie deň zablokovanej práce.
Čo sa pokazilo
Pravidlo na L0 s rastúcim počtom výskytov. Najjasnejší možný signál, a napriek tomu bol v evidencii viditeľný celé týždne, kým si ho niekto neprečítal ako celok namiesto po jednotlivých záznamoch. Náprava: triedny prechod teraz cielene hľadá počet ≥3 na L0, čo je jednoriadkový dotaz a najprínosnejšia vec v celej revízii.
Kontrola, ktorá nedokázala vidieť práve ten typ zlyhania, na ktorý bola postavená. Monitor sviežosti porovnával dátumy súborov, takže havarovaná úloha a ukončený zdroj boli nerozlíšiteľné. Hlásil „čisté", zatiaľ čo pipeline zlyhávala. Náprava: kontroly teraz vo svojom výstupe uvádzajú vlastný rozsah pôsobnosti, takže výhrada cestuje spolu s výrokom.
Brána, ktorá bola príliš prísna a obišla sa. Nie vypnutá — obídená, čo je horšie, pretože brána sa v systéme naďalej javí, akoby fungovala. Každá brána s zdokumentovanou obchádzkou je v skutočnosti L0 nosiace odznak L3.
Chýbajúce meranie
Rebríček popisuje, ako sa dá pravidlo vynucovať. Neodpovedá na otázku, ktorá by povedala, či systém funguje — teda aký podiel pravidiel sedí na jednotlivých úrovniach.
Toto číslo tu nie je zmerané, a toto vynechanie je zámerne priznané, nie potichu obídené. Množina napísaných pravidiel nesie úroveň pri tých, ktoré eskalovali cez evidenciu opakovaní — pravidlá napísané priamo, bez predchádzajúceho incidentu, väčšinou nenesú nič:
enforcement: L2 (build check) — prítomné pri pravidlách eskalovaných cez evidenciu, chýbajúce pri väčšine ostatných
Bez tohto rozdelenia sa nedajú zodpovedať tri otázky. Koľko pravidiel je úplne závislých od toho, či si ich niekto prečíta. Či sa pomer s rastúcou množinou zlepšuje, alebo zhoršuje. A ktoré z pravidiel aktuálne na L0 majú históriu opakovania, ktorá ich mala eskalovať, a neeskalovala.
Prirodzeným impulzom je toto číslo odhadnúť. Dôvod, prečo to nerobiť, je ten, že odhad tohto konkrétneho čísla by bol skreslený predvídateľným smerom — pravidlá, ktoré človeku napadnú ako prvé, sú práve tie s viditeľným vynucovaním, pretože práve tie sa spúšťajú. Počet zostavený z pamäti by pokrytie sebavedomo nadhodnotil.
Poctivé konštatovanie je teda to, ktoré zaznieva v zhrnutí: 237 napísaných pravidiel, rozdelenie vynucovania neznáme, meranie je v poradovníku.
Súbory
Evidencia opakovaní obsahuje počet výskytov aj priradenú úroveň. Kontroly žijú vedľa toho, čo kontrolujú — build kontroly v builde, hooky v repozitári, kontrolné zoznamy skillov v súbore daného skillu.
Zámerne neexistuje centrálny register vynucovania, čo je reálna medzera: nič v súčasnosti neodpovedá na otázku, aký podiel pravidiel sa naozaj spúšťa namiesto toho, aby sa len čítal. Toto meranie je v poradovníku, a kým nevznikne, číslo 237 pravidiel popisuje zámer, nie skutočné správanie.
$ head -12 enforcement-levels.md
$ cite enforcement-levels
Citation id SV-6710 is stable. It resolves at
https://stillvalid.dev/sk/c/SV-6710 even if this artifact moves to another section,
which a bare URL does not survive. The verification date is part of the citation on
purpose — this site says out loud when it last checked.
[Úrovne vynucovania: Napísať pravidlo neznamená ho presadiť](https://stillvalid.dev/sk/architecture/enforcement-levels) — stillvalid, SV-6710 (deep-dive, verified 2026-08-14)