Scheduler Model

Summary

The scheduler is a reconciler and task arming surface. It should not become the place where business logic runs.

Problem

Schedulers often drift into hidden workflow engines because they already wake up on a timer. That makes retry, audit, and manual repair harder.

Principle

Persist schedule state, enqueue work explicitly, and let jobs or DAGs own the actual executable behavior.

Platform Shape

The job execution modes doc describes manual-first scheduling, toggles for job, DAG, and marketing campaign schedules, and the move toward schedule-owned future Cloud Tasks. Scheduler code lives under app/scheduler and execution runtime support lives under services/execution/runtime and services/ops/job_schedules.

Source Evidence

  • docs/reference/job-execution-modes.md
  • app/scheduler
  • services/execution/runtime
  • services/ops/job_schedules
  • docs/engineering/architecture/database-vs-cloud-tasks-dispatch.md
  • docs/engineering/architecture/scheduled-jobs.md