Run against a fresh database in env=dev, in order:
  phase1, phase2a, phase2b, phase3a, phase3b, phase4, launch_lang, credit_einvoice, growth_seo, marketing_value, platform_team_more, translations, launch_free_period, ewaybill_legal_ios, enquiries

app/config.php needs, for the later suites:
  'app_key'  => 'any-long-random-string',
  'razorpay' => ['key_id' => '', 'key_secret' => '', 'webhook_secret' => 'whtest'],
  'stripe'   => ['secret_key' => '', 'webhook_secret' => 'whstripe'],
  'einvoice' => ['mode' => 'sandbox', 'base_url' => 'http://127.0.0.1:8100', 'client_id' => 'CLIENT1', 'client_secret' => 'SECRET1', 'public_key' => 'tests/mock_irp/pub.pem'],
  'ewaybill' => ['mode' => 'sandbox', 'base_url' => 'http://127.0.0.1:8100', 'client_id' => 'EWBCLIENT', 'client_secret' => 'EWBSECRET', 'public_key' => 'tests/mock_irp/pub.pem'],
  'mail'     => ['host' => '127.0.0.1', 'port' => 2525, 'secure' => '', 'user' => '', 'pass' => '', 'from' => 'test@pbn.local', 'from_name' => 'PBN Connect'],
  'fx'       => ['url' => 'file:///ABSOLUTE/PATH/tests/fx.json'],

Before running: python3 tests/smtp_sink.py &   (captures email to /tmp/mails)
Mock government portal (e-invoice + e-way bill):
  cd tests/mock_irp && openssl genrsa -out priv.pem 2048 && openssl rsa -in priv.pem -pubout -out pub.pem && php -S 127.0.0.1:8100 index.php
The launch_free_period suite assumes a run date before 31 Dec 2026.
