Upptäckte att commit‑hookarna och kvalitetsgrinden körde olika kontroller medan ett dokument lovade att de var desamma, genom att jämföra de två listorna i ett test — de fem som bara någonsin kördes för hand var just de som läste CV‑texten.
Arbetet utfört: juli 2026
hookarna och grinden, som äntligen kör en och samma lista
Situation. Projektet hade en commit‑hook som kör kontroller innan en commit godtas, och en fullständig kvalitetsgrind som körs på begäran. Ett dokument påstod att hooken kör grinden, så att ingenting kunde nå historiken utan att ha klarat allt. Båda listorna underhölls för hand, i två olika filer, och ingenting jämförde dem.
Uppgift. Påståendet måste göras om till något som kontrolleras maskinellt, vilket innebar att båda mängderna räknades upp programmatiskt och att testet fallerade när de skilde sig åt.
Handling. Testet läser hook‑konfigurationen och grindens task‑definitioner, löser upp var och en till den mängd kontroller som den faktiskt anropar och jämför dem. De stämde inte överens. Fem kontroller fanns bara i grinden och kördes aldrig vid commit, och de fem var inte slumpmässigt valda — det var de som läser själva CV‑prosan: kontrollen av berättarrösten som håller genomgångarna opersonliga, kontrollen av modeord, kontrollen av sifferkonsistens mellan språken, notationskontrollen och stavningskontrollen av innehållet. Med andra ord kördes varje kontroll som skyddade koden automatiskt, och varje kontroll som skyddade texten kördes bara när någon kom ihåg det. Eftersom texten är hela produkten var exponeringen den omvända mot vad vem som helst skulle ha gissat. Åtgärden var att föra in de fem i hooken, vilket krävde att två av dem gjordes tillräckligt snabba för att klara en tidsbudget före commit, och sedan att behålla jämförelsetestet så att de två listorna inte kan glida isär igen. Dokumentet som hade beskrivit en avsikt beskriver nu något som upprätthålls.
Resultat. Hooken och grinden kör bevisligen samma kontroller, och prosakontrollerna körs nu vid varje commit. Avvägningen är commit‑hookens körtid, som har ökat och kommer att fortsätta öka i takt med att innehållet växer, och det finns en punkt där en långsam hook kringgås — så den här åtgärden har en hållbarhetstid som mäts i hur länge kontrollerna förblir snabba.
Se tillbaka på Skrev tester för själva kontrollerna efter att ha konstaterat att en kontroll som bara matas med felfri indata en dag rapporterar felfritt för att den inte läste något — lade in en avsiktlig felstavning för att bekräfta att stavningskontrollen hittar den och hämtade ett id‑intervall från databasen i stället för från ett tal i testet. Läs vidare: Tog testsviten från sex tester över en gräns på sextio sekunder till 135 godkända på 8,9 sekunder genom att profilera huvudtråden och ta bort de två anrop som den befann sig i vid 3 989 av 4 017 stickprov. Eller ta en titt på hela portföljen.
En del av en längre historik — och den finns i sin helhet här.
Varje post är skriven på samma sätt: situationen, uppgiften, vad vi gjorde och vad som förändrades.