...Problem: Gateway's internal cron scheduler accepts and stores jobs but fails to execute them at scheduled times. Jobs show correct nextRunAtMs timestamps but never fire.
Evidence:
1. Recurring cron jobs never executed: • Morning Brief (created Feb 7, schedule 0 23 * * * UTC) → never ran
• Alfred Email Monitor (created Feb 7, 0 0 * * * UTC) → never ran
• Evening Recap (created Feb 7, 0 12 * * * UTC) → scheduled for tonight, no prior runs
2. One‑shot at jobs also fail: • Created 9:30 AM GMT+8 news update (fd112935‑…, at: 2026‑02‑08T01:30:00Z)
• Job shows nextRunAtMs: 1770514200000 (correct)
• No run file created in ~/.openclaw/cron/runs/
• No output delivered
3. Last successful cron execution: Feb 5, 2026 (Daily Competitive Brief) • All subsequent jobs remain in jobs.json with future nextRunAtMs but never trigger
Steps to reproduce:
1. Create a one‑shot job via openclaw cron add --at "2026‑02‑08T01:30:00Z" --session isolated --message "test" --announce
2. Verify job appears in cron list with correct nextRunAtMs
3. Wait for scheduled time
4. Expected: Job executes, creates run file, delivers output
5. Actual: Job silent, no run file, no output
Environment:
• OpenClaw: 2026.2.3‑1 (d84eb46)
• OS: Ubuntu 24.04 LTS (Linux 6.8.0‑94‑generic)
• Gateway: Running since Feb 6 (PID 1186885)
• Config: cron.enabled: true, store path default
Workarounds attempted:
1. Gateway restart → jobs recalculated but still not executing
2. One‑shot jobs → same failure as cron expressions
3. Manual cron wake → triggers heartbeat but not job execution
4. Created system cron wrappers (7 scripts using openclaw agent/message) as fallback
Questions:
1. Is there a known issue with the cron scheduler's timer/wake mechanism?
2. How can we debug why jobs with valid nextRunAtMs aren't firing?
3. Are there logs (gateway/cron) that would show scheduler activity?
4. Could this be related to timezone handling (UTC vs GMT+8)?