DOGMA v36 Positive Target Settings
Never describe the damage
- group_radius
- context_px
- max_source_side
- target_long_side
- max_crops
- stitch_strength
- vlm_request
- summary
Here's a failure mode that costs people a lot of render time: you describe the defect to the model - "fused wheels, melted bumper, broken grille" - and the model, being a text-conditional thing that paints what you name, gives you back a car with fused wheels and a melted bumper. DOGMAObjectSettingsV36 is built around not doing that.
What it changes
Geometry is v31's: five crops across the real categories, wide proximity gaps, tight canvases for faces and hands, max_source_side and target_long_side untouched, stitch_strength at 1.0, and the __none__ row collapsed to a single inert crop with zero stitch. The interesting part is vlm_request, which now asks the VLM to decide something rather than describe something:
Inspect only the existing vehicles in this crop. Decide whether a clearly impossible restoration/AI geometry issue needs correction. If no correction is clearly needed, output exactly: STATE: preserve. If correction is needed, output exactly: STATE: followed by at most 16 words describing ONLY the correct positive FINAL appearance. Use positive geometry/material words such as intact, continuous, aligned, coherent, natural, correctly proportioned. NEVER use these words: damage, damaged, broken, malformed, fused, destroyed, wrong, missing, bent, tilted. Preserve count, identity, pose/orientation, supported real wear/dirt/paint and all text/logos.
Read that last part again, because it's the whole design: the VLM is forbidden from naming a defect. It tells you what the object should be, and the downstream composer wraps that into RESTORE EXISTING CARS TO THIS POSITIVE TARGET STATE: intact continuous bodywork, aligned wheels…. Text-to-image models are much better at "intact continuous bodywork" than at "un-fuse the wheels".
The composer is equally strict about the VLM's obedience: if the answer contains any of damage/broken/malformed/fused/destroyed/wrong/missing/bent/tilted/remove/delete/erase/add/create/invent/replace/rewrite, the answer is rejected and the prompt becomes PRESERVE {CATEGORY}. - with an exact-original-crop gate downstream keeping the source pixels.
The safety gate the summary hints at
summary for this version ends Klein Distilled 4-step CFG1 denoise0.35; safety-gated edit. That's a different pipeline assumption from v27/v31/v34/v35, which all target the base checkpoint at 20 steps and CFG 4. v36 is aimed at the distilled model - four steps, CFG 1 - with a local safety gate that measures the actual mean pixel deviation between the edited and original crop and blends the edit back at an alpha capped so a single crop can't become a wholesale reinterpretation.
So: distilled, CFG 1, short positive instruction, and a pixel-level brake. Nothing to set on this node beyond category and restoration_brief.
Install
ComfyUI Manager → search DOGMA Nodes, or:
cd ComfyUI/custom_nodes
git clone https://github.com/axior/ComfyUI-DOGMA-Nodes
# restart ComfyUI
No extra packages, no model downloads from the pack itself - everything here is mask and string arithmetic over PyTorch tensors, and the README's "PyTorch and ComfyUI's built-in sampler APIs" claim holds. The README doesn't mention this node, so the summary string it prints is the closest thing to documentation.
Gotchas
CFG 1 means no negatives. On the distilled checkpoint you can't fix a bad prompt by adding to the negative. If your target phrasing is wrong, the fix is a better positive sentence - which is exactly what the STATE: path is for - or a switch to the base checkpoint where real CFG 3-5 works.
"preserve" is the default. A VLM that can't decide will say preserve, and the crop will be kept byte-for-byte. That's a safe outcome, not a bug, but it also means v36 will produce beautiful untouched crops if your masks are catching objects that don't actually have geometry problems.
Don't mix this with a defect-describing prompt elsewhere. If another node in your graph writes the local instruction (a v34/v35 composer, say), the positive-state wording this node asks for gets thrown away and you're back to describing damage. Pick one prompt path per pipeline.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| category | STRING | — | |
| restoration_brief | STRING | — |
Outputs (8)
| Name | Type | Description |
|---|---|---|
| group_radius | INT | — |
| context_px | INT | — |
| max_source_side | INT | — |
| target_long_side | INT | — |
| max_crops | INT | — |
| stitch_strength | FLOAT | — |
| vlm_request | STRING | — |
| summary | STRING | — |