H3 Chunked v5 · Freeze ONE Joint AV Window (T8 EXP)
Checkpointing one refined window so a rerun doesn't cost you the clip
- window_result
- partial4_denoised_output
- lifted_full_av
- prepared
- plan
- cumulative_av_latent
- window_result
- artifact_path
- artifact_sha256
- report_json
Chunked rendering is a deal with the devil: the memory stays sane, and in exchange you get a graph where every rerun starts at the beginning. Change one word in the Relay text for the last window and, without something like this, you pay for all of it again.
H3 Chunked v5 · Freeze ONE Joint AV Window is the checkpoint. You wire in a completed window's typed window_result plus the same partial4_denoised_output, lifted_full_av, prepared and plan it ran on, flip confirm_save, and it writes the cumulative joint AV to disk with a manifest and an exact SHA-256. Then Load Exact Frozen Window can pick it up in a separate run.
How the write behaves
Artifacts land under
ComfyUI/output/MiniMaxH3/chunked_v5_window_artifacts/
Each save gets its own directory, guarded by an OS lock, committed atomically as a single safetensors file. No overwrite, no pickle, no silent retry. Outputs are cumulative_av_latent and window_result (pass-throughs, so a single graph can keep going), plus artifact_path, artifact_sha256 and report_json. The two strings are what you copy - a path without its SHA is half a receipt, and the load node wants both.
confirm_save defaults to false. That's deliberate: every save node in the shipped example graphs ships disabled so importing a workflow can't quietly write gigabytes to your output drive. Turn on the ones you mean, one at a time.
It is not a cache, and it will not pretend to be
The pack repeats this in the README, in the doc pages and in the node description: this is explicit freezing, not automatic MODEL/conditioning cache reuse. The manifest proves which bytes are on disk and what they were computed from. It does not claim that today's model, prompt, LoRA stack or effects would reproduce them. Editing the frozen stage's configuration means regenerating and saving again - not "the loader will handle it."
For a two-window clip the useful pattern from the pack's 54-chunked-v5-split example set is: full run with per-window saves → copy the window-0 receipt → cold graph that keeps the plan, the global lift and the noise preparation (so provenance can be re-verified) but drops the completed window's sampling. Note that a cold graph is not a pure decode: it rebuilds plan, lift and preparation to check identity, then runs only what's missing.
Install
Manager → search MiniMax H3 Audio T8, or:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8.git minimax-h3-audio-T8
Fully quit and restart ComfyUI, then refresh the browser tab. This pack needs a recent ComfyUI with native H3 support. Base and EXP nodes need no extra pip packages - the empty requirements.txt is intentional, so installing the pack can't replace ComfyUI's Torch/CUDA stack. Your main model, Qwen text encoder and video/audio VAEs go in the standard models/ folders per the README.
Where it goes wrong
confirm_save still false. The node runs, returns blanks, and the load node complains about an empty artifact_path. You can't retrofit a save onto a finished run - toggle it and rerun that window.
Stale receipts. Point a cold graph at a window saved from a different plan, source or lift and it refuses. Every source/plan/noise/seed/window/content check is retained on purpose; the pack's storage layer even binds the reader's source identity to new saves.
Confusing cumulative with completed. cumulative_av_latent after window 1 is the clip so far. If you save on window 0 and intend to resume from window 1, that's fine - just be aware of which artefact you hold.
Disk growth. One directory per save, joint AV tensors, and the pack never prunes. Audit your output folder occasionally and delete artifacts whose SHA you no longer reference.
Duplicate installs. Missing sockets or a missing node usually means an old copy of the pack in custom_nodes is shadowing the real one. Rename it with a .disabled suffix (a leading underscore does not disable a pack), restart, and check python_module in /object_info.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| window_result | T8_CHUNKED_V5_WINDOW_RESULT | — | |
| partial4_denoised_output | LATENT | — | |
| lifted_full_av | LATENT | — | |
| prepared | T8_CHUNKED_V5_PREPARED | — | |
| plan | T8_H3_CHUNKED_TWO_PASS_PLAN | — | |
| confirm_save | BOOLEAN | false | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| cumulative_av_latent | LATENT | — |
| window_result | T8_CHUNKED_V5_WINDOW_RESULT | — |
| artifact_path | STRING | — |
| artifact_sha256 | STRING | — |
| report_json | STRING | — |