# Sequencer Networking

Task: `TODOS.phase-72.72.15.1.15`

The sequencer networking layer provides deterministic data contracts that
synchronize cinematic playback across multiplayer clients. Authority state owns
the session, sequence id, revision, playback status, direction, server frame,
server time, playback rate, and loop flag. Each client reports its loaded
sequence, local frame, last applied revision, and estimated latency.

## Runtime API

- Authority state: `FV2SequencerNetworkAuthorityState`
- Client state: `FV2SequencerNetworkClientState`
- Sync settings: `FV2SequencerNetworkSyncSettings`
- Evaluation: `FV2SequencerNetworkSyncEvaluation`
- Issue row: `FV2SequencerNetworkSyncIssue`
- Actions: `EV2SequencerNetworkSyncAction`
- Issues: `EV2SequencerNetworkSyncIssueType`

`BuildDefaultSequencerNetworkSyncSettings` uses a three-frame soft drift
threshold, a twelve-frame snap threshold, and a 250 ms client prediction cap.
`EvaluateSequencerNetworkSync` predicts the authority frame from server frame
plus capped latency whenever the authority is playing. Paused, scrubbing,
completed, and stopped states do not advance during prediction.

## Client Actions

Fresh or unloaded clients receive `StartSequence` and jump to the predicted
authority frame. Loaded clients inside the soft drift window keep
`MaintainPlayback`; moderate drift uses `BlendToFrame`; large drift uses
`SnapToFrame`. Paused authority state maps to `PauseSequence`, while stopped or
completed authority state maps to `StopSequence`.

The default fixture uses `NetSession.CouncilIntro`,
`Seq.DataModel.CouncilIntro`, revision `3`, server frame `60`, and predicts
frame `63` for a 50 ms client.

## Validation

The evaluator rejects missing session ids, missing sequence ids, missing client
ids, sequence mismatches, invalid revisions, invalid playback rates, negative
server/client time, negative latency, invalid settings, and stale authority
revisions. This keeps future replicated actors and RPCs from accepting a network
packet that would desynchronize playback.

## Verification

- `python3 V2/ue/Tools/check-v2-sequencer-networking.py`
- `V2.Cinematics.Sequencer.Networking`
- `python3 V2/ue/Tools/check-v2-cinematics-module.py`
- `python3 V2/ue/Tools/check-v2-ci-workflow.py`
