Nodes/IAMCCS-nodes/MiniMax H3 · Universal / Scout Lazy Delivery
ComfyUI Node

MiniMax H3 · Universal / Scout Lazy Delivery

Pick the Take Without Running Both Branches

By IAMCCS·Created 12 months ago·Updated about 14 hours ago· 113
MiniMax H3 · Universal / Scout Lazy Delivery
  • cine_linx
  • original_frames
  • original_audio
  • original_bridge
  • original_latent
  • scout_frames
  • scout_audio
  • scout_bridge
  • scout_latent
  • frames
  • audio
  • bridge
  • sampled_latent
  • fps
  • report
  • current_segment
  • total_segments
  • trim_head_frames
original_fps
original_report
original_current_segment
original_total_segments
original_trim_head_frames
scout_fps
scout_report
scout_current_segment
scout_total_segments
scout_trim_head_frames

Two-branch graphs have a dirty secret: both branches compute. If you wire up "normal delivery" and "scout take" side by side and then pick one at the end with a switch, you've paid for both - and in an H3 workflow that's tens of minutes and a pile of VRAM.

This node is the fix, and the mechanism is ComfyUI's lazy inputs. Its check_lazy_status asks the graph for only the inputs belonging to the branch that the shotplan says is active. The other branch's nodes never execute. That's the whole trick, and it's why the pack calls these "lazy delivery" routers.

Which branch it picks

The decision reads your project settings, not a widget on this node - the node's only required input is cine_linx, the pack's structured project bus, which carries the shotplan. Two conditions:

  1. Scout is enabled in the shotplan's seed/scout settings.
  2. The task mode is eligible. Scout is explicitly bypassed when the shot is running one of the temporal engines that own continuous or native latent history: keyframe_joint_native, latent_go_ahead, longvid_continuous_guided, longvid_masked_loop_guided, guided_av_loop_experimental, longvid_guided_av_loop_experimental, and viggle_animation.

That second rule is the important one and the node explains it in its own source: replacing one of those engines with a standalone scout candidate would discard its latent history. Classic R42 paths - including REF2VID - stay eligible.

It doesn't leave you guessing either. Whichever way it resolves, the reason string is appended to the report output, so you get a line like "Scout bypassed: <mode> owns continuous/native latent history" instead of a silent switch you have to reverse-engineer.

Inputs and outputs

The optional inputs come in two mirrored sets, one per branch, nine each: original_frames, original_audio, original_bridge, original_latent, original_fps, original_report, original_current_segment, original_total_segments, original_trim_head_frames - and the same nine prefixed scout_.

Outputs are the union of both, resolved to whichever branch ran: frames, audio, bridge, sampled_latent, fps, report, current_segment, total_segments, trim_head_frames. Note bridge and sampled_latent - this isn't an MP4 switcher, it's passing through the working media so a downstream continuation or refinement stage never knows which branch produced it.

If the selected branch's inputs aren't wired, you get an explicit error naming every missing one, which is a much better failure than a half-empty graph.

The R43 part

The R42/R43 in these node names are internal revision labels for the author's universal H3 branch. R43-mode temporal engines are the ones the scout bypass list points at; the labels stay in the class names so a saved workflow keeps loading with the behaviour it was built against instead of silently changing under an update. If you see two nodes with nearly identical names differing by a revision suffix, that's why - not a typo.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes.git

Manager → IAMCCS Nodes works, then restart and hard-refresh. One copy in custom_nodes only; duplicated installs are the pack's number-one self-inflicted problem and this is exactly the kind of node - deeply wired into a Shotboard graph - where a stale definition is hard to spot.

There's nothing to configure here. The rest of the router family is bundled, but this node is only useful inside the R40 Shot Lab / universal delivery workflow that provides a cine_linx and the two branches. Dropping it into a random graph gets you an error about the missing shotplan, which is the correct response.

Where the lazy behaviour pays off

If you're new to this: the practical difference is that you can keep an expensive experimental branch wired up permanently and it costs you nothing when it's not selected. That's a big release valve on a graph that's already too large to read - and it's the same instinct behind the pack's AutoLink and bus-group utilities. Lazy evaluation is the difference between "an option I can't afford to leave in" and "an option I flip with a setting."

CategoryIAMCCS/MiniMax H3/R40 Shot Lab

Inputs (19)

NameTypeDefaultDescription
cine_linxIAMCCS_SUPERNODE_LINX
original_framesoptIMAGE
original_audiooptAUDIO
original_bridgeoptIMAGE
original_latentoptLATENT
original_fpsoptINT
original_reportoptSTRING
original_current_segmentoptINT
original_total_segmentsoptINT
original_trim_head_framesoptINT
scout_framesoptIMAGE
scout_audiooptAUDIO
scout_bridgeoptIMAGE
scout_latentoptLATENT
scout_fpsoptINT
scout_reportoptSTRING
scout_current_segmentoptINT
scout_total_segmentsoptINT
scout_trim_head_framesoptINT

Outputs (9)

NameTypeDescription
framesIMAGE
audioAUDIO
bridgeIMAGE
sampled_latentLATENT
fpsINT
reportSTRING
current_segmentINT
total_segmentsINT
trim_head_framesINT