Nodes/arkennemasis Nodes/arkennemasis Run Collect (wait for every cell)
ComfyUI Node

arkennemasis Run Collect (wait for every cell)

The barrier that stops the summary from running before the run is over

By Hishamahmer·Created 2 months ago·Updated 8 days ago· 9
arkennemasis Run Collect (wait for every cell)
    • jobs_dir
    • delivered
    • report
    delivered_paths
    jobs_dirvariation/jobs
    job_reports

    The arkennemasis pipeline fans out: every variation cell runs concurrently and finishes in no particular order. That's fast, but it creates a subtle race. Anything that reports on the whole run - the review board, the store export, the run report - is free to execute the moment its inputs exist, which can be before most cells have finished. Result: the board and export run, write nothing, and the run still reports success. ArkRunCollect is the barrier that sits between generating and summarising and makes the summary actually wait.

    The mechanism is a ComfyUI idiom: the node declares INPUT_IS_LIST, so it receives every cell's result in one call. A node that takes the whole list as one input can't run until the whole list exists - which is exactly the guarantee you want here.

    The second wire is the important one

    Waiting on Deliver alone isn't a real barrier for the thing that actually matters. The durable per-cell status is written by a separate output node (Job Record), and without the wait covering it, the report, board and store export could all read a job record before its status had been written - reporting a cell as unfinished purely because the scheduler hadn't reached it yet. So the node takes two list inputs:

    • delivered_paths - wire Deliver's master_path here. It arrives as the whole list, which is what forces the wait.
    • job_reports - wire Job Record's report here too. Without it the wait covers only the file writes, not the durable status the summary reads.

    The report output tells you whether you wired both: "statuses written: not wired" is the hint you're only halfway to a real barrier.

    Inputs and outputs

    • jobs_dir - where the job records live, passed through.
    • delivered_paths, job_reports - the two list inputs above.
    • jobs_dir out - for whatever reads the records next.
    • delivered - the count of files actually on disk.
    • report - a "RUN COLLECTED" summary: cells delivered, files on disk, statuses written.

    Install and gotchas

    Part of the arkennemasis pack:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Hishamahmer/comfyui-arkennemasis
    pip install -r ComfyUI/custom_nodes/comfyui-arkennemasis/requirements.txt
    

    Restart, or install via ComfyUI Manager by repo URL.

    The gotcha is forgetting it entirely. If your board or export runs and writes nothing while the run still reports success, you've found the exact race this node exists to close - put it between the fan-out and anything that reports on the whole run. If delivered counts fewer files than you expect, some cells didn't actually deliver, and that's worth knowing before you email a client a mostly-empty matrix.

    Categoryarkennemasis/Variation

    Inputs (3)

    NameTypeDefaultDescription
    delivered_pathsSTRINGWire Deliver's master_path here. It arrives as the whole list, which is what forces the wait.
    jobs_dirSTRINGvariation/jobs
    job_reportsoptSTRINGWire Remember this variation's report here too. Without it the wait covers only the file writes, not the durable status the summary reads.

    Outputs (3)

    NameTypeDescription
    jobs_dirSTRING
    deliveredINT
    reportSTRING