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
Location sheet
generatedversioned — location_sheet_variantslocation_sheet_variants.inputHash of the selected version, plus the bible version it readReference image for a location in this sequence. A run holds a claim: an edit to anything the sheet reads revokes it, so the run parks its result instead of landing it.
Counts
The check compares these. Change one upstream and this goes stale.
- Location bible (type, time of day, description, architectural style, key features, colour palette, lighting, ambiance)
- Library location reference hash, when linked
- Style config
- Image model it was rendered with
Does not count
Change these freely. Nothing goes stale.
- Name
- The linked library location's description and reference image, read live: they reach the sheet only through a regenerated library reference
Regenerate this and these go stale
- by selected version — the selected sheet version id
- by selected version — 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 — the selected clip URL
Goes stale when any of these change
- in the input hash — every bible field the sheet prompt reads
- in the input hash
- in the input hash
- via Library location ref
- via Library location ref
Connected, but not tracked
- not tracked, by design — checked against the model that rendered the selected version; only an uploaded sheet follows a switch
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.