# V3 Cross-Platform Certification

Manifest: `v3-cross-platform-certification.v1`

Verifier: `pnpm verify:v3 cross-platform-certification`

Evidence: `V3/release/cross-platform-certification-validation.json`

This gate closes `V3/V3_TODOS.md` §69 by requiring final platform approval
evidence for every launch target. It is intentionally separate from the §67.1
store-size gates: size gates prove the submitted artifacts fit platform budgets;
this gate proves the release captain captured final approval, publication where
required, signing traceability, and supporting platform readiness evidence.

## Required Outcomes

| Checklist item                       | Platform record                                                | Store / portal                            | Required outcome                                    |
| ------------------------------------ | -------------------------------------------------------------- | ----------------------------------------- | --------------------------------------------------- |
| `69.apple-ios-ipados-ue-mobile`      | `ios-ipados-ue-mobile`                                         | Apple App Store Connect                   | Approved and published                              |
| `69.apple-visionos`                  | `visionos-ue-vision-pro`                                       | Apple App Store Connect visionOS          | Approved and published                              |
| `69.google-play-android-ue-mobile`   | `android-ue-mobile`                                            | Google Play Console                       | Approved and published                              |
| `69.meta-horizon-quest3-questpro`    | `quest3-questpro-openxr`                                       | Meta Horizon Store                        | Approved and published                              |
| `69.psvr2-psn`                       | `psvr2-psn`                                                    | Sony PlayStation Partners                 | Sony TRC signed off and app approved for release    |
| `69.steamvr-steam-win64-openxr`      | `steamvr-steam-win64-openxr`                                   | Steamworks                                | Steam approval received                             |
| `69.epic-games-store-win64`          | `epic-win64-desktop`                                           | Epic Developer Portal                     | Storefront approval received                        |
| `69.mac-app-store-apple-silicon`     | `mac-app-store-apple-silicon`                                  | Apple App Store Connect Mac App Store     | Approved and published                              |
| `69.companion-mobile-v1-v3-deeplink` | `companion-mobile-ios-v1-v3`, `companion-mobile-android-v1-v3` | App Store Connect and Google Play Console | Companion app approved and published on both stores |

## Fail-Closed Checks

The verifier fails closed and the analytics manifest rejects:

- missing required platform records;
- duplicate records for a platform;
- checklist items not covered by the required number of records;
- any `approvalStatus` other than `approved`;
- any required publication target not marked `published`;
- Steam, Epic, or PSVR 2 records not marked `approved_for_release`;
- PSVR 2 records without `trcStatus: signed_off`;
- package-kind or package-extension drift from the expected platform artifact;
- missing submission IDs, approval artifact IDs, release versions, signing
  profiles, package paths, timestamps, or on-disk evidence paths.

## Evidence Boundaries

`cross-platform-certification-validation.json` is the canonical release-captain
evidence file. It records store / portal approval artifact identifiers and the
repo-local files that support each package: cook profiles, readiness checklists,
size-budget evidence, FPS validation, and companion mobile store assets plus V3
deep-link tests.

The local verifier does not call private store APIs. It enforces that approval
and publication evidence must be present, explicit, and traceable before §69 can
be marked complete.
