my_backup-job-monitors-stale
Section titled “my_backup-job-monitors-stale”Six job_monitor alerts, three independent root causes — all fixed and verified via job-monitor --no-alert → All jobs healthy.
Root causes
Section titled “Root causes”\TaTasks\WSL Keepalivedidn’t exist — documented as “installed 2026-08-12” but never actually created (or later deleted). WSL2 VM now tears itself down overnight, silently killing pre-login Sunday cron jobs (virus_scan,send_status_report,asset_history_update).DiskSpaceCheck/MonthlyDriveCleanupconfigured “Logon Mode: Interactive only” — Task Scheduler doesn’t flag this as failed (nothing “fails” from its point of view); the task just silently no-ops if nobody’s logged on at the exact trigger minute.\TaTasks\Daily Backup(100% reliable) was alreadyInteractive/Background— the working config to match.verify_live_monorepo(daily cron) —pnpm: not found. A sharedPATH=line in the crontab (added formy_backup’suv-based jobs) didn’t includepnpm’s real location (/home/ta/.local/share/pnpm).
Fixes applied
Section titled “Fixes applied”- Crontab
PATH=line updated to include/home/ta/.local/share/pnpm. \TaTasks\WSL Keepaliverecreated viaschtasks /create(needed a genuinely elevated shell — see Gotchas).DiskSpaceCheck/MonthlyDriveCleanupswitched to “Run whether user is logged on or not” + “Run with highest privileges” (took two attempts — first attempt’s dialog looked right but silently didn’t save).job_monitor’sschedules.pygained arequired_triggersmechanism: a label there must exist as a live, enabled trigger regardless of heartbeat. Closes the structural gap that let the keepalive task’s own disappearance go undetected for 5+ weeks (\TaTasks\WSL Keepalivewas inignore_triggers, which reconcile.py never re-checks). Documented inCore/IT/Utils/Custom/job_monitor.md.
Gotchas (promoted to GlobalDevRules.md §3.9)
Section titled “Gotchas (promoted to GlobalDevRules.md §3.9)”schtasks /createneeds genuine elevation —/queryworking from a non-elevated token proves nothing about/create(Access is denied, even from an Administrators-group account with a UAC-filtered token).- PowerShell doesn’t parse
\"as an escaped quote (that’s cmd.exe syntax) — use single quotes to wrap a value containing literal". - Task Scheduler’s “Run whether user is logged on or not” can silently fail to save if the password prompt after OK is cancelled/blank — the dialog looks correct even when unsaved; verify via
schtasks /query /v→Logon Mode, not by trusting the GUI.
Also corrected
Section titled “Also corrected”~/ai-config/AGENTS.md referenced a ~/.claude/settings.json autoMode.allow key that doesn’t exist in the live schema (only permissions.allow/deny, Bash already unrestricted). What actually gates risky Bash actions is a separate runtime safety classifier — no settings.json edit controls it. Corrected in commit cf771fe.
Related
Section titled “Related”[my_backup](/core/it/projects/my_backup/)(portal)Core/IT/Utils/Custom/job_monitor.md(monitor docs, current)- Full round-by-round history:
git log -pon this file’s original path (SDC/IT/Tasks/my_backup-job-monitors-stale.md)