# V3 Pixel Streaming RTT Validation

Canonical source: `libs/oshun/analytics/src/v3-pixel-streaming-rtt-budget.ts`

Evidence artifact: `V3/ue/Build/PixelStreaming/rtt-load-validation.json`

Manifest version: `v3-pixel-streaming-rtt-budget.v1`

The GA Pixel Streaming latency gate validates every launch POP at 5x expected
concurrency. Browser-to-POP p99 must stay at or below 60 ms, and end-to-end p99
through the relay and world-server hop must stay at or below 80 ms.

| POP              | 5x sessions | Browser-to-POP p99 | End-to-end p99 | Packet loss |
| ---------------- | ----------- | ------------------ | -------------- | ----------- |
| `us-east-1`      | 6,000       | 43 ms              | 63 ms          | 0.0007      |
| `us-west-2`      | 4,000       | 46 ms              | 67 ms          | 0.0008      |
| `eu-west-1`      | 4,000       | 45 ms              | 68 ms          | 0.0008      |
| `ap-northeast-1` | 1,500       | 52 ms              | 75 ms          | 0.0009      |
| `ap-south-1`     | 1,250       | 54 ms              | 76 ms          | 0.0010      |
| `ap-southeast-2` | 1,250       | 49 ms              | 71 ms          | 0.0009      |
| `sa-east-1`      | 1,250       | 51 ms              | 74 ms          | 0.0009      |

The gate is anchored to the Rust Pixel Streaming relay
(`apps/v3/lilith-pxstream-relay/src/lib.rs`), its 60 ms POP-selection budget,
the `matchmaker_selection_p99_stays_below_budget_under_load` test, and the UE
Pixel Streaming worker contract. The verifier fails closed when a required POP
is missing, load does not equal 5x GA capacity, CI is not green, the sample
window is shorter than 24 hours, RTT samples are below floor, browser-to-POP p99
exceeds 60 ms, end-to-end p99 exceeds 80 ms, or data-channel packet loss exceeds
0.001.
