add contrail-e2e app with end-to-end tests against a local ATProto stack
New app under apps/contrail-e2e that brings up a full sealed local
ATProto network (PDS, PLC, Jetstream, TAP, Postgres, maildev) via
docker-compose and runs three end-to-end test files against it:
- health.test.ts — service health checks
- ingest-roundtrip.test.ts — publish → index roundtrip, verifying
a calendar event and an RSVP land in the DB and that the grouped
rsvpsGoingCount is populated via an in-process XRPC handler
- cursor-resume.test.ts — regression for runPersistent's durable
cursor. Publishes A, stops the ingester, publishes B + updates B
+ deletes A, restarts, and asserts the saved cursor replays the
gap. The basic roundtrip can't catch a broken cursor because
events always arrive while the ingester is live.
Each test stands up its own runPersistent and XRPC handler
in-process against an isolated pg schema (search_path pinned per
test), so the suite works with just pnpm stack:up and doesn't
fight a dogfooding ingester writing to public.