Readiness sweep
After a deploy or restart:Cleanup
The sandbox expiry reaper runs inside control and reconciles active rows on restart. Broader cleanup is not scheduled — call it from a trusted cron or sidecar:MERV_ADMIN_TOKEN denies every caller.
It handles registered stale sandbox state, blob TTLs, storage leases, and stale provisioning records. It does not discover or terminate provider VMs that have no ledger row.
Client version floor
Clients sendX-RP-Client-Version; anything below the floor published by /api/meta (min_proxy_version) gets HTTP 426. The check runs before auth so stale clients see “upgrade”, not “login”.
Logs
HTTP request logs go to stdout. Diagnostic activity and tool-call rings are process-local and bounded — they reset on restart.Backups
Scheduled logical backups (pg_dump) plus tested restores. A Docker named-volume snapshot alone is not a backup policy. On hosted Supabase, verify the data project’s backup/PITR plan.
Move the database
Changing overlays changes where new writes go; it does not copy data. Controlled cutover:- Create the empty target and run its bootstrap; don’t start Merv against it yet.
- Run the preflight; take a target baseline backup; verify the source’s latest backup restores.
- Stop all source writers, then export with a matching-or-newer
pg_dump: - Restore as
merv_app: - Point one control replica at the target and start it (migrations apply under the advisory lock). Compare table counts and the max
schema_migrations.version; then start the rest. - Keep the source read-only and the dump through the rollback window. Rollback = stop target writers, restore the original DSN. Don’t merge divergent writes.
Security boundary, restated
Plain HTTP on 8787 behind your TLS proxy; open stacks (MERV_REQUIRE_AUTH=0) only on a trusted operator network; /api/admin/* network-restricted; UI deployed separately with explicit CORS origins. Byte transfers — artifact, storage, feed uploads, sandbox output pulls — run agent-side over presigned or token URLs, so the brain never serves live checkout files.