5.4 KiB
5.4 KiB
Pre-release Review Checklist
Use this checklist to find production release risks from a PR or git diff. Report only categories with confirmed problems or plausible risks that need confirmation.
Database and data changes
- Schema or ORM model changes without corresponding migration files.
- New columns, enums, constraints, indexes, partitions, triggers, functions, or extensions that need deploy-time DDL.
- Destructive migrations, column renames, type changes, constraint tightening, or data rewrites without backward-compatible rollout or rollback notes.
- New required data without seed, backfill, admin setup, or one-time SQL.
- Index changes that may lock large tables or need concurrent/online creation.
- Query changes that depend on data shape not guaranteed in production.
- Migration files present but not referenced by the deploy system or migration runner.
Environment and configuration
- New env var, config key, feature flag, secret name, or runtime option without example/default, deployment platform update, or CI/CD secret update.
- Config key rename/removal that may break existing production variables.
- Code that reads production-only values without validation or safe failure behavior.
- Feature flags without documented default state, owner, rollout plan, or kill switch.
- Docker, Kubernetes, Helm, Terraform, Railway, Vercel, GitHub Actions, or similar deploy config changes that require manual environment changes.
Security and sensitive material
- Private keys, tokens, passwords, certificates, cookies,
.pem,.key,.p12,.env, service account JSON, or cloud credentials added to the diff. - Logs, errors, analytics, webhooks, or traces that may expose PII, tokens, session IDs, or payment data.
- Debug endpoints, admin bypasses, permissive CORS, disabled auth, relaxed TLS, or temporary development flags.
- IAM, ACL, bucket policy, database role, queue permission, webhook signature, or API key scope changes without release coordination.
- Dependency or container changes with known security-sensitive behavior, native binaries, or postinstall scripts.
Cache, CDN, and derived state
- Redis key format, namespace, TTL, serialization, or value shape changes without invalidation or backward compatibility.
- Code that assumes warmed cache, precomputed data, materialized views, search indexes, or derived tables exist.
- CDN/static asset paths, cache headers, ETags, versioning, or purge requirements changed.
- Rollout can serve mixed old/new cache values during a partial deploy.
- Feature removal leaves stale cache keys that can revive old behavior.
Queues, events, and schedulers
- New topic, queue, routing key, exchange, subscription, event type, cron job, or scheduled worker.
- Producer and consumer contract changes without compatible deployment order.
- Missing DLQ, retry policy, idempotency, dedupe key, or poison-message handling.
- Worker concurrency, timeout, rate limit, or backpressure changes that may overload dependencies.
- Event payload shape changes without versioning or old-consumer compatibility.
External services and assets
- New object storage, CDN, S3, OSS, GCS, or static asset references without upload or permissions confirmation.
- Email, SMS, push, PDF, image, translation, or notification templates changed without production material update.
- Webhook URL, callback domain, redirect URI, CORS origin, OAuth app, payment provider, or third party whitelist changes.
- New cloud resource, bucket, DNS record, certificate, API product, SaaS setting, or quota need.
- Frontend build assets depend on backend routes or config that are not deployed yet.
Service dependencies and deployment order
- API contract changes affecting web, mobile, workers, indexers, schedulers, or third parties.
- Database migration must run before or after specific service versions.
- Worker should be paused, drained, or deployed after producers.
- Read/write compatibility risks during rolling deploys.
- New background jobs, queues, or cache consumers need infrastructure before application deploy.
- Rollback would be unsafe because schema, data, cache, or queue payloads are not backward compatible.
CI/CD and release automation
- Workflow, Dockerfile, build script, deploy script, package manager, lockfile, or artifact path changed.
- Required build-time env var, secret, binary, system package, or runtime version changed.
- Tag/release workflow depends on files or outputs not updated in the diff.
- Migration, seed, asset upload, or cache purge step is manual but not documented.
- Tests, linters, or type checks disabled or narrowed for release-critical code.
Observability and operations
- New critical path without logs, metrics, traces, health checks, dashboards, or alerts.
- Error handling changed without actionable logs or rollback signal.
- Runbook, release checklist, incident response, or support notes missing for operational changes.
- Kill switch, feature flag, or emergency disable path absent for risky functionality.
- SLO, rate limit, quota, or capacity implication not addressed.
Reportable "unable to verify" cases
- Remote PR diff cannot be fetched.
- Release tag cannot be found and the audit fell back to recent commits.
- Deployment platform config, production secrets, cloud buckets, queues, or external SaaS settings are not accessible from the local repository.
- Owner cannot be inferred from blame/log evidence.
- Diff is too large to inspect fully within the available time or tool limits.