# Decisions Log ## ADR-1 — Use Redis for the job queue **Why:** We needed a queue that survives process restarts. The in-memory array we started with lost jobs on every deploy. **Decision:** All background jobs go through Redis lists via the Worker class. SETTLED. We looked at beanstalkd but nobody on the team had operated it, and at Postgres-based queues but we did not want polling load on the main database. ## ADR-2 — Ship as a single container **Why:** Deploys kept drifting between the app host and the worker host. **Decision:** App and worker ship in one container image; the entrypoint picks the role. SETTLED. ## ADR-3 — Job payload schema versioning **Why:** A payload shape change stranded old jobs in the queue. **Decision:** OPEN — leaning toward an integer `v` field in every payload, not decided yet.