Nodes/IAMCCS-nodes/MiniMax H3 · Standard / Motion Context Lazy Switch
ComfyUI Node

MiniMax H3 · Standard / Motion Context Lazy Switch

Two whole generation branches in one graph, only one ever actually runs

By IAMCCS·Created 11 months ago·Updated a day ago· 113
MiniMax H3 · Standard / Motion Context Lazy Switch
  • 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
legacy_fps
legacy_report
variant_fps
variant_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's backend_variant is motion_context_auto_chain_v1 or acceleration is comfy_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_report
  • variant_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_linx plan. 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.
CategoryIAMCCS/MiniMax H3/Motion Context Variant

Inputs (13)

NameTypeDefaultDescription
cine_linxIAMCCS_SUPERNODE_LINX
legacy_framesoptIMAGE
legacy_audiooptAUDIO
legacy_bridgeoptIMAGE
legacy_latentoptLATENT
legacy_fpsoptINT
legacy_reportoptSTRING
variant_framesoptIMAGE
variant_audiooptAUDIO
variant_bridgeoptIMAGE
variant_latentoptLATENT
variant_fpsoptINT
variant_reportoptSTRING

Outputs (6)

NameTypeDescription
framesIMAGE
audioAUDIO
bridgeIMAGE
sampled_latentLATENT
fpsINT
reportSTRING