# V3 Per-Region Rules

Manifest version: `v3-per-region-rules.v1`

The V3 identity bridge now applies jurisdiction-aware access rules before a user
enters a realm or receives a Saraswati fan benefit. The runtime implementation
is `libs/v3/lilith-identity-bridge/src/per-region-rules.ts`; the release gate is
`libs/oshun/analytics/src/v3-per-region-rules.ts`.

## Jurisdiction Profiles

| Profile | Fan-token rule                                               | Age rule                   | Content rating       | Residency rule                | Expected result |
| ------- | ------------------------------------------------------------ | -------------------------- | -------------------- | ----------------------------- | --------------- |
| `us-ca` | Native fan-token benefits allowed                            | 13+ account, 16+ Saraswati | Up to `mature-18`    | `us-west` storage and compute | `allow`         |
| `de`    | Fan-token wrapper disabled; V1 account benefit fallback      | 16+ account                | Up to `saraswati-16` | `eu-de` storage and compute   | `adapt`         |
| `gb`    | Fan-token wrapper disabled; V1 account benefit fallback      | 13+ account, 16+ Saraswati | Up to `saraswati-16` | `uk` storage and compute      | `adapt`         |
| `in`    | Fan-token wrapper disabled; no token requested in GA fixture | 13+ account, 16+ Saraswati | Up to `teen`         | `in` storage and compute      | `allow`         |
| `br`    | Fan-token wrapper disabled; V1 account benefit fallback      | 13+ account, 16+ Saraswati | Up to `saraswati-16` | `br` storage and compute      | `adapt`         |

Every fixture records the applied profile id, fan-token benefit delivery,
minimum age, maximum content rating, storage residency zone, and compute
residency zone. Blocking cases are covered for underage Saraswati access,
content above the regional rating ceiling, and residency drift.

## Evidence

- Runtime rule engine: `evaluateV3PerRegionRules`
- Five-profile signoff: `buildV3PerRegionRulesJurisdictionReport`
- Evidence bundle: `V3/security/per-region-rules-validation.json`
- Verification command: `pnpm verify:v3 per-region-rules`

The gate fails closed if any of the five profiles is missing, any rule dimension
is not applied, the expected `allow` / `adapt` decision changes, or the evidence
paths drift.
