Start from a real frame of an unseen episode and ask for a different action in the same scene. The rollout mostly does the action the episode really contains, not the one in the prompt. Looping the core blocks more times (N = 1 to 8) does not change this.
This is expected from how the model was trained: each clip is paired with its own caption, and nothing in the objective makes the model act on a verb the scene does not already suggest. The examples below are the clearest cases. Each one plays the real episode, the rollout with the original caption, and the rollout with the changed prompt at N = 1 and N = 8, all from the same first frame and noise seed 0.
Asked to turn left and away, the robot heads into the curtains the way the real episode does. The judge gives the changed prompt 0 on all three seeds at N = 1, 2 and 4, while the same clips pass the original caption every time. N = 8 is the one depth where this case partly follows: the seed shown turns left in its last few seconds, after the arms have already gone to the curtains.
| judge, mean of 3 seeds | N = 1 | 2 | 4 | 8 |
|---|---|---|---|---|
| changed-prompt clips vs changed prompt | 0.00 | 0.00 | 0.00 | 0.33 |
| changed-prompt clips vs original caption | 1.00 | 1.00 | 1.00 | 1.00 |
Nothing is moved to the side of the counter at any depth. At N = 8 the arm places the guard over the cutter exactly as the original caption asks.
| judge, mean of 3 seeds | N = 1 | 2 | 4 | 8 |
|---|---|---|---|---|
| changed-prompt clips vs changed prompt | 0.00 | 0.00 | 0.00 | 0.33 |
| changed-prompt clips vs original caption | 0.67 | 0.00 | 0.33 | 0.67 |
All four look the same: the spoon circles in the cup and the cup never shakes. The judge often passes the changed prompt here (0.67–1.0) because the coffee does get mixed, so this one is from watching the videos, not from the score.
| judge, mean of 3 seeds | N = 1 | 2 | 4 | 8 |
|---|---|---|---|---|
| changed-prompt clips vs changed prompt | 0.67 | 0.67 | 1.00 | 0.67 |
| changed-prompt clips vs original caption | 0.67 | 1.00 | 0.67 | 1.00 |
This changed prompt is one of only two that appear word for word in the training captions, and here the robot does back away. That fits the reading above: the model follows instructions it has seen paired with motion, and otherwise falls back on what the scene suggests. The judge cannot tell forward from backward in this scene (it passes these clips against both prompts), so the evidence is the video.
Qwen3-VL-32B judges each clip against the prompt it was made with and, as a cross check, against the other prompt. A model that follows its prompt gives changed-prompt clips a clearly higher score against the changed prompt than against the original caption. That gap stays at or below zero at every depth.
| loop depth | original-caption clips vs original | original-caption clips vs changed | changed-prompt clips vs changed | changed-prompt clips vs original | gap |
|---|---|---|---|---|---|
| N = 1 | 0.87 | 0.67 | 0.59 | 0.67 | −0.08 |
| N = 2 | 0.95 | 0.59 | 0.62 | 0.64 | −0.03 |
| N = 4 | 0.82 | 0.64 | 0.64 | 0.69 | −0.05 |
| N = 8 | 0.77 | 0.46 | 0.54 | 0.64 | −0.10 |
Mean judge score (yes = 1, partial = 0.5, no = 0) over 3 seeds, on the 13 cases where the judge passes the real footage with its own caption. gap = changed-prompt clips vs changed prompt minus vs original caption. Rewording the original caption without changing the action scores about the same as the original (0.85 at N = 1).
Each dimension on its own, over all 900 clips (25 cases × 3 prompts × 3 seeds × N = 1, 2, 4, 8). “real” is the same measure on the real episode. ★ marks a difference from N = 1 (same case, prompt and seed) outside a 95 % bootstrap interval over the 25 cases. Short answer: no dimension improves meaningfully. The two big weaknesses, jumps where the four chained windows meet and blur that grows along the chain, are the same at every depth.
| dimension · measure | real | N = 1 | N = 2 | N = 4 | N = 8 |
|---|---|---|---|---|---|
| Prompt · judge, original caption (13 verifiable cases) | – | 0.87 | 0.95 | 0.82 | 0.77 |
| Prompt · changed-prompt clips, own minus original text | – | −0.08 | −0.03 | −0.05 | −0.10 |
| Dynamics · jerk, flow change per unit motion (lower = smoother) | 0.59 | 0.51 | 0.52 | 0.52 | 0.52 |
| Dynamics · warp error, change motion does not explain | 1.76 | 1.25 | 1.21 | 1.23 | 1.19 ★ |
| Dynamics · jump at window joins (1 = invisible) | 1.0 | 3.9 | 4.0 | 3.9 | 4.0 |
| Dynamics · motion direction vs the real episode (cosine) | – | 0.03 | −0.01 | 0.01 | 0.04 |
| Dynamics · VLM object dynamics, 1–5 | 5.0 | 4.61 | 4.65 | 4.71 ★ | 4.62 |
| Quality · sharpness vs the real first frame | 0.96 | 0.55 | 0.56 ★ | 0.56 | 0.56 |
| Quality · sharpness in the last window | 0.94 | 0.41 | 0.43 ★ | 0.43 | 0.42 |
| Quality · VLM visual quality, 1–5 | 5.0 | 4.72 | 4.75 | 4.78 ★ | 4.74 |
| Seconds per clip, one A100 | – | 31 | 39 | 54 | 84 |
Output resolution is 512 × 384 at every depth, so “quality” is measured as sharpness (Laplacian variance) relative to the real context frame. Flow from RAFT with camera motion removed. VLM = Qwen3-VL-32B on 16 frames without the instruction; its ratings are saturated (about 73 % of clips get 5), so the N = 4 gains of +0.06 to +0.09 are small. Code: ldvflux/cap_quality.py.
Per case, every deeper clip is compared with the N = 1 clip of the same prompt and seed (judge score; wins–losses). The grouping was found by looking at the per-case numbers, so the first row is a lead, not a result.
| group | N = 1 → 2 | N = 1 → 4 | N = 1 → 8 |
|---|---|---|---|
| small contact actions on trained tasks (press, rotate, pour; 6 cases) | 0.44 → 0.56 · 8–2 · p = 0.11 | 0.44 → 0.52 · 8–4 | 0.44 → 0.50 · 8–5 |
| unseen tasks (5 held-out cases) | 0.89 → 0.80 · 2–6 | 0.89 → 0.80 · 3–7 | 0.89 → 0.58 · 1–15 · p < 0.001 |
| other rare actions (14 cases) | 0.50 → 0.50 · 11–11 | 0.50 → 0.47 · 7–11 | 0.50 → 0.48 · 7–10 |
The one robust effect is that N = 8 hurts the unseen tasks. In the supermarket case deeper loops move the arm less (motion 0.29 at N = 1, 0.15–0.17 at N ≥ 2; real 0.21), and at N = 8 the arm stays by the cart instead of reaching into the cabinet. Small contact actions (an oven button, a faucet handle, pouring) score a little higher at N = 2, but the N = 1 and deeper clips look alike in the frames and the judge is weak on button presses, so that needs more seeds before it counts.
Seed 0. Over all 9 clips of this case the judge score falls from 0.89 at N = 1 to 0.56, 0.56 and 0.22 at N = 2, 4 and 8.
judge.json, keys <case>/alt2_N<d>_s<seed> and cross/…). The rollouts use 4 chained 33-frame windows at 15 fps from one real context frame of an episode that was never trained on; Euler 30 steps, CFG 4, shift 5.