Context
The monthly Clipper Card auto-reload cron job (WSL, 1st of each month at 9:07 AM PT) missed its April run because WSL was asleep at trigger time. WSL cron has no anacron-style catch-up.
What Was Done
- Diagnosed: Confirmed April reload never fired (no logs directory created, last-result.json showed March 25 as last run)
- Manual catch-up: Ran reload manually, $150 loaded to Primary card (7347) via Visa (3377), new balance $885.50
- Migrated to VM: Installed Playwright + Chromium on pezant.ca in standalone ~/scripts/clipper/, verified with dry run
- Cron swap: Added VM crontab entry (16:07 UTC = 9:07 AM PT), removed local WSL entry
Decisions
- VM over WSL: VM runs 24/7, eliminating the root cause. Simpler than adding catch-up logic.
- Standalone install: Only playwright + Chromium, not the full scripts repo. Minimizes VM disk/memory footprint.
- Memory cost: ~200-400 MB RAM spike for 30-60 seconds once per month. VM has 1.7 GB available, acceptable.
Open Items
- Email confirmation not working on VM (no GMAIL_APP_PW in ~/.secrets), Discord webhook covers it
- Script updates require manual scp since VM copy is not git-tracked
- Next scheduled run: May 1, 2026 at 9:07 AM PT