# Sequence and continuity

Plan the full Episode, but generate and approve one Shot state at a time. Canon lives in MCP entities and task results.

## Classify the relationship

- `independent`: Shot opens from World references and its own planned state; safe for batch generation.
- `shared_anchor`: adjacent Shots receive the same explicit continuity media; still safe for batch generation.
- `sequential`: Shot depends on accepted predecessor output; submit individually after predecessor review.
- intentional next Shot: editorial cut with story continuity, not exact frame continuation; normally model as independent with canonical re-anchor.
- repair tail: repair/retry the predecessor before proceeding.
- re-anchor after drift: open a new Shot from canonical World references and an intentional edit.

Do not promise seamless continuation across a location/time/scene boundary. Use an editorial cut and canonical re-anchor.

## Scope firewall

For each Shot classify beats:

- completed: exclude; never replay;
- current: exactly what this Shot performs;
- reserved: exclude; do not leak into this Shot;
- omitted/replaced: no longer expected.

One generation should normally deliver one visible beat and a changed endpoint. Split multiple locations, several dialogue turns, complex contact, or several major actions into separate Shots.

## Planned state

Before generation, persist concrete `generationContract.continuity` states through Shot MCP tools. Track only production-relevant facts:

- character position, pose, gaze, wardrobe/injury, action phase;
- prop owner, position, support, orientation, condition;
- location/sub-area, time, weather, persistent set elements;
- framing, screen direction, camera movement phase, focus;
- light phase;
- completed/active dialogue, ambience, foley phase;
- open subject/camera/environment motion.

Never persist “inherit previous Shot” as a boundary state.

## Continuation gate

Before a sequential continuation, require:

1. canonical Project/Episode/current Shot ids;
2. accepted predecessor task/result;
3. actual observed or user-confirmed predecessor end state;
4. explicit continuity media imported/resolved to a blob hash or URL;
5. current Shot job and endpoint;
6. completed and reserved beat exclusions;
7. World identity references and current revisions;
8. `sequential` generation contract with non-empty incoming state.

If the agent cannot inspect the result, ask for the exact visible end state or an inspectable still/clip. Record the description as user-reported. Do not raise confidence or invent missing motion/audio state.

## Accepted state beats plan

When accepted footage differs from the plan:

1. record the deviation in the response;
2. decide accept, retry/repair, reject, or re-anchor;
3. if accepted, update the next Shot's incoming state with the real state;
4. remove unexpectedly completed beats from later prompts;
5. carry unfinished work to a suitable later Shot;
6. never use rejected footage as a continuity parent.

The current MCP has no dedicated take-review record. Persist only supported Shot fields with `update_shot`; report non-persisted review observations explicitly. Do not hide this limitation inside arbitrary JSON.
