# Wan I2V on 16GB A5000: keyframe-first proof guardrails

Use this for remote ComfyUI/Wan jobs on a Laptop RTX A5000 class GPU when the user wants controlled short-form video visuals.

## Hardware profile

Treat NVIDIA RTX A5000 Laptop / 16 GB VRAM as a constrained but capable local video GPU:

- avoid 14B/high-VRAM workflows as default
- prefer short scene clips over full-video generation
- use Wan2.2 TI2V/I2V 5B with FP8/offload/tiling where possible
- generate/review keyframes first; do not spend GPU on long blind prompts
- call `/free` with `unload_models` and `free_memory` between heavy image/video phases

## Model/node discovery checklist

Before submitting a long job, query `/object_info` and record:

- model dropdowns in `WanVideoModelLoader`
- text encoder names and precision support
- VAE names
- available I2V nodes, especially:
  - `WanVideoImageToVideoEncode`
  - `WanImageToVideo`
  - `WanFirstLastFrameToVideo`
  - `Wan22ImageToVideoLatent`
- whether `LoadImage` can see uploaded keyframes

Example model set observed in one A5000 setup:

```text
WanVideoModelLoader:
  Wan2_1-T2V-1_3B_fp8_e4m3fn.safetensors
  wan2.2_ti2v_5B_fp16.safetensors
T5 wrapper:
  umt5-xxl-enc-fp8_e4m3fn.safetensors
VAE:
  wan2.2_vae.safetensors
```

## Proof ladder

1. Generate 1–2 text-free keyframes outside Wan if possible.
2. Upload keyframes via `/upload/image` as `type=input`.
3. Run a tiny I2V/start-frame smoke test first.
4. Only then try first-last-frame mode.
5. Keep proof duration 5–8 seconds.
6. Validate ComfyUI history and ffprobe before presenting anything as a proof.

## Output validation

ComfyUI histories can contain non-file metadata inside output lists, such as `true` under an `animated` key. A robust parser must:

- ignore `bool`/`null` items
- only accept dict items with `filename`
- validate `filename`, `subfolder`, and `type`
- download the candidate file
- run `ffprobe` for duration/FPS
- block `exit_code != 0` unless explicitly marked `recovered`
- block or hard-warn when a generated clip is far too short for the intended final duration

Do not report `final_success` if history parsing failed or no valid video file was found.

## Known workflow-mismatch symptom

A wrapper first-last-frame attempt with `WanVideoImageToVideoEncode` may fail like:

```text
RuntimeError: Given groups=1, weight of size [160, 12, 3, 3, 3], expected input[...] to have 12 channels, but got 3 channels instead
```

Treat this as a workflow/model-mode mismatch, not a valid proof. Next attempts should reduce scope:

- verify start-frame-only I2V first
- compare wrapper nodes against native ComfyUI `WanFirstLastFrameToVideo`
- check whether the chosen model expects TI2V, I2V, or FLF2V conditioning
- keep `fun_or_fl2v_model` and end-frame settings aligned with the model/node docs
- do not fall back to blind T2V just to produce a clip

If a keyframe animatic is created for review after I2V fails, label it clearly as `not_wan` and composition-review-only.

## Quality criteria

For mechanism-reveal shorts, a valid Wan clip must be judged on semantic usefulness, not just technical completion:

- meeting/information/summary objects are recognizable
- decision target or mechanism element remains visually legible
- clip is not just dark abstract motion
- no baked readable text/logos/watermarks
- deterministic renderer owns all labels/captions/arrows
- without captions, the scene still roughly communicates the mechanism