# Mod Auto-Update

Task: `TODOS.phase-72.72.14.2.4`

The V2 mod auto-update system plans launch-time update checks, background
downloads, silent apply, and mod refresh operations through
`FV2ModAutoUpdatePlan`. The planner is provider-neutral, so Steam Workshop,
mod.io, and local manifest candidates can share the same policy and safety
gates.

## Policy

`BuildDefaultModAutoUpdatePolicy` enables:

- update checks on game launch
- background downloads
- apply without user intervention
- compatibility validation before download
- metered-network protection
- mod refresh after a successful apply

The default download staging root is `Saved/Mods/AutoUpdate`.

## Candidates

`FV2ModAutoUpdateCandidate` records the installed version, remote version,
provider source, provider id, package hash, download reference, size estimate,
enabled state, compatibility state, and restart requirement.

`EvaluateModAutoUpdates` compares semantic `major.minor.patch` versions. Remote
versions newer than the installed version become update operations. Already
current mods create non-blocking evidence, while missing versions, incompatible
updates, oversized downloads, disabled background downloads, metered networks,
and user-confirmation policies block the plan.

## Operations

Each accepted update creates:

- `Check`
- `Download`
- `Apply`
- `RefreshMods` when policy allows post-apply refresh

Download operations stage to `Saved/Mods/AutoUpdate/<mod-id>/`. Apply operations
are marked as silent when `bApplyWithoutUserIntervention` is enabled.

## Verification

Run:

```bash
python3 V2/ue/Tools/check-v2-mod-auto-update.py
python3 -m json.tool V2/ue/Content/V2/Modding/ModAutoUpdate_V2_Contract.json
```

The focused checker verifies runtime types, launch/background/silent-apply
behavior, metered-network and compatibility blockers, automation assertions,
docs, CI/Horde wiring, and TODO evidence for `72.14.2.4`.
