AUTO PASS 2 · STOP / UNLOAD
The hires pass saves its work and the queue rolls on
- image
- image
- validated_path
- manifest_json
What this node does
Pass 2 - the HIRES / USDU stage that took phase 1's base image and actually upscaled and refined it - ends the same way every pass in this pack ends: at a STOP node that seals the result and hands the queue to the next pass. SayaImagePhase2Stop is that terminal for phase 2.
"Unload" is doing real work in the name. The whole pipeline philosophy here is isolation: only one phase's models in VRAM at a time, so a six-stage run never juggles six checkpoints. When this node fires, it saves the hires result as the phase-2 checkpoint and emits a completion event; the frontend then frees VRAM and queues pass 3 (refiner) automatically. If you're on limited VRAM, this is the mechanism that makes the whole multi-pass approach viable - you pay for the hires model, then it's gone before the refiner loads.
Inputs are the familiar manifest-recording set: image, seed, positive_prompt, negative_prompt, and the models_json/vaes_json/samplers_json metadata notes, plus optional source_path and a compatibility save_receipt. Nothing here steers the sampler - it's the "write down what we did" layer. Outputs are image (passed through), validated_path (where the approved PNG lives), and manifest_json (the full record).
Files, VRAM and the handoff
Files go under ComfyUI/output/image/checkpoints/, written as phase_2_hires.candidate.png/.json and then atomically promoted to phase_2_hires.png/.json with rollback protection - a crash can't leave pass 3 a half-written input. The actual model unload is deliberately deferred until ComfyUI reports execution_success, because model-management extensions can still hold pages pinned while the prompt is alive; the browser does the freeing afterward, then queues the next pass after a short pause.
Practical notes
Two practical notes. First, order: this node validates phase 2's output, which is exactly what SayaImagePhase3Load demands when pass 3 runs - skip or discard the candidate and pass 3 will refuse to start with a "not validated" error. Second, if you run this headless (API only), the checkpoint still saves correctly; you just lose the automatic next-pass queue and have to launch pass 3 yourself. That's recoverable, and the manifest makes the handoff clean.
Install via ComfyUI Manager (search saya-comfy-couple-plus) or git clone https://github.com/alphaziod/saya-comfy-couple-plus into custom_nodes, then restart. Deps are just numpy and Pillow. WIP pack - back up workflows before updating.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| seed | INT | 00–18446744073709550000 | — |
| positive_prompt | STRING | — | |
| negative_prompt | STRING | — | |
| models_json | STRING | [] | — |
| vaes_json | STRING | [] | — |
| samplers_json | STRING | {} | — |
| source_pathopt | STRING | — | |
| save_receiptopt | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| validated_path | STRING | — |
| manifest_json | STRING | — |