# Continuity Desk > The model has no memory between shots. Every generation is independent, so an attribute stated > once and not repeated is RE-ROLLED in every later shot - which makes the prompt that reads best > the one that breaks. Five lanes over one cast-and-shots sheet, plus a free browser-side > restatement ledger. URL: https://continuity-desk.skillsafe.ai/ API: https://continuity-desk.skillsafe.ai/api.html Derived from samuraigpt/generative-media-skills (https://github.com/samuraigpt/generative-media-skills), MIT: its muapi-cinema-director skill, which translates creative intent into technical cinematographic directives for Veo 3, Kling and Luma. Not affiliated with or endorsed by samuraigpt. ## The one fact everything follows from Shot four does not know what shot one looked like. Describe the red waxed-cotton jacket in shot one, leave it out of shots two to six, and six different jackets come back. The document reads perfectly the whole time, because a human reader carries the jacket forward without noticing they are doing it. This inverts ordinary writing advice. Repetition is the mechanism, not a style flaw. The shot list that reads WORST - every line restating the wardrobe, the hair, the age, the palette and the lens in full - is the only one that generates as a single film. Restate in the same words, COPIED, not paraphrased. A generator matches words, not meaning: `a red waxed-cotton courier jacket` and `a red waxed jacket` build two different jackets. This is the most common way a drift enters a sheet somebody was being careful with - the second mention was typed from memory instead of pasted. ## The five classes - locked - belongs to an entity; identical everywhere AND restated in every shot the entity is in. wardrobe, hair, age, build, skin, eyes, prop - look - belongs to the sheet; holds across every shot and goes in every shot. palette, lens, ratio - shot - must be present in every shot, value free to change. location - free - supposed to change, need not appear at all. pose, expression, action, framing, camera - scaled - ordered; may advance or hold, may not go back. tod, light location is the one people get wrong in both directions. A film is supposed to move, so the value changing is not a fault; what it must not do is go unstated, because then the set is re-rolled too. And two spellings of one place are two places to a generator. ## Two-shots A shot naming two people and one jacket does not say whose jacket it is, and the generator usually dresses both of them in it. ```text s05 | @ava, @kit | wardrobe=red jacket <- whose? s05 | @ava, @kit | @ava.wardrobe=red jacket | @kit.wardrobe=grey hoodie ``` Once a shot names more than one entity, every locked attribute in it carries an entity prefix. Look and shot attributes stay unprefixed - they belong to the frame, not to anybody in it. ## Ordered scales tod: dawn < morning < midday < afternoon < golden < dusk < night light: dark < dim < low < soft < even < bright < harsh A sequence may hold an hour or skip forward; it may not go back. Each line is individually fine, so only writing the values out in shot order makes the reversal visible. Harsh daylight at night and darkness at midday are stated in the same shot, so the generator resolves the conflict itself and the result is neither. ## The sheet ```text CAST @ava | wardrobe=red waxed-cotton courier jacket, black jeans | hair=black bob | age=30 SHOTS s01 | @ava | wardrobe=red waxed-cotton courier jacket, black jeans | hair=black bob | age=30 | palette=teal and sodium-orange | lens=35mm | location=a wet loading bay | tod=golden | light=soft | framing=wide | action=she steps out ``` The CAST block is a document for people. ONLY WHAT IS ON THE SHOT LINE REACHES THE GENERATOR. An attribute that lives in the bible and never in a shot has never been sent, and that distinction is the whole check. ## The lanes - `direct` - turns a brief into a cast bible and a fully restated shot list - `check` - reads the ledger and repairs what will be re-rolled - `restate` - expands a half-done sheet so every shot carries its own state - `bible` - writes the canonical description of each entity, and decides what is locked - `translate` - writes the per-shot prompt string for Veo 3, Kling or Luma, compressing nothing ## What it does not do It does not call any generator and does not render video. It reads the sheet and works out which attributes each shot line actually sends, so it is only as good as that sheet. A misspelt attribute key is invisible to every check here, which is why it is reported rather than skipped.