enqueue

abstract suspend fun enqueue(jobs: List<NewJob>): List<JobId>

Persists jobs and returns their ids in the same order. A job whose NewJob.runAt is not in the future by the store's clock is stored as JobState.Enqueued (due, visible to workers); a future NewJob.runAt is stored as JobState.Scheduled (waiting for its time). Promoting Scheduled to Enqueued when that time arrives is the store's concern; the runtime never depends on it, because claim decides due-ness by time, not state. A uniqueKey conflict with a non-terminal job returns that job's id (see interface KDoc).