# H3 generation rules (from Run 1 + Back Nine drafts, Nov 7 2026) The do's and don'ts for running MiniMax H3 in the factory pipeline. Every rule comes from something that went right or wrong on Nov 7 (about 100 clips on 4x L40S). Items marked **UNTESTED** still need a test before they become rules. --- ## 1. Mode: r2v only **Names (decided by Aydan, Nov 12):** a **keyframe** is one shot's layout drawn in the real look with the real cast, fed to H3 as the frame to open on. **Storyboard frames** are the loose ink drawings. **Sheets** are the locked character, place and prop images. **Lock frames** are the stills cut from a picked take for the final render. Older text below that says "storyboard / keyframe image" means storyboard frames. - **DO** use r2v (reference-to-video) for every shot. Feed it the locked character sheets, location sheets and prop sheets. Up to 9 references, referred to in the prompt as ``, ``, and so on, in the order they are passed. - **DON'T** use i2v (start frame / end frame). Aydan's verdict on Run 1: the i2v clips are bad. It also errored out at the largest size. - ~~DON'T make keyframes (still images) before drafting.~~ **REPLACED Nov 12 (Aydan):** keyframes are a standard stage. Start keyframe only, never an end one (T8). The first shot and every cut to a new angle get a keyframe; a shot that continues the same camera starts from the last frame of the previous picked take. Image spend still needs a go. - **DO** draw every storyboard / keyframe image in one style: **S3 ink + grey tone** (clean black ink lines, flat grey marker tones, high contrast, no colour). Locked by Aydan Nov 12 after a 6-style test on shots 1B and 2D (sheet: `work/test_run_2/storyboard_styles/`). Make them on the factory image worker with `api_model: gpt-image-2` (low quality, the cheapest usable). Never on Sume. Never redo one just because it is imperfect: success is the video lining up with the frame. - Style line to paste: "Comic-style storyboard panel: clean black ink lines with flat grey marker tones, high contrast, no colour." - **LOOSE, not detailed (Aydan, Nov 12, T8: "the loose one is way better").** Storyboards are for light stuff: people are generic gesture figures with blank heads (no faces, hair or clothing detail), props and buildings are simple blocks, background barely suggested. They carry only camera framing, where each person and object sits, and poses. Detailed storyboards got copied exactly by the stills, mistakes included. Draw them from text (no sheet refs), but write the layout out explicitly (who sits where, which side, how many of each prop), or it drifts. Identity and look come from the sheets at the stills step. Prompts: `work/test_run_2/t8_chain/loose/make_loose.py` + `make_loose2.py`. - **T8 verdict (Aydan, Nov 12): best = loose storyboard as a reference (V2L) or a start still made from the loose storyboard (V3L).** Both beat sheets-only (V1) and every detailed-storyboard arm. **DON'T add an end still (V4):** H3 does weird, cliche moves to force its way to the end frame. Start only. Comparisons: `work/test_run_2/t8_chain/labeled/T8_1B_compare.mp4`, `T8_2D_compare.mp4`. - **UNTESTED:** t2v (prompt only). It has no place yet: with no references, characters drift. ## 2. References and continuity - **DO** lock every character, location and prop as a sheet before any video. One character per sheet. A sheet that shows two people bleeds both into the shot (Mike and Priya had to be split). - **DO** pass only the references a shot needs. Each extra reference makes the clip slower (2 refs: about 580 s for 10 s; 4 refs: about 630 s). - **DO** carry continuity forward. Once a shot is picked, take the last frame of the picked take and pass it as an extra reference to the next shots in the same scene. In the prompt, add: " is a still from the previous shot: keep the same table, seating positions, clothes and lighting." This fixed the seating jumping between 1A, 1B and 1C. - **DON'T** draft shots in the same scene in parallel before the first one is picked if seating or layout matters. Pick shot A, then make B and C from A. ## 3. Writing the prompt - **DO** open with the same look header on every shot of a brand (for Back Nine: the PS2 game look line), then one line naming each ``. - **DO** write the action as timed beats: "At 00:01.000, ...". One action per beat. - **DO** split any hand action into separate beats: hand reaches, fingers close, then the object moves. If you don't, objects float before the hand touches them (the cup in Run 1). - **DO** state where every object IS, in every beat it matters. H3 has no negative prompt, so "don't" never works. Example: "the ball rests flat on the grass two metres from the hole" fixed the ball-on-a-tee-in-the-hole problem. "The putter stays in his left hand" fixed the missing putter. - **DO** state physical direction: which way a door hinges and swings, which side of the cart he sits on, which hand holds what. - **DO** describe signs and screens as "plain blank" so there is no gibberish text. - **DO** make the scene logic hold up: if a cart is moving, someone is driving it. If nobody is in it, it is parked. An empty seat on a moving cart reads as a ghost car (2C). - **DO** put spoken lines in `[English] ...` with speaker labels (S1), (S2), (S3), each line on its own timed beat. - **DO (LOCKED Nov 11, T1): voice comes before video.** Record the line in ElevenLabs first, approve it, then pin it as the shot's soundtrack from frame 0 (MiniMaxH3AddGuide). H3 animates the lips to it. Method B: 4 of 4 seeds said the line once, on time (checked with faster_whisper). Passing the audio as a loose reference ("Use