# Sequencer Multi-User Editing

Task: `TODOS.phase-72.72.15.2.13`

Sequencer multi-user editing is a V2Editor TimelineVisualizer surface for
coordinating collaborative cinematic edits. It tracks editor presence, grants
exclusive per-track locks, merges remote sequence edits, and exposes blocking
track conflicts for review.

## Runtime API

- Panel spec: `FV2SequencerMultiUserPanelSpec`
- User presence: `FV2SequencerMultiUserPresence`
- Track lock: `FV2SequencerMultiUserTrackLock`
- Track merge row: `FV2SequencerMultiUserTrackMerge`
- Conflict row: `FV2SequencerMultiUserConflict`
- State: `FV2SequencerMultiUserState`
- Request/result: `FV2SequencerMultiUserRequest`, `FV2SequencerMultiUserResult`
- Enums: `EV2SequencerMultiUserActionType`, `EV2SequencerMultiUserMergeStatus`,
  `EV2SequencerMultiUserIssueType`

`ApplySequencerMultiUserEditingRequest` accepts base, local, and incoming
sequence snapshots plus the current collaboration state. Lock actions update
per-track ownership and mirror the lock into the merged sequence track. A
three-way merge actions compare track signatures across base, local, and
incoming snapshots: incoming-only edits apply, local-only edits are kept,
identical edits are accepted, and true local-versus-incoming edits become
blocking conflicts unless the request explicitly prefers incoming.

## Behavior

- The panel targets `TimelineVisualizer` and requires remote presence, per-track
  locks, merge support, conflict inspection, and revision checks.
- Track locks record owner user id, display name, revision, lease time,
  exclusivity, and dirty state.
- Lock acquisition rejects missing tracks and tracks already locked by another
  user.
- Lock release requires ownership unless force release is requested.
- Merge requests require matching base/local/incoming sequence ids and a base
  revision that matches the active collaboration state.
- Merge results include per-track status rows, merged sequence data, conflict
  rows, and validation issues.

## QA Inventory

- Panel: verify multi-user widget metadata, lock support, merge support, remote
  presence, conflict inspection, and revision enforcement.
- Presence: verify local and remote users are both represented in state.
- Locks: verify granting a local track lock, rejecting a remote lock on the same
  track, rejecting release by a non-owner, and releasing the owner lock.
- Merge: verify incoming-only changes apply and local-only changes remain.
- Conflicts: verify simultaneous local and incoming edits create blocking
  conflicts, and explicit incoming preference resolves that conflict.
- Off-path: reject stale revision merge requests and missing lock targets.

`js_repl` Playwright interaction was unavailable in this session and the
affected surface is Unreal editor data rather than browser-rendered UI, so
verification is through UE editor automation and contract gates.

## Verification

- `python3 V2/ue/Tools/check-v2-sequencer-multi-user-editing.py`
- `V2.Editor.Sequencer.MultiUserEditing`
- `python3 V2/ue/Tools/check-v2-editor-module.py`
- `python3 V2/ue/Tools/check-v2-ci-workflow.py`
