# Mod Content Policy

Task: `TODOS.phase-72.72.14.2.6`

The V2 mod content policy layer enforces automated scanning for prohibited
textures, text, and scripts before a mod can be released. `FV2ModContentPolicy`
defines which scanners are mandatory, how blocked assets are quarantined, and
whether findings route to human review.

## Policy

`BuildDefaultModContentPolicy` enables:

- texture scanning
- text scanning
- script scanning
- release blocking for prohibited content
- quarantine actions for blocked assets
- human-review routing for findings
- a script instruction budget gate

The default automated queue is `ModContentPolicy.Automated`; escalations route
to `ModContentPolicy.Human`.

## Rules And Targets

`BuildDefaultModContentPolicyRules` provides baseline rules for:

- `ProhibitedTexture` matches on texture tags or asset paths
- `ProhibitedText` matches extracted localized or authored text
- `ProhibitedScript` matches script source patterns such as blocked APIs

`FV2ModContentPolicyScanTarget` carries the mod id, asset path, asset hash,
asset type, texture tags, extracted text, script source, and estimated script
instruction count. Missing hashes and disabled mandatory scanners fail closed.

## Enforcement

`EvaluateModContentPolicy` scans every target against the active rule catalog
and returns `FV2ModContentPolicyReport`.

Findings include the rule id, asset path, asset type, matched pattern, severity,
action, release blocker, and human-review flag. Prohibited texture, text, and
script matches block release. Blocked assets use `Quarantine` when quarantine is
enabled. Script targets also fail when their estimated instruction count exceeds
`MaxScriptInstructionBudget`.

## Verification

Run:

```bash
python3 V2/ue/Tools/check-v2-mod-content-policy.py
python3 -m json.tool V2/ue/Content/V2/Modding/ModContentPolicy_V2_Contract.json
```

The focused checker verifies runtime types, default rules, texture/text/script
scanning, script budget enforcement, quarantine actions, human-review routing,
automation assertions, docs, CI/Horde wiring, and TODO evidence for `72.14.2.6`.
