# Ferry operations

Run Ferry from this edition checkout with Node 26.8.1 and pnpm 8.15.6.

`pnpm run setup` resolves the Cloudflare account, provisions or reuses the
named D1, and writes ignored deployment settings and generated Wrangler
configuration. `pnpm run deploy` repeats setup, audits production settings,
builds, migrates, bootstraps or preserves the owner, uploads private secrets,
publishes and waits for `/health`.

Authenticate Wrangler or provide CLOUDFLARE_API_TOKEN and select
CLOUDFLARE_ACCOUNT_ID as required. Configure the required owner, origin, sender,
session and SendGrid values from OPERATIONS.json. Local-demo flags are rejected
by production deployment.

`pnpm run verify` covers the local checks listed by the package script. Browser
journeys use the separate `pnpm run test:browser` command. Neither local verify
nor provider acceptance proves mailbox delivery or complete first-release
acceptance; see [ACCEPTANCE.md](ACCEPTANCE.md).

`GET /health` returns the Ferry runtime status. It only proves that the health
handler responded and does not validate D1 data, mail delivery, scheduled
reassessment, or deal health.

Run `node scripts/operations.mjs describe` to inspect the operation interface,
or `node scripts/operations.mjs check` to check inputs. The check validates local static inputs only and
does not contact Cloudflare or certify caches, artifacts, migrations, or hosted
health.
