boot.sh je javljao '0 failing' bez obzira na stvarnost — root cause + popravka (MC #106901)
MC: #106901 · Datum: 2026-08-15 · Autor: John · Verifikacija: verify-106901 (native agent, 12/13 PASS)
Simptom
boot.sh je na svakom bootu javljao Daemons: 29 loaded, 0 failing — bez obzira na stvarnost. Istog minuta launchctl list pokazuje 10 com.alai/com.john agenata s ne-nultim exitom, a RESOLVER alert javlja FLEET-CRITICAL: 7 daemon(s) in failed state.
Posljedica: disk incident 2026-08-06 (168 GB litestream staginga) prošao je neprimijećen jer je boot javljao da je sve u redu.
Dva defekta (ne tri)
1. Tiho preskakanje — glavni uzrok
PLIST="$HOME/Library/LaunchAgents/${DAEMON_ID}.plist"
if [ -f "$PLIST" ]; then # nema fajla => preskoci BEZ brojanja
LOADED=$(launchctl print "gui/$UID_VAL/$DAEMON_ID" 2>&1 || true)
if echo "$LOADED" | grep -q "Could not find"; then ...
Sedam monitorisanih tier-1/2 daemona nema plist fajl: b2-offsite-backup, network-watchdog, db-backup, ops-guardian, email-briefing, minion-dispatcher, minion-watchdog. if se za njih nikad nije otvorio, pa se launchctl nikad nije ni pozvao. Prijavljivani kao zdravi.
2. Pogrešan signal
Provjera je mjerila učitanost, ne neuspjeh. Daemon učitan ali s exit != 0 (uključujući -9, ubijen signalom) računao se kao ispravan.
Povučena tvrdnja
U prvoj verziji nalaza tvrdio sam i treći defekt — da grep "Could not find" ne pogađa nepostojeći label. Pogađa. launchctl ispiše Bad request. u prvoj liniji i Could not find service "..." u drugoj. Oboreno nezavisnom verifikacijom; tvrdnja povučena. Defekt #1 sam objašnjava cijeli kvar.
Popravka
Jedan launchctl list snapshot; kolona 2 = last exit status, kolona 3 = label, poklapanje preko awk polja:
LAUNCHCTL_SNAPSHOT=$(launchctl list 2>/dev/null)
DAEMON_ROW=$(printf '%s\n' "$LAUNCHCTL_SNAPSHOT" | awk -v lbl="$DAEMON_ID" '$3 == lbl {print; exit}')
if [ -z "$DAEMON_ROW" ]; then
# nije ucitan (ukljucujuci "nema plist") — NE preskace se
else
DAEMON_EXIT=$(printf '%s\n' "$DAEMON_ROW" | awk '{print $2}')
[ "$DAEMON_EXIT" != "0" ] && # pada
fi
Namjerno NIJE korišten grep '1\t' — taj obrazac hvata PID-ove i već je dao lažnih „22 daemon failing" u mc.js checku (triage 2026-08-07). Ista greška se ne ponavlja u drugom alatu.
Ispravljena je i riječ: DAEMON_TOTAL je broj monitorisanih iz inventara, ne broj učitanih. "29 loaded" je bilo netačno kad 7 nije učitano.
Dokaz
PRIJE: Daemons: 29 loaded, 0 failing
POSLIJE: Daemons: 29 monitored, 7 failing (7 nije učitano) — launchctl list
Kontrolni test pušta obje logike nad istim inventarom: stara → failing: 0, nova → nije učitano: 7. bash -n exit 0; ostale boot linije (MC / B2 / LightRAG / Disk) netaknute.
Backup: ~/system/boot.sh.bak-106901-20260815-135917
Šta ovo NE rješava — pročitati prije nego se osloniš na boot
Popravljena provjera javlja učitano ali pada: 0, iako ih 10 stvarno pada. Nije bug — ti daemoni nisu u inventaru:
| daemon | exit | u inventaru |
|---|---|---|
com.alai.litestream | -9 | NE |
com.alai.email-ingest-monitor | 1 | NE |
com.john.lightrag-monitor | 1 | NE |
com.john.infra-drift-detector | 1 | NE |
com.john.critical-tools-healthcheck | 1 | da, ali tier=3, monitored_by_boot=false |
Šire mjerenje (MC #107192): 157 učitanih agenata, 11 s ne-nultim exitom, 67 zapisa u inventaru, 23 zapisa pokazuju na plistove koji ne postoje, i nijedan com.alai.* agent nije u inventaru — inventar je pisan za com.john.* generaciju i nikad proširen.
Prije popravke boot je lagao. Poslije popravke boot govori istinu — ali usku. Razlika je bitna i ne treba je zamagliti.
Poznat šum
com.alai.ollama-serve-v2 exit 1 je benigna port-trka s homebrew.mxcl.ollama (triage 2026-08-07). Filter za takve slučajeve ide u inventar (npr. benign_nonzero_exit: true uz obrazloženje), ne u boot.sh — inače se logika opet zamagljuje.
Vezano
- MC #107192 — inventar ne prati ono što stvarno pada (tabela odluke u
~/system/evidence/107192/) - Evidence:
~/system/evidence/106901/boot-daemon-check-fix-2026-08-15.md - Peer-verify:
~/system/evidence/106901/peer-verify-transcript-2026-08-15.md
No comments to display
No comments to display