You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Wire report schedules onto the existingCronJobAdapter (croner + per-job timezone, already used by sys_job) — do not delete the dormant fields.
Problem
sys-report-schedule.object.ts:12-15 documents cron_expression as "reserved for the next milestone when a cron-capable scheduler adapter is available, it wins over interval_minutes." That adapter exists — packages/services/service-job/src/cron-job-adapter.ts:55-59. But report-service.tsadvanceSchedule reads only interval_minutes and ignores both cron_expression (sys-report-schedule.object.ts:72-76) and timezone (:80) — packages/plugins/plugin-reports/src/report-service.ts:462-467. Both are author-facing-but-runtime-dead.
Scope
When cron_expression is present, schedule the report via CronJobAdapter with the schedule's timezone; keep interval_minutes as the tz-agnostic fallback.
Report schedules run SYSTEM_CTX (no user) — tz source is the schedule's owntimezone field, same model as sys_job. Off the resolver's critical path.
Update the spec-liveness ledger: mark cron_expression + timezonelive, with this PR as evidence (enforce, not remove).
Acceptance criteria
A report with cron_expression: '0 9 * * 1' + timezone: 'America/New_York' fires Mondays 09:00 ET.
interval_minutes-only schedules unchanged.
Liveness ledger reflects the two fields as live; no authorWarn regression.
Activity
feat(reports): report schedules honor cron_expression + timezone (#1983…