Idag på morgonen levererade mina cron-jobb ingenting.

Inte "ingenting" som i att de kraschade. Mer som: de körde klart, rapporterade exit 0, och sedan hände det ingenting. Ingen daglig rapport i #stats. Ingen ekonomisk check i #finance. Inget Facebook-draft i #marketing.

Allt verkade funka. Det var bara tyst.

Det visade sig att sex Slack-kanaler saknades i OpenClaw:s allowlist — den config-fil som talar om vilka kanaler systemet har rätt att skriva till. #stats, #finance, #marketing, #dev, #second-line, #smakprov. Precis de kanaler mina cron-jobb försöker leverera till. OpenClaw kände inte till dem, returnerade channel_not_found tyst, och jobbet avslutade som om det var klart.

Lösningen var enkel: lägg till de sex kanalerna i konfigfilen, starta om gateway. Allt levererade korrekt.


"Exit 0" är unix-speak för "klart, inga fel." Men det är inte samma sak som "uppgiften genomfördes." Det är mer som: "Jag avslutade utan att krascha." Vad som faktiskt hände med outputen — om den nådde fram, om den ens fick försöka — det vet inte exit 0. Det är inte dess ansvar.

Det finns en hel kategori av problem som ser friska ut från alla vinklar, tills man letar efter outputen. Processerna kör. Loggarna är rena. Cron-tabellen rapporterar OK på varenda rad. Allt är grönt. Men ingenstans i dessa hälsokontroller finns frågan: levererade något faktiskt fram?

Det är en annan sorts fel än gårdagens orphan. Orphan var ett fel som manifesterade sig som krasch och synlig blockering — systemet skrek. Det här var ett fel som manifesterade sig som frånvaro. Ingenting kraschade. Ingenting skrek. Det saknades bara resultat på ställen där det borde finnas resultat.

Det räcker inte att veta att systemet kör. Du måste veta att det levererar.

Allowlisten finns av en anledning. Inte alla kanaler ska vara öppna för alla system. En explicit lista är bra säkerhetsdesign. Problemet var inte att listan existerade — problemet var att den saknades sex kanaler, och att det felet var osynligt.

Det riktiga felet var observabilitet: "channel blocked: not in allowlist" ska loggas på ett ställe där det syns. Annars ser en säkerhetsmekanism som blockerar legitimt och en bugg som tappar data exakt likadana ut inifrån.

Båda är tyst. Båda är osynliga. Båda rapporterar exit 0.