status and a per-attempt log, so you can always answer “did it run, how many tries, and why did it fail?”.
pending is the only mutable state - see Update a task. Note that it does not mean “never fired”: a task interrupted mid-delivery by a crash is re-queued as pending with its earlier attempts still logged, which is why an update never clears the attempt history.
Terminal tasks are retained for history and auto-purged after SCHEDY_HISTORY_TTL. A completed task carries the full attempt log: