Skip to main content

Bulk jobs reference

Job types

TypeDoesScope
Entity ingestCreates recordsThe submitted payload
Entity updateUpdates recordsThe submitted payload
Match indexRecomputes blocking keysEntity type or tenant
Match runRuns matchingEntity type or tenant
Match retierRe-evaluates queued pairs against changed thresholdsEntity type or tenant
Data quality scoreRecomputes scoresEntity type or tenant
Label recomputeRebuilds display labelsEntity type or tenant
Assertion backfillEvaluates existing evidence against a resolution ruleTenant, or one rule
Assertion resolveResolves pending relationship assertionsTenant

Recompute types accept a tenant-wide scope, so "rescore everything" is one submission rather than an orchestration you assemble yourself.

Statuses

StatusMeaning
QueuedAccepted, awaiting a worker
RunningBeing processed
CompletedFinished with every row succeeding
Completed with errorsFinished, but some rows failed — a distinct terminal status
FailedCould not complete
Dead letterExhausted its retries and was set aside
CancelledStopped by request

Check for the "completed with errors" status, not only the row-error count. It is a terminal status in its own right, so a job that finished with failures is distinguishable from one that finished cleanly without inspecting counts.

Progress

Progress is derived from completed chunks plus live progress inside in-flight ones, so it reflects real work rather than an estimate — and a stalled job visibly stops advancing.

Resilience

EventBehaviour
A worker dies mid-chunkAnother reclaims it; at most that chunk is redone
A worker stallsDetected by two independent signals and its work reclaimed
A chunk fails repeatedlyMarked failed; the rest of the job continues
A worker returns after being reclaimedIts late writes are rejected, not applied

The last one matters more than it appears: without it, a returning worker could overwrite a peer's completed work and silently corrupt the job's totals.

Backpressure

Submissions exceeding capacity are rejected rather than queued indefinitely, with a retry interval.

ConditionStatus
Too many rows in one submission400
Payload too large413
Per-tenant queue or rate limit reached429
Platform saturated503

Honour the retry interval. Retrying immediately makes the condition worse.

Row errors

Recorded per row with the reason. Fix and resubmit only the failed rows — resubmitting everything reprocesses what already succeeded.

Next


Last verified against commit 74cecd91 (2026-08-03)