Nodes/DOGMA Nodes/DOGMA v36 Positive Target Settings
ComfyUI Node

DOGMA v36 Positive Target Settings

Never describe the damage

By axior·Created 4 months ago·Updated 3 days ago· 1
DOGMA v36 Positive Target Settings
    • group_radius
    • context_px
    • max_source_side
    • target_long_side
    • max_crops
    • stitch_strength
    • vlm_request
    • summary
    category
    restoration_brief

    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.

    CategoryDOGMA/Semantic Detailer

    Inputs (2)

    NameTypeDefaultDescription
    categorySTRING
    restoration_briefSTRING

    Outputs (8)

    NameTypeDescription
    group_radiusINT
    context_pxINT
    max_source_sideINT
    target_long_sideINT
    max_cropsINT
    stitch_strengthFLOAT
    vlm_requestSTRING
    summarySTRING