Reference
Job lifecycle
A job moves through a small set of statuses. The SDK reports each transition, and with verbose mode (on by default) it also prints the finer phase within a status.
Statuses
PENDING: created and waiting for upload, submit, or a worker.
RUNNING: a worker is executing the circuit.
SUCCEEDED: the result is available.
FAILED: the job failed.
CANCELLED: the job was cancelled.
Terminal statuses: SUCCEEDED, FAILED, CANCELLED. is_done() is True for these.
Phases
While a job is PENDING then RUNNING, the platform also reports a phase so you can see exactly what is happening (most useful on a cold start, when provisioning a GPU worker takes a few minutes):
queued -> provisioning compute -> pulling runner image -> running simulation -> uploading result
Timestamps
Each transition records a timestamp on the job record, available via to_dict() or the handle's fields:
created_at job created
submitted_at inputs uploaded and submitted
started_at a worker began executing
completed_at reached a terminal status