# 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.
