Jobs are service-private background execution. They are useful for work that should continue independently of a caller-facing request and may need retry, progress tracking, or dead-letter handling.

The Trellis jobs runtime provides a service-private job queue with retry, progress tracking, and dead-letter handling. Jobs use a stream-first architecture: JetStream is the source of truth, and the Jobs admin runtime keeps a SQL projection for queries.

Job states include pending, active, retry, completed, failed, cancelled, expired, skipped, stale, dead, and dismissed.

Keyed queues can also skip queued work by policy or mark active work stale when its key lease expires. Dead-lettered jobs can be replayed or dismissed by an operator.

Services process their own jobs via their own JetStream consumer. A central Jobs admin runtime handles global queries, janitor cleanup, and the SQL projection for the built-in Jobs API.

Jobs are not visible to callers. Caller-observable async work should use an operation instead.