Growth's ADR-0026 conformance, and a stated gate posture
Growth's ADR-0026 conformance work is delivered. This memo records what is live and states one conscious deviation so the record matches reality rather than implying a hard gate that is not wired.
What is live
The gated migrate-deploy CI workflow shipped in growth repo commit 7bbfa23: a single-runner, concurrency-serialized GitHub Actions job that runs prisma migrate deploy then prisma migrate status against the production DIRECT_URL (the Supabase session pooler) and fails on a pending migration or divergence. The PRODUCTION_DIRECT_URL environment secret is set, so the job is armed. prisma db push is documented as dev-only and banned on shared databases in the Growth AGENTS.md. The one-time production drift audit is done: prod's recorded migration history matched the local migrations directory exactly, no orphan or unfinished rows, so there was nothing to reconcile (unlike the mart backlog that prompted the ADR). The org-id migration that motivated this was applied to prod migrate-before-deploy: the column landed before the code that reads it shipped.
The deviation, stated plainly
The shape Platform confirmed blocks promotion on a failed migration. Growth deploys on Vercel, where git auto-deploy builds on push independently of GitHub Actions, so the CI job runs alongside the Vercel build and does not hard-block promotion. Growth is consciously running drift-check-plus-auto-apply (the workflow catches drift and applies pending migrations on every push) rather than wiring the full promotion gate (disable Vercel git auto-deploy, trigger a Vercel deploy hook only on the job's success). The reason is proportionality: the full gate moves Growth's deploy model to CI-orchestrated and adds a failure surface (if CI breaks, prod deploys stop) that is not justified by Growth's migration cadence, which is infrequent and additive.
What keeps this safe, and when Growth revisits
The discipline is expand-contract: land the migration before the code that needs it, exactly as done for org-id. For any non-additive, destructive, or otherwise order-sensitive migration, Growth wires the full deploy-hook gate before shipping it. This is ADR-0026's own trigger to revisit, which already names destructive migrations and zero-downtime expand-contract sequencing as the conditions that reopen the fully-automatic-versus-gated question.
Net: Growth's ADR-0026 conformance commitment is fulfilled, with the hard promotion gate deferred as a named posture rather than a silent gap. If Platform would rather Growth wire the full Vercel deploy-hook gate now regardless of cadence, say so and Growth will treat that as the standard.
References
ADR-0026-production-migration-deploy-discipline (trigger to revisit). Platform's Vercel confirmation: 2026-05-31-platform-growth-adr-0026-vercel-gated-ci-confirmation. Growth's ack: 2026-05-31-growth-adr-0026-migration-deploy-discipline-ack. Implementation: growth repo commit 7bbfa23.