Phase 72.21.1.12 adds a platform entitlement verification surface for checking
that the current platform account owns the base game and requested DLC before
content loads. FV2PlatformEntitlementVerificationPolicy owns provider route
coverage, FV2PlatformEntitlementContentRequirement describes the content gate,
FV2PlatformEntitlementReceipt carries cached ownership proof, and
FV2PlatformEntitlementVerificationPlan decides whether content can load or a
platform SDK entitlement query must run first.
Operations#
PlanPlatformEntitlementVerification supports:
VerifyBaseGameOwnershipchecks the configuredGame.Oshun.V2.BaseSKU before base content loads.VerifyDlcOwnershipchecks the current platform DLC SKU before optional content loads.VerifyContentBundleAccessis reserved for bundled base-game plus DLC access checks where the platform returns one signed entitlement result.
Provider Routes#
| Provider | Native entitlement surface | Base-game command | DLC command | Receipt command |
|---|---|---|---|---|
| Steamworks | ISteamApps/ISteamUser |
ISteamApps::BIsSubscribedApp |
ISteamApps::BIsDlcInstalled |
ISteamUser::GetAuthSessionTicket |
| Epic Online Services | EOS_Ecom |
EOS_Ecom_QueryOwnership |
EOS_Ecom_QueryEntitlements |
EOS_Ecom_QueryOwnershipToken |
| GOG Galaxy | galaxy::api::IApps/galaxy::api::IUser |
galaxy::api::IApps::IsProductOwned |
galaxy::api::IApps::IsDlcOwned |
galaxy::api::IApps::GetDLCProductIDByIndex |
| PlayStation SDK | V2PlayStationEntitlementInterface |
PsnEntitlements.QueryGameLicense |
PsnEntitlements.QueryContentLicense |
PsnEntitlements.ValidateSignedReceipt |
| Xbox GDK | V2XboxGdkEntitlementInterface |
XboxEntitlements.QueryGameLicense |
XboxEntitlements.QueryDlcLicense |
XboxEntitlements.ValidateSignedReceipt |
Console routes remain public stubs in V2OnlineServices. Proprietary
PlayStation and Xbox headers or symbols stay in restricted platform SDK modules.
Rules#
The default policy requires Steamworks, EOS, GOG Galaxy, PlayStation SDK, and Xbox GDK route coverage. Each route must support base-game ownership, DLC ownership, signed receipt validation, and a fail-closed command. Console routes must be NDA-isolated and certification-scoped.
Content loading is fail-closed. A valid signed receipt for the current platform
and platform account allows the content load. A missing or expired receipt
blocks the content load and queues
EV2PlatformSdkRequestType::QueryEntitlements when the native platform
entitlement API is reachable. Wrong-account, wrong-platform, unsigned, and
unavailable-platform-API cases block the load without treating the content as
owned.
Verification#
Run:
python3 V2/ue/Tools/check-v2-platform-entitlement-verification.py
The checker validates the C++ API, contract, automation spec, CI workflow, Horde gate, documentation, and TODO evidence for Section 72.21.1.12.