# Sequencer Actor Bindings

This document records the `TODOS.phase-72.72.15.1.9` cinematic sequencer actor
binding contract. Actor bindings let tracks keep stable binding ids while a
sequence is reused against different scene entities, cameras, components, or
spawnables.

## Runtime Ownership

- Runtime module: `V2Cinematics`
- Override spec: `FV2SequencerBindingOverrideSpec`
- Resolved binding spec: `FV2SequencerResolvedBinding`
- Track evaluation: `FV2SequencerActorBindingEvaluation`
- Issue enum: `EV2SequencerActorBindingIssueType`
- Issue struct: `FV2SequencerActorBindingIssue`
- Automation: `V2.Cinematics.Sequencer.ActorBindings`
- CI checker: `V2/ue/Tools/check-v2-sequencer-actor-bindings.py`

## Binding Model

`FV2SequencerBindingSpec` remains the authoring-time binding table used by the
sequencer data model. `FV2SequencerBindingOverrideSpec` adds a reusable override
layer with an override id, source binding id, target binding kind, target entity
id, target component id, target spawnable class path, and optional target
binding path.

`EvaluateSequencerActorBindings` resolves the sequence binding table plus any
overrides into `FV2SequencerResolvedBinding` entries. The resolved rows preserve
stable binding ids such as `Binding.Actor.Cassia`, but can redirect the scene
target to `Entity.Fighter.PlayerTwo` or `Camera.Cinematic.ReplayHero` for a
reused sequence instance.

## Default Fixture

`BuildDefaultSequencerBindingOverrides` creates two default overrides for
`Seq.DataModel.CouncilIntro`:

- `Override.Binding.CassiaToPlayerTwo` redirects `Binding.Actor.Cassia` to
  `Entity.Fighter.PlayerTwo` at `World.Arena.FighterB`.
- `Override.Binding.HeroCameraToReplay` redirects `Binding.Camera.Hero` to
  `Camera.Cinematic.ReplayHero` at `World.Cameras.ReplayHero`.

The evaluation resolves three bindings, marks `Track.Cassia.Transform` and
`Track.HeroCamera.FOV` rebound, and leaves `Binding.Global.Cinematic`
unmodified.

## Validation

Actor binding evaluation reports blocking issues for missing override ids,
missing source bindings, duplicate override ids, invalid override targets,
non-rebindable source bindings, non-rebindable tracks, and tracks whose binding
id no longer resolves. Binding-level and track-level `bRebindable` flags are
checked independently so reusable sequences can lock specific scene targets or
tracks while keeping other bindings replaceable.

## Verification

Run:

```bash
python3 V2/ue/Tools/check-v2-sequencer-actor-bindings.py
```

Adjacent verification should include
`python3 V2/ue/Tools/check-v2-sequencer-camera-tracks.py`,
`python3 V2/ue/Tools/check-v2-sequencer-event-tracks.py`,
`python3 V2/ue/Tools/check-v2-sequencer-audio-tracks.py`,
`python3 V2/ue/Tools/check-v2-sequencer-animation-clip-tracks.py`,
`python3 V2/ue/Tools/check-v2-sequencer-property-tracks.py`,
`python3 V2/ue/Tools/check-v2-sequencer-keyframe-interpolation.py`,
`python3 V2/ue/Tools/check-v2-sequencer-timeline-playback.py`,
`python3 V2/ue/Tools/check-v2-sequencer-data-model.py`, and
`python3 V2/ue/Tools/check-v2-cinematics-module.py`.
