DOGMA TileBundle v56.7
DOGMA TileBundle v56.7 Generates Nothing — It Just Refuses to Let Your Tile Captions Slip Out of Order
- tiles
- DOGMA_TILE_BUNDLE
What you're actually looking at
DOGMA TileBundle v56.7 touches no pixels and loads no model. You hand it three parallel lists - the tile images, the prompt for each tile, and the caption/report the VLM wrote for each tile - and it hands back one opaque object with all three inside. That's it. The whole node body is a length check and a dictionary.
Which sounds useless until you've built the pipeline it belongs to. DOGMA's semantic detailer takes a photo, crops it into tiles, sends every crop to a vision model to describe what's genuinely visible, turns each description into a per-tile prompt, and then re-renders each tile with a masked img2img pass. Between the captioning stage and the diffusion stage you want a barrier: the 8B captioner has to be unloaded before the sampler loads, or you're swapping two large models in and out of the same card. (DOGMA 1.0.6 says this out loud - memory management in that workflow is deliberately delegated to KJNodes rather than done inside the nodes.)
So you need to pass three lists through a cleanup point. Three separate wires is three chances for the caption list and the tile list to come out the other side in different shapes - and then the caption for the cathedral ends up attached to the crop of a parking lot, and Klein happily re-renders a parking lot as a cathedral. The bundle makes it one wire, and it makes a count mismatch a hard error instead of a quieter, worse bug.
How it works
The node sets INPUT_IS_LIST = True, so ComfyUI hands it the entire list rather than mapping it item-by-item, then pack() checks that tiles, prompts and reports are all the same length and returns {tiles, prompts, reports}. No tensor work happens. The tensors aren't copied or moved to CPU either - the same list objects go in and come back out, which the pack's own regression test asserts by identity. Cost: nothing.
It also does no model work, which is the difference between this node and the older DOGMATileVLMBarrierV25 it replaces. That one unloaded models inline; v56.7's bundle is pure graph plumbing, and the unloading moved out to KJNodes or to the pack's newer V56.8 VLM list adapter.
Inputs and output
All three inputs are required and there are no optional ones, no widgets, nothing to configure:
- tiles (
IMAGE) - the crop list. One image per list item, not one batched tensor pretending to be a list. - prompts (
STRING) - the actual per-tile generation instructions. - reports (
STRING) - the per-tile VLM evidence text. The pack's older barrier node labels these two "QWEN REPORT" and "ACTUAL KLEIN PROMPT", which tells you which is the description and which is the instruction.
The single output is DOGMA_TILE_BUNDLE - a custom type, and a deliberately opaque one. Nothing in ComfyUI can preview it, save it, or display it. The only thing that accepts it is DOGMA TileUnpack v56.7, which is where you get the lists and a readable preview back. If you're thinking "so it's the tile version of a context bus," yes, exactly that - one wire carrying a bundle of values that only its partner node can open.
Install
Through ComfyUI Manager, search the pack title DOGMA Nodes, or:
cd ComfyUI/custom_nodes
git clone https://github.com/axior/ComfyUI-DOGMA-Nodes
pip install -r ComfyUI-DOGMA-Nodes/requirements.txt
No models download, and this node needs no VLM of its own. Manager runs the requirements step for you - but if you clone by hand, note that the README claims "no extra Python dependencies are required" while requirements.txt pins scipy>=1.10 and dogma_semantic_v567.py imports from scipy import ndimage at module load. The file wins. Miss it and the import fails, which can take the pack's whole node list down with it rather than just one node.
Where it goes wrong
"DOGMA: tile/caption list alignment lost before memory cleanup." This is the node doing its job. It fires when the three lengths don't match, and the usual cause is feeding it one shared string against N tiles - one prompt, three crops - or a single caption against a whole tile list. The fix is upstream: your prompt builder has to emit one prompt per tile, and the captioner has to return a list, not one concatenated blob.
It only checks counts, not correspondence. Three tiles and three prompts in the wrong order passes silently. The bundle can't know that prompts[1] was written for tiles[2]; only your crop and caption stages control that. If the outputs look like the captions were shuffled, that happened before this node.
Wiring the bundle into the wrong socket gives you a missing-required-input error, because DOGMA_TILE_BUNDLE is not IMAGE and nothing else in the pack consumes it. Bundle → Unpack, every time.
Version confusion. The pack registers several versioned generations side by side - v56.5 through v56.8, each from its own file, this one under category DOGMA/v56.7. If a tutorial names a bare "DOGMA TileBundle" or a V566 cousin, match the version in your workflow JSON. The separate IDs exist so old graphs keep running, which also means the wrong cousin can sit there looking fine.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| tiles | IMAGE | — | |
| prompts | STRING | — | |
| reports | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| DOGMA_TILE_BUNDLE | DOGMA_TILE_BUNDLE | — |