# MRPS v4 Player Conformance Checklist

A player is **metric-conformant** only when every required item below passes.

## Container and integrity

- [ ] Reads raw PNG chunks rather than only decoded image pixels.
- [ ] Finds uncompressed `iTXt` keyword `mr-phase-shift-metadata`.
- [ ] Accepts `schema == mr-phase-shift-snapshot/v4` and rejects unknown major versions.
- [ ] Uses `metricDepth.views[].chunkType` as the native payload manifest.
- [ ] Verifies PNG CRCs and `MRD1` header lengths.
- [ ] Verifies `sha256OfRawBytes` when present.

## Metric reconstruction

- [ ] Decodes raw sample type and byte order correctly.
- [ ] Treats zero/non-finite/non-positive depth as invalid.
- [ ] Computes `zMeters = raw * rawValueToMeters`.
- [ ] Uses pixel centres and `normViewFromNormDepthBuffer`.
- [ ] Uses `sensorGeometry.projectionMatrixInverse`, not a guessed FOV.
- [ ] Scales the ray so sensor-space Z is `-zMeters`.
- [ ] Applies `captureLocalFromSensor`.
- [ ] Preserves metre units without IPD-based scaling.

## RGB and aspect ratio

- [ ] Selects the correct mono/left/right RGB slot.
- [ ] Uses `normalizedViewRect` and `storedActiveRectNormalized`.
- [ ] Handles both `contain` letterboxing and `cover` cropping.
- [ ] Does not stretch black bars or discarded crop regions over the reconstructed surface.

## Playback device independence

- [ ] Places capture-local origin at the current playback viewer/camera pose.
- [ ] Projects separately through every current playback view.
- [ ] Uses the playback runtime's current transforms and projection matrices.
- [ ] Does not set playback eye separation from `ipdEquivalentMeters`.
- [ ] Handles mono capture on stereo playback and stereo capture on a different-IPD headset.

## Validity and occlusion

- [ ] Invalid native samples create holes and do not occlude.
- [ ] Uses native metric depth for exact clipping when available.
- [ ] Treats phase alpha 128 as a lower bound, never as an exact surface.
- [ ] Applies a configurable metric tolerance for live-depth occlusion.

## Compatibility tests

- [ ] Parses `example_mono_metadata.json` and one `mdPN` capture.
- [ ] Parses `example_stereo_metadata.json` and `mdPL` + `mdPR`.
- [ ] Reconstructs a known synthetic point at the expected metric coordinates.
- [ ] Confirms object size is unchanged across playback cameras with different FOV/aspect/IPD.
- [ ] Confirms `depth.byId` can be ignored in favor of canonical `depth.views`.
- [ ] Fails safely when a required native chunk or required matrix is absent.
