grab_job: { can_do: [@can_do], } -> { jobid, job, arg, # failure_count? } (or) -> Nothing insert_job: { job: "foo", arg: "lskdjflksdjflskdf", uniqkey: "blah", run_after: $unix_time, coalesce: "to_foo", } -> jobid # atomic insert multiple jobs: insert_jobs: [ {...}, {...}, ] -> @jobids mark_completed: { jobid: 5, replace_with: [@jobs], #optional } -> { handles => [@handles] } mark_failed: { jobid: 5, message: "error message", exit_status: 6, retry_in: 80, # optional. if not present, no retry. } get_failure_log: { jobid: 6 } -> [ {time:2342342,exitstatus ... }, {....}, {...} ] get_status: { jobid: 6, } -> { exitstatus: 0, }