Drift is cheaper to refuse than to detect. The continuity engine notices drift after a render; the identity guard runs before the model is called and asks a narrower question: are the references this job is about to send actually the character's canonical references for this scene?
It refuses when:
- a character on the shot has no compiled Identity Package for that scene;
- the job carries reference images that are not in the canon for that scene (a stale URL from an older version, or another character's);
- the prompt contradicts an invariant ("no scar" on a character whose scar is canon).
A refused render is marked failed with the reason in the run log, credits are refunded, and nothing is sent. It does not run a perceptual model on the images — that would double the cost of every render to catch the rare one; the post-render check does that job.