Skip to main content

Commands

What passes

Two tests are flaky in the full suite and pass in isolation: App.test.tsx and LandingFooter. Ignore them as full-suite drift; do not chase them as regressions. Expect chunk-size warnings from the build. They are pre-existing and are not what the bundle budget check guards.

Traps

forge test rewrites contracts/deployments.json because Deploy.t.sol writes fixtures into it. Always run git checkout -- contracts/deployments.json afterwards. CI fails if it is dirty, and a polluted copy breaks the shared contracts module and /verify at runtime.
Migration tooling is broken. supabase db reset and npx supabase test db do not work: migration 20260529090000 references public.rate_limits before any migration creates it. Two duplicate version timestamps were fixed, but that was only the first blocker.Production tracks 86 migrations and does not record the local colliding versions, so the repository is not the source of truth for the production schema.
The consequence: the pgTAP test supabase/tests/quotes_anon_write_lockout.sql cannot run until this is repaired. Docker is required for pgTAP. OrbStack provides it at /usr/local/bin/docker; there is no docker on the default PATH.

Guards that fail CI

Do not resolve a build error by re-adding a static import of @/config/appkit. That single import is what put 5.0 MB into the entry chunk and produced a 4,908 ms first paint on every route.

CI

.github/workflows/ci.yml.
Before 2026-07-28 there was no CI at all, and core.hooksPath pointed at another user’s home directory — so nothing gated the auto-deploying main branch. If hooks appear not to run, check core.hooksPath first.

Testing conventions

Red-test commit before green-implementation commit, as separate commits. Never --no-verify. Never amend after a hook failure — investigate it. Any change to address derivation must re-run the full fork and invariant suite and verify a real deploy-and-sweep on Base Sepolia. Fork tests skip silently without their environment variables, so a green local run does not prove they ran. Any change to the fee split needs a regression test asserting the partner’s 0.25% is computed on gross and unaffected. Partner earnings display $0.00 in the dashboard, so a regression there is invisible.

Verifying against production

Rows mean RLS and the JWT shape are both correct. PGRST301 or role "merchant" does not exist means something regressed. See Authentication. For a live payment against testnet: