MiniMax H3 · Standard / Motion Context Lazy Switch
Two whole generation branches in one graph, only one ever actually runs
- cine_linx
- legacy_frames
- legacy_audio
- legacy_bridge
- legacy_latent
- variant_frames
- variant_audio
- variant_bridge
- variant_latent
- frames
- audio
- bridge
- sampled_latent
- fps
- report
This is the node that keeps IAMCCS H3 workflows loadable across two different rendering philosophies at once. The pack has a "legacy" atomic H3 generator and a newer "motion-context + ComfyKitchen" variant. Rather than ship two separate workflow files that rot independently, the author ships one graph where both branches exist and this node picks one at runtime - and thanks to lazy evaluation, the branch you don't pick never executes.
That last part is the whole game. In a plain A/B switch both sides get computed and you just throw one away - which for an H3 render means burning a full generation on a branch you'll discard. This node's inputs are all marked lazy, and it uses check_lazy_status to tell ComfyUI which branch it actually needs before anything runs. The engine then only evaluates that branch.
How it works
- It reads the shot plan off
cine_linx. If the plan'sbackend_variantismotion_context_auto_chain_v1or acceleration iscomfy_kitchen, the variant branch is live; otherwise the legacy branch is. - Whichever branch it picks, it requests exactly those six inputs (
*_frames,*_audio,*_bridge,*_latent,*_fps,*_report) from the upstream generator. - It then passes that branch's six outputs through unchanged. It's a router, not a processor - the outputs are byte-identical to what the generator produced.
The two input groups are legacy_* and variant_*:
legacy_frames,legacy_audio,legacy_bridge,legacy_latent,legacy_fps,legacy_reportvariant_frames,variant_audio,variant_bridge,variant_latent,variant_fps,variant_report
All optional - but if the selected branch's inputs aren't all connected, you get a hard error listing exactly which ones are missing ("R37 lazy backend branch is incomplete: variant_frames, ..."). It fails loudly rather than silently mixing branches.
Outputs
A clean six-socket union: frames, audio, bridge, sampled_latent, fps, report. Whatever comes after this node doesn't care which backend produced it, which is the point - the downstream delivery chain is branch-agnostic.
Install
Pack install first (ComfyUI Manager → IAMCCS, or git clone https://github.com/IAMCCS/IAMCCS-nodes.git). The variant branch additionally needs the ComfyUI-H3-Motion-Context-Auto-Chain addon and MiniMax H3 support; the legacy branch runs on the atomic backend alone. Because only the live branch evaluates, you can keep this node in a workflow even if you haven't installed every addon - the unused branch's missing nodes will still fail workflow load, though, so keep the graph complete.
Where people get burned
- This is not a manual selector. There's no widget that says "use variant". It decides from the
cine_linxplan. If you expected a dropdown and find none, that's the design - you switch branches by changing settings in H3 Settings, not here. - The branch decision happens per run. Edit the plan between runs and the next execution may flip branches - which is usually what you want, but don't be confused when the log line ("R37 lazy backend selected: motion-context/CK variant" vs "legacy atomic") changes.
- If both branches feed the same inputs and one is stale/broken, the selected one is what runs. Fix the branch the plan is actually using, not the one you're looking at.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| cine_linx | IAMCCS_SUPERNODE_LINX | — | |
| legacy_framesopt | IMAGE | — | |
| legacy_audioopt | AUDIO | — | |
| legacy_bridgeopt | IMAGE | — | |
| legacy_latentopt | LATENT | — | |
| legacy_fpsopt | INT | — | |
| legacy_reportopt | STRING | — | |
| variant_framesopt | IMAGE | — | |
| variant_audioopt | AUDIO | — | |
| variant_bridgeopt | IMAGE | — | |
| variant_latentopt | LATENT | — | |
| variant_fpsopt | INT | — | |
| variant_reportopt | STRING | — |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| frames | IMAGE | — |
| audio | AUDIO | — |
| bridge | IMAGE | — |
| sampled_latent | LATENT | — |
| fps | INT | — |
| report | STRING | — |