Day 2. April 16, 16:39–22:32. Shot2, Shot3, Shot4 and the reference-to-video rule

Evolink down

16:39 — Evolink topped up. First run of shot_legs_backlight_5lite with M1 + mockup → generation_timeout. Second one — same. Task hung at 95% and died on server timeout.

"The last task did finish — task-unified-1776347645-4ao4jaji."

The user himself surfaced the ID of the completed task. Downloaded — that's shot_legs_backlight_5lite.png:

shot_legs_backlight_5lite — Seedream with M1 + mockup

shot_legs_backlight_5lite — Seedream with M1 + mockup

"Nope, the background didn't get blurred, unfortunately. Probably wasn't in the prompt."

Added shallow depth of field → shot_legs_backlight_dof.png:

shot_legs_backlight_dof — first attempt with DOF

shot_legs_backlight_dof — first attempt with DOF

"Can we get more DOF?"

The next three requests (f/1.4, extreme bokeh) — all died on timeout. Each hung 10 minutes at 95%. Evolink consistently unresponsive.

/compact → SSL → proxy in seedream_gen.py

17:25, context wiped (/compact). User asked to re-read everything and try again. New run — SSLError EOFError on upload to Evolink.

The agent remembered that seedance_video.py has a proxy but seedream_gen.py doesn't. Added the proxy from .config.json to all 4 requests calls (upload, generate, poll, download). Plus a cp1251 encoding fix on broken print statements.

Three runs in a row with proxy — still generation_timeout. The Evolink server is just down.

Flux as a fallback

