# Cron schedule contract / 调度契约

<!-- GENERATED by scripts/data/generate_cron_docs.py; DO NOT EDIT. -->

This is the generated human view of `config/cron-schedules.json`. Runtime truth
is `openclaw cron list --json`; `scripts/system_check.py` checks runtime schedules,
payload semantics, watchdog crontab lines, and the daily DST synchronizer against
the contract before every push.

本文由 `config/cron-schedules.json` 自动生成。运行态以 `openclaw cron list --json`
为准；每次 push 前，system check 会同时校验 schedule、payload 语义、watchdog 和 DST
同步任务。禁止手改本表；修改 contract 后运行生成器。

## DST policy / 夏令时策略

US market jobs remain expressed in HKT because the daemon's ET timezone parser has
regressed before. `sync_us_cron_dst.py --apply` runs daily at **06:20 HKT**, derives
the season from `America/New_York`, and updates both OpenClaw jobs and their system
watchdogs. The overnight monitor always stops at 02:30 HKT so 03:00 memory dreaming
keeps an exclusive window; standard time therefore has two fewer US intraday slots.

美股 job 继续使用 HKT 表达式，但由每日 06:20 的同步器按纽约真实 UTC offset 自动
切换。隔夜盯盘无论冬夏令时都在 02:30 HKT 截止，保留 03:00 dreaming 独占窗口；
因此冬令时比夏令时少两个盘中 slot。

## OpenClaw jobs + watchdogs

| Job | OpenClaw schedule | Mode | Harness | System watchdog |
|---|---|---|---|---|
| 美股盘中盯盘-overnight | `*/30 0-2 * * 2-6` · Asia/Shanghai | Mode 7 | `intraday --us` | `10,40 0-2 * * 2-6` · Asia/Hong_Kong |
| Memory Dreaming Promotion | `0 3 * * *` · host HKT | memory-core | `—` | — |
| 美股收盘报告 | EDT `0 4 * * 2-6`<br>EST `0 5 * * 2-6` | Mode 6 | `report --us close` | EDT `20 4 * * 2-6`<br>EST `20 5 * * 2-6` |
| 盘前深度简报 | `0 8 * * 1-5` · Asia/Shanghai | daily-deep-brief | `brief_*` | `30 8 * * 1-5` · Asia/Hong_Kong<br>`5 9 * * 1-5` · Asia/Hong_Kong · miss-detector: brief never written (08:30 is inside the landing window) |
| 港股开盘报告 | `30 9 * * 1-5` · Asia/Shanghai | Mode 6 | `report --hk open` | `45 9 * * 1-5` · Asia/Hong_Kong |
| 盘中盯盘 | `*/30 10-11,14-15 * * 1-5` · Asia/Shanghai | Mode 7 | `intraday --hk` | `10,40 10-11,14-15 * * 1-5` · Asia/Hong_Kong |
| 港股午盘报告 | `0 12 * * 1-5` · Asia/Shanghai | Mode 6 | `report --hk mid` | `12 12 * * 1-5` · Asia/Hong_Kong |
| 港股午后快报 | `30 13 * * 1-5` · Asia/Shanghai | Mode 6 | `report --hk pm` | `42 13 * * 1-5` · Asia/Hong_Kong |
| 港股收盘报告 | `0 16 * * 1-5` · Asia/Shanghai | Mode 6 | `report --hk close` | `15 16 * * 1-5` · Asia/Hong_Kong |
| 美股开盘报告 | EDT `30 21 * * 1-5`<br>EST `30 22 * * 1-5` | Mode 6 | `report --us open` | EDT `45 21 * * 1-5`<br>EST `45 22 * * 1-5` |
| 美股盘中盯盘 | EDT `*/30 22-23 * * 1-5`<br>EST `*/30 23 * * 1-5` | Mode 7 | `intraday --us` | EDT `10,40 22-23 * * 1-5`<br>EST `10,40 23 * * 1-5` |

## Operational invariants / 运维不变量

- Exactly 11 enabled OpenClaw jobs; 10 market jobs plus memory promotion.
- Six report, three intraday, and two brief watchdog passes are tracked; the brief
  uses an 08:30 delivery backstop plus a 09:05 post-window miss detector.
- Market payloads use deterministic preflight/postflight, `delivery.mode=none`,
  MiniMax M3, the shared length limits, a unique WeChat path, and Telegram mirror.
- Mode 7 writes the public `assets/data/cron-heartbeats.json` ledger through the
  existing single publisher; cron health verifies every monitored slot.
