Debug the prompt like you debug code.
A generation defect is not the AI being weird. It is a bug, it has a root cause, and re-rolling the prompt without finding it is just patching the symptom. Six real defects from our productions, traced to the source.
Symptom, root cause, fix, lesson
The amateur move when a generation comes back wrong is reflexive re-prompting: reword, re-roll, hope. It is the same as patching a line of code over and over without asking what is actually calling it.
We run every defect through the same frame a software team would. What is the symptom. What is the root cause. What is the fix. What rule stops it coming back. Here are six from real campaigns.
The defect that survived two prompt rewrites
On a food campaign, an eating shot kept showing the subject biting the inedible part of the dish, through two full rework rounds of increasingly careful prompt language. The prompt was never the problem. The start frame we fed the video model silently held the food in the wrong orientation, so every generation inherited the same physical setup.
One surgical edit to the start frame fixed it. The very next generation passed. Lesson: when the same defect survives two rewrites, stop rewriting. The bug is usually one layer upstream, in an asset you fed the model without checking it first.
The rule that was wrong
A product label kept getting rejected by the client. Root cause: our own constraints file held a rule that the label carries one language only, and that rule directly contradicted the client's own approved reference, which had carried two the whole time. The rule itself was the defect.
The fix was to re-derive it: label truth is the locked reference image, matched exactly, never a paraphrased rule. Lesson: a constraint in your prompt system is code too, and code can be wrong. Validate rules against ground truth, do not just trust what got written down early.
The road that would not match itself
The client's notes flagged the road at eight timecodes. The lane count, markings, and horizon changed from cut to cut because every shot had been allowed to invent the environment again.
The fix was state management, not prompting: build one canonical environment reference, strip it to exactly what the shots need, lock it, and bind every shot in the sequence to that single asset. Lesson: continuity errors across a sequence are a shared-state bug. Pin one source of truth.
Drift is invisible one step at a time. Compare to the original, not to the round before.
The face that drifted one edit at a time
A recurring cast member's likeness slowly changed across a run of shots, and nobody caught it in review because each generation looked fine next to the previous one. Later shots had been built from an already-drifted intermediate sheet, each edit compounding the last, like re-saving a JPEG.
The fix: rebuild bound directly to the original approved portrait, and treat everything generated off the drifted sheet as suspect. Lesson: when an identity is reused as an input, always audit against the original source, never the previous round.
The generation that died with no error
Sometimes the job just never comes back. No message, no diagnosis, credits gone. Moderation filters fail silently: naming a real brand trips a trademark filter even when the brand is the joke, and injury-adjacent language trips a safety filter even in comedy, down to a quoted movie line or a bruised-looking reference photo.
The debugging method is the one you use on a build with no stack trace: bisect. Strip suspected trigger categories one at a time and resubmit until it clears, then keep the running trigger checklist and pre-flight every prompt against it. A silent failure is still a bug.
The defensive code that caused the defect
Our early prompts stacked defenses: a cinematographer name, lens jargon, hex codes, and a long avoid-list against plastic skin and AI smoothing. That stack turned out to be a top cause of the exact AI look it was defending against. Twenty contradictory descriptors average into generic output, and a model reads avoid X literally, so naming the defect can summon it.
The fix: describe real light and real skin in plain sentences, one grounding reference, minimal literal negatives only for defects actually observed. Lesson: over-specification is a bug category of its own.
Bug 06, in one pair
The set sheet that kept reading as CGI
Regenerated: real light, real texture
What this looks like as a process
Every defect gets a written root cause before a fix is attempted. Internal QC rounds fail privately, so clients only ever see vetted takes. Durable fixes become standing rules in the project's bible so the same bug cannot resurface next shot. And anything that must stay consistent across a sequence, a product, an environment, a face, gets one locked canonical reference instead of a fresh imagining per shot.
Anyone can re-roll and hope. Finding the root cause and writing the fix down so it cannot come back is a process, and the process is what you are actually hiring.
Fighting a defect that keeps coming back?
If the same flaw survives every prompt rewrite, the bug is upstream. Fifteen minutes and we will help you trace it.
Book a 15 minute call