well, jl_task_t* still has lots of free bits (and a free byte), so we could stick a flag `task.failed` or make it stateful: `task.status = [UNSTARTED, RUNNABLE, NOTRUNNABLE, DONE, FAILED]`