Developer Guide
Dependency graph
Interactive map of the generation graph: pick anything you can edit and see which prompts, sheets, stills and clips go stale.
Every generated artifact stores a hash of the inputs it was made from. Staleness is never a flag we set: on every read we recompute the hash from the current inputs and compare. A mismatch is stale. A row with no stored hash is untracked and never stale. Versioned things (green border) keep every generation as a row and a pointer picks one. Renders record which version of a prompt or sheet they used, so selecting a different version is what makes them stale, not editing the text.
- tracked
- not tracked — a gap
- not tracked, by design
- seeded once, then yours
- versioned
- optional
- goes stale
- makes it stale
Export
generatedsequence_exports.sourceShotsHashThe stitched MP4.
Counts
The check compares these. Change one upstream and this goes stale.
- Selected clip URL per shot, in order
- Music URL, if included
Does not count
Change these freely. Nothing goes stale.
Nothing.
Regenerate this and these go stale
Nothing downstream is tracked.
Goes stale when any of these change
- in the input hash — the selected clip URL
- in the input hash — the music URL
- in the input hash — the music URL joins the export hash only when music is on
- via Clip — the manifest records the prompt version; a token rename writes a new version, so it re-stales the clip
- via Clip — the sheets ride as video references in both modes, only for characters the motion prompt names (#2012); the manifest stamps the version sent
- via Clip — only reference-only sends the location sheet, and only the room the motion prompt names. The manifest stamps the version it was sent (#2012)
- via Clip — a start-frame render records its still and a reference-only one records none, so switching a shot either way flags its clip
- via Clip — the manifest length against the live duration, each snapped onto the model grid, so a pipeline re-snap no longer flags every clip (#767)
- via Clip — every line the prompt quoted folds into dialogueKey, and voiced lines into audioSourceKey, on the manifest
- via Clip — the voice id folds into audioSourceKey; the LLM never sees it
- via Clip — the manifest records the clip id (audioClipIds), which is the section's id, so picking another reading of the same lines re-stales only that shot's clip
- via Clip — its media URL is stamped in referenceKeys when the motion prompt names it. A re-upload then flags the render; a key for an element the prompt no longer names is not compared (#2012)
- via Music track — the selected prompt text and tags are in the track hash; Update all can regenerate the track on its own
- via Motion prompt
- via Motion prompt — only a character this prompt names. An unwritten prompt reads the scene continuity tags (#2012)
- via Motion prompt — only a location this prompt names, else the scene slugline. An unwritten prompt also reads the scene extract (#2012)
- via Motion prompt
- via Motion prompt
- via Character sheet — the talent sheet hash is folded into the character sheet hash
- via Character sheet — the talent's description and default sheet image and look, read by the sheet prompt
- via Location sheet
- via Shot dialogue section — a section is a time range of one speech; a regeneration appends a speech and re-points only the shots it was made for
- via Talent sheet
- via Library location ref
What "Update all" regenerates
The depth picker is cumulative. Each rung includes the ones above it, and no rung ever creates an artifact that does not exist yet.
- 1.Prompts only — Rewrites stale visual and motion prompts. Nothing renders.
- 2.Prompts + images — Also re-renders a still that is stale, or whose prompt was just rewritten. Never renders a first still.
- 3.Prompts, images + dialogue — Also re-records a dialogue reading whose voice or lines moved. Never a first recording. Video stays for the next tick so the new take can be reviewed.
- 4.Prompts, images, dialogue + videos — Also re-renders a clip whose prompt, still, or dialogue changed in this run, or whose manifest already diverged. Never renders a first clip.
- 5.Everything, incl. music — Also rewrites a stale music prompt, then the track if one exists. Never a first track.