Session handoff — continue Farholm work

Last updated: 2026-06-14. Read this first, then README.md (architecture), REVIEW.md (remaining items), RUNBOOK.md, DATA.md.

Orientation

How to work / verify

State: essentially complete

The full engagement is done and deployed: original cleanup, security hardening (Access JWT, CSP/HSTS/headers, lookup validation, rate limit, soft-delete/purge), gold-standard infra (self-hosted fonts, fingerprinted assets, daily R2 backups + encrypted off-Cloudflare export, health/readiness, structured logging), the whole REVIEW.md code remediation with a 16-test suite + deploy gate, brand kit, Points & Miles page, and the Merle & Michael rebrand landing (served by the worker for merle(and)?michael.com + www). REVIEW.md top section tracks what's fixed vs the remaining dashboard/larger items.

✅ Done since last handoff: booking attachments via R2

Shipped (2026-06-14). Documents (e-tickets, vouchers, confirmations) attach to a booking, live in a separate R2 bucket farholm-attachments (binding DOCS, already created in the account) at att/<REF>/<uuid>-<safeName>, and are served only through the worker — never a public bucket. 10 MB cap; PDF + image types only. DATA.md-prohibited content (passports, payment-card data, passwords, medical) is restated in the admin panel copy.

Other open items

See REVIEW.md → "Still open" for the current list. The only remaining dashboard chore is an external uptime monitor on /api/health. Larger efforts: admin audit log + RBAC, automated restore + staging, CSP nonces, Origin/CSRF checks, IaC.

Done 2026-06-14 (account/dashboard): Always Use HTTPS, account+Access MFA, the merle domains' registration moved into the Farholm account + merle-michael-landing Pages project deleted, www → farholm.com redirect verified, Termly consent confirmed, Web3Forms spam protection set to strict (domain restriction is Pro-only), and GitHub Actions SHA-pinned (ci.yml).