Skip to content

Troubleshooting

The incident catalogue. Every entry is a real failure that happened, with the symptom you'd see, the root cause, and where the permanent fix lives. Check here before re-deriving a diagnosis — most of these look like something else at first.

Build & deploy

SymptomRoot causeFix / where documented
App builds fine but login is blank / Firebase unreachableVITE_* vars missing in the reusable workflow's build env — secrets don't flow across repos implicitlypass-through in caller + declared inputs; three-places rule (Build & Deploy)
White screen after a deploy until hard refreshstale index.html referencing purged chunk hashespublic/_headers: no-cache HTML, long-cache hashed assets
Deploys nondeterministic / env sometimes missingdual-pipeline race: CF native Git integration + Actions both deployingexactly one deploy path (Actions); native integration off
Build fails on contentlint gate: bad slug, oversized cases, banned includefix the content, never the gate (Guidelines)
sql-wasm.wasm 404 / wrong file at runtimeWASM outside the module graph; browser-condition filename mismatchcopy-sql-wasm.mjs; full three-failure story in SQL Pipeline

Judge0 / code running

SymptomRoot causeFix
Functions → Judge0 hangs/refusesPages egress blocks raw-IP fetchesDNS A record hostname (Code Execution)
C++ compile timeouts in production<bits/stdc++.h> on a slow VMbanned by lint; incident is the reason
Spurious TLEs in batches; noisy timingsparallel dispatch contending on a single-core VMconcurrency = 1, measured
Python/Java TLE where C++ passesmissing per-language multipliers/overheadsjudging layer applies them; clamps too
Wrong MLE verdictsstatus mapping trusted Judge0's encoding blindlycross-check status + signals
Unicode/newline-sensitive wrong answersraw I/O comparisonbase64 round-trip + unified normalizer

AI grading

SymptomRoot causeFix
Grading down despite "working" configcascading free-tier failures: deprecated Gemini model id, Groq rate storms, invalid model stringnine-provider chain; GET health checks per route (AI Pipeline)
Verdicts prefixed [echo provider]no provider key configuredexpected honest degradation — add a key
JSON parse errors from a providermodels decorating JSON with prose/fencescoerceJson + firstBalanced + JSON-only prompts

Firestore & data

SymptomRoot causeFix
Attempt write rejected mid-OAdocument contained undefinedstrip/default optional fields — codebase-wide rule
Reminder emails silently skipping usersprofile email written only at creation; Worker reads the mirrorsync on every sign-in + backfill-emails.mjs (Scheduling)
Double-judging / double-sending fearsoverlapping cron invocationsupdateTime / create preconditions — claims, not locks (Workers)

UI

SymptomRoot causeFix
Highlights vanish/duplicate; macOS black-screen; math-adjacent driftannotations v1 mutated the DOM; offsets measured through KaTeXdata-anchored rewrite (Notes System)
Popover clipped at pane edgesrendered inside overflow:hidden scrollercreatePortal to body
Exam chrome unreadable in light modehardcoded dark-token colorsall colors via shared CSS variables
Settings edits revertingderived state computed from stale propsstate lifted/keyed correctly; watch for the pattern in new forms

Notes / Docy

SymptomRoot causeFix
Notes pane empty with 500GITHUB_TOKEN missing/expiredrotate in Pages env; functions fail loudly by design (Docy)
Chapters out of order after adding a filenumeric filename convention brokenrenumber; ordering relies on numeric sort

This docs site

SymptomRoot causeFix
Ask AI: "assistant isn't reachable" in devvitepress dev doesn't run Pages Functionsnpm run build + wrangler pages dev docs/.vitepress/dist (Development Setup)
Ask AI answers from stale pagesretrieval index predates your editsindex rebuilds on every dev/build; re-run the build

If you fix something not on this page, add it — the entry is part of the fix (Guidelines).

Ediky Workflow — internal engineering documentation.