Task lifecycle
Customer-visible states for a labeling task:
pending → in_progress → verified → settled
↑ ↑ ↑ ↑
Created Claimed by Consensus BSV payment
first worker reached completed
pending
Task was accepted by the Gateway and written to storage. No worker has claimed it yet (or routing is still in progress).
Customer API: GET /v1/tasks/{id} shows status: "pending". GET .../result returns 202 while pending or in progress.
in_progress
At least one worker is working on the task; labels may still be arriving. Consensus has not finalized.
Customer API: GET .../result → 202 with message: "Task is still being labeled."
verified
Consensus has selected a consensus label; the task is logically complete from a labeling perspective. Settlement may still be in flight depending on pipeline timing.
Customer API: GET .../result → 200 with consensus_label, confidence, etc.
settled
BSV micropayment completed; bsv_txid is populated on the task record.
The settled_at timestamp records the exact moment the BSV payment completed.
Use settled_at - created_at to measure end-to-end pipeline latency per task.
Customer API: GET .../result → 200 with settlement.bsv_txid and settlement.settled_at (when available).
For production, prefer webhooks for task.settled instead of tight polling loops.