MiniMax H3 · Universal / Scout Lazy Delivery
Pick the Take Without Running Both Branches
- 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
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:
- Scout is enabled in the shotplan's seed/scout settings.
- 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, andviggle_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."
Inputs (19)
| Name | Type | Default | Description |
|---|---|---|---|
| cine_linx | IAMCCS_SUPERNODE_LINX | — | |
| original_framesopt | IMAGE | — | |
| original_audioopt | AUDIO | — | |
| original_bridgeopt | IMAGE | — | |
| original_latentopt | LATENT | — | |
| original_fpsopt | INT | — | |
| original_reportopt | STRING | — | |
| original_current_segmentopt | INT | — | |
| original_total_segmentsopt | INT | — | |
| original_trim_head_framesopt | INT | — | |
| scout_framesopt | IMAGE | — | |
| scout_audioopt | AUDIO | — | |
| scout_bridgeopt | IMAGE | — | |
| scout_latentopt | LATENT | — | |
| scout_fpsopt | INT | — | |
| scout_reportopt | STRING | — | |
| scout_current_segmentopt | INT | — | |
| scout_total_segmentsopt | INT | — | |
| scout_trim_head_framesopt | INT | — |
Outputs (9)
| Name | Type | Description |
|---|---|---|
| frames | IMAGE | — |
| audio | AUDIO | — |
| bridge | IMAGE | — |
| sampled_latent | LATENT | — |
| fps | INT | — |
| report | STRING | — |
| current_segment | INT | — |
| total_segments | INT | — |
| trim_head_frames | INT | — |