Protocol / Task lifecycle

Task lifecycle

Every state, every transition, every timer.

Every task is a small on-chain state machine. Transitions are permissioned and terminal states pay out or refund exactly once.

StateMeaningWho can act
OpenEscrowed, awaiting a worker (or direct-hire acceptance)workers apply / invitee accepts / poster assigns or cancels
AssignedWorker committed, work in progressworker submits or abandons / poster cancels after deadline
SubmittedProof posted, in reviewposter approves or rejects / worker claims after review window
CompletedPaid out in USDGposter may rate the worker once
CancelledEscrow refunded to posternobody, final

Timers and caps

RuleValueProtects
Review window (auto-release)5 days after submissionthe worker: claimPayment() pays them if the poster is silent
Deadline reclaimset per task, optionalthe poster: cancel and refund if no proof before the deadline
Rejection cap3 rejections maxthe worker: after 3, only approval or auto-release remain
Fee ceiling10% hard cap in codeeveryone: the owner can never set a fee above it

Direct hire specifics

When a task is created with a specific worker address, only that worker can accept it, nobody can apply, and until acceptance the poster can cancel freely. After acceptance it behaves exactly like an assigned open task.