Skip to content

ADR-003: Jobs Vs Scheduler Default

Status: Accepted Date: 2026-06-02 Backfilled from: AGENTS.md Decision owner: User + prior project guidance Related task: TASK-506, TASK-507, TASK-508 Related spec/plan: Docs/superpowers/specs/2026-06-02-adr-workflow-adoption-design.md

Decision

Use Jobs by default for new user-visible work that needs admin or ops visibility, and use Scheduler for internal orchestration where dependency handling is central.

Context

The project has both Jobs and Scheduler systems. Future contributors need a durable default to avoid ad hoc queue/orchestration choices.

Alternatives considered

Option Why rejected
Jobs for all async work Internal dependency orchestration fits Scheduler better and does not always need user/admin controls.
Scheduler for all async work User-facing work often needs pause, resume, drain, retries, quotas, RLS, status endpoints, and worker processes.
Decide per feature with no default Repeated debates and inconsistent ownership would slow implementation and increase maintenance cost.

Consequences

New user-visible features or work needing admin controls should use Jobs. Internal orchestration with task dependencies, idempotency keys, and registered handlers should use Scheduler. Recurring schedules use APScheduler to enqueue into whichever backend the feature chooses.

Follow-up

Later ADR inventory work should identify any module-specific exceptions.