Switched to Flux through OpenRouter (it doesn't hang). Without the word "hanging" in the prompt.

shot_legs_backlight_dof2_flux — first one, two refs

shot_legs_backlight_dof2_flux — first one, two refs
params flux · flux.2-pro · 16:9
prompt
Black and white cinematic photograph. Two legs dangling in front of a bright window, backlit. Background completely blurred and out of focus, only the shoes are in sharp focus. Room is dark with light streaming through the window behind the legs. 35mm film grain, high contrast, shallow depth of field.

DOF insufficient, background almost in focus. Reworked: one ref (mockup), more aggressive on blur:

shot_legs_backlight_dof3_flux — stronger DOF, bare ankles

shot_legs_backlight_dof3_flux — stronger DOF, bare ankles
params flux · flux.2-pro · 16:9
prompt
Black and white photograph, 35mm film. Detail shot: two feet in dark shoes dangling in the air in front of a bright window. Camera focused only on the shoes, everything else is a soft blur — the window behind is just a bright white glow with no detail, the curtains are unrecognizable shapes. Extreme shallow depth of field. Dark room, strong backlight from window creating rim light on the shoes. High contrast, heavy grain.

"Dof3 is good, but I just realized — in other shots the trousers covered the shoes, and here you can see bare legs. Can we fix this or rebuild the whole pipeline?"

Not from scratch — fix the prompt. Added "trousers cover the legs completely":

shot_legs_backlight_dof4_flux — trousers OK, boots out of focus

shot_legs_backlight_dof4_flux — trousers OK, boots out of focus
params flux · flux.2-pro · 16:9
prompt
Black and white photograph, 35mm film. Detail shot: two feet in dark shoes dangling in the air in front of a bright window. Long dark trousers cover the legs completely down to the shoes, no bare skin visible. Camera focused only on the shoes, everything else is a soft blur — the window behind is just a bright white glow with no detail, the curtains are unrecognizable shapes. Extreme shallow depth of field. Dark room, strong backlight from window creating rim light on the shoes. High contrast, heavy grain.

shot_legs_backlight_dof5_flux — trousers+boots sharp, background sharp

shot_legs_backlight_dof5_flux — trousers+boots sharp, background sharp
params flux · flux.2-pro · 16:9
prompt
Black and white photograph, 35mm film. Detail shot: two feet in dark lace-up shoes dangling in the air, centered in frame. Long dark trousers cover the legs completely down to the shoes, no bare skin visible. The shoes are in razor-sharp focus. Behind the feet is a bright window, completely blown out into a soft white glow. Dark room walls on both sides, heavily blurred. Strong backlight from window creating rim light outline on the shoes. High contrast, heavy grain, shallow depth of field.

"And the trousers are ugly, more attempts needed."

Three variants in parallel — different clothing:

shot_legs_v6a_flux — suit + leather shoes, sharp background

shot_legs_v6a_flux — suit + leather shoes, sharp background
params flux · flux.2-pro · 16:9
prompt
Black and white photograph, 35mm film grain. Detail close-up: two feet in worn leather boots hanging in the air, centered in frame. Loose wide-leg suit trousers drape over the boots, fabric bunching slightly at the ankles. Behind the feet a bright window is blown out into pure white light. Room walls dark and blurred. Strong backlight silhouette. High contrast, shallow depth of field, background out of focus.

shot_legs_v6b_flux — jeans + sneakers, DOF finally

shot_legs_v6b_flux — jeans + sneakers, DOF finally
params flux · flux.2-pro · 16:9
prompt
Black and white photograph, 35mm film grain. Detail close-up: two feet in old dirty sneakers dangling in the air, centered in frame. Baggy dark jeans cover the legs down to the sneakers. Behind the feet a bright window glows pure white, completely overexposed. Dark room, walls barely visible in deep shadow. Rim light outlines the shoes from behind. High contrast, shallow depth of field, blurred background.

v6c (bare feet) — Flux censored: "bare feet hanging" triggered safety.

"What sneakers? Look at the approved master shot — dude is in a suit and dress shoes."

Suit trousers + dress shoes with the DOF from v6b:

shot_legs_v7a_flux — suit + dress shoes + DOF, but ankles

shot_legs_v7a_flux — suit + dress shoes + DOF, but ankles
params flux · flux.2-pro · 16:9
prompt
Black and white photograph, 35mm film, heavy grain. Detail close-up: two feet in polished dark oxford shoes dangling in the air, centered in frame. Dark suit trousers drape naturally over the shoes. The shoes are sharp and detailed. Everything behind the feet is heavily out of focus — a bright window reduced to a soft white glow, dark room walls dissolved into shadow. Very shallow depth of field, only the shoes are in focus. Strong backlight from behind creating a thin rim of light around the shoes. High contrast.

v7b with corpse ref pulled everything to a wide shot instead of detail. v7c ("full break trousers") — Flux put him on the floor.

shot_legs_v7d_flux — suspended high, floor out of frame

shot_legs_v7d_flux — suspended high, floor out of frame
params flux · flux.2-pro · 16:9
prompt
Black and white photograph, 35mm film, heavy grain, high contrast. Close-up of two feet suspended high above the floor, not touching anything. Dark suit trousers cover the ankles, fabric resting on top of polished dark shoes. The floor is far below, out of frame. Behind the feet a bright window is a soft white blur. Dark room, shallow depth of field, strong backlight creating rim light on the shoes. The feet hang motionless in empty space.

shot_legs_v7e_flux — camera looking up

shot_legs_v7e_flux — camera looking up
params flux · flux.2-pro · 16:9
prompt
Black and white photograph, 35mm film, heavy grain, high contrast. Camera looking up at two feet hanging in the air against bright window light. Dark formal trousers drape down over dark leather shoes. No floor visible. The window behind is blown out white. Everything except the shoes is blurred. Noir atmosphere, dramatic backlight, shallow depth of field.

Flux is torn between "hanging" and "trousers cover the boots": when trousers are long — it stands him on the floor, when hanging — ankles.

Attempt v7b with shot1_pinata_corpse.png as second ref — pulled to a wide shot:

shot_legs_v7b_flux — corpse ref hijacked the composition

shot_legs_v7b_flux — corpse ref hijacked the composition
params flux · flux.2-pro · 16:9
prompt
Black and white photograph, 35mm film, heavy grain. Extreme close-up of two feet in dark dress shoes suspended in mid-air. Dark wool suit pants fall straight down covering the ankles completely. Shallow depth of field — the shoes are tack sharp, the background is a creamy blur of bright window light. Dark vignette around edges. Backlit silhouette feeling. High contrast, moody, noir.

v7c with "full break trousers, no skin" — Flux put him on the floor:

shot_legs_v7c_flux — full break → standing on floor

shot_legs_v7c_flux — full break → standing on floor
params flux · flux.2-pro · 16:9
prompt
Black and white photograph, 35mm film, heavy grain. Detail close-up: two feet in polished dark oxford shoes dangling in the air, centered. Dark suit trousers with full break — the fabric falls over the top of the shoes, covering the ankles completely, no skin visible between trouser and shoe. The shoes are sharp and detailed. Everything behind is heavily out of focus — bright window reduced to a soft white glow, dark room walls dissolved into shadow. Very shallow depth of field. Strong backlight rim. High contrast.

Gemini edit on dof3

"Maybe we can edit dof3 — just lengthen the trousers?"

Great idea. Flux edit "extend trousers" didn't get it (ankle edges remained):

shot_legs_dof3_edit_flux — Flux edit barely responds

shot_legs_dof3_edit_flux — Flux edit barely responds
params flux · flux.2-pro · 16:9
prompt
Edit this photograph: extend the dark suit trousers so they cover the ankles completely and rest on top of the shoes. The trousers should drape over the shoes with a full break. Keep everything else exactly the same — the shoes, the background blur, the lighting, the grain, the composition. Only change the trouser length.

Switched to Gemini. First call — google/gemini-2.5-flash-preview → 400 invalid model. gemini-3-flash-preview → 404 "no image output". gemini-3-pro-image-preview — the only Gemini with image output:

shot_legs_dof3_edit_gemini — trousers covered, legs hanging

shot_legs_dof3_edit_gemini — trousers covered, legs hanging
params banana · google/gemini-2.5-flash-preview · openrouter
prompt
Edit this image: make the dark suit trousers longer so they completely cover the bare ankles and drape over the top of the shoes. No bare skin should be visible between the trouser hem and the shoes. Keep everything else identical — same shoes, same background, same blur, same grain, same lighting, same composition.

"Nah, perfect. Approving the Gemini version."

shot2_legs_backlight — APPROVED

shot2_legs_backlight — APPROVED

Second approved frame. Gemini 3 Pro Image Preview joined the toolkit — for spot edits on a finished image it's better than Flux-edit.

Archive cleanup

"Now commit."

1ccac69 — 41 files (shot2 + all iterations + proxy in seedream_gen).

"But you didn't move the extras to archive."

Moved 32 iterations of body_ref_side_legs_*, m2_window_*, shot_legs_* to archive/. 887fc8a.

"Why do we still have the leg mockups, we already used them?"

Two more files (m2_legs_mockup.png, m2_window_tight_v2.png) → archive. d710eac.

Shot2 video — 6 iterations on motion

"Now we need an 8-second Seedance video on top of this frame, where the legs sway gently (the guy is hanging in a noose)."

Minimal prompt from the image-to-video guide: don't describe appearance (model sees the picture), @Image1 as first frame, physical description of motion, negatives.

v1: "feet sway gently side to side in slow pendulum motion".

shot2_legs_video_v1 — pendulum sway
params 720p · 8s · 16:9
prompt
@Image1 is the first frame. The hanging feet sway gently side to side in a slow pendulum motion, continuous and repetitive. The trouser fabric shifts slightly with each sway. Fixed camera, no movement. Avoid jitter, avoid temporal flicker, avoid bent limbs, avoid fast motion.

"Yeah, but the problem — he's wiggling them, the dude's alive."

v2: "feet are completely limp, dead weight, slight draft causes body to rotate slowly":

shot2_legs_video_v2 — dead weight + rotation
params 720p · 8s · 16:9
prompt
@Image1 is the first frame. The feet are completely limp and motionless, hanging from above by a rope. A slight draft causes the body to rotate very slowly clockwise, then back. The feet do not move on their own — they are dead weight, only shifting because the whole body turns slightly. The trouser fabric hangs still. Fixed camera, no movement. Avoid jitter, avoid temporal flicker, avoid any voluntary movement of the feet.

"They're dead, but they don't sway like a pendulum, they rotate ((."

v3: removed rotate, brought back pendulum with "dead weight, lifeless":

shot2_legs_video_v3 — pendulum no rotation
params 720p · 8s · 16:9
prompt
@Image1 is the first frame. The feet are dead weight, hanging limp from a rope above. They sway very gently left and right like a pendulum, driven only by air movement in the room. No voluntary motion, no rotation. The legs and feet remain completely rigid and lifeless throughout. Fixed camera, no movement. Avoid jitter, avoid temporal flicker, avoid rotation, avoid any voluntary movement.

"OK pretty good, except the legs move independently, not together like a torso would move them. And the motion needs to be even smaller, even less noticeable."

v4: "body drifts as one rigid unit, both legs together, millimeters of drift":

shot2_legs_video_v4 — rigid unit, millimeters
params 720p · 8s · 16:9
prompt
@Image1 is the first frame. A body hangs from a rope, only the lower legs and shoes are visible. The entire body drifts as one rigid unit, almost imperceptibly, left and right. Both legs move together as one solid piece — they are connected to the same body above. The movement is extremely subtle, barely visible, just a few millimeters of drift. Fixed camera, no movement. Avoid jitter, avoid temporal flicker, avoid independent leg movement, avoid rotation, avoid any large motion.

"Motion still too big, unfortunately, and a rotation crept in too."

Pattern: the more you describe motion in Seedance, the more it adds. Reverse approach — almost total stillness, only atmosphere:

v5: "almost completely still, feet are frozen, dust particles float, curtain shifts slightly":

shot2_legs_video_v5 — near-static, atmosphere
params 720p · 8s · 16:9
prompt
@Image1 is the first frame. Almost completely still scene. The hanging feet and legs are frozen, barely moving. Dust particles float slowly in the window light behind. The curtain shifts very slightly from a draft. The feet themselves are nearly static — only the faintest, almost invisible micro-sway. Fixed camera, no movement. Avoid jitter, avoid temporal flicker, avoid rotation, avoid large motion, avoid any noticeable movement of the feet.

"Damn, now they don't sway at all (((."

v6: middle ground with metrics ("5 centimeters"). User:

"It's not a mathematician, no need to write centimeters."

Rewrote: "like a weight on a string". No metrics, two phrases:

shot2_legs_video_v6 — weight on string
params 720p · 8s · 16:9
prompt
@Image1 is the first frame. The two feet hang from above, connected to the same body. Both feet move together as a single rigid object, swaying gently left and right like a weight on a string. No independent leg movement, no rotation, no bending. Fixed camera. Avoid jitter, avoid temporal flicker, avoid rotation.

"OK, let's take v5 as approved, we'll redo the older shots."

shot2_legs_video — v5 APPROVED

Third approved video shot. Rule: for "barely-noticeable motion" in Seedance, the formula is "almost completely still + atmosphere (dust, curtains) + faintest micro-sway", not a direct pendulum description.

Legs on shot1_door_closed

"Shot1_door_closed — we need to hang legs on the left edge (waist down), with toes pointing right and toward us at 45°."

"Think Banana can draw legs in a single shot? Or Flux?"

Ran both edits in parallel.

shot1_door_legs_flux_v1 — Flux: legs standing, walking

shot1_door_legs_flux_v1 — Flux: legs standing, walking
params flux · flux.2-pro · 16:9
prompt
Edit this photograph: add hanging legs of a man visible from waist down on the left edge of the frame. Dark suit trousers and dark leather shoes. The body faces 45 degrees toward the camera, toes pointing right. Legs hang limp and straight, not touching the floor. Keep the room, door, and everything else exactly the same.

shot1_door_legs_gemini_v1 — Gemini: hanging, but with a chair under them

shot1_door_legs_gemini_v1 — Gemini: hanging, but with a chair under them
params banana · google/gemini-3-pro-image-preview · openrouter
prompt
Edit this photograph: add hanging legs of a man visible from waist down on the left edge of the frame. Dark suit trousers and dark leather shoes. The body faces 45 degrees toward the camera, toes pointing right. Legs hang limp and straight, not touching the floor. Keep the room, door, and everything else exactly the same.

Tried to refine Gemini — remove the chair, rotate the legs to 45°:

shot1_door_legs_gemini_v2 — chair gone, legs still frontal

shot1_door_legs_gemini_v2 — chair gone, legs still frontal
params banana · google/gemini-3-pro-image-preview · openrouter
prompt
Edit this photograph: add hanging legs of a man on the left edge of the frame, visible from waist down. The man hangs from a rope attached to the ceiling. Dark suit trousers cover the ankles, dark leather shoes. The body is turned so the toes point to the right side of the frame, viewed from a 45 degree angle. Legs hang limp and straight, suspended in the air far above the floor. Do not add any furniture or objects. Keep the room, door, walls, and floor exactly as they are.

"shot1_door_with_foot_v2.png — here, I did it myself."

shot1_door_with_foot_v2 — user assembled it himself

shot1_door_with_foot_v2 — user assembled it himself

Shot1 door_foot video

"Now a 5-sec video with that micro-motion from the previously approved video — no need to open the door, just leg motion."

Same prompt that worked on shot2_legs_video_v5. Run → 402 insufficient_quota (need 67.5, have 28.3).

"Topped up."

v1 — shot1_door_foot_video_v1.mp4:

shot1_door_foot_video_v1 — "they're flying"
params 720p · 5s · 16:9
prompt
@Image1 is the first frame. Almost completely still scene. The hanging feet and legs are frozen, barely moving. The feet themselves are nearly static — only the faintest, almost invisible micro-sway. The door remains closed and still. Fixed camera, no movement. Avoid jitter, avoid temporal flicker, avoid rotation, avoid large motion, avoid opening the door.

"No, they're flying. And another problem — I forgot to make the frame 16:9, need to redo."
"Already did."

v2 — more minimal prompt (like v5):

shot1_door_foot_video_v2 — APPROVED, 1.6 MB, 232 sec
params 720p · 5s · 16:9
prompt
@Image1 is the first frame. Almost completely still scene. The hanging feet and legs are frozen, barely moving. The door remains closed and still. Only the faintest micro-sway of the feet, almost invisible. Fixed camera, no movement. Avoid jitter, avoid temporal flicker, avoid rotation, avoid large motion, avoid opening the door, avoid any noticeable movement.

"Worked. I already crossed it with the door-kick in post and it came out fine."

Master corpse shot — 5 iterations on motion

"Now master shot shot1_pinata_corpse_16_9. 5 sec, same micro-motion."

v1: same "almost completely still" prompt.

shot1_corpse_video_v1 — fraud, 0 motion
params 720p · 5s · 16:9
prompt
@Image1 is the first frame. Almost completely still scene. The hanging body is frozen, barely moving. Only the faintest micro-sway, almost invisible. Dust particles float slowly in the light from the window. Nothing else moves. Fixed camera, no movement. Avoid jitter, avoid temporal flicker, avoid rotation, avoid large motion, avoid any noticeable movement of the body.

"This is just fraud, no motion in the frame at all, just a static frame for 5 sec. Dust isn't floating, the body has 0 motion."

v2: brought motion back "sways forward and backward toward camera":

shot1_corpse_video_v2 — swaying with huge amplitude
params 720p · 5s · 16:9
prompt
@Image1 is the first frame. The hanging body sways very gently forward and backward, toward and away from the camera. Both the body and legs move together as one piece. Dust particles drift through the beams of light from the window. Fixed camera, no movement. Avoid jitter, avoid temporal flicker, avoid independent limb movement.

"Crap, he's swaying with huge amplitude. I knew it, this whole pendulum thing is crap."

v3: atmosphere only, body motionless:

shot1_corpse_video_v3 — dust there, body 0
params 720p · 5s · 16:9
prompt
@Image1 is the first frame. A still, eerie scene. Dust particles float slowly through the sunlight beams from the window. The light on the floor shifts very slightly as clouds pass outside. The rope is taut and still. The body hangs motionless. Fixed camera. Avoid jitter, avoid temporal flicker, avoid any movement of the body, avoid swaying.

"Dust 2/2, but body frozen, 0 motion, and we need a minimum."

The agent suggested "tremor, fabric ripples":

"What tremor, it'll bring him back to life."

Simplified to:

"Just leave 'very slightly'. Help me phrase it."

v4: "The hanging body moves very slightly. Dust particles float. Fixed camera." — two phrases, no directions.

shot1_corpse_video_v4 → APPROVED as shot1_corpse_video.mp4

reference-to-video and video_urls

In parallel, the user noted:

"Maybe give it a finished video and say 'use this reference's body motion'? Like from shot1_door_foot_video_v2.mp4?"

The agent started explaining that the script only handles images and that this would require switching from image-to-video → reference-to-video. User:

"Why the hell are you using image-to-video at all? Why not always reference? It's stronger, up to 9 refs, and the first frame is the same."

Right. Rewrote seedance_video.py:
- Removed --model, always seedance-2.0-reference-to-video.
- Upload supports both images and videos (.mp4/.mov/.webm/.avi).
- Up to 12 refs.

First run with a video ref → 400. Evolink doesn't accept video in image_urls. Fixed payload — separated image_urls and video_urls:

shot1_corpse_video_v5 — with video motion ref (but v4 was already approved)
params 720p · 5s · 16:9
prompt
@Image1 is the first frame. @Video1 is the motion reference — use the same type and amount of movement for the body. The hanging body moves very slightly. Dust particles float through the sunlight from the window. Fixed camera. Avoid jitter, avoid temporal flicker.

"OK, took v4 and built something out of it in post, taking v4."

Third wall — clock

Commit 4bc49fa (videos in approved + rewrite seedance_video.py).

"m1_priton_v7_max — now we generate the opposite wall from this shot. Flux, 16:9, just wallpaper and a clock on the left side of the frame."

The agent included "16:9" in the prompt.

"Is 16:9 in the prompt? Not in the params?"
"What the hell. I asked, is 16:9 a prompt? It's a generation parameter."

Right, parameters. Removed from the prompt, passed via --aspect 16:9:

m3_opposite_wall_v1 — wallpaper, parquet, clock in the center

m3_opposite_wall_v1 — wallpaper, parquet, clock in the center
params flux · flux.2-pro · 16:9
prompt
Black and white photograph, 35mm film, high contrast, heavy grain. The opposite wall of this room — same floral wallpaper pattern, same style. A large old wall clock hangs on the left side of the frame. The wall is bare except for the clock. Herringbone parquet floor visible at the bottom. Dim, moody lighting.

The clock came out in the center, not on the left. User:

"Nah, fine."

Shot3 POV — camera on the rope

"Now we need a video that's like through the corpse's eyes, like the camera is on the rope."

v1: POV, camera swinging like a pendulum:

shot3_pov_corpse_v1 — POV on the rope
params 720p · 5s · 16:9
prompt
@Image1 is the first frame. POV shot from a body hanging on a rope. The camera looks at the wall with the clock. The camera sways very gently and slowly, like a pendulum — drifting slightly left, then right. The movement is smooth and heavy. Fixed view on the wall, only the camera moves. Avoid jitter, avoid temporal flicker.

"Make it a still frame, only the clock moves. I'll do the motion in post."

v2: "only the clock moves, pendulum swings slowly, second hand ticks":

shot3_pov_corpse_v2 — APPROVED, only the clock
params 720p · 5s · 16:9
prompt
@Image1 is the first frame. Completely still scene. The only movement is the clock — the pendulum swings slowly and the second hand ticks. Everything else is frozen. Fixed camera, no movement. Avoid jitter, avoid temporal flicker, avoid any camera movement.

The rule confirmed: complex motion goes in post, the model produces a simple animated atom. Commit 495321f.

Shot4 — bandit in the open doorway

"m1_priton_v7_max — make a 16:9 copy of this frame, crop it center. Then use Flux to generate a copy where the door is open and our bandit is standing there."

Cropped M1 to 16:9 → m1_priton_16_9.png. Flux edit: "a man in a dark suit stands in the open doorway":

m1_priton_16_9 — master shot crop

m1_priton_16_9 — master shot crop

"What dark suit, here's our bandit char_bandit_front."

Rewrote for the actual character: "bald, stocky, worn leather jacket, backlit from hallway":

[missing] shot4_bandit_door_v2
../archive/shot4_bandit_door_v2.png

The session ended here — the user moved into the next day with a new task about the bat on the wall.

Day 2 wrap-up (evening)

In six hours:
- shot2_legs_backlight.png — approved (Gemini edit on Flux dof3).
- shot2_legs_video.mp4 — v5 "almost completely still" formula for near-static shots.
- shot1_door_with_foot_v2.png — user assembled it himself in Photoshop (Flux/Gemini edit couldn't pull it off).
- shot1_door_foot_video_v2.mp4 — micro-motion in front of the closed door, glued with door_kick in post.
- shot1_corpse_video.mp4 — v4 "moves very slightly + dust" formula for the master shot.
- m3_opposite_wall_v1.png — third wall with a clock.
- shot3_pov_corpse_v2.mp4 — corpse POV (only clock, camera motion in post).
- m1_priton_16_9.png — master crop to 16:9.
- shot4_bandit_door_v2 — first composition of the bandit in the open doorway.
- Proxy in seedream_gen.py — SSL fix from RU (critical).
- reference-to-video — always, dropped image-to-video as the limited mode.
- video_urls vs image_urls — separate fields in the Evolink payload.
- Gemini 3 Pro Image Preview — the only Gemini with image output, used for spot edits on a finished image.
- The "near-static + atmosphere" formula in Seedance — the only working way to get minimal motion, direct pendulum descriptions always give either 0 or huge amplitude.
- "16:9 is a parameter, not a prompt" — rule that landed in memory.