# V3 UE VR FPS Validation

Canonical source: `libs/oshun/analytics/src/v3-ue-vr-fps-budget.ts`

UE evidence artifact: `V3/ue/Build/Performance/VrFpsValidation.json`

Manifest version: `v3-ue-vr-fps-budget.v1`

The GA native VR performance gate validates the Lilith Commons Atrium in a
Shipping build on the required OpenXR headset targets:

| Profile               | Runtime               | Hardware             | Per-eye render | Budget    | Observed sustained | Observed p95 | Reprojection |
| --------------------- | --------------------- | -------------------- | -------------- | --------- | ------------------ | ------------ | ------------ |
| `quest3-openxr-90`    | Meta Quest OpenXR     | Quest 3 dev kit      | 2064x2208      | >= 90 fps | 93.8 fps           | 90.9 fps     | 0.18%        |
| `visionpro-openxr-90` | Apple visionOS OpenXR | Vision Pro simulator | 3660x3200      | >= 90 fps | 92.6 fps           | 90.4 fps     | 0.22%        |
| `psvr2-openxr-90`     | Sony PSVR2 OpenXR     | PSVR 2 dev kit       | 2000x2040      | >= 90 fps | 94.2 fps           | 91.1 fps     | 0.16%        |

The gate is anchored to the headset cook profiles, asset presets, device
profiles, readiness checklists, and `V3/ue/Build/XR/OpenXRBackends.json`. Quest
3 requires hand tracking, avatar hand IK, fixed foveation, and passthrough.
Vision Pro requires hand tracking, eye tracking, avatar gaze, and eye-tracked
foveation. PSVR 2 requires eye tracking, avatar gaze, and eye-tracked foveation.

The verifier fails closed when any required headset profile is missing, a cook
profile or asset preset artifact is absent, CI is not green, the sample window
is shorter than 30 minutes, the frame sample floor is not met, sustained FPS
misses 90, p95 FPS misses 90, reprojection exceeds 1%, or average GPU frame time
exceeds the 90 Hz frame budget.
