Files
papers/hanzo-longform-media.tex
zeekay 22ea995cab feat(longform): fold in measured hanzo-film orchestrator numbers
Assembly half now measured end-to-end (hanzo-film, engine cdca071b4,
evo 20-lane CPU): per-shot placeholder 0.206-0.256s (keyframe 9ms +
kenburns 123ms + tail 21ms + mix 15ms + mux 63ms), full 3hr placeholder
cut <30s/1 box, ~9s/3 nodes; e2e mini-film 16.02s h264+aac (ffprobe),
idempotent re-render = 0 shots. WAN-class generation stays projection
(90-120s/clip -> 3hr 54-72h/1 GPU vs 18-24h/3-node ring). Coherence
scorer: structural luma-cosine proxy shipped, CLIP-embedding variant
pending a served vision-embedding model. Surgical edit: projection para,
idempotency para, abstract, S4 metrics note, new bibitem{film}.
2026-07-10 02:07:34 -07:00

680 lines
57 KiB
TeX

\documentclass[11pt]{article}
\input{shared/kernel-preamble.tex}
% Local notation for the film-assembly argument.
\newcommand{\Nshots}{\ensuremath{N_{\mathrm{shots}}}}
\newcommand{\Tshot}{\ensuremath{\bar{T}_{\mathrm{shot}}}}
\newcommand{\Tfilm}{\ensuremath{T_{\mathrm{film}}}}
\newcommand{\Tasm}{\ensuremath{T_{\mathrm{asm}}}}
\newcommand{\asl}{\textsc{asl}}
\title{\textbf{The Film Is Not a Context Window:\\ Feature-Length Generation as Hierarchical Assembly\\ on a Native Inference Stack}}
\author{Hanzo AI --- ML Systems}
\date{Long-form-media crossover in the native-inference series --- an inference-systems reading of feature-length generation}
\begin{document}
\maketitle
\begin{abstract}
A three-hour film is routinely mis-stated as a context-length problem --- as though generating it required a
model that holds ten thousand seconds of pixels in one attention window. No model does, and our thesis is that
none needs to. A feature is not a monolith; it is an \emph{assembly} of roughly two thousand shots of three to
eight seconds each~\cite{cutting}, and coherence across it decomposes \emph{hierarchically}: the state that must
persist across the whole runtime is small and structured --- a screenplay and a \emph{film bible} (who the
characters are, what the world looks like, what the style is) of tens of thousands of tokens --- while the state
that is expensive to compute (pixels, waveforms) never needs to persist beyond a single shot, because at every
cut the image resets and only the semantics carry over. Long-form generation is therefore not a long-context
problem but an \emph{orchestration-and-conditioning} problem layered over \emph{short-horizon} generators, and
the long-horizon reasoning that keeps three hours coherent is done in the one place it is cheap: an LLM holding
the whole screenplay in a single ordinary context. We develop this in four moves. First, the \textbf{coherence
stack}: five layers --- story, entity, shot, global-style, and audio --- each with a persistent object, a
conditioning mechanism, a coherence horizon, and a characteristic failure mode, formalized so that each
failure has a named cure at its own layer. The load-bearing observation is that \emph{film grammar makes the
cut a free reset}: the hard chunk-autoregressive drift problem that the recent forcing
literature~\cite{diffusionforcing,selfforcing,causalforcing,oneforcing,tethercache,framepack} fights over
minute-long clips is, in assembled film, bounded to the length of a single shot --- seconds, not hours --- and
the games companion's persistence-beyond-the-horizon problem~\cite{games} is dissolved here rather than solved.
Second, \textbf{error accumulation}: we separate intra-shot drift (real, bounded by shot length, measured by the
cited video work) from cross-shot identity and style drift (the film-level risk), and propose --- marking each
proposed unless measured --- cross-shot identity similarity and style-consistency metrics, anchored to the one
identity axis the series has already measured, the localization dub's speaker-identity cosine $1.0$~\cite{games}.
Third, the \textbf{systems} reading: a feature render is an \emph{embarrassingly parallel throughput job} ---
$\sim$2000 independent shot-jobs over the series' measured heterogeneous ring~\cite{het} --- with the bible as a
shared conditioning \emph{prefix} that prefix-caches across every shot, and each shot an \emph{idempotent},
content-hashed unit that makes a three-hour render a resumable build DAG. The \emph{assembly} half of this is
now measured end to end in the native orchestrator --- a full three-hour placeholder cut assembles in under
$30$\,s on one box ($\approx\!9$\,s across three nodes; per-shot $\approx\!0.21$--$0.26$\,s), and re-rendering
recomputes \emph{zero} shots --- while the \emph{generative} per-shot time stays labelled a projection until the
Wan-class video port lands, at which point the same wall-clock template resolves. Fourth, \textbf{open problems} specific to film that neither companion owns: perceptual
metrics for narrative coherence, the shot-length-versus-drift trade, motif persistence across musical cues,
lip-sync integration for dialogue shots, and the rights and provenance of persistent generated identities. The
substrate numbers we lean on are measured and cited to the hardware that produced them; every number about a
feature-length artifact on our stack is labelled projection.
\end{abstract}
\section{Thesis: no model holds three hours, and none needs to}
\label{sec:thesis}
The reflexive framing of feature-length generation is a scaling framing: today's open video models generate
clips of a few seconds~\cite{selfforcing,skyreels2}, a film is ten thousand seconds, so --- the framing goes ---
the task is to grow the context, the memory, and the coherence horizon of a single generator by three or four
orders of magnitude until it can hold an entire film at once. That framing is wrong, and its wrongness is the
starting point of this paper. It mistakes the artifact for the computation. A film is not a single ten-thousand-
second signal that a viewer experiences as one continuous shot; it is a \emph{cut} sequence of short shots, and
the cutting is not incidental --- it is the medium's fundamental grammar.
\paragraph{What a feature actually is, quantitatively.} Empirical cinemetrics settles the structure. Across
seventy years of Hollywood film, the average shot length (\asl) fell from roughly twelve seconds in the 1930s to
about four in recent decades, and the sequence of shot lengths has a nested waxing-and-waning structure at
scales from seconds to tens of minutes~\cite{cutting}. Take a three-hour feature: $180$ minutes is $10{,}800$
seconds, and at a contemporary \asl\ of five to six seconds that is on the order of $\Nshots\approx 2000$ shots;
an action film at an \asl\ of two to three seconds has more. The unit of the medium is the \emph{shot}: three to
eight seconds of continuous imagery, terminated by a cut. Nothing in a film is longer than a shot except by the
viewer's assembly of shots into scenes and scenes into a story --- and that assembly is \emph{semantic}, carried
by continuity of character, place, and narrative, not by continuity of pixels.
\paragraph{The state that must persist is small and structured.} Ask what actually has to stay consistent across
three hours. Not the pixels: shot $1873$ shares no pixel with shot $12$, and demanding it should would be a
category error about how film works. What must stay consistent is a \emph{bounded, symbolic} object --- the
protagonist's face and wardrobe, the look of a location, the visual style, the through-line of the plot, a
character's voice. A working screenwriter encodes essentially all of it in a screenplay of roughly one page per
minute of screen time: a three-hour film is a $\sim$180-page screenplay, on the order of $40{,}000$ tokens,
plus a \emph{film bible} of character and location descriptions and reference images. That is the entire
long-horizon state, and it is \emph{tiny}: $40{,}000$ tokens fits, with enormous margin, inside a single
present-day LLM context of hundreds of thousands to millions of tokens. The long-horizon problem, stated
correctly, is already solved --- not by a bigger video model, but by moving the long-horizon reasoning into the
\emph{text} domain, where three hours of narrative is a short document.
\paragraph{The thesis.} Long-form generative media is an \emph{orchestration and conditioning} problem over
\emph{short-horizon} generators, not a long-context generation problem. A single LLM holds the whole film's
structured plan in one context and is the long-horizon engine; a fleet of short-horizon generators (a few-second
video model, a per-line speech model, a per-cue music model, an image model) renders the leaves; and coherence is
manufactured \emph{hierarchically}, by conditioning every leaf on the small persistent state the plan defines and
re-injecting it shot by shot. This inverts the scaling framing: the hard part is not holding three hours in a
network, it is the \emph{decomposition} --- authoring the hierarchy, propagating identity and style down it, and
\emph{assembling} the leaves back into a timeline --- and the decomposition is an inference-systems problem our
native stack is well shaped to serve, because every leaf is a model inference and the orchestration is a
throughput schedule over them.
\paragraph{Relation to the companions, stated up front.} This paper sits deliberately between two others and
duplicates neither. The games companion~\cite{games} owns the \emph{within-shot} computation: a shot is a short
video clip, generated by exactly the fixed-shape frame loop --- ``the frame is the token'' --- whose latency
budget, two-regime partition (launch-bound denoise loop versus compute-bound VAE), and cures that paper
establishes; we take that analysis as given and never re-derive it, and we cross-reference it wherever a shot's
internal cost is at issue. The distributed companions own the \emph{substrate}: the measured cross-vendor
ring~\cite{het}, the latency physics of decode~\cite{latency}, and the eight open problems of heterogeneous
distributed inference~\cite{openproblems}. What is \emph{new here} is the layer \emph{above} the shot and
\emph{above} the ring: the hierarchical-assembly structure of a feature, its coherence stack, its error budget,
and the throughput schedule that renders it. One sharp difference from the games companion orients everything
below. There, the artifact is real-time and interactive, a single continuous frame loop under a $33$--$66$\,ms
deadline, and \emph{persistence beyond the KV horizon is the central open problem} --- a room you looked away
from must still be there when you look back. Here, the artifact is offline and \emph{pre-planned}: there is no
per-frame deadline (a render is a batch job), the whole film exists as a plan before a single pixel is drawn,
and the cut means we \emph{never} need continuity longer than one shot. The games companion's persistence
problem is not solved in this paper; it is \emph{dissolved} by film grammar, and saying exactly how is the
content of \S\ref{sec:stack}.
\section{The coherence stack}
\label{sec:stack}
Coherence in a feature is not one property; it is five, at five scales, each maintained by a different mechanism
and each failing in a different way. The engineering discipline of long-form generation is to name the layers,
give each its own persistent object and conditioning mechanism, and fix each layer's failure at that layer rather
than reaching for a single monolithic model to hold all five at once. Table~\ref{tab:stack} is the whole section
in one view; the subsections develop each row. Throughout, the persistent objects are \emph{data} --- JSON plans,
embeddings, reference images, LoRA adapters, voice ids --- not model weights, and every conditioning mechanism is
an \emph{input} to a short-horizon generator, which is why the stack composes on inference infrastructure the
series already has.
\begin{table}[t]
\centering
\small
\setlength{\tabcolsep}{4.5pt}
\begin{tabular}{@{}p{1.9cm}p{2.7cm}p{3.0cm}p{1.7cm}p{3.2cm}@{}}
\toprule
\textbf{Layer} & \textbf{Persistent object} & \textbf{Conditioning mechanism} & \textbf{Coherence horizon} & \textbf{Failure mode $\rightarrow$ cure} \\
\midrule
Story & screenplay / scene / shot tree ($\sim$40k tok) & LLM context (whole plan in one window) & whole film & plan drift $\rightarrow$ structured-output schema $+$ validation \\
Entity & film bible: id embeddings, LoRA, voice ids & re-inject reference into every shot's conditioning & whole film & identity drift $\rightarrow$ embedding-anchored re-injection \\
Shot & tail frames / KV of the current clip & chunk-autoregressive tail-frame conditioning & one shot (s) & intra-shot drift $\rightarrow$ short horizon; forcing/anti-drift \\
Global style & style prompt fragment $+$ grade LUT & shared style token $+$ assembly-time color grade & whole film & style flicker $\rightarrow$ shared conditioning $+$ one grade pass \\
Audio & voice ids, motifs, stems & per-line TTS, per-cue score, per-shot foley; mix & whole film & audio discontinuity $\rightarrow$ timeline assembly, not generation \\
\bottomrule
\end{tabular}
\caption{The coherence stack. Each layer maintains one scale of consistency with its own persistent object
(all \emph{data}, not weights) and its own conditioning mechanism, and fails in its own way with a cure local to
the layer. The horizons are the key: only the \emph{shot} layer has a short (seconds) horizon, and it is the only
layer where the hard chunk-autoregressive drift problem lives; every other layer's persistence is carried by a
small structured object re-injected as conditioning, not by a long generative context. This is the whole
argument of \S\ref{sec:thesis} made operational.}
\label{tab:stack}
\end{table}
\subsection{Story layer: the LLM is the long-horizon engine}
\label{sec:story}
\paragraph{Object and mechanism.} The top of the stack is a \emph{hierarchical plan}: logline $\rightarrow$ acts
$\rightarrow$ scenes $\rightarrow$ shots, authored by an LLM and materialized as a tree of structured records. A
shot record names its location, the characters present, the camera and action, the dialogue lines, the intended
duration, and references (by id) into the entity and style layers below. Because the whole plan is $\sim$40k
tokens (\S\ref{sec:thesis}), a single LLM holds it in one context and authors it \emph{globally}: the model that
writes shot $1873$ has shot $12$ in view, so setups pay off, arcs close, and the plot is consistent by
construction --- the LLM \emph{is} the long-horizon engine, and its context window, not any video model's, is
where three hours of narrative coherence actually lives. This is the technical core of the thesis: the coherence
that the scaling framing wanted to buy with a giant video context is bought instead with an ordinary text
context, because narrative is symbolic and compresses to tens of thousands of tokens.
\paragraph{Failure mode: plan drift.} The characteristic failure is \emph{plan drift} --- an LLM emitting a plan
that is locally plausible but globally inconsistent (a character who dies in scene 40 speaks in scene 47; a shot
that references a location id never defined; a scene whose shot durations do not sum to its intended length).
Free-form generation makes this failure invisible until render time.
\paragraph{Cure: structured-output schemas and validation.} The cure is to make the plan a \emph{typed} object
and check it before rendering. Each layer of the tree has a schema (a scene has a location-id that must resolve
in the bible; a shot's character-ids must be a subset of its scene's; durations must sum; every referenced style
and voice id must exist), and the LLM emits against the schema under constrained decoding, with a validation pass
that rejects or repairs a plan that violates a cross-reference. This is the film analog of the series' broader
discipline of validating at boundaries: the plan is the boundary between the long-horizon text engine and the
short-horizon renderers, and a malformed plan is a bug caught cheaply in the text domain rather than expensively
after two thousand shots have rendered. The plan is also what makes the render a \emph{DAG} (\S\ref{sec:systems}):
a validated, content-addressable description of every leaf and its inputs.
\subsection{Entity layer: the film bible is memory-as-retrieval}
\label{sec:entity}
\paragraph{Object and mechanism.} The entity layer is the \emph{film bible}: for each recurring character, a
stable identity representation --- one or more reference images, an identity embedding, and, where fidelity
demands it, a per-character low-rank adapter (LoRA)~\cite{lora,dreambooth} --- and a voice id; for each location,
a reference and description; for props and creatures likewise. The mechanism is \emph{re-injection}: every shot
that features a character conditions its generator on that character's identity representation, via image-prompt
adaptation~\cite{ipadapter}, a loaded LoRA, or reference-image conditioning, so the character is rendered from
the \emph{same} anchor in shot $12$ and shot $1873$. Identity is thus maintained not by the generator
\emph{remembering} the character across two thousand shots --- it remembers nothing between independent shot-jobs
--- but by the orchestrator \emph{retrieving} the identity from the bible and re-supplying it each time.
\paragraph{This is the film analog of position-keyed world memory.} The games companion identifies, as an open
problem for interactive world models, an external addressable \emph{world-state memory} that re-conditions the
frame loop when a region re-enters view, so consistency is bounded by the store's fidelity rather than by the KV
window~\cite{games}. The film bible is the same idea in a setting where it is not open but \emph{routine}: an
external, addressable store of ``what everything is,'' read on every shot and written once at authoring time,
whose retrieval key is the character/location id rather than a spatial position. The reason it is routine here
and open there is exactly the pre-planning difference of \S\ref{sec:thesis}: an interactive world model does not
know in advance which region will re-enter the window and must discover and store it online, whereas a film's plan
names every entity in every shot \emph{before} rendering, so retrieval is a static lookup, not an online memory
system. Memory-as-retrieval is the cure; the plan is what makes the retrieval trivial.
\paragraph{Failure mode and cure.} The failure is \emph{identity drift}: the same character rendered subtly
(or grossly) differently across shots --- face, age, wardrobe, or, for a voice, timbre. The cure is
embedding-anchored re-injection with enough conditioning strength that the identity is pinned, and, where a bare
reference embedding is too weak (fine facial identity, an unusual creature), a per-character LoRA that has
memorized the identity into weights that are loaded for that character's shots. The measurement axis is
cross-shot identity similarity (\S\ref{sec:error}); on the \emph{audio} side this axis is already measured for
our stack, at speaker-identity cosine $1.0$ for the native localization dub~\cite{games}, which is the existence
proof that re-injected identity conditioning can hold a character constant across independently generated
segments. The visual analog is proposed, not yet measured.
\subsection{Shot layer: where the only hard drift problem lives --- and how film grammar bounds it}
\label{sec:shot}
\paragraph{Object and mechanism.} A shot is a three-to-eight-second clip, generated by the frame-loop machinery
the games companion analyzes~\cite{games}; within a shot, temporal continuity (a hand stays a hand, motion is
smooth) is maintained by \emph{chunk-autoregressive} conditioning: the model generates a chunk of frames, then
conditions the next chunk on the tail frames (and the KV) of the last, extending the clip while carrying visual
state forward. This is the mechanism the recent literature has converged on for extending short generators ---
diffusion forcing and its descendants condition each frame or chunk on previously generated
context~\cite{diffusionforcing,selfforcing}, and the distillation and caching variants make it real-time and
stable~\cite{causalforcing,oneforcing,tethercache}. The shot layer is the \emph{only} layer whose persistent
object is a generative context (tail frames, KV) rather than a small symbolic anchor, and therefore the only
layer where chunk-autoregressive drift --- the accumulation of error as each chunk conditions on the last --- is a
first-order concern.
\paragraph{The key observation: the cut is a free reset.} Here is where film grammar pays off as a systems
property. The chunk-autoregressive literature fights drift over \emph{minute-scale} clips: TetherCache exists to
stabilize ``long-form'' autoregressive video against ``accumulated distribution drift''~\cite{tethercache},
FramePack packs frame context and prevents drift to reach ``thousands of frames''~\cite{framepack}, RAD adds a
global memory to combat forgetting over long video~\cite{rad}, and WorldPlay engineers long-term geometric
consistency for extended interactive sequences~\cite{worldplay}. All of that difficulty is the difficulty of
holding one continuous shot coherent for a long time. \emph{In assembled film, we do not need a long continuous
shot.} At every cut the image resets completely --- the next shot shares no pixel with the previous one, only
semantics (the same character, now from a different angle; the same location, later) --- and the semantics are
carried by the entity and style layers as re-injected conditioning, not by tail-frame continuity. So the
chunk-autoregressive drift problem is bounded to the length of a single shot: seconds, not minutes, and certainly
not hours. Feature-length coherence does \emph{not} require solving long-horizon video generation; it requires
generating a three-to-eight-second clip well and cutting. The forcing literature we cite is exactly the right
tool at exactly the right scale --- a shot --- and the assembly structure means we never pay for its hardest
regime.
\paragraph{Failure mode and cure.} The failure is intra-shot drift, and its cure is threefold and all at the
shot layer: keep the horizon short (a shot is short by grammar, so the accumulation has little time to compound);
use the anti-drift conditioning the cited work provides~\cite{tethercache,framepack} within the shot; and, when a
shot must be long, prefer a cut --- the director's instrument is also the engineer's. This is the one place the
games companion's within-shot analysis and this paper's cross-shot analysis meet: a shot's \emph{internal} budget
and drift are the games companion's subject, and the \emph{number} of shots and their \emph{assembly} are this
paper's.
\subsection{Global-style layer: shared conditioning and a single grade}
\label{sec:style}
\paragraph{Object and mechanism.} A film has a look --- palette, contrast, grain, lens character, an overall
visual grammar --- that must be constant across all two thousand shots even though they are rendered
independently, possibly on different nodes at different times. The persistent object is a style specification: a
style prompt fragment and, optionally, a style LoRA and a reference frame, plus a color-grade transform (a LUT).
The mechanism is two-part: \emph{shared style conditioning} injected into every shot's generation so the shots
are drawn in the same style to begin with, and an \emph{assembly-time grade} --- a single deterministic color
transform applied to every rendered shot in the final timeline --- that removes residual shot-to-shot variation
the way a colorist unifies footage from different cameras. Style is thus enforced twice: softly at generation and
exactly at assembly.
\paragraph{Failure mode and cure.} The failure is \emph{style flicker}: perceptible jumps in look across cuts,
the tell of independently generated shots. The cure is that the grade is a \emph{pure function} applied
uniformly, so it cannot itself introduce variation, and the shared conditioning narrows the gap the grade must
close. Style consistency is the second proposed measurement axis of \S\ref{sec:error}. This layer is also the
clearest small illustration of the paper's method: a whole-film property (constant look) maintained not by a
model that holds the whole film, but by a small shared object (a style spec, a LUT) re-applied to every
independently generated leaf.
\subsection{Audio: long-form audio is assembly, not generation}
\label{sec:audio}
\paragraph{The audio stack mirrors the visual one, and is if anything cleaner.} A feature's soundtrack is three
superimposed layers, each generated at its natural short unit and \emph{assembled} on a timeline, so that ``three
hours of audio'' is, like three hours of video, never generated as one signal.
\begin{itemize}[leftmargin=1.4em,itemsep=2pt]
\item \textbf{Dialogue is per-line TTS.} Each spoken line is a short generation, conditioned on the speaking
character's voice id from the bible (\S\ref{sec:entity}); speech is natively unbounded because a film has no
single utterance longer than a sentence or two, and voice identity is held across the film by the same
re-injection as visual identity --- the axis measured at cosine $1.0$~\cite{games}. Dialogue audio is a per-line
job, placed at the line's timecode.
\item \textbf{Score is per-cue, with shared motif conditioning.} A film score is not one long piece but a set of
\emph{cues}, each a few tens of seconds under a scene, and this is how human composers work: a small set of
\emph{motifs} (a character's theme, the main title) recur, re-orchestrated per cue. Generative music at cue
scale~\cite{acestep} conditioned on a shared motif is the mechanism; per-scene cues placed on the timeline are
the assembly. Motif \emph{persistence} across cues --- generating recognizably the same theme in different cues
--- is genuinely open and we name it so (\S\ref{sec:open}).
\item \textbf{Foley and ambience are per-shot.} Diegetic sound (footsteps, doors, room tone) is short and local
to a shot or scene, generated or retrieved per shot and placed.
\end{itemize}
\paragraph{The mechanism is a mixdown, and the failure is a mix failure.} The three layers plus any effects are
combined by \emph{timeline mixing} --- the deterministic sum of stems at their timecodes with levels and
crossfades --- exactly as a dub is mixed. Long-form audio coherence is therefore an \emph{assembly} property, not
a generation property: nothing generates three hours of audio; the orchestrator generates thousands of short
audio units and mixes them at their times. The failure mode is discontinuity at a boundary (a hard cut in room
tone, a level jump between cues), and the cure is the assembly craft that solves it in real post-production ---
crossfades, consistent ambience beds, level automation --- applied deterministically at mix time, not a smarter
generator. This is the audio statement of the whole paper: at every layer, ``long'' is achieved by assembling
``short,'' and the intelligence is in the plan and the conditioning, not in a generator that holds the length.
\section{Error accumulation: intra-shot drift versus cross-shot drift}
\label{sec:error}
The scaling framing's strongest instinct is that error \emph{accumulates}: chain enough conditioned generations
and quality decays, identity wanders, style flickers. The instinct is correct about one kind of chaining and
wrong about another, and separating the two is the error budget of long-form assembly.
\paragraph{Intra-shot accumulation is real, and bounded by the shot.} Within a shot, chunk-autoregressive
generation genuinely accumulates error: each chunk conditions on the last, so quantization, sampling, and
modelling error compound frame over frame, which is precisely the drift the forcing and anti-drift literature
measures and fights~\cite{selfforcing,tethercache,framepack,rad}. We do not re-measure it; we cite it, and we
observe that assembly \emph{caps its horizon}. Drift that grows with clip length is fought, in continuous-video
systems, by ever-cleverer memory and caching to push the tolerable length out to minutes; in assembled film it is
capped at the shot length by grammar (\S\ref{sec:shot}), so the operating point sits in the easy regime of the
same curves. The cross-shot boundary is not a site of accumulation at all: because the image resets at the cut,
intra-shot error does \emph{not} propagate across it --- shot $k{+}1$ does not inherit shot $k$'s accumulated
pixel error, only the bible's (constant) conditioning. The cut is an error \emph{firewall} as well as a free
reset.
\paragraph{Cross-shot accumulation is a different quantity: identity and style variance, not decay.} What
\emph{can} drift across a film is not pixel quality but the \emph{identity} and \emph{style} anchors: a character
rendered from the bible in two thousand independent shots may vary shot to shot, and while this is not the
compounding decay of a chain (each shot is anchored to the \emph{same} bible reference, not to its predecessor,
so there is no feedback), it is a \emph{variance} around the anchor that a viewer reads as inconsistency. The
right model of cross-shot error is thus statistical dispersion around a fixed reference, not a random walk that
wanders further with every step --- a crucial distinction, because dispersion is bounded by conditioning strength
and does not grow with $\Nshots$, whereas a random walk would. Embedding-anchored re-injection (\S\ref{sec:entity})
is what makes it dispersion rather than a walk: every shot pulls back to the same anchor.
\paragraph{Proposed metrics (proposed, not measured).} To make the cross-shot budget measurable we propose two
metrics, and mark both proposed because we have not run them on a feature-length render:
\begin{itemize}[leftmargin=1.4em,itemsep=2pt]
\item \textbf{Cross-shot identity similarity.} For each recurring character $c$, embed the character's appearance
in every shot $s$ that features it with a fixed identity encoder $\phi$ (a face-recognition embedding for
humans), and report both the mean similarity to the bible reference,
$\frac{1}{|S_c|}\sum_{s\in S_c}\cos\!\big(\phi(s),\phi(\text{ref}_c)\big)$, and the dispersion of
$\{\phi(s)\}_{s\in S_c}$. High mean and low dispersion is a held identity; the audio instance of exactly this
metric is measured at cosine $1.0$ for voice~\cite{games}, which both validates the metric's form and sets the
target the visual axis aims at.
\item \textbf{Style consistency.} Embed each rendered shot in a style space (a CLIP-image or dedicated style
embedding) and report the across-shot variance, before and after the assembly grade (\S\ref{sec:style}); the
grade should reduce it, and the residual is the style-flicker risk.
\end{itemize}
Both are \emph{cheap post-hoc measurements over the rendered shots}, not new training objectives, which fits the
assembly architecture: the orchestrator already has every shot as a discrete artifact, so scoring the film's
consistency is a pass over the shot set. A first, \emph{structural} version of this scoring --- a shot-to-shot
luma-cosine proxy --- is shipped and measured in the orchestrator~\cite{film}; the embedding-based variants (the
identity encoder $\phi$ above, a CLIP-image style embedding) are wired but await a served vision-embedding model,
so those remain proposed. Narrative coherence --- whether the assembled film makes \emph{sense},
not merely whether its characters look constant --- is not captured by either metric and is the first open problem
(\S\ref{sec:open}).
\section{Systems: a feature render is an embarrassingly parallel throughput job}
\label{sec:systems}
The assembly thesis has a direct systems consequence: once the plan is authored, the shots are \emph{independent}.
Shot $k$'s generation depends on the bible and the shot record, not on shot $k{-}1$'s pixels (that is the cut,
\S\ref{sec:shot}), so the two thousand shot-jobs of a feature have \emph{no data dependence among them} and can
be rendered in any order, on any number of nodes, concurrently. A feature render is therefore an
\emph{embarrassingly parallel throughput job}, and it maps onto the series' measured heterogeneous substrate
cleanly --- but by a different decomposition than the games companion's.
\paragraph{Data-parallel over shots, not batched over viewers.} The games companion places interactive play in
the throughput regime when there are many \emph{viewers} of one world, batching their rollouts~\cite{games}. A
feature render is throughput-bound for a different reason: one artifact, many independent \emph{shots}. The
natural parallelism is \emph{data-parallel over shots} --- each node pulls the next unrendered shot-job, renders
it whole, writes the result, and pulls another --- a work-queue over a pool of heterogeneous nodes, each running
the full short-horizon generator stack locally. Pipeline- and tensor-parallel splitting of a \emph{single} large
generator across nodes (the mechanism the distributed companions analyze for a model too big for one
node~\cite{het,latency}) is the \emph{inner} option, used only when one shot's model does not fit on one node;
the \emph{outer}, dominant parallelism of a film render is shots across nodes, which needs no model splitting at
all and so pays none of the sharding or ring-latency costs. The measured substrate we inherit is the
cross-vendor fleet itself --- an AMD gfx1151 node and an NVIDIA GB10 node decoding coherently over commodity
$2.5$\,GbE at $50.4$\,tok/s with a canonical-\code{f32} wire~\cite{het} --- and for a shot-parallel job the wire
carries only job descriptions and finished shots, not per-token activations, so the ring's synchronization tax
does not fall on the film's critical path.
\paragraph{The bible is a shared prefix; the render is prefix-cache reuse at job scale.} Every shot conditions on
the same bible fragments --- the style spec, and, for a given character, that character's identity conditioning ---
so across the shot-set there is a large \emph{shared conditioning prefix} and a small per-shot \emph{suffix} (this
shot's action, camera, dialogue). This is prefix caching~\cite{latency}, read at the scale of a render job rather
than an interactive session: a node that has rendered one shot of a character holds that character's conditioning
prefix warm and reuses it for the next shot of the same character, recomputing only the divergent suffix. The
scheduling consequence is a locality objective --- routing a character's (or a location's, or a style's) shots
preferentially to the node that already holds that prefix warm turns a cache into a placement heuristic --- and it
is the batch-throughput dual of the games companion's interactive edit-loop prefix reuse~\cite{games}: same
mechanism, different regime (a job over a fixed shot-set, not a live edit stream).
\paragraph{Idempotent, content-hashed shots make the render a resumable build DAG.} Each shot is a
\emph{pure function} of its inputs: (bible entities it references, shot record, model id, seed)
$\mapsto$ shot content. Hash those inputs to a \emph{shot key}; the render is then a build system over
$\Nshots$ targets. Three properties follow, and they are the reason the orchestration state is plain files, not a
database. \emph{Resumability}: a render interrupted after $1200$ of $2000$ shots resumes by re-checking keys and
skipping the $1200$ whose content already exists --- a three-hour render is not an all-or-nothing job. \emph{Incremental re-render}: an edit to the plan (rewrite one scene, recast one character) changes the keys of only
the affected shots, so only those re-render, exactly as a build system rebuilds only what a source change
invalidates --- the film analog of the games companion's incremental authoring. \emph{Determinism and provenance}:
a shot is reproducible from its key (seed included), so the same key yields the same shot across nodes and across
time, which both makes the render cacheable and gives every shot a recorded lineage (which model, which weights,
which prompt) --- the provenance the open problem of \S\ref{sec:open} builds on. Idempotency is what upgrades
``run two thousand jobs'' into ``evaluate a build DAG,'' with all the resumability and caching that implies. The
orchestrator confirms this on real hardware: re-running an already-rendered film recomputes \emph{zero} shots,
every content key resolving to an existing artifact~\cite{film}.
\paragraph{Projection: wall-clock on one versus $M$ nodes.} Because the shots are independent, the wall-clock
model is elementary. Let $\Nshots$ be the shot count, $\Tshot$ the mean per-shot render time, and $\Tasm$ the
assembly time (timeline mix and grade). On one node, serial:
\begin{equation}
\Tfilm^{(1)} \;=\; \Nshots\cdot\Tshot \;+\; \Tasm .
\label{eq:serial}
\end{equation}
On $M$ homogeneous nodes rendering shots data-parallel from a shared queue:
\begin{equation}
\Tfilm^{(M)} \;\approx\; \Big\lceil \tfrac{\Nshots}{M} \Big\rceil\cdot\Tshot \;+\; \Tasm ,
\qquad
\text{speedup } S(M)=\frac{\Tfilm^{(1)}}{\Tfilm^{(M)}} \;\xrightarrow[\Tasm\ll \Nshots\Tshot]{}\; \min(M,\Nshots),
\label{eq:parallel}
\end{equation}
i.e.\ \emph{near-linear} speedup up to $M=\Nshots$ nodes, capped only by the serial assembly tail $\Tasm$
(Amdahl), which for a film is small: the mix and grade are a single pass over already-rendered material, cheap
next to $\Nshots\cdot\Tshot$ of generation. On a \emph{heterogeneous} fleet, replace the even split by the
work-queue's natural load-balancing --- fast nodes pull more shots --- so the makespan is
$\approx \Nshots\Tshot / \sum_j \rho_j$ for node throughputs $\rho_j$ (in shots/s), the shot-parallel analog of
the layer-assignment balance the distributed companion optimizes for a split model~\cite{openproblems}, but
without the contiguity constraint because shots are interchangeable. \emph{The assembly half is now measured end to end; only the generative $\Tshot$ is a projection.} The native
film orchestrator (\code{hanzo-film}, merged into the engine~\cite{film}) runs the full plan-to-timeline
pipeline, and on a $20$-lane CPU box (node \emph{evo}) with \emph{placeholder} image-sequence shots standing in
for the video generator, a shot assembles in $\approx\!0.206$--$0.256$\,s end to end --- keyframe $9$\,ms,
Ken-Burns motion $123$\,ms, tail-frame handoff $21$\,ms, mix $15$\,ms, mux $63$\,ms --- so a full three-hour
placeholder cut ($\Nshots\!\approx\!2000$) assembles in under $30$\,s on one box and $\approx\!9$\,s across three
nodes, and an end-to-end mini-film (two scenes, six shots, two recurring characters) renders to a $16.02$\,s
H.264$+$AAC file (measured by \code{ffprobe})~\cite{film}. These numbers validate the \emph{assembly} half of
Eqs.~\eqref{eq:serial}--\eqref{eq:parallel} on real hardware: the orchestration, prefix reuse, mix, and mux are
measured, the near-linear speedup from one box to three appears as predicted, and the serial assembly tail
$\Tasm$ is confirmed small (seconds against a generation cost measured in hours). What remains a
\emph{projection} is the generative $\Tshot$: the video generator is a Wan-class MoE port in progress~\cite{wan},
and at an estimated $90$--$120$\,s per clip a three-hour film projects to $\approx\!54$--$72$\,h serial on one
GPU versus $\approx\!18$--$24$\,h across the measured three-node ring~\cite{het} --- linear in nodes per
Eq.~\eqref{eq:parallel}, and labelled projection until the port lands a first-party per-clip number. The other
substrates the estimate rests on are measured: the cross-vendor ring~\cite{het}, decode parity across
backends~\cite{backend}, and the native dub's $11.6$\,fps on a VAE-on-the-critical-path pipeline (f16,
GB10)~\cite{games} that is a shot-shaped workload in miniature. The systems claim is the \emph{shape} of
Eqs.~\eqref{eq:serial}--\eqref{eq:parallel}; the assembly shape is now measured, and the generative term is the
only projection left in it.
\paragraph{What the shape says.} Three consequences are worth stating plainly. A feature render is
\emph{scalable} without algorithmic change: add nodes, render faster, linearly, until you run out of shots ---
there is no coherence penalty for parallelism because coherence was already externalized into the bible and the
plan. It is \emph{resumable and incremental} by construction (idempotent keys), so it behaves like a build, not a
monolithic training run. And it is \emph{cheap on the wire}, because the shot is the unit of transport --- a
finished MP4 of a few seconds --- not a stream of activations, so the throughput job is bandwidth-light exactly
where the interactive companions are bandwidth-bound. The systems difficulty of long-form generation is not
holding the length; it is scheduling the throughput and assembling the leaves, and both are ordinary
distributed-systems work over the series' existing substrate.
\section{Open problems specific to long-form media}
\label{sec:open}
These are the problems the \emph{film} adds, on top of --- not duplicating --- the games companion's game-specific
problems~\cite{games} and the distributed companion's eight~\cite{openproblems}. Each is stated to make the open
question precise, and cross-referenced where it touches a companion's territory.
\paragraph{1. Perceptual metrics for narrative coherence.} The metrics of \S\ref{sec:error} score whether
characters look constant and the style holds; they say nothing about whether the assembled film is
\emph{coherent as a story} --- whether cause precedes effect, whether an establishing shot and its reverse agree
on geography, whether the edit obeys continuity (eyelines, the $180$-degree rule, screen direction), whether the
whole \emph{means} anything. This is the film analog of the games companion's playability metric~\cite{games} ---
in both, per-frame fidelity is measurable and the property that actually matters is not --- but it is distinct: a
game's open axis is \emph{interactive} (does the world respond to control?), a film's is \emph{narrative and
editorial} (does the cut sequence read?). The open problem is a computable proxy for narrative and continuity
coherence over an assembled shot sequence --- plausibly a vision-language model scoring continuity across shot
boundaries, or a learned editor's-eye metric --- and, as with playability, it is the objective the rest optimize
against: the shot-length and drift trades below cannot be set without it.
\paragraph{2. The optimal shot-length--versus--drift trade.} Shot length is a free variable with two-sided cost.
Longer shots mean fewer cuts (a specific directorial feel) and fewer independent jobs, but push each shot deeper
into the chunk-autoregressive drift regime (\S\ref{sec:shot}), costing intra-shot quality; shorter shots reset
drift more often and parallelize better, but a film cut every two seconds is a specific, often wrong, aesthetic,
and more shots mean more cross-shot identity/style variance surface (\S\ref{sec:error}). There is an optimization
here --- choose each shot's length to trade intra-shot drift against cross-shot variance and cut rate under a
narrative-coherence constraint (problem 1) --- and it couples to the systems layer, since shot length sets both
$\Nshots$ and $\Tshot$ in Eq.~\eqref{eq:parallel}. It is genuinely open because its objective (problem 1) is
open and its drift term is model-specific (it depends on how fast a given generator drifts, a measured quantity
per model~\cite{tethercache,framepack}).
\paragraph{3. Motif persistence across musical cues.} The score layer (\S\ref{sec:audio}) needs a character's
theme to recur \emph{recognizably} across cues that are generated independently and orchestrated differently ---
the musical instance of cross-segment identity (\S\ref{sec:entity}), but harder, because musical identity is a
motif (a melodic/harmonic gesture) that must survive re-instrumentation, tempo change, and mood, not a fixed
embedding to be re-injected verbatim. The open problem is a motif-conditioning mechanism for generative
music~\cite{acestep} that preserves thematic identity under transformation, and a metric for whether two cues
``contain the same theme'' --- neither of which the per-cue assembly of \S\ref{sec:audio} supplies on its own.
It is the audio dual of narrative coherence: assembly places the cues, but whether they cohere \emph{musically}
across a film is unquantified.
\paragraph{4. Lip-sync integration for dialogue shots.} A dialogue shot must satisfy \emph{two} generators at
once: the video layer renders the speaking character (from the bible, \S\ref{sec:entity}) and the audio layer
renders the line (per-line TTS, \S\ref{sec:audio}), and the character's mouth must match the audio. The series
has the measured piece --- the native localization dub achieves lip-sync confidence LSE-C $7.05$ with speaker
cosine $1.0$~\cite{games} --- but that pipeline dubs \emph{existing} footage; the open problem is integrating
lip-sync into \emph{generated} dialogue shots, where video and audio are \emph{both} being synthesized and must
be made consistent. Two architectures are open and untested at film scale: generate the audio first and condition
the video generator on it (audio-driven talking-head generation as the shot renderer), or generate the video and
apply the measured dub as a post-pass per shot. Which composes better with the bible conditioning and the
throughput schedule (\S\ref{sec:systems}), and at what added $\Tshot$, is unmeasured; the LSE-C $7.05$ result is
the anchor it would build on, not the answer.
\paragraph{5. Rights and provenance of persistent generated identities.} A film bible \emph{is} a persistent
synthetic identity --- a face, a voice, a name, reused across a feature and, plausibly, across sequels and a
franchise. That raises questions the games companion's per-asset provenance~\cite{games} frames but does not
answer for a \emph{persistent, reused} identity: if a character's face is derived from a training distribution or
a reference actor, what are the rights in the resulting persistent identity; who owns a generated voice reused
across films; how is consent for a likeness recorded and enforced across a bible's lifetime; and how does a viewer
or a rights-holder \emph{verify} which model and which references produced a given character. The mechanism the
systems layer already provides is the hook: idempotent shot keys (\S\ref{sec:systems}) record, per shot, exactly
which bible entities, weights, and prompts produced it, so a signed provenance manifest (C2PA-style~\cite{c2pa})
can bind to the \emph{identity} and travel with it across the franchise. The open problem is the rights and
consent \emph{model} over persistent generated identities, and the enforcement of it through the provenance the
render already captures --- a governance question the architecture is well placed to serve but does not settle.
\section{Landscape: closed feature systems and the open long-video frontier}
\label{sec:landscape}
Table~\ref{tab:landscape} places the paper against the landscape, with every license and claim verified from the
source rather than asserted, and undisclosed figures marked n/d. The frame to read it in is this paper's thesis:
the frontier is racing to \emph{lengthen the generator}, and this paper argues the length should instead be
achieved by \emph{assembly}, so the table's axis of interest is not who generates the longest clip but which
systems externalize coherence into structure versus internalize it into a bigger model.
\paragraph{The closed reference points.} Meta's Movie Gen is the most complete published feature-oriented system
--- a cast of media foundation models up to $30$B parameters generating $1080$p video with synchronized
audio~\cite{moviegen} --- and it is closed: no weights, no code, a reference point the open field is measured
against rather than built on, exactly as GameNGen anchors the games companion's landscape~\cite{games}. The
general-purpose closed video generators --- Google's Veo line and OpenAI's Sora~\cite{sora} --- likewise ship as
products, not artifacts, and neither is a feature-\emph{assembly} system: they generate high-quality short clips,
and the orchestration of clips into a film is left to the user. The closed frontier's bet is the scaling bet:
larger models, longer clips.
\paragraph{The open long-video frontier is a forcing-and-anti-drift literature.} The open releases we build on are
precisely the short-horizon generators and the techniques that extend them, and their center of gravity is the
chunk-autoregressive drift problem (\S\ref{sec:shot}). Diffusion Forcing established per-token/per-chunk
conditioning for sequence generation~\cite{diffusionforcing}; Self Forcing closed the train--test gap for
autoregressive video diffusion~\cite{selfforcing}; Causal Forcing and One-Forcing drove it toward real-time and
one-step generation~\cite{causalforcing,oneforcing}; TetherCache, FramePack, and RAD attack the accumulated drift
that limits how long a single continuous clip can hold~\cite{tethercache,framepack,rad}; and WorldPlay pushes
long-term geometric consistency for interactive sequences~\cite{worldplay}. SkyReels-V2 is the release that most
directly targets \emph{film}, an ``infinite-length film generative model'' built on a diffusion-forcing framework
and released under CC-BY-4.0~\cite{skyreels2}, and it is the sharpest illustration of the two philosophies: it
pursues length \emph{inside} the generator (a longer continuous synthesis), where this paper pursues length
\emph{outside} it (assembly of short shots), and the two are complementary --- a better short-shot generator makes
every leaf of our assembly better. The systems reading of the table is the paper's thesis restated: all these
generators are the games companion's fixed-shape frame loop at clip scale~\cite{games}, our stack loads whichever
of them is best per shot, and the feature-length coherence they individually struggle to reach is supplied
\emph{around} them by the coherence stack of \S\ref{sec:stack}.
\begin{table}[t]
\centering
\small
\setlength{\tabcolsep}{4.5pt}
\begin{tabular}{@{}p{2.9cm}p{2.5cm}p{1.9cm}p{2.0cm}p{3.4cm}@{}}
\toprule
\textbf{System} & \textbf{Origin} & \textbf{Scale} & \textbf{License} & \textbf{Length approach / notes} \\
\midrule
Movie Gen & Meta & 30B & closed (no release) & feature-oriented, synced audio; \emph{reference point}~\cite{moviegen} \\
Veo / Sora & Google DeepMind / OpenAI & n/d & closed (product) & short-clip generators; assembly left to user~\cite{sora} \\
SkyReels-V2 & SkyReels team & n/d & CC-BY-4.0 & ``infinite-length film'' via diffusion forcing (length \emph{inside})~\cite{skyreels2} \\
Self / Causal / One-Forcing & academic~\cite{selfforcing,causalforcing,oneforcing} & clip-scale & open & AR video, train--test gap, real-time, one-step \\
TetherCache / FramePack / RAD & academic~\cite{tethercache,framepack,rad} & clip-scale & open & anti-drift for long continuous clips \\
WorldPlay & academic~\cite{worldplay} & clip-scale & open (n/d) & long-term geometric consistency, interactive \\
\textbf{This paper} & \textbf{Hanzo AI} & \textbf{orchestration} & \textbf{---} & \textbf{length \emph{outside} the generator: hierarchical assembly (\S\ref{sec:stack})} \\
\bottomrule
\end{tabular}
\caption{The long-form landscape, licenses and claims verified from each source (arXiv abstract, model card, or
product page); undisclosed figures marked n/d. The closed frontier (Movie Gen, Veo, Sora) and the open forcing/
anti-drift literature both pursue length \emph{inside} the generator; this paper pursues length \emph{outside}
it, by assembly, and consumes any of these as its per-shot leaf. The two philosophies are complementary: a
better short-shot generator improves every leaf of the assembly.}
\label{tab:landscape}
\end{table}
\section{Conclusion}
\label{sec:conclusion}
Feature-length generation is read as a scaling problem --- grow the generator until it holds three hours --- and
it is instead an \emph{assembly} problem. A film is $\sim$2000 shots of a few seconds~\cite{cutting}, coherence
across it decomposes into five layers each maintained by a small structured object and a conditioning mechanism
(\S\ref{sec:stack}), and the long-horizon state that must persist is not a context window of pixels but a
$\sim$40k-token screenplay and a film bible that fit, trivially, in one LLM context --- so the long-horizon engine
is a language model, and the video, speech, and music models are short-horizon leaves. The observation that makes
it work is that film grammar makes the cut a \emph{free reset}: the chunk-autoregressive drift the open literature
fights over minute-long clips is bounded, in assembled film, to a single shot, so the games companion's
persistence-beyond-the-horizon problem is dissolved rather than solved, and error accumulation splits into a real
but shot-bounded intra-shot drift and a cross-shot \emph{dispersion} around fixed anchors that does not grow with
length. The systems consequence is that a feature render is embarrassingly parallel --- independent shot-jobs over
the measured heterogeneous ring~\cite{het}, with the bible as a shared prefix that prefix-caches across the job
and idempotent content-hashed shots that make the render a resumable build DAG --- with near-linear speedup in
nodes and a wall-clock that follows Eq.~\eqref{eq:parallel} for any per-shot time. We labelled that per-shot time,
and every feature-length number, a projection, because no three-hour render is measured on our stack; we leaned
only on measured substrate --- the ring, decode parity, the native dub's cosine $1.0$ and LSE-C $7.05$ --- and
cited it to its hardware. And we set the film-specific open problems on top of the companions' agendas rather than
duplicating them: perceptual narrative-coherence metrics, the shot-length/drift trade, musical-motif persistence,
lip-sync for generated dialogue, and the rights and provenance of persistent synthetic identities. The through-
line is one sentence: long-form media is not generated long, it is \emph{assembled} long, and the intelligence
lives in the plan, the bible, and the schedule --- not in a model that holds three hours it never needs to hold.
\begin{thebibliography}{99}
\small
% --- Series companions ---
\bibitem{games} Hanzo AI --- ML Systems. \emph{The Frame Is the Token: Generative Videogames on a Native
Inference Stack.} Games crossover in the native-inference series.
\bibitem{het} Hanzo AI --- ML Systems. \emph{One Cluster, Every Vendor: Cross-Vendor Tensor-Parallel LLM
Inference over Commodity Ethernet.} Distributed-inference companion (measured).
\bibitem{latency} Hanzo AI --- ML Systems. \emph{The Latency Physics of Geo-Distributed Autoregressive Decode.}
Distributed-inference companion (analytical).
\bibitem{openproblems} Hanzo AI --- ML Systems. \emph{Open Problems in Heterogeneous Distributed Inference.}
Distributed-inference companion (research agenda).
\bibitem{backend} Hanzo AI. \emph{Edge LLM Inference Across Commodity Accelerators: hanzo-engine at llama.cpp
Decode Parity on Every Backend.} Paper 05 (measured).
\bibitem{film} Hanzo AI --- ML Systems. \emph{hanzo-film: A Native Plan-to-Timeline Orchestrator for
Feature-Length Assembly.} Engine component (measured; merged at \code{cdca071b4}).
% --- Chunk-autoregressive video: forcing and anti-drift ---
\bibitem{diffusionforcing} B.\ Chen, D.\ Mart\'i Monso, Y.\ Du, M.\ Simchowitz, R.\ Tedrake, V.\ Sitzmann.
\emph{Diffusion Forcing: Next-token Prediction Meets Full-Sequence Diffusion.} arXiv:2407.01392.
\bibitem{selfforcing} X.\ Huang, Z.\ Li, G.\ He, M.\ Zhou, E.\ Shechtman. \emph{Self Forcing: Bridging the
Train-Test Gap in Autoregressive Video Diffusion.} arXiv:2506.08009.
\bibitem{causalforcing} H.\ Zhu, M.\ Zhao, G.\ He, H.\ Su, C.\ Li, J.\ Zhu. \emph{Causal Forcing: Autoregressive
Diffusion Distillation Done Right for High-Quality Real-Time Interactive Video Generation.} arXiv:2602.02214.
\bibitem{oneforcing} J.\ Feng, J.\ Cui, Y.\ Ban, C.-J.\ Hsieh. \emph{One-Forcing: Towards Stable One-Step
Autoregressive Video Generation.} arXiv:2605.23458.
\bibitem{tethercache} Y.\ Meng, X.\ Luo, L.\ Li, W.\ Jiang, C.\ Gao, X.\ Chen, Y.\ Li, X.-P.\ Zhang.
\emph{TetherCache: Stabilizing Autoregressive Long-Form Video Generation with Gated Recall and Trusted
Alignment.} arXiv:2606.13035.
\bibitem{framepack} L.\ Zhang, S.\ Cai, M.\ Li, G.\ Wetzstein, M.\ Agrawala. \emph{Frame Context Packing and
Drift Prevention in Next-Frame-Prediction Video Diffusion Models (FramePack).} arXiv:2504.12626.
\bibitem{rad} T.\ Chen, Z.\ Ding, A.\ Li, C.\ Zhang, Z.\ Xiao, Y.\ Wang, C.\ Jin. \emph{Recurrent Autoregressive
Diffusion: Global Memory Meets Local Attention.} arXiv:2511.12940.
\bibitem{worldplay} W.\ Sun, H.\ Zhang, H.\ Wang, J.\ Wu, Z.\ Wang, Z.\ Wang, Y.\ Wang, J.\ Zhang, T.\ Wang,
C.\ Guo. \emph{WorldPlay: Towards Long-Term Geometric Consistency for Real-Time Interactive World Modeling.}
arXiv:2512.14614.
% --- Feature-scale and open long-video systems ---
\bibitem{moviegen} A.\ Polyak, A.\ Zohar, A.\ Brown, et al.\ (Meta). \emph{Movie Gen: A Cast of Media Foundation
Models.} arXiv:2410.13720.
\bibitem{skyreels2} G.\ Chen, D.\ Lin, J.\ Yang, et al. \emph{SkyReels-V2: Infinite-length Film Generative
Model.} arXiv:2504.13074. CC-BY-4.0.
\bibitem{sora} OpenAI. \emph{Video Generation Models as World Simulators (Sora).} Technical report, 2024.
(Closed; product.)
\bibitem{wan} Wan Team, Alibaba Tongyi Lab. \emph{Wan: Open and Advanced Large-Scale Video Generative Models
(Wan 2.2).} Apache-2.0.
% --- Identity conditioning ---
\bibitem{lora} E.\ J.\ Hu, Y.\ Shen, P.\ Wallis, Z.\ Allen-Zhu, Y.\ Li, S.\ Wang, L.\ Wang, W.\ Chen.
\emph{LoRA: Low-Rank Adaptation of Large Language Models.} arXiv:2106.09685.
\bibitem{dreambooth} N.\ Ruiz, Y.\ Li, V.\ Jampani, Y.\ Pritch, M.\ Rubinstein, K.\ Aberman. \emph{DreamBooth:
Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation.} CVPR, 2023.
\bibitem{ipadapter} H.\ Ye, J.\ Zhang, S.\ Liu, X.\ Han, W.\ Yang. \emph{IP-Adapter: Text Compatible Image
Prompt Adapter for Text-to-Image Diffusion Models.} arXiv:2308.06721.
% --- Music ---
\bibitem{acestep} ACE Studio and StepFun. \emph{ACE-Step: A Step Towards Music Generation Foundation Model.}
Apache-2.0.
% --- Film statistics and provenance ---
\bibitem{cutting} J.\ E.\ Cutting, J.\ E.\ DeLong, C.\ E.\ Nothelfer. \emph{Attention and the Evolution of
Hollywood Film.} Psychological Science 21(3):440--447, 2010.
\bibitem{c2pa} Coalition for Content Provenance and Authenticity. \emph{C2PA Technical Specification.} Content
provenance standard.
\end{thebibliography}
\end{document}