# ADR 0008 — Forward-only migrations Status: accepted (2026-07-07) · Plan: rev 3 (resolves audit D5/O1) ## Context Down-migrations are rarely tested and lie about reversibility once data has flowed. Rollback needs a strategy that works with real data. ## Decision golang-migrate, embedded (//go:embed), up-only. Migrations run in a one-shot init container with a DDL-only DB user before app roles start. Within one deploy window migrations are additive-only (new columns nullable, new tables optional) so previous-SHA images tolerate the new schema. Rollback = redeploy previous image tag; if the migration itself is the problem, pg_restore the automatic pre-deploy dump. Mistakes roll forward via compensating migrations. ## Consequences - No down.sql to write or test; the pre-deploy dump is the real safety net. - Destructive schema changes (drop/rename) take two deploys by design.