# Final Deployment Checklist

Read `DEPLOYMENT_GUIDE.md` first. A fresh Invest database additionally requires the licensed product's clean baseline SQL because it was not supplied with the source archive.

## Before staging

- Confirm ownership/licensing of all product source and third-party packages.
- Use PHP 8.3 and the locked Composer dependencies.
- Configure separate databases, service credentials, encryption keys, queues, scheduler locks, mail, push, blockchain, rate, and M-Pesa credentials.
- Keep secrets outside source control and rotate all credentials previously used in development.
- Run migrations only after encrypted database backups and restore testing.

## Staging acceptance

- Run the full Core and Flutter tests.
- Validate signed Core calls from Invest and Folex.
- Reconcile ledger liabilities, escrow, custody, Invest, Folex, and fee revenue to zero unexplained variance.
- Test deposits and withdrawals on provider test environments.
- Complete P2P buy, pay, evidence, release, cancellation, expiry, and dispute scenarios.
- Exercise duplicate callbacks, queue interruption, provider outage, and recovery commands.
- Verify KYC, limits, compliance cases, audit logs, admin elevation, notifications, and receipts.

## Production launch

- Follow `BATCH_30_LAUNCH_RUNBOOK.md` exactly.
- Start with controlled users and separately approved merchants.
- Monitor queues, recovery cases, reconciliation alerts, provider callbacks, balances, escrow, error rates, and notification delivery.
- Preserve migration manifests, evidence hashes, launch events, reconciliation reports, and immutable ledger records.
- Never repair a financial discrepancy through direct balance edits.
