H3 Progressive · HIGH Effects Execution Audit (T8 EXP)
Prove the Second Pass Ran What You Asked For
- high_result
- high_result
- report_json
Auditing effects on the HIGH stage is harder than on LOW, for a reason that's easy to overlook: by the time HIGH runs, your graph has a boundary in it, an upscale, a handoff with its own plan and masks, and maybe a different model and LoRA chain. There are more places for an effect to get silently dropped, and the thing you're trying to measure is buried under more machinery.
This node reads the actual immutable completed HIGH evidence. In: high_result. Out: the same high_result, plus report_json.
The one contract that matters
The node's description draws a line that a lot of "effects" tooling inside other packs doesn't: it does not run LOW, and it does not inspect an old cached Apply counter.
That second clause is the interesting one. An apply node's counter is mutable state attached to the node - it can tell you what the node thinks happened, or what a previous queue left behind. Completion evidence is written by the stage that actually ran, and it can't be back-dated by a later graph edit. If you take one idea from this family, take that one: audit the artifact, not the widget.
And the same two rules as on the LOW side: missing effects never count as verified, and incomplete stack coverage never counts as verified. If some foreign producer bypasses the path your effect rides on, the report marks coverage as insufficient and unverified rather than claiming a clean pass. That's the honest failure mode - and notably, it's a report, not a refusal to run. The pack's stated position is that unverified combinations are the user's call, not grounds for blocking them.
Wiring
HIGH Sampler Only ─→ high_result ─→ HIGH Effects Execution Audit ─→ (pass through to Save Completed HIGH AV)
Because the typed result passes through unchanged, you can sit the audit between the sampler and the save node without disturbing the artifact. Cheap, non-destructive, and it tells you whether the apply_exp you set up on the HIGH EAV apply node actually reached the network.
Do the sequence properly: one run with the Stage EAV Config in report_only to see what the machinery observes, then flip to apply_exp, then run again and read this report. If the two runs look identical, that's information - it usually means the effect window didn't cover any of the evaluations this stage owns, or coverage was reported as incomplete.
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 exit and restart ComfyUI before refreshing the page - this pack registers a large node set at import, and a restart is what actually loads it. The pack ships no pip dependencies on purpose: requirements.txt is comments explaining that the author won't risk replacing ComfyUI's Torch/CUDA stack, and optional EXP features check their own imports only when a workflow reaches them.
Where people get burned
Auditing HIGH with the LOW node. They take different types - LOW takes low_boundary, HIGH takes high_result - so the mismatch is usually a type error, but people sometimes "fix" it by wedging a conversion in place and then wonder why the report is empty.
Expecting the audit to grade the result. It reports execution and coverage, never quality. Whether the effect made your clip better is a judgement your eyes and ears make, and the pack is explicit that its own diagnostic values aren't a quality score.
Treating green as permanent. These are EXP nodes with an honest boundary around them: the author's verified evidence covers specific clips, specific hardware and specific combinations, and says so. Persistent effect identity for these stage effects isn't certified yet - which is precisely why the audit reads receipts per run instead of trusting a stored flag.
If a report comes back saying your effect was uncovered, resist the urge to delete the audit node and call it done. That report is the pack doing you a favour: it's telling you the video you just rendered did not include the intervention you thought you'd added, before you spend an evening comparing two clips that were never actually different.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| high_result | T8_PROGRESSIVE_HIGH_RESULT | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| high_result | T8_PROGRESSIVE_HIGH_RESULT | — |
| report_json | STRING | — |