# Mod Multiplayer Compatibility

Task: `TODOS.phase-72.72.14.2.13`

V2 mod multiplayer compatibility is a join preflight for modded sessions. The
host specifies required mods, the client compares that list against local mod
state, and the join plan auto-downloads missing mods, updates mismatched mods,
enables installed disabled mods, or blocks join when requirements cannot be
satisfied.

## Policy

`FV2ModMultiplayerCompatibilityPolicy` is created by
`BuildDefaultModMultiplayerCompatibilityPolicy` and enables:

- exact host/client version matching
- auto-download for missing required mods
- auto-update for mismatched installed mods
- auto-enable for installed disabled required mods
- join blocking until required mods are ready
- size limits for auto-downloads

## Host And Client State

`FV2ModMultiplayerRequiredMod` records the host-required mod id, display name,
required version, provider, provider id, package hash, estimated download size,
and required flag.

`FV2ModMultiplayerClientMod` records the client's installed version, provider,
provider id, installed state, and enabled state.

## Join Plan

`EvaluateModMultiplayerCompatibility` returns an
`FV2ModMultiplayerCompatibilityReport`. The report exposes whether the client
can join now, can join after downloads, requires auto-download, or requires
client action. It also includes warning/blocking counts, issues, and actions.

Missing required mods with downloadable providers create `DownloadRequiredMod`
actions. Version mismatches create `UpdateInstalledMod` actions when the
provider can supply the host version. Disabled installed mods create
`EnableInstalledMod` actions. Missing session ids, malformed host mod entries,
unavailable providers, oversized downloads, or disabled auto-download settings
create `BlockJoin` actions.

## Verification

Run:

```bash
python3 V2/ue/Tools/check-v2-mod-multiplayer-compatibility.py
python3 -m json.tool V2/ue/Content/V2/Modding/ModMultiplayerCompatibility_V2_Contract.json
```

The focused checker verifies runtime types, host required mods, client mod
comparison, auto-download on join, auto-update before join, auto-enable before
join, join blockers, automation assertions, docs, CI/Horde wiring, and TODO
evidence for `72.14.2.13`.
