From data origin → server fetch → render. Same result data, 4 upstream channels; server picks one by priority.
GraphQL + Phoenix Channels subscriptionGET /api/v0/.../resultslocal PG query< 50 mshistorical PR detectionprior cumulative PB → PR badge alongside NR/CR/WRWebSocket · 4 phasesGET /comp/<WCA ID>wca_db locally — exclusive on hit, skip the restcubing.com / WCA Live / WCA RESTcubing + wca → wca · wca_live + wca → wca_live · single → that one