scheduler.py:23 immediately does logging.FileHandler(sche_tasks/scheduler.log)
at module load. .gitignore excludes sche_tasks/ entirely, so any fresh
deploy (clone + run) crashes with FileNotFoundError before scheduler
even gets to its main loop.
The author's intent (line 76: 'if not os.path.isdir(TASKS): return None')
is that sche_tasks/ should be optional — scheduler gracefully no-ops
when it's missing. The top-level FileHandler call violates that.
Fix: makedirs before opening the log. Mirrors the makedirs already done
for DONE/ inside check() at line 78.
After this lands, any GA deployment (Tauri / Squishy / kw / launch.pyw)
can start scheduler without manual mkdir, and L4 archive cron runs from
day one.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>