Gotchas
Hard-won deployment gotchas worth reading before you touch prod.
A curated subset of the deployment gotchas catalog. The full, numbered list (G1–G31) with exact
fixes lives in DEPLOYMENT-GUIDE.md — this page is the "read before you touch prod" shortlist.
Deploy mechanics
- G16 — image tags must be LITERAL in
docker-compose.yml. dstack does not expand${IMAGE_TAG}; a variable tag means it silently won't re-pull. Bump the literal tag every deploy. - dstack ignores compose
${:-default}defaults — flags likeCONCLAVE_INPERSON_VIA_CAPTUREmust be set explicitly, or they read as false (this silently disabled the DiariZen post-pass). - Never re-provision a CVM — it wipes the sealed volume. Deploy in place by
--cvm-id.
In-person WebSockets
- G17 — the Phala gateway kills long-lived WS at ~2–4 min (close code 1006). The fix is the
Option-A TLS-passthrough ingress (
wss://capture.conclavehq.org→ in-CVM HAProxy,TIMEOUT_*=3600s) plus client reconnect. See Deployment. - On macOS the Docker VM drops long WS too — run diart natively for local in-person testing; Linux CVMs are unaffected.
Diarization / ASR chain
- G24–G26 — the post-pass didn't fire because the enqueue flag was false, the GPU worker was on a stale URL, and reconcile no-op'd when VFTE found no voiceprints. All three had to be fixed together for the authoritative pass to run end to end.
- ASR — force
language=en+temperature=0on NEAR Whisper (auto-detect garbles English);whisper-1404s → useopenai/whisper-large-v3.
Auth (open)
- G27–G31 — web login loop. Google sign-in reaches the dashboard then bounces to
/login(both apps), worse on sign-out → sign-in. A cluster of Vercel-rewrite bugs; several fixes shipped (Bearer token, client-set cookie,no-store) but it still reproduces (G31). Tracked at Conclave#13; currently the top blocker for web sign-in. See Status.
Source: DEPLOYMENT-GUIDE.md (G1–G31), task-plan/MASTER-TASK-LIST.md.