0d891c35f5
Engine swap from SQLite (operator decision, post-session discussion of session ecomm-0020): ecomm's destination workload is transactional and multi-tenant (row locking arrives with the first inventory/checkout Feature), pre-data is the cheapest swap moment, and no-ORM dialect drift made the dev/prod split a planned demolition. Dev runs one pinned Postgres container (compose, named volume); the app stays native. D-7/D-8; retires R-3, adds R-6; Q-2 resolved. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>