# V2 Cross-Product Entitlement

V2 consumes cross-product unlocks as signed `@oshun/identity` entitlement
claims. V2 does not read raw Lilith, Shakti, Calliope, or Aphrodite activity.

## Contract

- `@oshun/identity` exports `v2-entitlement-claims.ts` for claim validation,
  region checks, expiration checks, and privacy decisions.
- `@v2/cross-product-entitlement` turns those decisions into V2 grant surfaces.
- Unreal mirrors the decision with `FV2CrossProductEntitlementClaim`,
  `FV2CrossProductEntitlementDecision`, and
  `UV2OnlineServicesBlueprintLibrary::EvaluateCrossProductEntitlementClaim`.

## Default-On Sources

The following non-sensitive source claims may grant V2 rewards by default:

- Lilith meditation-streak titles.
- Shakti certification badges.
- Calliope fan-club tiers.

These claims are still signed by `@oshun/identity`, region-scoped, revocable,
and redacted so V2 receives only the V2 grant id and source issuer category.

## Aphrodite Privacy Rule

Aphrodite-derived grants are sensitive adult source claims. Each individual
grant requires explicit opt-in and the out-of-context warning before V2 may add
it to inventory. Even after opt-in, the grant remains private inventory by
default; V2 blocks implicit title, badge, and lobby surfacing.

## Rollback Boundary

Entitlement decisions are off rollback. Rollback gameplay may consume already
resolved cosmetic/loadout metadata, but it never evaluates identity claims.
