The reference anchor decides everything

Ten held-out clips, every model × ref-mode × task combination, same per-entry seeds throughout.

Correction. An earlier Space reported that the audio-repair fine-tune cost ~40% of video edit strength. That was wrong. It compared the fine-tuned model evaluated without the anchor against a baseline evaluated in its own native condition.

The matrix

Video gap = mean L1(gen, target) − L1(gen, input); negative = the edit moved toward the target instead of copying the input. Rows marked OOD evaluate a model outside the condition it was trained in.

add starts working. It had been a pass-through failure on every previous checkpoint — copying the input rather than synthesising the object — including across the full 1784-clip test split. The anchor is the target's first latent frame, and for add the target is the object-present clip, so the anchor is a frame containing the object to be added. The base rows are the control: that anchor was always available to the base model, which had been trained to ignore it.

Per clip

Sparse ↔ dense motion round trip

A different question on the same ten clips: how much of a real motion field survives being squeezed through a handful of point trajectories and regenerated? Motion-I2V's stage 1 is the codec — a ControlNet that turns sparse drags into dense optical flow.

Read every number against the floor. The flow field is stored as a 2-channel image through a VAE, and that VAE has a flat ~4 px reconstruction floor at 320×320 — independent of how fast anything is moving, because a 10 px displacement is only 0.03 in the [0,1] image the VAE actually sees. Encoding and decoding the ground truth alone, with no diffusion at all, already costs that much. The ×floor column is the honest measure.
And against the noise. Every figure here is the mean of three seeds, with the spread shown. That matters more than it usually does: re-running the whole pipeline with a different seed moves the median EPE by px (per-seed medians ), and one clip swings 16.7→51.1 px. A single run of this is not a result. Differences smaller than that spread — including between this table and the single-seed version first published here — are noise.
What survives the noise. Three things hold across every seed: What it does recover is where the motion is — the moving object's silhouette comes back sharply from 64 points.

What a drawn line can express

The clips above use 64 machine-extracted tracks. This is the other end of the same interface — lines drawn by hand on a still photo, which is what the Motion-I2V demo actually exposes. Each group isolates one question. Left panel is the drawn path, the trail in the second is that path being followed frame by frame.

Camera motion vs object motion

Look at the hint panels above and most of what they encode is the camera, not the subject — on these clips the global sweep is simply the larger signal. Reference flow makes the split cheap: flow[t] already is the frame-0→t correspondence field, so one global transform can be fitted per frame and subtracted. What is left is the motion that is independent of the camera.

A 2-D transform cannot model parallax. Static scene content at different depths moves differently under a translating camera, so it survives the subtraction and shows up in the residual alongside genuine object motion — visible as structure on the cage bars in the birds clips. The residual is "not explained by one global transform", which is object motion plus parallax, not object motion alone. The fit is also selected per frame from translation/affine/homography by lowest median residual, with a dense sanity check: an unguarded homography produced a 1675 px "camera" for 234 px of real motion on one clip.

256×256, 81 frames @ 16 fps, mono 16 kHz, cfg 1.0, 50 steps. Audio = log-mel correlation vs the pseudo GT, both sides peak-normalised through the pipeline's own normalize_wav. N=10 — enough for effects of this size, not for small differences.