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
Clip
generatedversioned — video_variantsvideo_variants.manifestThe rendered video for a shot.
Counts
The check compares these. Change one upstream and this goes stale.
- Which motion prompt version it rendered
- Which still version it rendered (start-frame mode)
- Bound dialogue-audio identity (audioSourceKey: voice id + line + tone + TTS model)
- Which dialogue sections its audio was cut from (audioClipIds, against the clip ids the shot holds now)
- Every reference it was sent, as the sheet version or media URL that was current then (referenceKeys)
- The length it was rendered at, snapped onto the model grid on both sides
Does not count
Change these freely. Nothing goes stale.
- Video model (a different model is a different segment, not a stale one)
- Resolution (stamped on the version so a 4K re-roll stays legible, never compared)
- Rows from before the stamp existed: an absent field is unknown, never stale
Regenerate this and these go stale
- in the input hash — the selected clip URL
Goes stale when any of these change
- by selected version — the manifest records the prompt version
- by selected version — the sheets ride as video references in both modes; the manifest stamps the selected version id it was sent (referenceKeys)
- by selected version — only reference-only sends the location sheet to the video model; the manifest stamps the version it was sent
- in the input hash — the manifest length against the live duration, each snapped onto the model grid, so a pipeline re-snap no longer flags every clip (#767)
- in the input hash — line + tone fold into audioSourceKey on the manifest
- in the input hash — the voice id folds into audioSourceKey; the LLM never sees it
- by selected version — 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
- in the input hash — its media URL is stamped in referenceKeys, so a re-uploaded image, audio or video clip flags the render
- via Motion prompt
- via Motion prompt
- via Motion prompt
- via Motion prompt
- via Motion prompt
- via Motion prompt
- via Motion prompt — each mode uses a different prompt template
- via Character sheet — the talent sheet hash is folded into the character sheet hash
- via Character sheet
- via Location sheet
- via Shot dialogue section — a section is a time range of one recording; a re-record appends a recording and re-points only the shots it was made for
- via Talent sheet
- via Library location ref
Connected, but not tracked
- not tracked, by design — stamped on the version, never compared
- not tracked, by design — a different model is a different segment, never a stale one
- not tracked, by design — a render-time option, not stored
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.