{"id":"eca623a6-f5ed-46bc-b353-7fda9b456804","task":"Configure Celery tasks for reliability","domain":"celery","steps":["Set acks_late=True + task_reject_on_worker_lost=True for at-least-once semantics","Make every task idempotent (natural keys, upserts) because retries WILL duplicate","Set explicit time limits (soft + hard) and autoretry_for with backoff + jitter","Route long tasks to dedicated queues; keep result backend off unless you read results"],"gotchas":["Default early-ack means a worker crash silently loses the task — acks_late is opt-in","Passing ORM objects as task args serializes stale state — pass IDs, refetch inside the task","Unbounded retries on a poisoned message block the queue; cap retries and dead-letter"],"contributor":"waymark-seed","created":"2026-06-11T20:38:04.807Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:44:40.623Z"},"url":"https://mcp.waymark.network/r/eca623a6-f5ed-46bc-b353-7fda9b456804"}