# Take review and retry economy

Review every returned take before retrying or using it as continuity canon.

## Inspection honesty

First determine whether the client exposes inspectable image/video/audio. A file name, URL, task status, or metadata is not visual/audio inspection. If media is unavailable, review only technical task evidence and ask the user for an observed description when creative judgment is required.

## Five verdicts

| Verdict | Use when | Action |
|---|---|---|
| Keep | Primary Shot job and endpoint are delivered; remaining flaws are non-fatal | Accept and continue. |
| Fix in post | Flaw is trim, color, mix, captions/text, or a few edge frames | Keep generation; defer to editing. |
| Edit one layer | Composition/timing are right and one editable layer is wrong | Preserve source and change only that layer when supported. |
| Re-roll | Prompt/contract are sound and failure appears stochastic | Same inputs, new attempt; do not rewrite simultaneously. |
| Rewrite/re-anchor | Same systematic failure repeats or continuity has drifted | Change one diagnosed variable, simplify, split, or open from canon. |

## One-variable rule

For each approved retry, change exactly one of:

- prompt clause;
- seed/attempt only;
- generation mode;
- one reference;
- one camera/action constraint;
- Shot decomposition.

Report the changed variable. If several variables must change, treat it as a new Shot design, not a controlled retry.

## Attempt budget

Agree on or propose a small attempt budget before repeated paid generation. Default to one initial take plus at most two pure re-rolls for one unchanged prompt. When the same flaw appears twice, diagnose and rewrite rather than buying another identical chance.

Never auto-submit a retry after `failed` or an imperfect `completed` task. Tool failure may be authentication, capability, input validation, Provider rejection, timeout, or local cancellation; inspect `get_generation_task` evidence first.

## Diagnostic map

| Symptom | Likely cause | First variable to change |
|---|---|---|
| Face/product drift | identity authority diluted or prose conflicts with reference | restore canonical reference role; remove duplicate appearance prose |
| Camera jumps | multiple incompatible moves or no endpoint | retain one move with a finish |
| Generic result | vague quality/style words | replace one with visible action/light/material/sound |
| Action ignored | no trigger, consequence, or end state | add one ordered action chain |
| Lip-sync weak | long dialogue, head/camera motion, wrong speaker/voice | shorten/lock/attribute; change one factor |
| Multi-character chaos | simultaneous large actions and ambiguous ownership | give one focus action; reduce others to micro-motion |
| VFX noise | no source/path/interaction/dissipation | add physical effect contract |
| Continuation restarts | planned state used instead of accepted end state | replace incoming state with actual state |
| Future event appears | reserved beat leaked | remove future event and stop earlier |
| Prop contradiction | owner/position/condition missing | add concrete prop handoff |
| Audio repeats | completed dialogue/audio phase not tracked | mark completion and continue phase |

## MCP handling

- Poll tasks to terminal state with `get_generation_tasks`.
- Use task `result`/`error` as technical evidence.
- Do not overwrite an old task; each submission remains a separate attempt.
- Use `sync_episode_to_canvas` with accepted shot blobs when the user wants them materialized.
- The MCP currently does not persist a structured verdict/evidence log. Return the review log in the response and persist only supported Shot changes via `update_shot`.

Use this compact review line:

`Shot/Task · verdict · observed or reported evidence · one changed variable · next action`
