arkennemasis Job Skip (resume — never re-pay)
Resume a run without paying for it twice
- fresh
- image
- job_json
- was_generated
- status
ArkJobSkip is the "never re-pay" node of the arkennemasis Variation pipeline. It sits in front of each cell's generation branch and checks: has this cell already passed? If yes, its master image is read straight from disk and the generation branch is never evaluated. No API call, no model load, no second bill. If no, the fresh generation runs and the node says so.
The mechanism is the pack's favourite lazy-input trick, and it's worth internalising because it's the whole economy of this pipeline: the fresh input - where you wire the generated-and-verified image - is marked lazy. ArkJobSkip's check_lazy_status only requests fresh when the cell actually needs generating. Not naming it leaves the entire generation branch unevaluated, which is the entire saving. ComfyUI doesn't run what nothing asks for.
The inputs that matter
cell_json- the cell from Cell At / the fan-out. Itskeyis how the node finds the durable record.jobs_dir- where the per-cell JSON records live. The tooltip is a rule, not a suggestion: must survive the run; never point this at a per-run folder. Point it at a per-run folder and the resume data evaporates with the run.fresh- the lazy IMAGE input from your generation chain. Skipped entirely when the cell already passed.recipe_json- optional, and quietly important. It supplies the recipe hash, so a recipe change correctly invalidates cells made under the old one. Change the recipe and old "passed" cells are treated as stale; keep it wired and the pipeline knows.force_rerun- default off, and "off is the point of this node." Flip it when you genuinely want to regenerate a passed cell.redo_flagged- default on: cells marked flagged get re-attempted. Turn it off and a sweep only fills genuine gaps instead of retrying your problem children.
What comes out
image- either the master read from disk, or the fresh generation you just paid for. Downstream can't tell the difference, which is the point.job_json- the updated record.was_generated- a boolean that says whether this run actually spent money on this cell. Great for a run report and for sanity-checking that resume is doing its job.status-passed,flagged,generating, etc.
One edge case handled well: a flagged cell with no master on disk hands back a tiny placeholder image and sets status to flagged rather than halting the run - so a partial resume doesn't die on the first gap.
The pairing
JobSkip reads; ArkJobRecord writes. The two are the durability spine of the pipeline - JobRecord saves the outcome of a finished cell, JobSkip consults those records before spending on a new one. Used together they turn an interrupted 24-image batch into "re-run and only the missing 3 come back fresh." The important pairing with Cell Matrix: because per-cell skip can't work behind a fan-out (ComfyUI unions every item's lazy decision), the matrix's skip_delivered removes done cells before they ever reach a chain. Use both and you never regenerate finished work, sequentially or concurrently.
Installing
It's part of comfyui-arkennemasis:
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
pip install replicate httpx
restart, and it's under arkennemasis/Variation. No models, no keys of its own. The one real gotcha is jobs_dir pointing at a folder that gets wiped - if your resume mysteriously regenerates everything, that's the first thing to check, because a deleted record looks exactly like an unfinished cell.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| cell_json | STRING | {} | — |
| jobs_dir | STRING | variation/jobs | Durable job records — one JSON per cell. Must survive the run: never point this at a per-run folder. |
| freshopt | IMAGE | The freshly generated + verified image. LAZY: skipped entirely when this cell already passed. | |
| recipe_jsonopt | STRING | Optional. Supplies the recipe hash, so a recipe change correctly invalidates cells made under the old one. | |
| force_rerunopt | BOOLEAN | false | Regenerate even if the cell already passed. Off is the point of this node. |
| redo_flaggedopt | BOOLEAN | true | Re-attempt cells previously marked flagged. Off leaves them alone so a sweep only fills genuine gaps. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| job_json | STRING | — |
| was_generated | BOOLEAN | — |
| status | STRING | — |