lesson 1 of 3 · the 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atlesson 1 of 3 · the 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atlesson 1 of 3 · the 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atlesson 1 of 3 · the 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atlesson 1 of 3 · the 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atlesson 1 of 3 · the 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atlesson 1 of 3 · the 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atlesson 1 of 3 · the 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atlesson 1 of 3 · the 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atlesson 1 of 3 · the 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atlesson 1 of 3 · the 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good atthe 2026 video model lineup — what each one is actually good at
Checkpoint
One last thing before we move on. pass this to mark the lesson done, or skip and keep moving. hop to the next when you're ready.
Final footage drill. Write lint_video_plan(plan, as_of) that takes
a plan dict and an as_of date string ("YYYY-MM-DD") and returns
"FAIL", "WARN", or "PASS".
Plan keys you will see:
video_model(str)api_method(str):"interactions.create","generate_videos","generateContent", or"generate_images"first_frame_model(str, may be"")first_frame_method(str, may be"")production(bool): True if this is the production default
Rules, evaluated in order. FIRST matching rule wins:
- If
video_modelstarts with"veo-2.0-"or"veo-3.0-"→"FAIL". - If
first_frame_modelstarts with"imagen-4"→"FAIL". - If
first_frame_method=="generate_images"→"FAIL". - If
video_model=="gemini-omni-1.1-flash"ANDapi_method=="generate_videos"→"FAIL"(Omni goes throughinteractions.create). - If
video_modelstarts with"sora-2":as_of>="2026-09-24"→"FAIL"- else if
productionis True →"WARN" - else →
"PASS"
- If
video_model=="gemini-omni-flash-preview":as_of>="2026-09-30"→"FAIL"- else →
"WARN"
- Else →
"PASS"
Fourteen plans run. Expected output:
dead_veo30 FAIL
dead_veo20 FAIL
imagen4_frame FAIL
generate_images_frame FAIL
omni_generate_videos FAIL
sora_prod_sep01 WARN
sora_prod_sep25 FAIL
omni_old_preview_sep01 WARN
omni_old_preview_oct01 FAIL
veo31_preview PASS
veo31_agent_001 PASS
omni_interactions PASS
flash_image_frame PASS
oneshot_omni_i2v PASS